diff --git a/.github/ISSUE_TEMPLATE/DOCS_ISSUE.md b/.github/ISSUE_TEMPLATE/DOCS_ISSUE.md new file mode 100644 index 000000000000..878ec4b21cb0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/DOCS_ISSUE.md @@ -0,0 +1,11 @@ +--- +name: Website/Docs bug report +about: Report incorrect/missing information or other issues with our website. +--- +## The problem + + + diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000000..4270779b4265 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,14 @@ +blank_issues_enabled: false +contact_links: + - name: Report a bug/issue with Home Assistant itself + url: https://github.com/home-assistant/home-assistant/issues + about: This is the issue tracker for our website. Please report issues with Home Assistant in the main repository. + - name: I have a question or need support + url: https://www.home-assistant.io/help + about: We use GitHub for tracking bugs, check our website for resources on getting help. + - name: Feature Request + url: https://community.home-assistant.io/c/feature-requests + about: Please use our Community Forum for doing feature requests. + - name: I'm unsure where to go + url: https://www.home-assistant.io/join-chat + about: If you are unsure where to go, then joining our chat is recommended; Just ask! diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 439b1e26c04d..cbec4dd560df 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,11 +1,46 @@ -**Description:** +## Proposed change + -**Pull request in home-assistant (if applicable):** home-assistant/home-assistant# -## Checklist: +## Type of change + -- [ ] Branch: `next` is for changes and new documentation that will go public with the next Home Assistant release. Fixes, changes and adjustments for the current release should be created against `current`. -- [ ] The documentation follows the [standards][standards]. +- [ ] Spelling, grammar or other readability improvements (`current` branch). +- [ ] Adjusted missing or incorrect information in the current documentation (`current` branch). +- [ ] Added documentation for a new integration I'm adding to Home Assistant (`next` branch). +- [ ] Added documentation for a new feature I'm adding to Home Assistant (`next` branch). +- [ ] Removed stale or deprecated documentation. + +## Additional information + + +- Link to parent pull request in the codebase: +- This PR fixes or closes issue: + +## Checklist + + +- [ ] This PR uses the correct branch, based on one of the following: + - I made a change to the existing documentation and used the `current` branch. + - I made a change that is related to an upcoming version of Home Assistant and used the `next` branch. +- [ ] The documentation follows the Home Assistant documentation [standards][]. [standards]: https://developers.home-assistant.io/docs/documentation_standards.html diff --git a/.github/workflows/markdown.yml b/.github/workflows/markdown.yml deleted file mode 100644 index 1f74dac813e4..000000000000 --- a/.github/workflows/markdown.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Markdown - -on: [push, pull_request] - -jobs: - remark: - runs-on: ubuntu-latest - steps: - - name: Checking out files from GitHub - uses: actions/checkout@v1 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: 12.x - - name: Installing dependencies - run: npm install - env: - CI: true - - name: Running remark lint - run: npm run markdown:lint diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000000..cf0a9789dfcd --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,85 @@ +name: home-assistant.io Test + +on: [push, pull_request] + +jobs: + markdown-lint: + name: Lint Markdown + runs-on: ubuntu-latest + steps: + - name: Check out files from GitHub + uses: actions/checkout@v2 + - name: Setting up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: 12.x + - name: Setup NPM cache + uses: actions/cache@v1 + with: + path: ~/.npm + key: npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + npm- + - name: Install dependencies + run: npm install + env: + CI: true + - name: Run remark lint + run: npm run markdown:lint + textlint: + name: Lint Text + runs-on: ubuntu-latest + steps: + - name: Check out files from GitHub + uses: actions/checkout@v2 + - name: Setting up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: 12.x + - name: Setup NPM cache + uses: actions/cache@v1 + with: + path: ~/.npm + key: npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + npm- + - name: Install dependencies + run: npm install + env: + CI: true + - name: Run textlint + run: npm run textlint + build: + name: Jekyll build + runs-on: ubuntu-latest + needs: [markdown-lint] + steps: + - name: Check out files from GitHub + uses: actions/checkout@v2 + - name: Setting up Ruby 2.6 + uses: actions/setup-ruby@v1 + with: + ruby-version: 2.6 + - name: Setup Ruby Gems cache + uses: actions/cache@v1 + with: + path: vendor/bundle + key: gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + gems- + - name: Installing dependencies + run: | + gem install bundler -v 2.0.1 + bundle config path vendor/bundle + bundle install --jobs 4 --retry 3 + - name: Setting up Jekyll cache + uses: actions/cache@v1 + with: + path: source/.jekyll-cache + key: jekyll-${{ hashFiles('**/Gemfile.lock') }}-${{ hashFiles('**/_config.yml') }} + restore-keys: | + jekyll-${{ hashFiles('**/Gemfile.lock') }}- + jekyll- + - name: Building site + run: | + bundle exec rake generate diff --git a/.textlintrc.json b/.textlintrc.json new file mode 100644 index 000000000000..8f6cb6299a06 --- /dev/null +++ b/.textlintrc.json @@ -0,0 +1,345 @@ +{ + "filters": {}, + "rules": { + "common-misspellings": { + "ignore": ["Proove", "Alot"] + }, + "terminology": { + "defaultTerms": false, + "skip": ["Blockquote"], + "terms": [ + " API ", + "2FA", + "ABB Solar PV", + "ABB", + "Abode", + "AC", + "Acer", + "Actiontec", + "AdGuard Home", + "AdGuard", + "ADS", + "Aeotec", + "AfterShip", + "Airly", + "AirVisual", + "Aladdin Connect", + "Alarm.com", + "AlarmDecoder", + "Alexa", + "Almond", + "Alpha Vantage", + "Amazon Alexa", + "Amazon Polly", + "Amazon Web Services", + "Amazon", + "Ambiclimate", + "Ambient Weather Station", + "Amcrest", + "Ampio Smart Smog System", + "Android IP Webcam", + "Android", + "Ankuoo REC Switch", + "Ankuoo", + "Antifurto365", + "Apache Kafka", + "Apache", + "APC Smart UPS", + "apcupsd", + "APNS", + "AppDaemon", + "Apple iCloud", + "Apple TV", + "AppleScript", + "Apprise", + "AquaLogic", + "aREST", + "Arlo", + "Aruba", + "Arube ClearPass", + "ASUS", + "ASUS", + "ASUSWRT", + "ATEN", + "Atome", + "August", + "Avi-on", + "AVM FRITZ!Box", + "AWS", + "Axis", + "BeagleBone", + "Beckhoff", + "Belkin", + "Bluetooth", + "Bosch", + "Bravia", + "BSSID", + "CalDAV", + "CardDAV", + "Cisco IOS", + "CLI", + "Daikin", + "Danfoss", + "Dark Sky", + "Debian", + "deCONZ", + "Dialogflow", + "DIY", + "DNS", + "Docker Hub", + "Docker", + "DSMR", + "ecobee", + "Efergy", + "Elgato Key Light", + "Elgato", + "Emoncms", + "Entur", + "EPH Controls", + "eQ-3 MAX\\!", + "eQ-3", + "ESPHome", + "Essent", + "Everspring", + "Fast.com", + "FFmpeg", + "Fibaro", + "Flexit", + "FreeNAS", + "FRITZ!Box", + "Genius Hub", + "GitHub", + "Google Assistant", + "Google Home", + "Google Wifi", + "Google", + "GraphiQL", + "GraphQL", + "Growatt", + "HDMI", + "Heatmiser", + "Home Assistant Companion", + "Home Assistant Core", + "Home Assistant Operating System", + "Home Assistant OS", + "Home Assistant Supervised", + "Home Assistant Supervisor", + "Home Assistant", + "HomeKit", + "Homematic", + "Honeywell", + "HTTP", + "HTTPS", + "HVAC", + "iCloud", + "IFTTT", + "IKEA", + "IntesisHome", + "iOS", + "IoT", + "IP", + "iPad", + "iPhone", + "ISY994", + "iTunes", + "JSON-RPC", + "JSON", + "JuiceNet", + "Kafka", + "KEF", + "KNX", + "Kodi", + "LaCrosse", + "LED", + "Let's Encrypt", + "Life360", + "LinkedIn", + "Linky", + "Linux", + "LMS", + "Logitech Harmony", + "Logitech Media Server", + "Logitech", + "Lovelace", + "LTE", + "MacBook", + "macOS", + "Markdown", + "mDNS", + "Microsoft", + "MikroTik", + "MIME", + "MJPEG", + "MQTT", + "MySensors", + "NAS", + "NETGEAR", + "Network Information Server", + "NGINX", + "NodeMCU", + "Norway", + "NuHeat", + "NZBGet", + "ODRIOD-N2", + "ODROID", + "OpenTherm", + "OpenWrt", + "PayPal", + "PDU", + "Philips Hue", + "Philips", + "PlayStation", + "Plex Media Server", + "Plex", + "PTZ", + "pyLoad", + "Python", + "qBittorrent", + "Radarr", + "Raspberry Pi", + "Remember The Milk", + "REST API", + "RFXtrx", + "RouterOS", + "rTorrent", + "RTSP", + "SABnzbd", + "Samung", + "Sensibo", + "Sentry", + "Siemens", + "Signal Messenger", + "SkyBell", + "Slack", + "SleepIQ", + "SmartThings", + "SMS", + "Sonarr", + "Sonos", + "Sony", + "Speedtest.net", + "Spotify", + "SQL", + "Squeezebox", + "SSID", + "SSL", + "StarLine", + "Stookalert", + "StreamLabs", + "STT", + "Sure Petcare", + "SwitchBot", + "Synology", + "Tado", + "Tahoma", + "TCP/IP", + "TensorFlow", + "Tesla", + "TMB", + "Todoist", + "Toon", + "TTS", + "Tuya", + "TV", + "Twilio", + "TwinCAT", + "Twitch", + "Twitter", + "UART", + "Ubiquiti", + "Ubuntu", + "UI", + "UniFi", + "unRAID", + "UPnP", + "UPS", + "URL", + "USB", + "Velbus", + "Velux", + "Venstar", + "Vera", + "Verisure", + "VersaSense", + "ViCare", + "Viessmann", + "VIVOTEK", + "Vizio", + "Vultr", + "WebDAV", + "WeMo", + "Wink", + "WLED", + "Wunderlist", + "WWLLN", + "Xiaomi", + "XML-RPC", + "XML", + "Yamaha MusicCast", + "Yamaha", + "YAML", + "Yandex", + "Yeelight", + "YouTube", + "Z-Wave", + "ZHA", + "Zigbee", + "Ziggo Mediabox XL", + "Ziggo", + "ZoneMinder", + [" HA ", "Home Assistant"], + ["\\(s\\)he", "they"], + ["2 ?steps? authentication", "two-step authentication"], + ["addon", "add-on"], + ["addons", "add-ons"], + ["Alarm ?dot ?com", "Alarm.com"], + ["an URL", "a URL"], + ["analyse", "analyze"], + ["API['’]?s", "APIs"], + ["backwards compatible", "backward compatible"], + ["behaviour", "behavior"], + ["cancelled", "canceled"], + ["client ?side", "client-side"], + ["colour", "color"], + ["config\\b", "configuration"], + ["DarkSky", "Dark Sky"], + ["docs\\b", "documentation"], + ["e\\.g\\.", "e.g.,"], + ["end ?to ?end", "end-to-end"], + ["FRITZ!? ?Box", "FRITZ!Box"], + ["grey", "gray"], + ["hass", "Home Assistant"], + ["Hass\\.?io", "Home Assistant"], + ["hassio.local", "homeassistant.local"], + ["HassOS", "Home Assistant Operating System"], + ["he or she", "they"], + ["he/she", "they"], + ["Home-?Ass?s?iss?tt?ant", "Home Assistant"], + ["i\\.e\\.", "i.e.,"], + ["IFF?TTT?T?", "IFTTT"], + ["ISY ?994", "ISY994"], + ["JSONRPC", "JSON-RPC"], + ["licence", "license"], + ["licences", "licenses"], + ["Mac ?OS", "macOS"], + ["millimetre", "millimeter"], + ["motorised", "motorized"], + ["optimising", "optimizing"], + ["OS ?X", "macOS"], + ["RaspberryPi", "Raspberry Pi"], + ["recognise", "recognize"], + ["recognised", "recognized"], + ["repo\\b", "repository"], + ["rpi", "Raspberry Pi"], + ["Sky Bell", "SkyBell"], + ["Sleep IQ", "SleepIQ"], + ["travelled", "traveled"], + ["Twill?o", "Twilio"], + ["two ?steps? authentication", "two-step authentication"], + ["URL['’]?s", "URLs"], + ["XMLRPC", "XML-RPC"], + ["ZWave", "Z-Wave"] + ] + } + } +} diff --git a/.vscode/cSpell.json b/.vscode/cSpell.json index 1951a92694f9..dbff6649d46b 100644 --- a/.vscode/cSpell.json +++ b/.vscode/cSpell.json @@ -18,8 +18,8 @@ "geizhals", "Harman", "hass", - "hass.io", - "hassos", + "Hass.io", + "HassOS", "hcitool", "heos", "hikvision", diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 000000000000..667fa8a93b10 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,423 @@ +# This file is generated. +# +# People marked here will be automatically requested for a review +# when the documentation that they own is touched. +# +# It is synced with the codebase, so if you own the integration, +# you will own the docs as well. +# https://github.com/blog/2392-introducing-code-owners + +# Pages +source/_integrations/abode.markdown @shred86 +source/_integrations/adguard.markdown @frenck +source/_integrations/airly.markdown @bieniu +source/_integrations/airvisual.markdown @bachya +source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy +source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy +source/_integrations/almond.markdown @gcampax @balloob +source/_integrations/alpha_vantage.markdown @fabaff +source/_integrations/amazon_polly.markdown @robbiet480 +source/_integrations/ambiclimate.markdown @danielhiversen +source/_integrations/ambient_station.markdown @bachya +source/_integrations/amcrest.markdown @pnbruckner +source/_integrations/androidtv.markdown @JeffLIrion +source/_integrations/apache_kafka.markdown @bachya +source/_integrations/api.markdown @home-assistant/core +source/_integrations/apprise.markdown @caronc +source/_integrations/aprs.markdown @PhilRW +source/_integrations/arcam_fmj.markdown @elupus +source/_integrations/arduino.markdown @fabaff +source/_integrations/arest.markdown @fabaff +source/_integrations/asuswrt.markdown @kennedyshead +source/_integrations/aten_pe.markdown @mtdcr +source/_integrations/atome.markdown @baqs +source/_integrations/august.markdown @bdraco +source/_integrations/aurora_abb_powerone.markdown @davet2001 +source/_integrations/auth.markdown @home-assistant/core +source/_integrations/automatic.markdown @armills +source/_integrations/automation.markdown @home-assistant/core +source/_integrations/avea.markdown @pattyland +source/_integrations/avri.markdown @timvancann +source/_integrations/awair.markdown @danielsjf +source/_integrations/aws.markdown @awarecan @robbiet480 +source/_integrations/axis.markdown @kane610 +source/_integrations/azure_event_hub.markdown @eavanvalkenburg +source/_integrations/azure_service_bus.markdown @hfurubotten +source/_integrations/beewi_smartclim.markdown @alemuro +source/_integrations/bitcoin.markdown @fabaff +source/_integrations/bizkaibus.markdown @UgaitzEtxebarria +source/_integrations/blink.markdown @fronzbot +source/_integrations/bmw_connected_drive.markdown @gerard33 +source/_integrations/bom.markdown @maddenp +source/_integrations/braviatv.markdown @robbiet480 +source/_integrations/broadlink.markdown @danielhiversen @felipediel +source/_integrations/brother.markdown @bieniu +source/_integrations/brunt.markdown @eavanvalkenburg +source/_integrations/bt_smarthub.markdown @jxwolstenholme +source/_integrations/buienradar.markdown @mjj4791 @ties +source/_integrations/cert_expiry.markdown @Cereal2nd @jjlawren +source/_integrations/cisco_ios.markdown @fbradyirl +source/_integrations/cisco_mobility_express.markdown @fbradyirl +source/_integrations/cisco_webex_teams.markdown @fbradyirl +source/_integrations/cloud.markdown @home-assistant/cloud +source/_integrations/cloudflare.markdown @ludeeus +source/_integrations/comfoconnect.markdown @michaelarnauts +source/_integrations/config.markdown @home-assistant/core +source/_integrations/configurator.markdown @home-assistant/core +source/_integrations/conversation.markdown @home-assistant/core +source/_integrations/coolmaster.markdown @OnFreund +source/_integrations/coronavirus.markdown @home_assistant/core +source/_integrations/counter.markdown @fabaff +source/_integrations/cover.markdown @home-assistant/core +source/_integrations/cpuspeed.markdown @fabaff +source/_integrations/cups.markdown @fabaff +source/_integrations/daikin.markdown @fredrike @rofrantz +source/_integrations/darksky.markdown @fabaff +source/_integrations/deconz.markdown @kane610 +source/_integrations/delijn.markdown @bollewolle +source/_integrations/demo.markdown @home-assistant/core +source/_integrations/derivative.markdown @afaucogney +source/_integrations/device_automation.markdown @home-assistant/core +source/_integrations/digital_ocean.markdown @fabaff +source/_integrations/directv.markdown @ctalkington +source/_integrations/discogs.markdown @thibmaek +source/_integrations/doorbird.markdown @oblogic7 +source/_integrations/dsmr_reader.markdown @depl0y +source/_integrations/dweet.markdown @fabaff +source/_integrations/dynalite.markdown @ziv1234 +source/_integrations/dyson.markdown @etheralm +source/_integrations/ecobee.markdown @marthoc +source/_integrations/ecovacs.markdown @OverloadUT +source/_integrations/edl21.markdown @mtdcr +source/_integrations/egardia.markdown @jeroenterheerdt +source/_integrations/eight_sleep.markdown @mezz64 +source/_integrations/elgato.markdown @frenck +source/_integrations/elv.markdown @majuss +source/_integrations/emby.markdown @mezz64 +source/_integrations/emoncms.markdown @borpin +source/_integrations/enigma2.markdown @fbradyirl +source/_integrations/enocean.markdown @bdurrer +source/_integrations/entur_public_transport.markdown @hfurubotten +source/_integrations/environment_canada.markdown @michaeldavie +source/_integrations/ephember.markdown @ttroy50 +source/_integrations/epsonworkforce.markdown @ThaStealth +source/_integrations/eq3btsmart.markdown @rytilahti +source/_integrations/esphome.markdown @OttoWinter +source/_integrations/essent.markdown @TheLastProject +source/_integrations/evohome.markdown @zxdavb +source/_integrations/ezviz.markdown @baqs +source/_integrations/fastdotcom.markdown @rohankapoorcom +source/_integrations/file.markdown @fabaff +source/_integrations/filter.markdown @dgomes +source/_integrations/fitbit.markdown @robbiet480 +source/_integrations/fixer.markdown @fabaff +source/_integrations/flock.markdown @fabaff +source/_integrations/flume.markdown @ChrisMandich +source/_integrations/flunearyou.markdown @bachya +source/_integrations/fortigate.markdown @kifeo +source/_integrations/fortios.markdown @kimfrellsen +source/_integrations/foscam.markdown @skgsergio +source/_integrations/foursquare.markdown @robbiet480 +source/_integrations/freebox.markdown @snoof85 +source/_integrations/fronius.markdown @nielstron +source/_integrations/frontend.markdown @home-assistant/frontend +source/_integrations/garmin_connect.markdown @cyberjunky +source/_integrations/gdacs.markdown @exxamalte +source/_integrations/gearbest.markdown @HerrHofrat +source/_integrations/geniushub.markdown @zxdavb +source/_integrations/geo_rss_events.markdown @exxamalte +source/_integrations/geonetnz_quakes.markdown @exxamalte +source/_integrations/geonetnz_volcano.markdown @exxamalte +source/_integrations/gios.markdown @bieniu +source/_integrations/gitter.markdown @fabaff +source/_integrations/glances.markdown @fabaff @engrbm87 +source/_integrations/gntp.markdown @robbiet480 +source/_integrations/google_assistant.markdown @home-assistant/cloud +source/_integrations/google_cloud.markdown @lufton +source/_integrations/google_translate.markdown @awarecan +source/_integrations/google_travel_time.markdown @robbiet480 +source/_integrations/gpsd.markdown @fabaff +source/_integrations/greeneye_monitor.markdown @jkeljo +source/_integrations/griddy.markdown @bdraco +source/_integrations/group.markdown @home-assistant/core +source/_integrations/growatt_server.markdown @indykoning +source/_integrations/gtfs.markdown @robbiet480 +source/_integrations/harmony.markdown @ehendrix23 +source/_integrations/heatmiser.markdown @andylockran +source/_integrations/heos.markdown @andrewsayre +source/_integrations/here_travel_time.markdown @eifinger +source/_integrations/hikvision.markdown @mezz64 +source/_integrations/hikvisioncam.markdown @fbradyirl +source/_integrations/hisense_aehw4a1.markdown @bannhead +source/_integrations/history.markdown @home-assistant/core +source/_integrations/hive.markdown @Rendili @KJonline +source/_integrations/homeassistant.markdown @home-assistant/core +source/_integrations/homekit_controller.markdown @Jc2k +source/_integrations/homematic.markdown @pvizeli @danielperna84 +source/_integrations/homematicip_cloud.markdown @SukramJ +source/_integrations/honeywell.markdown @zxdavb +source/_integrations/html5.markdown @robbiet480 +source/_integrations/http.markdown @home-assistant/core +source/_integrations/huawei_lte.markdown @scop +source/_integrations/huawei_router.markdown @abmantis +source/_integrations/hue.markdown @balloob +source/_integrations/iammeter.markdown @lewei50 +source/_integrations/iaqualink.markdown @flz +source/_integrations/icloud.markdown @Quentame +source/_integrations/ign_sismologia.markdown @exxamalte +source/_integrations/incomfort.markdown @zxdavb +source/_integrations/influxdb.markdown @fabaff +source/_integrations/input_boolean.markdown @home-assistant/core +source/_integrations/input_datetime.markdown @home-assistant/core +source/_integrations/input_number.markdown @home-assistant/core +source/_integrations/input_select.markdown @home-assistant/core +source/_integrations/input_text.markdown @home-assistant/core +source/_integrations/integration.markdown @dgomes +source/_integrations/intesishome.markdown @jnimmo +source/_integrations/ios.markdown @robbiet480 +source/_integrations/iperf3.markdown @rohankapoorcom +source/_integrations/ipma.markdown @dgomes @abmantis +source/_integrations/iqvia.markdown @bachya +source/_integrations/irish_rail_transport.markdown @ttroy50 +source/_integrations/izone.markdown @Swamp-Ig +source/_integrations/jewish_calendar.markdown @tsvi +source/_integrations/juicenet.markdown @jesserockz +source/_integrations/kaiterra.markdown @Michsior14 +source/_integrations/keba.markdown @dannerph +source/_integrations/keenetic_ndms2.markdown @foxel +source/_integrations/kef.markdown @basnijholt +source/_integrations/keyboard_remote.markdown @bendavid +source/_integrations/knx.markdown @Julius2342 +source/_integrations/kodi.markdown @armills +source/_integrations/konnected.markdown @heythisisnate @kit-klein +source/_integrations/lametric.markdown @robbiet480 +source/_integrations/launch_library.markdown @ludeeus +source/_integrations/lcn.markdown @alengwenus +source/_integrations/life360.markdown @pnbruckner +source/_integrations/linky.markdown @Quentame +source/_integrations/linux_battery.markdown @fabaff +source/_integrations/local_ip.markdown @issacg +source/_integrations/logger.markdown @home-assistant/core +source/_integrations/logi_circle.markdown @evanjd +source/_integrations/luci.markdown @fbradyirl @mzdrale +source/_integrations/luftdaten.markdown @fabaff +source/_integrations/lupusec.markdown @majuss +source/_integrations/lutron.markdown @JonGilmore +source/_integrations/mastodon.markdown @fabaff +source/_integrations/matrix.markdown @tinloaf +source/_integrations/mcp23017.markdown @jardiamj +source/_integrations/mediaroom.markdown @dgomes +source/_integrations/melcloud.markdown @vilppuvuorinen +source/_integrations/melissa.markdown @kennedyshead +source/_integrations/met.markdown @danielhiversen +source/_integrations/meteo_france.markdown @victorcerutti @oncleben31 @Quentame +source/_integrations/meteoalarm.markdown @rolfberkenbosch +source/_integrations/miflora.markdown @danielhiversen @ChristianKuehnel +source/_integrations/mikrotik.markdown @engrbm87 +source/_integrations/mill.markdown @danielhiversen +source/_integrations/min_max.markdown @fabaff +source/_integrations/minecraft_server.markdown @elmurato +source/_integrations/minio.markdown @tkislan +source/_integrations/mobile_app.markdown @robbiet480 +source/_integrations/modbus.markdown @adamchengtkc +source/_integrations/monoprice.markdown @etsinko +source/_integrations/moon.markdown @fabaff +source/_integrations/mpd.markdown @fabaff +source/_integrations/mqtt.markdown @home-assistant/core +source/_integrations/msteams.markdown @peroyvind +source/_integrations/mysensors.markdown @MartinHjelmare +source/_integrations/mystrom.markdown @fabaff +source/_integrations/neato.markdown @dshokouhi @Santobert +source/_integrations/nederlandse_spoorwegen.markdown @YarmoM +source/_integrations/nello.markdown @pschmitt +source/_integrations/ness_alarm.markdown @nickw444 +source/_integrations/nest.markdown @awarecan +source/_integrations/netatmo.markdown @cgtobi +source/_integrations/netdata.markdown @fabaff +source/_integrations/nextbus.markdown @vividboarder +source/_integrations/nilu.markdown @hfurubotten +source/_integrations/nissan_leaf.markdown @filcole +source/_integrations/nmbs.markdown @thibmaek +source/_integrations/no_ip.markdown @fabaff +source/_integrations/notify.markdown @home-assistant/core +source/_integrations/notion.markdown @bachya +source/_integrations/nsw_fuel_station.markdown @nickw444 +source/_integrations/nsw_rural_fire_service_feed.markdown @exxamalte +source/_integrations/nuki.markdown @pvizeli +source/_integrations/nws.markdown @MatthewFlamm +source/_integrations/nzbget.markdown @chriscla +source/_integrations/obihai.markdown @dshokouhi +source/_integrations/ohmconnect.markdown @robbiet480 +source/_integrations/ombi.markdown @larssont +source/_integrations/onboarding.markdown @home-assistant/core +source/_integrations/onewire.markdown @garbled1 +source/_integrations/opentherm_gw.markdown @mvn23 +source/_integrations/openuv.markdown @bachya +source/_integrations/openweathermap.markdown @fabaff +source/_integrations/opnsense.markdown @mtreinish +source/_integrations/orangepi_gpio.markdown @pascallj +source/_integrations/oru.markdown @bvlaicu +source/_integrations/panel_custom.markdown @home-assistant/frontend +source/_integrations/panel_iframe.markdown @home-assistant/frontend +source/_integrations/pcal9535a.markdown @Shulyaka +source/_integrations/persistent_notification.markdown @home-assistant/core +source/_integrations/philips_js.markdown @elupus +source/_integrations/pi_hole.markdown @fabaff @johnluetke +source/_integrations/pilight.markdown @trekky12 +source/_integrations/plaato.markdown @JohNan +source/_integrations/plant.markdown @ChristianKuehnel +source/_integrations/plex.markdown @jjlawren +source/_integrations/plugwise.markdown @laetificat @CoMPaTech @bouwew +source/_integrations/point.markdown @fredrike +source/_integrations/proxmoxve.markdown @k4ds3 +source/_integrations/ps4.markdown @ktnrg45 +source/_integrations/ptvsd.markdown @swamp-ig +source/_integrations/push.markdown @dgomes +source/_integrations/pvoutput.markdown @fabaff +source/_integrations/qld_bushfire.markdown @exxamalte +source/_integrations/qnap.markdown @colinodell +source/_integrations/quantum_gateway.markdown @cisasteelersfan +source/_integrations/qvr_pro.markdown @oblogic7 +source/_integrations/qwikswitch.markdown @kellerza +source/_integrations/rainbird.markdown @konikvranik +source/_integrations/raincloud.markdown @vanstinator +source/_integrations/rainforest_eagle.markdown @gtdiehl @jcalbert +source/_integrations/rainmachine.markdown @bachya +source/_integrations/random.markdown @fabaff +source/_integrations/repetier.markdown @MTrab +source/_integrations/rfxtrx.markdown @danielhiversen +source/_integrations/ring.markdown @balloob +source/_integrations/rmvtransport.markdown @cgtobi +source/_integrations/roku.markdown @ctalkington +source/_integrations/roomba.markdown @pschmitt +source/_integrations/safe_mode.markdown @home-assistant/core +source/_integrations/saj.markdown @fredericvl +source/_integrations/salt.markdown @bjornorri +source/_integrations/samsungtv.markdown @escoand +source/_integrations/scene.markdown @home-assistant/core +source/_integrations/scrape.markdown @fabaff +source/_integrations/script.markdown @home-assistant/core +source/_integrations/search.markdown @home-assistant/core +source/_integrations/sense.markdown @kbickar +source/_integrations/sensibo.markdown @andrey-git +source/_integrations/sentry.markdown @dcramer +source/_integrations/serial.markdown @fabaff +source/_integrations/seventeentrack.markdown @bachya +source/_integrations/shell_command.markdown @home-assistant/core +source/_integrations/shiftr.markdown @fabaff +source/_integrations/shodan.markdown @fabaff +source/_integrations/sighthound.markdown @robmarkcole +source/_integrations/signal_messenger.markdown @bbernhard +source/_integrations/simplisafe.markdown @bachya +source/_integrations/sinch.markdown @bendikrb +source/_integrations/sisyphus.markdown @jkeljo +source/_integrations/slide.markdown @ualex73 +source/_integrations/sma.markdown @kellerza +source/_integrations/smarthab.markdown @outadoc +source/_integrations/smartthings.markdown @andrewsayre +source/_integrations/smarty.markdown @z0mbieprocess +source/_integrations/sms.markdown @ocalvo +source/_integrations/smtp.markdown @fabaff +source/_integrations/solaredge_local.markdown @drobtravels @scheric +source/_integrations/solarlog.markdown @Ernst79 +source/_integrations/solax.markdown @squishykid +source/_integrations/soma.markdown @ratsept +source/_integrations/somfy.markdown @tetienne +source/_integrations/songpal.markdown @rytilahti +source/_integrations/spaceapi.markdown @fabaff +source/_integrations/speedtestdotnet.markdown @rohankapoorcom +source/_integrations/spider.markdown @peternijssen +source/_integrations/spotify.markdown @frenck +source/_integrations/sql.markdown @dgomes +source/_integrations/starline.markdown @anonym-tsk +source/_integrations/statistics.markdown @fabaff +source/_integrations/stiebel_eltron.markdown @fucm +source/_integrations/stookalert.markdown @fwestenberg +source/_integrations/stream.markdown @hunterjm +source/_integrations/stt.markdown @pvizeli +source/_integrations/suez_water.markdown @ooii +source/_integrations/sun.markdown @Swamp-Ig +source/_integrations/supla.markdown @mwegrzynek +source/_integrations/surepetcare.markdown @benleb +source/_integrations/swiss_hydrological_data.markdown @fabaff +source/_integrations/swiss_public_transport.markdown @fabaff +source/_integrations/switchbot.markdown @danielhiversen +source/_integrations/switcher_kis.markdown @tomerfi +source/_integrations/switchmate.markdown @danielhiversen +source/_integrations/syncthru.markdown @nielstron +source/_integrations/synology_srm.markdown @aerialls +source/_integrations/syslog.markdown @fabaff +source/_integrations/tado.markdown @michaelarnauts +source/_integrations/tahoma.markdown @philklei +source/_integrations/tankerkoenig.markdown @guillempages +source/_integrations/tautulli.markdown @ludeeus +source/_integrations/tellduslive.markdown @fredrike +source/_integrations/template.markdown @PhracturedBlue @tetienne +source/_integrations/tesla.markdown @zabuldon @alandtse +source/_integrations/tfiac.markdown @fredrike @mellado +source/_integrations/thethingsnetwork.markdown @fabaff +source/_integrations/threshold.markdown @fabaff +source/_integrations/tibber.markdown @danielhiversen +source/_integrations/tile.markdown @bachya +source/_integrations/time_date.markdown @fabaff +source/_integrations/tmb.markdown @alemuro +source/_integrations/todoist.markdown @boralyl +source/_integrations/toon.markdown @frenck +source/_integrations/totalconnect.markdown @austinmroczek +source/_integrations/tplink.markdown @rytilahti +source/_integrations/traccar.markdown @ludeeus +source/_integrations/tradfri.markdown @ggravlingen +source/_integrations/trafikverket_train.markdown @endor-force +source/_integrations/transmission.markdown @engrbm87 @JPHutchins +source/_integrations/tts.markdown @pvizeli +source/_integrations/twentemilieu.markdown @frenck +source/_integrations/twilio_call.markdown @robbiet480 +source/_integrations/twilio_sms.markdown @robbiet480 +source/_integrations/ubee.markdown @mzdrale +source/_integrations/unifi.markdown @kane610 +source/_integrations/unifiled.markdown @florisvdk +source/_integrations/upc_connect.markdown @pvizeli +source/_integrations/upcloud.markdown @scop +source/_integrations/updater.markdown @home-assistant/core +source/_integrations/upnp.markdown @StevenLooman +source/_integrations/uptimerobot.markdown @ludeeus +source/_integrations/usgs_earthquakes_feed.markdown @exxamalte +source/_integrations/utility_meter.markdown @dgomes +source/_integrations/velbus.markdown @Cereal2nd @brefra +source/_integrations/velux.markdown @Julius2342 +source/_integrations/versasense.markdown @flamm3blemuff1n +source/_integrations/version.markdown @fabaff +source/_integrations/vesync.markdown @markperdue @webdjoe +source/_integrations/vicare.markdown @oischinger +source/_integrations/vilfo.markdown @ManneW +source/_integrations/vivotek.markdown @HarlemSquirrel +source/_integrations/vizio.markdown @raman325 +source/_integrations/vlc_telnet.markdown @rodripf +source/_integrations/waqi.markdown @andrey-git +source/_integrations/watson_tts.markdown @rutkai +source/_integrations/weather.markdown @fabaff +source/_integrations/webostv.markdown @bendavid +source/_integrations/websocket_api.markdown @home-assistant/core +source/_integrations/wemo.markdown @sqldiablo +source/_integrations/withings.markdown @vangorra +source/_integrations/wled.markdown @frenck +source/_integrations/workday.markdown @fabaff +source/_integrations/worldclock.markdown @fabaff +source/_integrations/wwlln.markdown @bachya +source/_integrations/xbox_live.markdown @MartinHjelmare +source/_integrations/xiaomi_aqara.markdown @danielhiversen @syssi +source/_integrations/xiaomi_miio.markdown @rytilahti @syssi +source/_integrations/xiaomi_tv.markdown @simse +source/_integrations/xmpp.markdown @fabaff @flowolf +source/_integrations/yamaha_musiccast.markdown @jalmeroth +source/_integrations/yandex_transport.markdown @rishatik92 +source/_integrations/yeelight.markdown @rytilahti @zewelor +source/_integrations/yeelightsunflower.markdown @lindsaymarkward +source/_integrations/yessssms.markdown @flowolf +source/_integrations/yi.markdown @bachya +source/_integrations/yr.markdown @danielhiversen +source/_integrations/zeroconf.markdown @robbiet480 @Kane610 +source/_integrations/zha.markdown @dmulcahey @adminiuga +source/_integrations/zone.markdown @home-assistant/core +source/_integrations/zoneminder.markdown @rohankapoorcom +source/_integrations/zwave.markdown @home-assistant/z-wave diff --git a/Gemfile b/Gemfile index 4c86a237eba2..8de1d420268b 100644 --- a/Gemfile +++ b/Gemfile @@ -12,19 +12,19 @@ end group :jekyll_plugins do gem 'jekyll-paginate', '1.1.0' - gem 'jekyll-redirect-from', '0.15.0' - gem 'jekyll-sitemap', '1.3.1' + gem 'jekyll-redirect-from', '0.16.0' + gem 'jekyll-sitemap', '1.4.0' gem 'jekyll-time-to-read', '0.1.2' gem 'jekyll-commonmark', '1.3.1' end -gem 'sinatra', '2.0.7' -gem 'nokogiri', '1.10.5' +gem 'sinatra', '2.0.8.1' +gem 'nokogiri', '1.10.9' # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do - gem 'tzinfo', '~> 1.2' + gem 'tzinfo', '~> 2.0' gem 'tzinfo-data' end diff --git a/Gemfile.lock b/Gemfile.lock index 0bd8ccada10e..99b80b6c3d15 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,7 +5,7 @@ GEM public_suffix (>= 2.0.2, < 5.0) chunky_png (1.3.11) colorator (1.1.0) - commonmarker (0.20.1) + commonmarker (0.21.0) ruby-enum (~> 0.5) compass (1.0.3) chunky_png (~> 1.2) @@ -19,17 +19,17 @@ GEM sass (>= 3.3.0, < 3.5) compass-import-once (1.0.5) sass (>= 3.2, < 3.5) - concurrent-ruby (1.1.5) + concurrent-ruby (1.1.6) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) eventmachine (1.2.7) eventmachine (1.2.7-x64-mingw32) - ffi (1.11.1) - ffi (1.11.1-x64-mingw32) + ffi (1.12.2) + ffi (1.12.2-x64-mingw32) forwardable-extended (2.6.0) http_parser.rb (0.6.0) - i18n (1.7.0) + i18n (1.8.2) concurrent-ruby (~> 1.0) jekyll (4.0.0) addressable (~> 2.4) @@ -50,11 +50,11 @@ GEM commonmarker (~> 0.14) jekyll (>= 3.7, < 5.0) jekyll-paginate (1.1.0) - jekyll-redirect-from (0.15.0) + jekyll-redirect-from (0.16.0) jekyll (>= 3.3, < 5.0) - jekyll-sass-converter (2.0.1) + jekyll-sass-converter (2.1.0) sassc (> 2.0.1, < 3.0) - jekyll-sitemap (1.3.1) + jekyll-sitemap (1.4.0) jekyll (>= 3.7, < 5.0) jekyll-time-to-read (0.1.2) jekyll @@ -64,30 +64,32 @@ GEM kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.3) - listen (3.2.0) + listen (3.2.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) mini_portile2 (2.4.0) multi_json (1.14.1) - mustermann (1.0.3) - nokogiri (1.10.5) + mustermann (1.1.1) + ruby2_keywords (~> 0.0.1) + nokogiri (1.10.9) mini_portile2 (~> 2.4.0) - nokogiri (1.10.5-x64-mingw32) + nokogiri (1.10.9-x64-mingw32) mini_portile2 (~> 2.4.0) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (4.0.1) - rack (2.0.7) - rack-protection (2.0.7) + public_suffix (4.0.3) + rack (2.0.8) + rack-protection (2.0.8.1) rack rake (13.0.1) rb-fsevent (0.10.3) - rb-inotify (0.10.0) + rb-inotify (0.10.1) ffi (~> 1.0) - rouge (3.12.0) + rouge (3.17.0) ruby-enum (0.7.2) i18n + ruby2_keywords (0.0.2) safe_yaml (1.0.5) sass (3.4.25) sass-globbing (1.1.5) @@ -96,21 +98,20 @@ GEM ffi (~> 1.9) sassc (2.2.1-x64-mingw32) ffi (~> 1.9) - sinatra (2.0.7) + sinatra (2.0.8.1) mustermann (~> 1.0) rack (~> 2.0) - rack-protection (= 2.0.7) + rack-protection (= 2.0.8.1) tilt (~> 2.0) stringex (2.8.5) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) tilt (2.0.10) - tzinfo (1.2.5) - thread_safe (~> 0.1) + tzinfo (2.0.1) + concurrent-ruby (~> 1.0) tzinfo-data (1.2019.3) tzinfo (>= 1.0.0) - unicode-display_width (1.6.0) + unicode-display_width (1.7.0) PLATFORMS ruby @@ -121,15 +122,15 @@ DEPENDENCIES jekyll (= 4.0.0) jekyll-commonmark (= 1.3.1) jekyll-paginate (= 1.1.0) - jekyll-redirect-from (= 0.15.0) - jekyll-sitemap (= 1.3.1) + jekyll-redirect-from (= 0.16.0) + jekyll-sitemap (= 1.4.0) jekyll-time-to-read (= 0.1.2) - nokogiri (= 1.10.5) + nokogiri (= 1.10.9) rake (= 13.0.1) sass-globbing (= 1.1.5) - sinatra (= 2.0.7) + sinatra (= 2.0.8.1) stringex (= 2.8.5) - tzinfo (~> 1.2) + tzinfo (~> 2.0) tzinfo-data RUBY VERSION diff --git a/README.md b/README.md index 5fd4c6e2389e..06146e2b09c2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ [![Discord](https://img.shields.io/discord/330944238910963714.svg)](https://discord.gg/CxqDrfU) -[![Krihelimeter](https://img.shields.io/badge/Krihelimeter-unknown-brightgreen.svg)](http://www.krihelinator.xyz) [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) +[![Deploys by netlify](https://www.netlify.com/img/global/badges/netlify-color-bg.svg)](https://www.netlify.com) + # Home Assistant website This is the source for the [Home-Assistant.io website](https://home-assistant.io). diff --git a/Rakefile b/Rakefile index 860f95e79c4a..182f8178a113 100644 --- a/Rakefile +++ b/Rakefile @@ -2,28 +2,13 @@ require "rubygems" require "bundler/setup" require "stringex" -## -- Rsync Deploy config -- ## -# Be sure your public key is listed in your server's ~/.ssh/authorized_keys file -ssh_user = "user@domain.com" -ssh_port = "22" -document_root = "~/website.com/" -rsync_delete = false -rsync_args = "" # Any extra arguments to pass to rsync -deploy_default = "push" - -# This will be configured for you when you run config_deploy -deploy_branch = "master" - ## -- Misc Configs -- ## - public_dir = "public/" # compiled site directory source_dir = "source" # source file directory blog_index_dir = 'source/blog' # directory for your blog's index page (if you put your index in source/blog/index.html, set this to 'source/blog') -deploy_dir = "_deploy" # deploy directory (for Github pages deployment) stash_dir = "_stash" # directory to stash posts for speedy generation components_dir = "_components" # directory for component files posts_dir = "_posts" # directory for blog files -themes_dir = ".themes" # directory for blog files new_post_ext = "markdown" # default new post file extension when using the new_post task new_page_ext = "markdown" # default new page file extension when using the new_page task server_port = "4000" # port for preview server eg. localhost:4000 @@ -33,22 +18,6 @@ if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil `chcp 65001` end -desc "Initial setup for Octopress: copies the default theme into the path of Jekyll's generator. Rake install defaults to rake install[classic] to install a different theme run rake install[some_theme_name]" -task :install, :theme do |t, args| - if File.directory?(source_dir) || File.directory?("sass") - abort("rake aborted!") if ask("A theme is already installed, proceeding will overwrite existing files. Are you sure?", ['y', 'n']) == 'n' - end - # copy theme into working Jekyll directories - theme = args.theme || 'classic' - puts "## Copying "+theme+" theme into ./#{source_dir} and ./sass" - mkdir_p source_dir - cp_r "#{themes_dir}/#{theme}/source/.", source_dir - mkdir_p "sass" - cp_r "#{themes_dir}/#{theme}/sass/.", "sass" - mkdir_p "#{source_dir}/#{posts_dir}" - mkdir_p public_dir -end - ####################### # Working with Jekyll # ####################### @@ -198,216 +167,6 @@ task :clean do rm_rf [Dir.glob(".pygments-cache/**"), Dir.glob(".gist-cache/**"), Dir.glob(".sass-cache/**"), "source/stylesheets/screen.css"] end -desc "Move sass to sass.old, install sass theme updates, replace sass/custom with sass.old/custom" -task :update_style, :theme do |t, args| - theme = args.theme || 'classic' - if File.directory?("sass.old") - puts "removed existing sass.old directory" - rm_r "sass.old", :secure=>true - end - mv "sass", "sass.old" - puts "## Moved styles into sass.old/" - cp_r "#{themes_dir}/"+theme+"/sass/", "sass", :remove_destination=>true - cp_r "sass.old/custom/.", "sass/custom/", :remove_destination=>true - puts "## Updated Sass ##" -end - -desc "Move source to source.old, install source theme updates, replace source/_includes/navigation.html with source.old's navigation" -task :update_source, :theme do |t, args| - theme = args.theme || 'classic' - if File.directory?("#{source_dir}.old") - puts "## Removed existing #{source_dir}.old directory" - rm_r "#{source_dir}.old", :secure=>true - end - mkdir "#{source_dir}.old" - cp_r "#{source_dir}/.", "#{source_dir}.old" - puts "## Copied #{source_dir} into #{source_dir}.old/" - cp_r "#{themes_dir}/"+theme+"/source/.", source_dir, :remove_destination=>true - cp_r "#{source_dir}.old/_includes/custom/.", "#{source_dir}/_includes/custom/", :remove_destination=>true - cp "#{source_dir}.old/favicon.png", source_dir - mv "#{source_dir}/index.html", "#{blog_index_dir}", :force=>true if blog_index_dir != source_dir - cp "#{source_dir}.old/index.html", source_dir if blog_index_dir != source_dir && File.exists?("#{source_dir}.old/index.html") - puts "## Updated #{source_dir} ##" -end - -############## -# Deploying # -############## - -desc "Default deploy task" -task :deploy do - # Check if preview posts exist, which should not be published - if File.exists?(".preview-mode") - puts "## Found posts in preview mode, regenerating files ..." - File.delete(".preview-mode") - Rake::Task[:generate].execute - end - - Rake::Task[:copydot].invoke(source_dir, public_dir) - Rake::Task["#{deploy_default}"].execute -end - -desc "Generate website and deploy" -task :gen_deploy => [:integrate, :generate, :deploy] do -end - -desc "copy dot files for deployment" -task :copydot, :source, :dest do |t, args| - FileList["#{args.source}/**/.*"].exclude("**/.", "**/..", "**/.DS_Store", "**/._*").each do |file| - cp_r file, file.gsub(/#{args.source}/, "#{args.dest}") unless File.directory?(file) - end -end - -desc "Deploy website via rsync" -task :rsync do - exclude = "" - if File.exists?('./rsync-exclude') - exclude = "--exclude-from '#{File.expand_path('./rsync-exclude')}'" - end - puts "## Deploying website via Rsync" - ok_failed system("rsync -avze 'ssh -p #{ssh_port}' #{exclude} #{rsync_args} #{"--delete" unless rsync_delete == false} #{public_dir}/ #{ssh_user}:#{document_root}") -end - -desc "deploy public directory to github pages" -multitask :push do - puts "## Deploying branch to Github Pages " - puts "## Pulling any updates from Github Pages " - cd "#{deploy_dir}" do - system "git checkout #{deploy_branch}" - end - (Dir["#{deploy_dir}/*"]).each { |f| rm_rf(f) } - Rake::Task[:copydot].invoke(public_dir, deploy_dir) - puts "\n## Copying #{public_dir} to #{deploy_dir}" - cp_r "#{public_dir}/.", deploy_dir - cd "#{deploy_dir}" do - if ENV["TRAVIS"] == 'true' - system 'git config user.name "Travis CI"' - system 'git config user.email "balloob+bot@gmail.com"' - end - - system "git add -A" - message = "Site updated at #{Time.now.utc}" - puts "\n## Committing: #{message}" - system "git commit -m \"#{message}\"" - - puts "\n## Pushing generated #{deploy_dir} website" - if ENV["GH_TOKEN"].nil? - Bundler.with_clean_env { system "git push origin #{deploy_branch}" } - else - puts "## Using GH_TOKEN" - new_origin = `git remote -v | grep origin | grep push | awk '{print $2}'`.chomp.sub('//', "//#{ENV['GH_TOKEN']}@") - system "git remote add origin-auth #{new_origin} > /dev/null 2>&1" - system "git push --quiet origin-auth #{deploy_branch} > /dev/null 2>&1" - end - - puts "\n## Github Pages deploy complete" - end -end - -desc "Update configurations to support publishing to root or sub directory" -task :set_root_dir, :dir do |t, args| - puts ">>> !! Please provide a directory, eg. rake config_dir[publishing/subdirectory]" unless args.dir - if args.dir - if args.dir == "/" - dir = "" - else - dir = "/" + args.dir.sub(/(\/*)(.+)/, "\\2").sub(/\/$/, ''); - end - rakefile = IO.read(__FILE__) - rakefile.sub!(/public_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "public_dir\\1=\\2\\3public#{dir}\\3") - File.open(__FILE__, 'w') do |f| - f.write rakefile - end - compass_config = IO.read('config.rb') - compass_config.sub!(/http_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_path\\1=\\2\\3#{dir}/\\3") - compass_config.sub!(/http_images_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_images_path\\1=\\2\\3#{dir}/images\\3") - compass_config.sub!(/http_fonts_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_fonts_path\\1=\\2\\3#{dir}/fonts\\3") - compass_config.sub!(/css_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "css_dir\\1=\\2\\3public#{dir}/stylesheets\\3") - File.open('config.rb', 'w') do |f| - f.write compass_config - end - jekyll_config = IO.read('_config.yml') - jekyll_config.sub!(/^destination:.+$/, "destination: public#{dir}") - jekyll_config.sub!(/^subscribe_rss:\s*\/.+$/, "subscribe_rss: #{dir}/atom.xml") - jekyll_config.sub!(/^root:.*$/, "root: /#{dir.sub(/^\//, '')}") - File.open('_config.yml', 'w') do |f| - f.write jekyll_config - end - rm_rf public_dir - mkdir_p "#{public_dir}#{dir}" - puts "## Site's root directory is now '/#{dir.sub(/^\//, '')}' ##" - end -end - -desc "Set up _deploy folder and deploy branch for Github Pages deployment" -task :setup_github_pages, :repo do |t, args| - if args.repo - repo_url = args.repo - else - puts "Enter the read/write url for your repository" - puts "(For example, 'git@github.com:your_username/your_username.github.io.git)" - puts " or 'https://github.com/your_username/your_username.github.io')" - repo_url = get_stdin("Repository url: ") - end - protocol = (repo_url.match(/(^git)@/).nil?) ? 'https' : 'git' - if protocol == 'git' - user = repo_url.match(/:([^\/]+)/)[1] - else - user = repo_url.match(/github\.com\/([^\/]+)/)[1] - end - branch = (repo_url.match(/\/[\w-]+\.github\.(?:io|com)/).nil?) ? 'gh-pages' : 'master' - project = (branch == 'gh-pages') ? repo_url.match(/\/([^\.]+)/)[1] : '' - unless (`git remote -v` =~ /origin.+?octopress(?:\.git)?/).nil? - # If octopress is still the origin remote (from cloning) rename it to octopress - system "git remote rename origin octopress" - if branch == 'master' - # If this is a user/organization pages repository, add the correct origin remote - # and checkout the source branch for committing changes to the blog source. - system "git remote add origin #{repo_url}" - puts "Added remote #{repo_url} as origin" - system "git config branch.master.remote origin" - puts "Set origin as default remote" - system "git branch -m master source" - puts "Master branch renamed to 'source' for committing your blog source files" - else - unless !public_dir.match("#{project}").nil? - system "rake set_root_dir[#{project}]" - end - end - end - url = blog_url(user, project) - jekyll_config = IO.read('_config.yml') - jekyll_config.sub!(/^url:.*$/, "url: #{url}") - File.open('_config.yml', 'w') do |f| - f.write jekyll_config - end - rm_rf deploy_dir - mkdir deploy_dir - cd "#{deploy_dir}" do - system "git init" - system 'echo "My Octopress Page is coming soon …" > index.html' - system "git add ." - system "git commit -m \"Octopress init\"" - system "git branch -m gh-pages" unless branch == 'master' - system "git remote add origin #{repo_url}" - rakefile = IO.read(__FILE__) - rakefile.sub!(/deploy_branch(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_branch\\1=\\2\\3#{branch}\\3") - rakefile.sub!(/deploy_default(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_default\\1=\\2\\3push\\3") - File.open(__FILE__, 'w') do |f| - f.write rakefile - end - end - puts "\n---\n## Now you can deploy to #{repo_url} with `rake deploy` ##" -end - -def ok_failed(condition) - if (condition) - puts "OK" - else - puts "FAILED" - end -end - def get_stdin(message) print message STDIN.gets.chomp diff --git a/_config.yml b/_config.yml index b61deb20e179..19d9dad7a333 100644 --- a/_config.yml +++ b/_config.yml @@ -100,9 +100,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 101 -current_patch_version: 3 -date_released: 2019-11-05 +current_minor_version: 107 +current_patch_version: 5 +date_released: 2020-03-21 # 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/package-lock.json b/package-lock.json index bfe070db959d..ede6616e59e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,16 +4,511 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@azu/format-text": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.1.tgz", + "integrity": "sha1-aWc1CpRkD2sChVFpvYl85U1s6+I=", + "dev": true + }, + "@azu/style-format": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.0.tgz", + "integrity": "sha1-5wGH+Khi4ZGxvObAJo8TrNOlayA=", + "dev": true, + "requires": { + "@azu/format-text": "^1.0.1" + } + }, + "@textlint/ast-node-types": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.5.tgz", + "integrity": "sha512-+rEx4jLOeZpUcdvll7jEg/7hNbwYvHWFy4IGW/tk2JdbyB3SJVyIP6arAwzTH/sp/pO9jftfyZnRj4//sLbLvQ==", + "dev": true + }, + "@textlint/ast-tester": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-2.1.6.tgz", + "integrity": "sha512-i+UrSKZXs561g8LXsCBkgpNYkgBS3T3Pif2/+DraZmSKpQ2r2D1yCOdH82IGPWWpQ/GMSg6Z0qpLJpjnYz+bpg==", + "dev": true, + "requires": { + "@textlint/ast-node-types": "^4.2.5" + } + }, + "@textlint/ast-traverse": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-2.1.7.tgz", + "integrity": "sha512-73Nw0R4TaskPmF36Hop1DZ8AbH339WrGiLQjzbOLaXHaBHQ4hdNw28UMlw4glfPZb7/zvxPcJRtg9AB8F3ZW0g==", + "dev": true, + "requires": { + "@textlint/ast-node-types": "^4.2.5" + } + }, + "@textlint/feature-flag": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-3.1.6.tgz", + "integrity": "sha512-R2s027/WG3zhCMHZG79OhRFmkSL2ghwvFYg/W+2VUva5aYC8i9yeuwRyWt7m83tP1qlI+bq7j3S04fyn6yNheg==", + "dev": true, + "requires": { + "map-like": "^2.0.0" + } + }, + "@textlint/fixer-formatter": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-3.1.13.tgz", + "integrity": "sha512-FXqAJZ+5fLsOZjvFmn1JhCer8gQI4ZQk3R45bXizRJm6DASByPAGGh/MAQxxHSGeR5wR8miO/koxA2BrS8OhAw==", + "dev": true, + "requires": { + "@textlint/module-interop": "^1.0.2", + "@textlint/types": "^1.3.1", + "chalk": "^1.1.3", + "debug": "^4.1.1", + "diff": "^4.0.1", + "is-file": "^1.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "try-resolve": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@textlint/kernel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-3.2.1.tgz", + "integrity": "sha512-gMCgP/tAjCX8dGqgu7nhUwaDC/TzDKeRZb9qa50nqbnILRasKplj3lOWn2osZdkScVZPLQp+al1pDh9pU4D+Dw==", + "dev": true, + "requires": { + "@textlint/ast-node-types": "^4.2.5", + "@textlint/ast-tester": "^2.1.6", + "@textlint/ast-traverse": "^2.1.7", + "@textlint/feature-flag": "^3.1.6", + "@textlint/types": "^1.3.1", + "@textlint/utils": "^1.0.3", + "debug": "^4.1.1", + "deep-equal": "^1.1.0", + "map-like": "^2.0.0", + "structured-source": "^3.0.2" + } + }, + "@textlint/linter-formatter": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-3.1.12.tgz", + "integrity": "sha512-OEP4pklu01MEgBJrftD9vwe3HFx+jhiEe1JFIgf7GZ4a0fSer5vQWXBo5wHW6WtZtSa+iLBsLC3mI5VMeshzdA==", + "dev": true, + "requires": { + "@azu/format-text": "^1.0.1", + "@azu/style-format": "^1.0.0", + "@textlint/module-interop": "^1.0.2", + "@textlint/types": "^1.3.1", + "chalk": "^1.0.0", + "concat-stream": "^1.5.1", + "debug": "^4.1.1", + "is-file": "^1.0.0", + "js-yaml": "^3.2.4", + "optionator": "^0.8.1", + "pluralize": "^2.0.0", + "string-width": "^1.0.1", + "string.prototype.padstart": "^3.0.0", + "strip-ansi": "^6.0.0", + "table": "^3.7.8", + "text-table": "^0.2.0", + "try-resolve": "^1.0.1", + "xml-escape": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@textlint/markdown-to-ast": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.1.7.tgz", + "integrity": "sha512-B0QtokeQR4a9+4q0NQr8T9l7A1fFihTN5Ze57tVgqW+3ymzXEouh8DvPHeNQ4T6jEkAThvdjk95mxAMpGRJ79w==", + "dev": true, + "requires": { + "@textlint/ast-node-types": "^4.2.5", + "debug": "^4.1.1", + "remark-frontmatter": "^1.2.0", + "remark-parse": "^5.0.0", + "structured-source": "^3.0.2", + "traverse": "^0.6.6", + "unified": "^6.1.6" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "remark-parse": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", + "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==", + "dev": true, + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "unified": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", + "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^2.0.0", + "x-is-string": "^0.1.0" + } + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", + "dev": true + }, + "vfile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", + "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "dev": true, + "requires": { + "is-buffer": "^1.1.4", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + } + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "dev": true, + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } + } + }, + "@textlint/module-interop": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-1.0.2.tgz", + "integrity": "sha512-qQ6dqlg4SYywCywimIbkveQZu1MG6ugf6fcJuWDi3D51FbdkSRsMrPusJ1YoW6Y3XBp0ww9fJjXWtlUStGeQsw==", + "dev": true + }, + "@textlint/text-to-ast": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-3.1.7.tgz", + "integrity": "sha512-CBAEQmiEa2G/wonlLr1HgUtXfTSas6OGGvYGRIRMJweNh5Ilhbz2nM2/9XQMfLQbdn5pGYrAAAQRB2+/9fZ31A==", + "dev": true, + "requires": { + "@textlint/ast-node-types": "^4.2.5" + } + }, + "@textlint/textlint-plugin-markdown": { + "version": "5.1.12", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-5.1.12.tgz", + "integrity": "sha512-CJWWTaomR22hQD3ogrZujMH1pNN7DqZadmx9CJXxgKwpI/cuD5d2kClwXO3MeLFckJr5HRso7SFN5ebqKu1ycw==", + "dev": true, + "requires": { + "@textlint/markdown-to-ast": "^6.1.7" + } + }, + "@textlint/textlint-plugin-text": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-4.1.13.tgz", + "integrity": "sha512-KQfSYNDt8HSX8ZL/r86N8OrAuQ9LEuevAtGomtfkw0h7Ed/pUfmuYXjht8wYRdysYBa4JyjrXcmqzRAUdkWrag==", + "dev": true, + "requires": { + "@textlint/text-to-ast": "^3.1.7" + } + }, + "@textlint/types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.3.1.tgz", + "integrity": "sha512-9MJ6PRPYWiFs2lfvp/Qhq72WrkZLL5ncBUXAVoj1Ug17ug8d7psmr/KJstMMocW3EWHSOuIDj7unh413c3jPqQ==", + "dev": true, + "requires": { + "@textlint/ast-node-types": "^4.2.5" + } + }, + "@textlint/utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-1.0.3.tgz", + "integrity": "sha512-6oGaBKXYpg5Ooph5p32OFdp1dXDUC1z5mpHg2gmQbx6QZjmP4QX+ygBQdNoCq15d1w88+We6koJl0n0WXjItYw==", + "dev": true + }, "@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", "dev": true }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + }, + "dependencies": { + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -26,9 +521,9 @@ } }, "anymatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz", - "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -62,6 +557,12 @@ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true }, + "boundary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", + "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -94,9 +595,9 @@ "dev": true }, "ccount": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz", - "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz", + "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==", "dev": true }, "chalk": { @@ -117,9 +618,9 @@ "dev": true }, "character-entities-html4": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.3.tgz", - "integrity": "sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", "dev": true }, "character-entities-legacy": { @@ -134,20 +635,26 @@ "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==", "dev": true }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true + }, "chokidar": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz", - "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", "dev": true, "requires": { - "anymatch": "^3.0.1", - "braces": "^3.0.2", - "fsevents": "^2.0.6", - "glob-parent": "^5.0.0", - "is-binary-path": "^2.1.0", - "is-glob": "^4.0.1", - "normalize-path": "^3.0.0", - "readdirp": "^3.1.1" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" } }, "co": { @@ -156,6 +663,12 @@ "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", "dev": true }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, "collapse-white-space": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.5.tgz", @@ -195,6 +708,18 @@ "typedarray": "^0.0.6" } }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -204,12 +729,47 @@ "ms": "^2.1.1" } }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -225,6 +785,36 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -243,6 +833,12 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fault": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.3.tgz", @@ -253,14 +849,23 @@ } }, "figures": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz", - "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -270,6 +875,32 @@ "to-regex-range": "^5.0.1" } }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, "fn-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", @@ -289,12 +920,24 @@ "dev": true }, "fsevents": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz", - "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", "dev": true, "optional": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -310,24 +953,68 @@ } }, "glob-parent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, "ignore": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.2.tgz", - "integrity": "sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", "dev": true }, "inflight": { @@ -374,6 +1061,12 @@ "is-decimal": "^1.0.0" } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -390,9 +1083,21 @@ } }, "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-decimal": { @@ -413,6 +1118,12 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz", + "integrity": "sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY=", + "dev": true + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -435,9 +1146,9 @@ "dev": true }, "is-hidden": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-hidden/-/is-hidden-1.1.2.tgz", - "integrity": "sha512-kytBeNVW2QTIqZdJBDKIjP+EkUTzDT07rsc111w/gxqR6wK3ODkOswcpxgED6HU6t7fEhOxqojVZ2a2kU9rj+A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-hidden/-/is-hidden-1.1.3.tgz", + "integrity": "sha512-FFzhGKA9h59OFxeaJl0W5ILTYetI8WsdqdofKr69uLKZdV6hbDKxj8vkpG3L9uS/6Q/XYh1tkXm6xwRGFweETA==", "dev": true }, "is-number": { @@ -453,9 +1164,33 @@ "dev": true }, "is-plain-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.0.0.tgz", - "integrity": "sha512-EYisGhpgSCwspmIuRHGjROWTon2Xp8Z7U03Wubk/bTL5TTRC5R1rGVgyjzBrk9+ULdH6cRD06KRcw/xfqhVYKQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "is-whitespace-character": { @@ -470,6 +1205,12 @@ "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==", "dev": true }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, "js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", @@ -486,13 +1227,70 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", + "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + } } }, "load-plugin": { @@ -505,10 +1303,83 @@ "resolve-from": "^5.0.0" } }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "longest-streak": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", - "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "map-like": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-like/-/map-like-2.0.0.tgz", + "integrity": "sha1-lEltSa0zPA3DI0snrbvR6FNZU7Q=", "dev": true }, "markdown-escapes": { @@ -529,6 +1400,25 @@ "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "dev": true, + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + } + } + }, "mdast-comment-marker": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.1.1.tgz", @@ -536,9 +1426,9 @@ "dev": true }, "mdast-util-compact": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.3.tgz", - "integrity": "sha512-nRiU5GpNy62rZppDKbLwhhtw5DXoFMqw9UNZFmlPsNaQCZ//WLjGKUwWMdJrUH+Se7UvtO2gXtAMe0g/N+eI5w==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", + "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", "dev": true, "requires": { "unist-util-visit": "^1.1.0" @@ -559,12 +1449,47 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "misspellings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/misspellings/-/misspellings-1.1.0.tgz", + "integrity": "sha1-U9UAJmy9Cc2p2UxM85LmBYm1syQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -582,6 +1507,42 @@ "untildify": "^2.1.0" } }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -591,12 +1552,50 @@ "wrappy": "1" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, "parse-entities": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", @@ -621,16 +1620,84 @@ "json-parse-better-errors": "^1.0.1" } }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-glob-pattern": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-to-glob-pattern/-/path-to-glob-pattern-1.0.2.tgz", + "integrity": "sha1-Rz5qOikqnRP7rj7czuctO6uoxhk=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, "picomatch": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", - "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pluralize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", + "integrity": "sha1-crcmqm+sHt7uQiVsfY3CVrM1Z38=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "rc": { @@ -645,10 +1712,100 @@ "strip-json-comments": "~2.0.1" } }, + "rc-config-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-3.0.0.tgz", + "integrity": "sha512-bwfUSB37TWkHfP+PPjb/x8BUjChFmmBK44JMfVnU7paisWqZl/o5k7ttCH+EQLnrbn2Aq8Fo1LAsyUiz+WF4CQ==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "js-yaml": "^3.12.0", + "json5": "^2.1.1", + "require-from-string": "^2.0.2" + }, + "dependencies": { + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -657,18 +1814,28 @@ } }, "readdirp": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.1.tgz", - "integrity": "sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", "dev": true, "requires": { - "picomatch": "^2.0.4" + "picomatch": "^2.0.7" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "remark": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-11.0.0.tgz", - "integrity": "sha512-cxfoqvY1Tyz7n1KF2JpywPCKulF69XvGmFwykuRPnqFkc8aSNQOFvcI1L3jj5NOjm+fpDdwwnGmwabxni1X8oQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/remark/-/remark-11.0.2.tgz", + "integrity": "sha512-bh+eJgn8wgmbHmIBOuwJFdTVRVpl3fcVP6HxmpPWO0ULGP9Qkh6INJh0N5Uy7GqlV7DQYGoqaKiEIpM5LLvJ8w==", "dev": true, "requires": { "remark-parse": "^7.0.0", @@ -677,9 +1844,9 @@ } }, "remark-cli": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-7.0.0.tgz", - "integrity": "sha512-gYomWviFnZsiRimG+Jdb4LQ9c8uSOcGmPTmzlvxImt0gvzabqlp1kaqndxTx4kYLsWGqwhQRO+M9iyqHDkoDlA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-7.0.1.tgz", + "integrity": "sha512-CUjBLLSbEay0mNwOO+pptnLIoS8UB6cHlhZVpTRKbtbIcw6YEzEfD7jGjW1HCA8lZK87IfY3/DuWE6DlXu+hfg==", "dev": true, "requires": { "markdown-extensions": "^1.1.0", @@ -741,9 +1908,9 @@ } }, "remark-parse": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-7.0.0.tgz", - "integrity": "sha512-UlfoqASKUnwSrzOcLSa7fwYdkpbeWwAs49YYdQmoYXK1TUJ2CvDBb3v8Lkt2GQzdPW9dWbjhteOsJJ27p1rNFg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-7.0.2.tgz", + "integrity": "sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==", "dev": true, "requires": { "collapse-white-space": "^1.0.2", @@ -764,9 +1931,9 @@ } }, "remark-stringify": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-7.0.3.tgz", - "integrity": "sha512-+jgmjNjm2kR7y2Ns1BATXRlFr+iQ7sDcpSgytfU77nkw7UCd5yJNArSxB3MU3Uul7HuyYNTCjetoGfy8xLia1A==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-7.0.4.tgz", + "integrity": "sha512-qck+8NeA1D0utk1ttKcWAoHRrJxERYQzkHDyn+pF5Z4whX1ug98uCNPPSeFgLSaNERRxnD6oxIug6DzZQth6Pg==", "dev": true, "requires": { "ccount": "^1.0.0", @@ -797,30 +1964,98 @@ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, "shellsubstitute": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shellsubstitute/-/shellsubstitute-1.2.0.tgz", "integrity": "sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A=", "dev": true }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, "sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=", "dev": true }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -834,23 +2069,61 @@ "dev": true }, "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.padstart": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.0.tgz", + "integrity": "sha512-envqZvUp2JItI+OeQ5UAh1ihbAV5G/2bixTojvlIa090GGqF+NQRxbWb2nv9fTGrZABv6+pE6jXoAZhhS2k4Hw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } }, "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + } } }, "stringify-entities": { @@ -867,12 +2140,21 @@ } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "is-utf8": "^0.2.0" } }, "strip-json-comments": { @@ -881,6 +2163,15 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "structured-source": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz", + "integrity": "sha1-3YAkJeD1PcSm56yjdSkBoczaevU=", + "dev": true, + "requires": { + "boundary": "^1.0.1" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -890,12 +2181,188 @@ "has-flag": "^3.0.0" } }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "textlint": { + "version": "11.6.3", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-11.6.3.tgz", + "integrity": "sha512-tTLLgB49zkJgq6GYDJOT6F31kHLulFjzovCHpN6ycv8d/aPcYl9vv7f/luR33YBQZdnGLtn+j8+G4GJAZ6Uz6w==", + "dev": true, + "requires": { + "@textlint/ast-node-types": "^4.2.5", + "@textlint/ast-traverse": "^2.1.7", + "@textlint/feature-flag": "^3.1.6", + "@textlint/fixer-formatter": "^3.1.13", + "@textlint/kernel": "^3.2.1", + "@textlint/linter-formatter": "^3.1.12", + "@textlint/module-interop": "^1.0.2", + "@textlint/textlint-plugin-markdown": "^5.1.12", + "@textlint/textlint-plugin-text": "^4.1.13", + "@textlint/types": "^1.3.1", + "@textlint/utils": "^1.0.3", + "debug": "^4.1.1", + "deep-equal": "^1.1.0", + "file-entry-cache": "^5.0.1", + "get-stdin": "^5.0.1", + "glob": "^7.1.3", + "is-file": "^1.0.0", + "log-symbols": "^1.0.2", + "map-like": "^2.0.0", + "md5": "^2.2.1", + "mkdirp": "^0.5.0", + "optionator": "^0.8.0", + "path-to-glob-pattern": "^1.0.2", + "rc-config-loader": "^3.0.0", + "read-pkg": "^1.1.0", + "read-pkg-up": "^3.0.0", + "structured-source": "^3.0.2", + "try-resolve": "^1.0.1", + "unique-concat": "^0.2.2" + } + }, + "textlint-rule-common-misspellings": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/textlint-rule-common-misspellings/-/textlint-rule-common-misspellings-1.0.1.tgz", + "integrity": "sha1-jEEzzzu1mqFZGZ0sm87RJBM2V3Q=", + "dev": true, + "requires": { + "misspellings": "^1.0.1", + "textlint-rule-helper": "^1.1.5" + } + }, + "textlint-rule-helper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-1.2.0.tgz", + "integrity": "sha1-vmjUelFGsW3RFieMmut701YxzNo=", + "dev": true, + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "textlint-rule-terminology": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-2.1.3.tgz", + "integrity": "sha512-RpbATk2+M35bAXnDQZGL54ILNPXHy8e8GIl3AJLiywG251L2bQYqvAhLaA7ad9qsrDOXQiGFIkd562KnP5CPkw==", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "strip-json-comments": "^3.0.1", + "textlint-rule-helper": "^2.1.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, + "textlint-rule-helper": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-2.1.1.tgz", + "integrity": "sha512-6fxgHzoJVkjl3LaC1b2Egi+5wbhG4i0pU0knJmQujVhxIJ3D3AcQQZPs457xKAi5xKz1WayYeTeJ5jrD/hnO7g==", + "dev": true, + "requires": { + "@textlint/ast-node-types": "^4.2.1", + "@textlint/types": "^1.1.2", + "structured-source": "^3.0.2", + "unist-util-visit": "^1.1.0" + } + } + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -906,15 +2373,21 @@ } }, "to-vfile": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.0.0.tgz", - "integrity": "sha512-i9fwXXSsHLu7mzgixc1WjgnqSe6pGpjnzCYoFmrASvEueLfyKf09QAe+XQYu8OAJ62aFqHpe2EKXojeRVvEzqA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz", + "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==", "dev": true, "requires": { "is-buffer": "^2.0.0", "vfile": "^4.0.0" } }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -933,6 +2406,21 @@ "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", "dev": true }, + "try-resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", + "integrity": "sha1-z95vq9ctY+V5fPqrhzq76OcA6RI=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -950,9 +2438,9 @@ } }, "unified": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-8.3.2.tgz", - "integrity": "sha512-NDtUAXcd4c+mKppCbsZHzmhkKEQuhveZNBrFYmNgMIMk2K9bc8hmG3mLEGVtRmSNodobwyMePAnvIGVWZfPdzQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", + "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", "dev": true, "requires": { "bail": "^1.0.0", @@ -1026,6 +2514,12 @@ "vfile-location": "^2.0.0" } }, + "unique-concat": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/unique-concat/-/unique-concat-0.2.2.tgz", + "integrity": "sha1-khD5vcqsxeHjkpSQ18AZ35bxhxI=", + "dev": true + }, "unist-util-generated": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.4.tgz", @@ -1063,9 +2557,9 @@ } }, "unist-util-stringify-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.1.tgz", - "integrity": "sha512-Zqlf6+FRI39Bah8Q6ZnNGrEHUhwJOkHde2MHVk96lLyftfJJckaPslKgzhVcviXj8KcE9UJM9F+a4JEiBUTYgA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dev": true, "requires": { "@types/unist": "^2.0.2" @@ -1104,10 +2598,20 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "vfile": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.0.1.tgz", - "integrity": "sha512-lRHFCuC4SQBFr7Uq91oJDJxlnftoTLQ7eKIpMdubhYcVMho4781a8MWXLy3qZrZ0/STD1kRiKc0cQOHm4OkPeA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.0.3.tgz", + "integrity": "sha512-lREgT5sF05TQk68LO6APy0In+TkFGnFEgKChK2+PHIaTrFQ9oHCKXznZ7VILwgYVBcl0gv4lGATFZBLhi2kVQg==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -1124,19 +2628,19 @@ "dev": true }, "vfile-message": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.1.tgz", - "integrity": "sha512-KtasSV+uVU7RWhUn4Lw+wW1Zl/nW8JWx7JCPps10Y9JRRIDeDXf8wfBLoOSsJLyo27DqMyAi54C6Jf/d6Kr2Bw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.3.tgz", + "integrity": "sha512-qQg/2z8qnnBHL0psXyF72kCjb9YioIynvyltuNKFaUhRtqTIcIMP3xnBaPzirVZNuBrUe1qwFciSx2yApa4byw==", "dev": true, "requires": { - "@types/unist": "^2.0.2", + "@types/unist": "^2.0.0", "unist-util-stringify-position": "^2.0.0" } }, "vfile-reporter": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.0.tgz", - "integrity": "sha512-8Is0XxFxWJUhPJdOg3CyZTqd3ICCWg6r304PuBl818ZG91h4FMS3Q+lrOPS+cs5/DZK3H0+AkJdH0J8JEwKtDA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.1.tgz", + "integrity": "sha512-0OppK9mo8G2XUpv+hIKLVSDsoxJrXnOy73+vIm0jQUOUFYRduqpFHX+QqAQfvRHyX9B0UFiRuNJnBOjQCIsw1g==", "dev": true, "requires": { "repeat-string": "^1.5.0", @@ -1159,15 +2663,21 @@ } }, "vfile-sort": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.2.1.tgz", - "integrity": "sha512-5dt7xEhC44h0uRQKhbM2JAe0z/naHphIZlMOygtMBM9Nn0pZdaX5fshhwWit9wvsuP8t/wp43nTDRRErO1WK8g==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.2.2.tgz", + "integrity": "sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA==", "dev": true }, "vfile-statistics": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.3.tgz", - "integrity": "sha512-CstaK/ebTz1W3Qp41Bt9Lj/2DmumFsCwC2sKahDNSPh0mPh7/UyMLCoU8ZBX34CRU0d61B4W41yIFsV0NKMZeA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.4.tgz", + "integrity": "sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrapped": { @@ -1186,12 +2696,27 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, "x-is-string": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", "dev": true }, + "xml-escape": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xml-escape/-/xml-escape-1.1.0.tgz", + "integrity": "sha1-OQTBQ/qOs6ADDsZG0pAqLxtwbEQ=", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index 4e6167fb9ac7..275dc1e8cf71 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,22 @@ { - "name": "home-assistant.io", - "description": "Home Assistant Website & Documentation", - "version": "1.0.0", - "dependencies": {}, - "devDependencies": { - "remark-cli": "^7.0.0", - "remark-frontmatter": "^1.3.2", - "remark-lint": "^6.0.5", - "remark-lint-fenced-code-flag": "^1.0.3", - "remark-lint-no-shell-dollars": "^1.0.3", - "remark-stringify": "^7.0.3" - }, - "scripts": { - "markdown:lint": "remark --quiet --frail ." - } + "name": "home-assistant.io", + "description": "Home Assistant Website & Documentation", + "version": "1.0.0", + "dependencies": {}, + "devDependencies": { + "remark-cli": "^7.0.1", + "remark-frontmatter": "^1.3.2", + "remark-lint": "^6.0.5", + "remark-lint-fenced-code-flag": "^1.0.3", + "remark-lint-no-shell-dollars": "^1.0.3", + "remark-stringify": "^7.0.4", + "textlint": "^11.6.3", + "textlint-rule-common-misspellings": "^1.0.1", + "textlint-rule-terminology": "^2.1.3" + }, + "scripts": { + "markdown:lint": "remark --quiet --frail .", + "textlint:all": "textlint source", + "textlint": "textlint source/_cookbook source/_docs source/_faq source/_integrations source/_lovelace source/cloud source/getting-started source/hassio source/lovelace" + } } diff --git a/plugins/cache_buster.rb b/plugins/cache_buster.rb new file mode 100644 index 000000000000..895b39a2eeb0 --- /dev/null +++ b/plugins/cache_buster.rb @@ -0,0 +1,10 @@ +module Jekyll + module CacheBuster + require 'digest/md5' + def cache_buster(file_name) + [file_name, '?', Digest::MD5.hexdigest(File.read(File.join('./source', file_name)))].join + end + end +end + +Liquid::Template.register_filter(Jekyll::CacheBuster) diff --git a/sass/base/_typography.scss b/sass/base/_typography.scss index 9a6bbacd2a29..ded090889b72 100644 --- a/sass/base/_typography.scss +++ b/sass/base/_typography.scss @@ -10,9 +10,15 @@ $header-subtitle-font-family: $heading-font-family !default; .heading { font-family: $heading-font-family; } -.sans { font-family: $sans; } -.serif { font-family: $serif; } -.mono { font-family: $mono; } +.sans { + font-family: $sans; +} +.serif { + font-family: $serif; +} +.mono { + font-family: $mono; +} body > header h1 { font-size: 2.2em; @@ -37,75 +43,172 @@ h1 { } @media only screen and (min-width: 992px) { - body { font-size: 1.15em; } - h1 { font-size: 2.6em; line-height: 1.2em; } + body { + font-size: 1.15em; + } + h1 { + font-size: 2.6em; + line-height: 1.2em; + } } -#{headings()}{ +#{headings()} { @extend .heading; text-rendering: optimizelegibility; margin-bottom: 1em; font-weight: bold; } -h2, section h1 { +h2, +section h1 { font-size: 1.5em; } -h3, section h2, section section h1 { +h3, +section h2, +section section h1 { font-size: 1.3em; } -h4, section h3, section section h2, section section section h1 { +h4, +section h3, +section section h2, +section section section h1 { font-size: 1em; } -h5, section h4, section section h3 { - font-size: .9em; +h5, +section h4, +section section h3 { + font-size: 0.9em; } -h6, section h5, section section h4, section section section h3 { - font-size: .8em; +h6, +section h5, +section section h4, +section section section h3 { + font-size: 0.8em; } -p, article blockquote, ul, ol { margin-bottom: 1.5em; } +p, +article blockquote, +ul, +ol { + margin-bottom: 1.5em; +} -ul { list-style-type: disc; - ul { list-style-type: circle; margin-bottom: 0px; - ul { list-style-type: square; margin-bottom: 0px; }}} +ul { + list-style-type: disc; + ul { + list-style-type: circle; + margin-bottom: 0px; + ul { + list-style-type: square; + margin-bottom: 0px; + } + } +} -ol { list-style-type: decimal; - ol { list-style-type: lower-alpha; margin-bottom: 0px; - ol { list-style-type: lower-roman; margin-bottom: 0px; }}} +ol { + list-style-type: decimal; + ol { + list-style-type: lower-alpha; + margin-bottom: 0px; + ol { + list-style-type: lower-roman; + margin-bottom: 0px; + } + } +} -ul, ol { &, ul, ol { margin-left: 1.3em; }} -ul, ol { ul, ol { margin-bottom: 0em; }} +ul, +ol { + &, + ul, + ol { + margin-left: 1.3em; + } +} +ul, +ol { + ul, + ol { + margin-bottom: 0em; + } +} -strong { font-weight: bold; } +strong { + font-weight: bold; +} -em { font-style: italic; } +em { + font-style: italic; +} -sup, sub { font-size: 0.75em; position: relative; display: inline-block; padding: 0 .2em; line-height: .8em;} -sup { top: -.5em; } -sub { bottom: -.5em; } +sup, +sub { + font-size: 0.75em; + position: relative; + display: inline-block; + padding: 0 0.2em; + line-height: 0.8em; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.5em; +} -a[rev='footnote']{ font-size: .75em; padding: 0 .3em; line-height: 1; } +a[rev="footnote"] { + font-size: 0.75em; + padding: 0 0.3em; + line-height: 1; +} -q { font-style: italic; - &:before { content: "\201C"; } - &:after { content: "\201D"; } +q { + font-style: italic; + &:before { + content: '"'; + } + &:after { + content: '"'; + } } -em, dfn { font-style: italic; } +em, +dfn { + font-style: italic; +} -strong, dfn { font-weight: bold; } +strong, +dfn { + font-weight: bold; +} -del, s { text-decoration: line-through; } +del, +s { + text-decoration: line-through; +} -abbr, acronym { border-bottom: 1px dotted; cursor: help; } +abbr, +acronym { + border-bottom: 1px dotted; + cursor: help; +} -pre, code, tt { @extend .mono; } +pre, +code, +tt { + @extend .mono; +} -hr { margin-bottom: 0.2em; } +hr { + margin-bottom: 0.2em; +} -small { font-size: .8em; } +small { + font-size: 0.8em; +} -big { font-size: 1.2em; } +big { + font-size: 1.2em; +} article blockquote { $bq-margin: 1.2em; @@ -114,11 +217,21 @@ article blockquote { font-size: 1.2em; line-height: 1.5em; padding-left: 1em; - border-left: 4px solid rgba($text-color-light, .5); + border-left: 4px solid rgba($text-color-light, 0.5); cite { font-style: italic; - a { color: $text-color-light !important; word-wrap: break-word; } - &:before { content: '\2014'; padding:{right: .3em; left: .3em;} color: $text-color-light; } + a { + color: $text-color-light !important; + word-wrap: break-word; + } + &:before { + content: "\2014"; + padding: { + right: 0.3em; + left: 0.3em; + } + color: $text-color-light; + } } @media only screen and (min-width: 992px) { padding-left: 1.5em; @@ -138,7 +251,7 @@ article blockquote { /* Pull out to the right, modular scale based margins. */ float: right; width: 45%; - margin: .5em 0 1em 1.5em; + margin: 0.5em 0 1em 1.5em; /* Baseline correction */ position: relative; @@ -150,7 +263,7 @@ article blockquote { .pullquote-left:before { /* Make left pullquotes align properly. */ float: left; - margin: .5em 1.5em 1em 0; + margin: 0.5em 1.5em 1em 0; } /* @extend this to force long lines of continuous text to wrap */ @@ -161,4 +274,3 @@ article blockquote { white-space: pre-wrap; word-wrap: break-word; } - diff --git a/sass/custom/_component_page.scss b/sass/custom/_component_page.scss index 5cc5f79c75a0..c52b3dc61071 100644 --- a/sass/custom/_component_page.scss +++ b/sass/custom/_component_page.scss @@ -1,8 +1,8 @@ -#components-page{ - .component-search{ +#components-page { + .component-search { margin-bottom: 24px; - input{ + input { width: 100%; padding: 10px; @@ -35,8 +35,8 @@ margin-bottom: 8px; &.current { - background-color: #3A5561; - background-image: linear-gradient(to bottom, #3A5561,#3F6B7D); + background-color: #3a5561; + background-image: linear-gradient(to bottom, #3a5561, #3f6b7d); } } } @@ -88,7 +88,7 @@ align-items: flex-start; margin: -4px; // grid trick, has to match option-card's margin - p.note{ + p.note { width: 100%; } @@ -100,20 +100,22 @@ background-color: #fefefe; margin: 4px; border-radius: 2px; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), + 0 3px 1px -2px rgba(0, 0, 0, 0.2); padding: 8px; text-align: center; text-decoration: none; .img-container { height: 50px; - margin: 8px 0; + margin: 12px 0; font: 0/0 a; - &:before { /* create a full-height inline block pseudo=element */ - content: ' '; + &:before { + /* create a full-height inline block pseudo=element */ + content: " "; display: inline-block; - vertical-align: middle; /* vertical alignment of the inline element */ + vertical-align: middle; /* vertical alignment of the inline element */ height: 100%; } @@ -127,133 +129,137 @@ } .title { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-decoration: none; font-size: 18px; color: #000; line-height: 1.3em; height: 2.6em; - } - - .category { - font-size: 14px; - color: #AAA; + margin-top: 20px; } } // fade-in animation - &.show-items .option-card{ - opacity:0; - -webkit-animation:new-item-animation .2s linear forwards; - -o-animation:new-item-animation .2s linear forwards; - animation:new-item-animation .2s linear forwards; + &.show-items .option-card { + opacity: 0; + -webkit-animation: new-item-animation 0.2s linear forwards; + -o-animation: new-item-animation 0.2s linear forwards; + animation: new-item-animation 0.2s linear forwards; } // fade-out animation - &.remove-items .option-card{ - -webkit-animation:removed-item-animation .2s cubic-bezier(.55,-0.04,.91,.94) forwards; - -o-animation:removed-item-animation .2s cubic-bezier(.55,-0.04,.91,.94) forwards; - animation:removed-item-animation .2s cubic-bezier(.55,-0.04,.91,.94) forwards + &.remove-items .option-card { + -webkit-animation: removed-item-animation 0.2s + cubic-bezier(0.55, -0.04, 0.91, 0.94) forwards; + -o-animation: removed-item-animation 0.2s + cubic-bezier(0.55, -0.04, 0.91, 0.94) forwards; + animation: removed-item-animation 0.2s cubic-bezier(0.55, -0.04, 0.91, 0.94) + forwards; } } // animations for fade-in and fade-out effects of option-cards @keyframes new-item-animation { from { - opacity:0; - -webkit-transform:scale(0); - -ms-transform:scale(0); - -o-transform:scale(0); - transform:scale(0) + opacity: 0; + -webkit-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); } to { - opacity:1; - -webkit-transform:scale(1); - -ms-transform:scale(1); - -o-transform:scale(1); - transform:scale(1) + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); } } @-webkit-keyframes new-item-animation { from { - opacity:0; - -webkit-transform:scale(0); - transform:scale(0) + opacity: 0; + -webkit-transform: scale(0); + transform: scale(0); } to { - opacity:1; - -webkit-transform:scale(1); - transform:scale(1) + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); } } @-o-keyframes new-item-animation { from { - opacity:0; - -o-transform:scale(0); - transform:scale(0) + opacity: 0; + -o-transform: scale(0); + transform: scale(0); } to { - opacity:1; - -o-transform:scale(1); - transform:scale(1) + opacity: 1; + -o-transform: scale(1); + transform: scale(1); } } // space blocker animation @keyframes openspace { to { - height:auto + height: auto; } } @-webkit-keyframes openspace { to { - height:auto + height: auto; } } @-o-keyframes openspace { to { - height:auto + height: auto; } } // removal animation @keyframes removed-item-animation { from { - opacity:1; - -webkit-transform:scale(1); - -ms-transform:scale(1); - -o-transform:scale(1); - transform:scale(1) + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); } to { - -webkit-transform:scale(0); - -ms-transform:scale(0); - -o-transform:scale(0); - transform:scale(0); - opacity:0 + -webkit-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + opacity: 0; } } @-webkit-keyframes removed-item-animation { from { - opacity:1; - -webkit-transform:scale(1); - transform:scale(1) + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); } to { - -webkit-transform:scale(0); - transform:scale(0); - opacity:0 + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; } } @-o-keyframes removed-item-animation { from { - opacity:1; - -o-transform:scale(1); - transform:scale(1) + opacity: 1; + -o-transform: scale(1); + transform: scale(1); } to { - -o-transform:scale(0); - transform:scale(0); - opacity:0 + -o-transform: scale(0); + transform: scale(0); + opacity: 0; } } diff --git a/sass/inuitcss/base/_quotes.scss b/sass/inuitcss/base/_quotes.scss index 490948ec44e4..0a9dd2cc8e2b 100644 --- a/sass/inuitcss/base/_quotes.scss +++ b/sass/inuitcss/base/_quotes.scss @@ -5,12 +5,11 @@ /** * If English quotes are set in `_vars.scss`, define them here. */ -@if $english-quotes == true{ - $open-quote: \201C; - $close-quote: \201D; +@if $english-quotes == true { + $open-quote: '"'; + $close-quote: '"'; } - /** * Big up @boblet: html5doctor.com/blockquote-q-cite */ @@ -18,55 +17,52 @@ /** * Inline quotes. */ -q{ - quotes:"\2018" "\2019" "#{$open-quote}" "#{$close-quote}"; +q { + quotes: "\2018""\2019""#{$open-quote}""#{$close-quote}"; - &:before{ - content:"\2018"; - content:open-quote; - } - &:after{ - content:"\2019"; - content:close-quote; - } + &:before { + content: "\2018"; + content: open-quote; + } + &:after { + content: "\2019"; + content: close-quote; + } - q:before{ - content:"\201C"; - content:open-quote; - } - q:after{ - content:"\201D"; - content:close-quote; - } + q:before { + content: '"'; + } + q:after { + content: '"'; + } } -blockquote{ - quotes:"#{$open-quote}" "#{$close-quote}"; +blockquote { + quotes: "#{$open-quote}""#{$close-quote}"; - p:before{ - content:"#{$open-quote}"; - content:open-quote; - } - p:after{ - content:""; - content:no-close-quote; - } - p:last-of-type:after{ - content:"#{$close-quote}"; - content:close-quote; - } + p:before { + content: "#{$open-quote}"; + content: open-quote; + } + p:after { + content: ""; + content: no-close-quote; + } + p:last-of-type:after { + content: "#{$close-quote}"; + content: close-quote; + } - q:before{ - content:"\2018"; - content:open-quote; - } - q:after{ - content:"\2019"; - content:close-quote; - } + q:before { + content: "\2018"; + content: open-quote; + } + q:after { + content: "\2019"; + content: close-quote; + } } - /** *
@@ -76,22 +72,22 @@ blockquote{
* */ -blockquote{ - /** +blockquote { + /** * .4em is roughly equal to the width of the opening “ that we wish to hang. */ - text-indent:-0.41em; + text-indent: -0.41em; - p:last-of-type{ - margin-bottom:0; - } + p:last-of-type { + margin-bottom: 0; + } } -.source{ - display:block; - text-indent:0; +.source { + display: block; + text-indent: 0; - &:before{ - content:"\2014"; - } + &:before { + content: "\2014"; + } } diff --git a/sass/oscailte/base/_post.scss b/sass/oscailte/base/_post.scss index 15e3aed12f8e..a93338fe6daa 100644 --- a/sass/oscailte/base/_post.scss +++ b/sass/oscailte/base/_post.scss @@ -1,7 +1,6 @@ $meta-color: lighten($text-color, 20%); article { - blockquote { @extend .clearfix; border-left: 2px solid $primary-color; @@ -24,16 +23,17 @@ article { } } - .pullquote-left::before, .pullquote-right::before { - @media only screen and (max-width: $palm-end){ - border-top: 1px dotted $primary-color; + .pullquote-left::before, + .pullquote-right::before { + @media only screen and (max-width: $palm-end) { + border-top: 1px dotted $primary-color; border-bottom: 1px dotted $primary-color; padding: 0 10px; width: 100%; } border: medium none; color: $primary-color; - content: "\201C" attr(data-pullquote) "\201D"; + content: "\201C"attr(data-pullquote) "\201D"; float: right; font-family: $serif; font-size: 1.4em; @@ -42,7 +42,7 @@ article { margin: 0.3em 0 1em 1.5em; padding: 0; position: relative; - top: 7px; + top: 7px; width: 45%; } @@ -60,7 +60,9 @@ article { a { color: $meta-color; text-decoration: none; - &:hover {text-decoration: underline;} + &:hover { + text-decoration: underline; + } } } } @@ -105,7 +107,7 @@ article { } &.post { - @media only screen and (max-width: $palm-end){ + @media only screen and (max-width: $palm-end) { .tags { clear: both; margin-top: 7px; diff --git a/source/_addons/cec_scan.markdown b/source/_addons/cec_scan.markdown deleted file mode 100644 index a7070819ba34..000000000000 --- a/source/_addons/cec_scan.markdown +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "CEC Scanner" -description: "Scan HDMI CEC devices." ---- - -Help you to discover the HDMI CEC address. Start the add-on and look into the log to see all connected device on HDMI. diff --git a/source/_addons/check_config.markdown b/source/_addons/check_config.markdown deleted file mode 100644 index 160cde791849..000000000000 --- a/source/_addons/check_config.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Check Home Assistant configuration" -description: "Check your current Home Assistant configuration against a new version." ---- - -You can use this add-on to check whether your configuration files are valid against the new version of Home Assistant before you actually update your Home Assistant installation. This add-on will help you avoid errors due to breaking changes, resulting in a smooth update. - -### How to use this add-on - -1. Just start the add-on. -2. Wait (On a Raspberry Pi it can take several minutes). -3. If you see the following output then you are good to go to update Home Assistant: `[Info] Configuration check finished - no error found! :)`. - -If you get errors, then you should look for **Breaking Changes** against the version you specified for this add-on and change your configuration accordingly. - -### Add-on configuration - -```json -{ - "version": "latest" -} -``` - -{% configuration %} -version: - description: Version of Home Assistant that you plan to install. - required: true - type: string -{% endconfiguration %} diff --git a/source/_addons/configurator.markdown b/source/_addons/configurator.markdown deleted file mode 100644 index 2f7bc1088436..000000000000 --- a/source/_addons/configurator.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "HASS Configurator" -description: "Browser-based configuration file editor for Home Assistant." -featured: true -og_image: /images/hassio/screenshots/addon-hass-configurator.png ---- - -You can use this add-on to add a browser-based file editor to your Hass.io installation. By default it will be available over Ingress only. - -More information and a standalone version for regular Home Assistant installations can be found in the [GitHub repository](https://github.com/danielperna84/hass-configurator). - -

- -Screenshot of the HASS Configurator. -

- -### Feature list - -- Web-based editor to modify your files with syntax highlighting and YAML linting. -- Upload and download files. -- Stage, stash and commit changes in Git repositories, create and switch between branches, push to remotes, view diffs. -- Lists with available entities, triggers, events, conditions and services. -- Restart Home Assistant directly with the click of a button. Reloading groups, automations, etc. can be done as well. An API password is required. -- Direct links to Home Assistant documentation and icons. -- Execute shell commands within the add-on container. -- Editor settings are saved in your browser. -- And much more... - -### Add-on Configuration - -```json -{ - "dirsfirst": false, - "enforce_basepath": false -} -``` - -{% configuration %} -dirsfirst: - description: List directories before files in the file browser. - required: true - type: boolean - default: false -enforce_basepath: - description: If set to `true`, access is limited to files within the `/config` directory. - required: true - type: boolean - default: false -{% endconfiguration %} - -### Old port based Access - -You can set a network Port and the Add-on listens on that Port with Home Assistant user credential. That is as a backup if you are not able to connect to Home Assistant anymore. Today, you can restart Home Assistant with broken config, but maybe some times usefully. diff --git a/source/_addons/dhcp_server.markdown b/source/_addons/dhcp_server.markdown deleted file mode 100644 index 8a19901d0b9c..000000000000 --- a/source/_addons/dhcp_server.markdown +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: "DHCP server" -description: "A simple DHCP server." ---- - -Create a simple DHCP server for your network and allow setting fixed IPs for devices. - -```json -{ - "domain": "mynetwork.local", - "dns": ["8.8.8.8", "8.8.4.4"], - "networks": [ - { - "subnet": "192.168.1.0", - "netmask": "255.255.255.0", - "range_start": "192.168.1.100", - "range_end": "192.168.1.200", - "broadcast": "192.168.1.255", - "gateway": "192.168.1.1", - "interface": "eth0" - } - ], - "hosts": [ - { - "name": "webcam_xy", - "mac": "aa:bb:ee:cc", - "ip": "192.168.1.40" - } - ] -} -``` - -{% configuration %} -domain: - description: Your network domain name. - required: true - type: string -dns: - description: A list of DNS server for your network. - required: true - type: list -networks: - description: A list of network to provide DHCP. - required: false - type: list - keys: - subnet: - description: Your network schema. - required: true - type: string - netmask: - description: Your network netmask. - required: true - type: string - range_start: - description: Start address for DHCP leases. - required: true - type: string - range_end: - description: End address for DHCP leases. - required: true - type: string - broadcast: - description: Network broadcast address. - required: true - type: string - gateway: - description: A List of gateways. - required: true - type: list - interface: - description: Interface on that will be listen. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. - required: true - type: string -hosts: - description: A list of fixed IPs for devices. - required: false - type: list - keys: - name: - description: Name/hostname of your device. - required: true - type: string - mac: - description: Mac address of your device. - required: true - type: string - ip: - description: Fix IP address for device. - required: true - type: string -{% endconfiguration %} diff --git a/source/_addons/dnsmasq.markdown b/source/_addons/dnsmasq.markdown deleted file mode 100644 index 0efc9b8af884..000000000000 --- a/source/_addons/dnsmasq.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: "Dnsmasq" -description: "A simple DNS server." ---- - -Setup and manage a [Dnsmasq](http://thekelleys.org.uk/dnsmasq/doc.html) DNS server. This allows you to manipulate DNS requests. For example, you can have your Home Assistant domain resolve with an internal address inside your network. - -```json -{ - "defaults": ["8.8.8.8", "8.8.4.4"], - "forwards": [ - {"domain": "mystuff.local", "server": "192.168.1.40"} - ], - "hosts": [ - {"host": "home.mydomain.io", "ip": "192.168.1.10"} - ] -} -``` - -{% configuration %} -defaults: - description: A list of DNS servers to forward default requests to. - required: true - type: list -forwards: - description: A list of domains that will forward to a specific server. - required: false - type: list -hosts: - description: A list of hosts to resolve statically. - required: false - type: list -{% endconfiguration %} diff --git a/source/_addons/duckdns.markdown b/source/_addons/duckdns.markdown deleted file mode 100644 index 2f38bf80bd21..000000000000 --- a/source/_addons/duckdns.markdown +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: "DuckDNS" -description: "Automatically update your Duck DNS IP address with integrated HTTPS support via Let's Encrypt." -featured: true ---- - -[Duck DNS](https://www.duckdns.org/) is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. This add-on includes support for Let's Encrypt and will automatically create and renew your certificates. You will need to sign up for a Duck DNS account before using this add-on. - -```json -{ - "lets_encrypt": { - "accept_terms": true, - "certfile": "fullchain.pem", - "keyfile": "privkey.pem" - }, - "token": "sdfj-2131023-dslfjsd-12321", - "domains": ["my-domain.duckdns.org"], - "seconds": 300 -} -``` - -{% configuration %} -lets_encrypt: - description: Let's Encrypt is a free, automated, and open certificate authority. - required: true - type: map - keys: - accept_terms: - description: If you accept the [Let's Encrypt Subscriber Agreement](https://letsencrypt.org/repository/), it will generate and update Let's Encrypt certificates for your DuckDNS domain. - required: true - type: boolean - default: false -token: - description: Your Duck DNS API key, from your DuckDNS account page. - required: true - type: string -domains: - description: A list of domains to update DNS. - required: true - type: list -seconds: - description: Seconds between updates to Duck DNS. - required: true - type: integer -{% endconfiguration %} - -## Home Assistant configuration - -Use the following configuration in Home Assistant to use the generated certificate: - -```yaml -http: - base_url: https://my-domain.duckdns.org:8123 - ssl_certificate: /ssl/fullchain.pem - ssl_key: /ssl/privkey.pem -``` - -If you use a port other than `8123` or an SSL proxy, change the port number accordingly. - -## Router configuration - -You'll need to forward the port you listed in your configuration (8123 in the example above) on your router to your Home Assistant system. You can find guides on how to do this on [Port Forward](https://portforward.com/). Noting that you'll only need to forward the TCP port. - -Ensure that you allocate the Home Assistant system a fixed IP on your network before you configure port forwarding. You can do this either on the computer itself (see the [install guide](/hassio/installation/) or via a static lease on your router. - -Restart Home Assistant for the configured changes to take effect. When you access the Home Assistant frontend you will now need to use `https`, even when accessing local instances, for example at `https://192.168.0.1:8123`. - -## Generate Let's Encrypt certificate for Duck DNS sub sub domains - -To generate certificates for nr.my-domain.duckdns.org update the domain JSON settings to: - -```json -{ - ... - "domains": ["my-domain.duckdns.org","*.my-domain.duckdns.org"], - ... -} -``` diff --git a/source/_addons/git_pull.markdown b/source/_addons/git_pull.markdown deleted file mode 100644 index 1314f06caf2a..000000000000 --- a/source/_addons/git_pull.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: "Git pull" -description: "Load and update configuration files for Home Assistant from a GIT repository." ---- - -Load and update configuration files for Home Assistant from a [Git](https://git-scm.com/) repository. - -```json -{ - "git_branch": "master", - "git_command": "pull", - "git_remote": "origin", - "git_prune": "false", - "repository": "https://example.com/my_configs.git", - "auto_restart": false, - "restart_ignore": [ - "ui-lovelace.yaml", - ".gitignore", - "exampledirectory/" - ], - "repeat": { - "active": false, - "interval": 300 - }, - "deployment_user": "", - "deployment_password": "", - "deployment_key": [ -"-----BEGIN RSA PRIVATE KEY-----", -"MIIEowIBAAKCAQEAv3hUrCvqGZKpXQ5ofxTOuH6pYSOZDsCqPqmaGBdUzBFgauQM", -"xDEcoODGHIsWd7t9meAFqUtKXndeiKjfP0MMKsttnDohL1kb9mRvHre4VUqMsT5F", -"...", -"i3RUtnIHxGi1NqknIY56Hwa3id2yk7cEzvQGAAko/t6PCbe20AfmSQczs7wDNtBD", -"HgXRyIqIXHYk2+5w+N2eunURIBqCI9uWYK/r81TMR6V84R+XhtvM", -"-----END RSA PRIVATE KEY-----" - ], - "deployment_key_protocol": "rsa" -} -``` - -- **git_branch** (*Required*): Branch name of the Git repo. If left empty, the currently checked out branch will be updated. Leave this as 'master' if you are unsure. -- **git_command** (*Required*): `pull`/`reset`: Command to run. Leave this as `pull` if you are unsure. -* **pull**: Incorporates changes from a remote repository into the current branch. Will preserve any local changes to tracked files. -* **reset**: Will execute `git reset --hard` and overwrite any local changes to tracked files and update from the remote repository. Use with caution. - -
- -Using the `reset` option will overwrite changes to tracked files. Tracked files are those visible in the git repository or those given by the output on this command: `git ls-tree -r master --name-only`. - -
- -- **git_remote** (*Required*): Name of the tracked repository. Leave this as `origin` if you are unsure. -- **git_prune** (*Required*): `true`/`false`: If set to true, the add-on will clean-up branches that are deleted on the remote repository, but still have cached entries on the local machine. Leave this as `false` if you are unsure. - -- **repository** (*Required*): Git URL to your repository (make sure to use double quotes). You have to add `.git` to your repository URL (see example configuration). -- **auto_restart** (*Required*): `true`/`false`: Restart Home Assistant when the configuration has changed (and is valid). -- **restart_ignore** (*Optional*): When `auto_restart` is enabled, changes to these files will not make HA restart. Full directories to ignore can be specified. -- **repeat**: Poll the repository for updates periodically automatically. -* **active** (*Required*): `true`/`false`: Enable/disable automatic polling. -* **interval** (*Required*): The interval in seconds to poll the repo for if automatic polling is enabled. -- **deployment_user** (*Optional*): Username to use when authenticating to a repository with a username and password. -- **deployment_password** (*Optional*): Password to use when authenticating to a repository. Ignored if `deployment_user` is not set. -- **deployment_key** (*Optional*): A private SSH key that will be used for communication during Git operations. This key is mandatory for ssh-accessed repositories, which are the ones with the following pattern: `@:`. This key has to be created without a passphrase. -- **deployment_key_protocol** (*Optional*): The key protocol. Default is `rsa`. Valid protocols are: - - * **dsa** - * **ecdsa** - * **ed25519** - * **rsa** - -The protocol is typically known by the suffix of the private key --e.g., a key file named `id_rsa` will be a private key using `rsa` protocol. - -
- -You should only use this add-on if you do not have an existing configuration or if your existing configuration is already in a Git repository. If the script does not find the necessary Git files in your configuration folder, it will delete anything that might be there. Please ensure that there is a `.git` folder before using this. You can verify this by listing the items in the configuration folder including hidden files. The command is `ls -a /config`. - -
diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown deleted file mode 100644 index 7b6766f4a078..000000000000 --- a/source/_addons/google_assistant.markdown +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: "Google Assistant" -description: "Enhance your Hass.io installation with Google Assistant." -featured: true ---- - -
- -These instructions are outdated - the add-on has been updated and these are no longer accurate or complete. - -
- -
- -If you want to integrate your Google Home or mobile phone running Google Assistant, with Home Assistant, then you want the [Google Assistant component](/integrations/google_assistant/). - -
- -[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact via the [DialogFlow][comp] integration with Home-Assistant. You can also use [Google Actions][GoogleActions] to extend its functionality. - -To enable access to the Google Assistant API, do the following: - -1. In the [Cloud Platform Console][project], go to the Projects page. Select an existing project or create a new project -1. Open the project. In the top of the page search for Google Assistant API or use [this link][API] and enable it. -1. Create an [OAuth Client ID][oauthclient], pick type "Other", click "Create" and download the JSON file by clicking the Download JSON button on the right side. - -Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your credentials over. Name the file `google_assistant.json`. - -Now it's time to start Google Assistant for the first time. When the Google Assistant add-on starts, it will output your audio devices in the "Logs" card. You might have to hit "refresh" to get the latest logs: - -```text -**** List of PLAYBACK Hardware Devices **** -card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] - Subdevices: 8/8 - Subdevice #0: subdevice #0 - Subdevice #1: subdevice #1 - Subdevice #2: subdevice #2 - Subdevice #3: subdevice #3 - Subdevice #4: subdevice #4 - Subdevice #5: subdevice #5 - Subdevice #6: subdevice #6 - Subdevice #7: subdevice #7 -card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] - Subdevices: 1/1 - Subdevice #0: subdevice #0 -card 1: Microphone [Yeti Stereo Microphone], device 0: USB Audio [USB Audio] - Subdevices: 1/1 - Subdevice #0: subdevice #0 -``` - -You need to use this information to point the add-on at the right speakers and microphone. The information describes different cards and devices. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. In the example above, the USB microphone showed up as card 1 - device 0. - -Find the microphone and speakers that you want to use and note down their device and card number. We will need that to configure the add-on options `mic` (microphone to use) and `speaker` (speaker to use). The format for these options is `,`. Change the configuration options and click save. - -The next step is to authenticate your Google account with Google Assistant. Start the add-on and click on the "OPEN WEB UI" button to start authentication. - -### Add-on configuration - -Configuration example that uses the USB microphone and the built-in headset audio output on the Raspberry Pi. Note that card and device numbers can differ on your device. - -```json -{ - "mic": "1,0", - "speaker": "0,0", - "client_secrets": "google_assistant.json" -} -``` - -{% configuration %} -mic: - description: This is the hardware address of your microphone. Look at the add-on output. - required: true - type: float -speaker: - description: This is the hardware address of your speakers. Look at the add-on output. - required: true - type: string -{% endconfiguration %} - -### Home Assistant configuration - -Use the Home Assistant [DialogFlow component][comp] to integrate the add-on into Home Assistant. - -[GoogleAssistant]: https://assistant.google.com/ -[GoogleActions]: https://actions.google.com/ -[Samba]: /addons/samba/ -[comp]: /integrations/dialogflow/ -[project]: https://console.cloud.google.com/project -[API]: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview -[oauthclient]: https://console.developers.google.com/apis/credentials/oauthclient diff --git a/source/_addons/homematic.markdown b/source/_addons/homematic.markdown deleted file mode 100644 index ac7187e7393c..000000000000 --- a/source/_addons/homematic.markdown +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: "HomeMatic" -description: "HomeMatic hardware support to turn you Home-Assistant into a CCU." ---- - -You can't import an existing configuration, you'll need re-learn it into Home Assistant. There is an experimental WebUI alias Regahss support since 9.0 - before it was required to use a 3party tool. - -Follow devices will be supported and tested: - -- [HM-MOD-RPI-PCB](https://www.elv.ch/homematic-funkmodul-fuer-raspberry-pi-bausatz.html) -- [HmIP-RFUSB](https://www.elv.ch/elv-homematic-ip-rf-usb-stick-hmip-rfusb-fuer-alternative-steuerungsplattformen-arr-bausatz.html) - -```json -{ - "rf_enable": true, - "rf": [ - { - "type": "CCU2", - "device": "/dev/ttyAMA0" - } - ], - "wired_enable": false, - "wired": [ - { - "serial": "xy", - "key": "abc", - "ip": "192.168.0.0" - } - ], - "hmip_enable": false, - "hmip": [ - { - "type": "HMIP_CCU2", - "device": "/dev/ttyUSB0" - } - ] -} -``` - -{% configuration %} -rf_enable: - description: Enable or disable BidCoS-RF. - required: true - type: boolean - default: false -rf: - description: RF devices. - required: true - type: list - keys: - type: - description: Device type for RFD service. Look into the manual of your device. - required: true - type: string - device: - description: Device on the host. - required: true - type: string -wired_enable: - description: Enable or disable BidCoS-Wired. - required: true - type: boolean - default: false -wired: - description: Wired devices. - required: true - type: list - keys: - serial: - description: Serial number of the device. - required: true - type: string - key: - description: Encrypted key. - required: true - type: string - ip: - description: IP address of LAN gateway. - required: true - type: string -hmip_enable: - description: Enable or disable hmip. - required: true - type: boolean - default: false -hmip: - description: HMIP devices. - required: true - type: list - keys: - type: - description: Device type for RFD service. Look into the manual of your device. - required: true - type: string - device: - description: Device on the host. - required: true - type: string -{% endconfiguration %} - -## Home Assistant configuration - -Use the following configuration in Home Assistant to use it: - -```yaml -homematic: - interfaces: - rf: - host: core-homematic - port: 2001 - wired: - host: core-homematic - port: 2000 - hmip: - host: core-homematic - port: 2010 -``` - -## Raspberry Pi3 - -With HM-MOD-RPI-PCB you need to add follow into your `config.txt` on boot partition: - -```text -dtoverlay=pi3-miniuart-bt -``` - -## HmIP-RFUSB - -HassOS > 1.11 support HmIP-RFUSB default and don't need any configuration. If you run a Linux, you need to follow the installation guide from documentation to set up the UART USB interface on your computer. diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown deleted file mode 100644 index 172cfd37d795..000000000000 --- a/source/_addons/lets_encrypt.markdown +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: "Let's Encrypt" -description: "Automatically manage your SSL certificate using Let's Encrypt." ---- - -
- -You should not use this if you are also using the [DuckDNS add-on]. The DuckDNS add-on has integrated Let's Encrypt support. - -
- -Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This add-on will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration. This add-on uses port 80 to verify the certificate request. You will need to stop all other add-ons that also use this port. - -```json -{ - "email": "example@example.com", - "domains": ["example.com", "mqtt.example.com", "hass.example.com"], - "certfile": "fullchain.pem", - "keyfile": "privkey.pem" -} -``` - -{% configuration %} -email: - description: Your email address for registration on Let's Encrypt. - required: true - type: string -domains: - description: A list of domains to create/renew the certificate. - required: true - type: list -certfile: - description: Name of the certfile that is created. Leave as default value. - required: true - type: string - default: fullchain.pem -keyfile: - description: Name of the keyfile that is created. Leave as default value. - required: true - type: string - default: privkey.pem -{% endconfiguration %} - -## Home Assistant configuration - -Use the following configuration in Home Assistant to use the generated certificate: - -```yaml -http: - base_url: https://my-domain.tld:8123 - ssl_certificate: /ssl/fullchain.pem - ssl_key: /ssl/privkey.pem -``` - -If you use another port such as `8123` or an SSL proxy, change the port number. - -## Enabling auto-renewals - -Out of the box, the add-on will not automatically renew your certificate. In fact, it only starts, tries to get/renew your certificate, and then stops. It's up to you to manually start it again whenever your certificate comes close to expiry. - -However, you can automate this process using Home Assistant. - -Use this in your `automations.yaml` to attempt certificate renewal each day at midnight: - -```yaml -- id: letsencrypt-renewal - alias: "Let's Encrypt Renewal" - trigger: - - platform: time - at: '00:00:00' - action: - - service: hassio.addon_restart - data: - addon: core_letsencrypt -``` - -If you are using the [Nginx Proxy add-on] you will need need to stop this during the renewal process. This can be achieved by stopping the add-on whilst restarting the Let's Encrypt add-on. This can be achieved the following configuration: - -```yaml -- id: letsencrypt-renewal - alias: 'LetsEncrypt renewal' - trigger: - - platform: time - at: '00:00:00' - action: - - service: hassio.addon_stop - data: - addon: core_nginx_proxy - - service: hassio.addon_restart - data: - addon: core_letsencrypt - - delay: '00:01:30' - - service: hassio.addon_start - data: - addon: core_nginx_proxy -``` - -[DuckDNS add-on]: /addons/duckdns/ -[Nginx Proxy add-on]: /addons/nginx_proxy/ diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown deleted file mode 100644 index 844f77a88ae0..000000000000 --- a/source/_addons/mariadb.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: "MariaDB" -description: "MariaDB Server is one of the most popular database servers in the world." ---- - -Set up a [MariaDB](https://mariadb.org/) SQL server. It supports multiple databases, users and permission settings. If you want to only connect from inside Home Assistant use `core-mariadb` as the host address. - -```json -{ - "databases": ["homeassistant"], - "logins": [ - { - "username": "hass", - "host": "%.local.hass.io", - "password": "securePassword" - } - ], - "rights": [ - { - "username": "hass", - "host": "%.local.hass.io", - "database": "homeassistant", - "grant": "ALL PRIVILEGES ON" - } - ] -} -``` - -{% configuration %} -databases: - description: List of databases. - required: true - type: list -logins: - description: List of SQL accounts to create or update. - required: true - type: list - keys: - username: - description: Username for account. - required: true - type: string - host: - description: Host for account. Use '%', to accept connections for this account from any host. - required: true - type: string - password: - description: Password for account. - required: true - type: string -rights: - description: List of rights to be granted. - required: true - type: list - keys: - username: - description: Username for granted rights. - required: true - type: string - host: - description: Host is a part of username like above. - required: true - type: string - database: - description: Database name on which to grant user rights. - required: true - type: string - grant: - description: SQL grant part for access too. - required: true - type: string -{% endconfiguration %} - -## Home Assistant configuration - -Use the following configuration in Home Assistant to use the database above: - -```yaml -recorder: - db_url: mysql://hass:securePassword@core-mariadb/homeassistant?charset=utf8 -``` diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown deleted file mode 100644 index 7b1f5af0c3f2..000000000000 --- a/source/_addons/mosquitto.markdown +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: "Mosquitto MQTT broker" -description: "Fast and reliable MQTT broker." -featured: true ---- - -Set up [Mosquitto](https://mosquitto.org/) as MQTT broker. - -```json -{ - "logins": [ - {"username": "local-user", "password": "mypw"} - ], - "anonymous": false, - "customize": { - "active": false, - "folder": "mosquitto" - }, - "certfile": "fullchain.pem", - "keyfile": "privkey.pem" -} -``` - -
- -Since version 4.1 of the addon, an explicit ACL definition is now required if you plan to use legacy logins and `"anonymous": true` [see these instructions](https://www.home-assistant.io/addons/mosquitto/#access-control-lists-acls). - -
- -{% configuration %} -anonymous: - description: Allow anonymous connections. If *logins* is set, the anonymous user can only read data. - required: false - default: false - type: boolean -logins: - description: A list of local users that will be created with *username* and *password*. You don't need do this because you can use Home Assistant users too without any configuration. - required: false - type: list -customize: - description: If you enable it, it reads additional configuration files (`*.conf`) from `/share/mosquitto`. - required: false - type: [boolean, string] - default: false -cafile: - description: Path to the CA certificate. If not set, will default to the *certfile* value. - required: false - default: certfile - type: string -require_certificate: - description: Restrict to users with a valid certificate only. - required: false - default: false - type: boolean -{% endconfiguration %} - -### Home Assistant user management - -This add-on is attached to the Home Assistant user system, so mqtt clients can make use of these credentials. Local users may also still be set independently within the configuration options for the add-on. For the internal Hass.io ecosystem we register `homeassistant` and `addons`, so these may not be used as user names. - -### Home Assistant configuration - -To use the Mosquitto as [broker](/docs/mqtt/broker/#run-your-own), go to the integration page and install the configuration with one click. If you have old MQTT settings available, remove this old integration and restart Home Assistant to see the new one. - -#### Using Mosquitto with Hass.io - -1. Install the [Mosquitto add-on](/addons/mosquitto/) with the default configuration via 'Hass.io > ADD-ON STORE'. (Don't forget to start the add-on & verify that 'Start on boot' is enabled.) - -2. Create a new user for MQTT via the `Configuration > Users (manage users)`. (Note: This name cannot be "homeassistant" or "addon") - -3. Once back on-line, return to `Configuration > Integrations` and select configure next to `MQTT`. - -```text - Broker: YOUR_HASSIO_IP_ADDRESS - Port: 1883 - Username: MQTT_USERNAME - Password: MQTT_PASSWORD -``` - -Note: .yaml modifications are not required. -See [testing your setup](/docs/mqtt/testing/) to verify the steps above. - -### Disable listening on insecure (1883) ports - -Remove the ports from the add-on page network card (set them as blank) to disable them. - -### Access Control Lists (ACLs) - -It is possible to restrict access to topics based upon the user logged in to Mosquitto. In this scenario it is recommended to create individual users for each of your clients and create an appropriate ACL. - -See the following links for more information: - -* [Mosquitto topic restrictions](http://www.steves-internet-guide.com/topic-restriction-mosquitto-configuration/) -* [Mosquitto.conf man page](https://mosquitto.org/man/mosquitto-conf-5.html) - -Add the following configuration to enable **unrestricted** access to all topics. - - 1. Enable the customize flag -```json - "customize": { - "active": true, - "folder": "mosquitto" - }, -``` - -2. Create `/share/mosquitto/acl.conf` with the contents: -```text -acl_file /share/mosquitto/accesscontrollist -``` - -3. Create `/share/mosquitto/accesscontrollist` with the contents: -```text -user [YOUR_MQTT_USER] -topic readwrite # -``` - -The `/share` folder can be accessed via SMB, or on the host filesystem under `/usr/share/hassio/share`. diff --git a/source/_addons/nginx_proxy.markdown b/source/_addons/nginx_proxy.markdown deleted file mode 100644 index 53d45c6d6070..000000000000 --- a/source/_addons/nginx_proxy.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "NGINX SSL proxy" -description: "NGINX Home Assistant SSL proxy." ---- - -Sets up an SSL proxy with NGINX and redirect port 80 to 443. Make sure you have generated a certificate before you start this add-on. - -In the `http` section of the `configuration.yaml` file remove `ssl_certificate`, `ssl_key` and `server_port` and don't enter the port in the `base_url` to avoid an HTTP 502 error. - -```json -{ - "domain": "home.example.com", - "certfile": "fullchain.pem", - "keyfile": "privkey.pem", - "hsts": "max-age=31536000; includeSubDomains", - "customize": { - "active": false, - "default": "nginx_proxy_default*.conf", - "servers": "nginx_proxy/*.conf" - }, - "cloudflare": false -} -``` - -{% configuration %} -domain: - description: The Domain to use for the proxy. - required: true - type: string -certfile: - description: The certificate file to use in the `/ssl` directory. - required: true - type: string -keyfile: - description: Private key file to use in the `/ssl` directory. - required: true - type: string -hsts: - description: Value for the [`Strict-Transport-Security`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) HTTP header to send. If empty, the header is not sent. - required: true - type: string -customize: - description: If true, additional NGINX configuration files for the default server and additional servers are read from files in the `/share` directory specified by the `default` and `servers` variables. - required: false - type: boolean - default: false -cloudflare: - description: If enabled, configure Nginx with a list of IP addresses directly from Cloudflare that will be used for `set_real_ip_from` directive Nginx config. - required: false - type: boolean - default: false -{% endconfiguration %} - -
- -It is possible to deactivate port 80 if you need this for things like `emulated_hue`. Remove the host port from Network option of this add-on. - -
diff --git a/source/_addons/rpc_shutdown.markdown b/source/_addons/rpc_shutdown.markdown deleted file mode 100644 index ba5bfb790d4f..000000000000 --- a/source/_addons/rpc_shutdown.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "RPC Shutdown" -description: "Simple way for remote windows shutdowns." ---- - -Allows you to shut down a Windows computer with a service call from Home Assistant. - -```json -{ - "computers": [ - { - "alias": "test-pc-1", - "address": "192.168.0.1", - "credentials": "user%password" - }, - { - "alias": "test-pc-2", - "address": "192.168.0.2", - "credentials": "user%password" - } - ] -} -``` - -- **computers** (*Required*): A list of computer objects to shutdown from Home-Assistant. -- **computers/alias** (*Required*): Set an alias for this record which becomes the name for the input. -- **computers/address** (*Required*): IP address or NetBIOS name of the computer for the shutdown. -- **computers/credentials** (*Required*): Credentials for logging into computer. Use a `%` as the delimiter of username and password. - -### Home Assistant configuration - -Use the following inside Home Assistant service call to use it: - -```yaml -service: hassio.addon_stdin -data: - addon: core_rpc_shutdown - input: test-pc -``` - -
- -The `user` specified in the credentials should be an applicable user listed in `C:/Users`. This may differ from the username used to login to Windows. Depending on your settings and privileges within Windows, changes to the firewall, UAC (User Account Control) and registry settings may be required to allow this add-on to remotely shut down your computer. There are many guides available online on how to adjust these settings. - -
diff --git a/source/_addons/samba.markdown b/source/_addons/samba.markdown deleted file mode 100644 index 3aa6f3eff87e..000000000000 --- a/source/_addons/samba.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: "Samba" -description: "Manage your Home Assistant and custom add-ons over Samba." -featured: true ---- - -This add-on allows you to set up a [Samba](https://www.samba.org) server to access Hass.io folders using Windows network shares. - -
- -Be careful when setting up port forwarding for remote access. If you don't restrict access by setting a username and strong password, your configuration could be exposed to the entire Internet! - -
- -
- -Sometimes shares will not show up under network in Windows. Then you could open the file browser, click the address field where it says "> Network" and type //HASSIO to access Hass.io shares. - -
- -```json -{ - "workgroup": "WORKGROUP", - "username": "", - "password": "", - "interface": "eth0", - "allow_hosts": [ - "10.0.0.0/8", - "172.16.0.0/12", - "192.168.0.0/16" - ], - "veto_files": [ - "._*", - ".DS_Store", - "Thumbs.db", - "icon?", - ".Trashes" - ] -} -``` - -{% configuration %} -workgroup: - description: Set network workgroup name. - required: false - default: "`WORKGROUP`" - type: string -username: - description: Username for logging in. - required: true - type: string -password: - description: Password for `username`. An empty password is not supported. - required: true - type: string -interface: - description: Interface that will start the share. Normally this is `eth0` for ethernet wired connection and `wlan0` for wireless connection. If you are running on an Intel NUC this could also be `enp3s0` for ethernet or `wlp5s0` for wireless connection. - required: false - type: string -allow_hosts: - description: The hosts that are allowed to connect to your Samba server. By default it is limited to people within the same local network. - required: false - default: '`["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]`' - type: list -veto_files: - description: List of files that are neither visible nor accessible. Useful to stop clients from littering the share with temporary hidden files (e.g. macOS .DS_Store, Windows Thumbs.db) - required: false - default: '`["._*", ".DS_Store", "Thumbs.db", "icon?", ".Trashes"]`' - type: list -{% endconfiguration %} diff --git a/source/_addons/snips.markdown b/source/_addons/snips.markdown deleted file mode 100644 index a229a9bf0b6e..000000000000 --- a/source/_addons/snips.markdown +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: "Snips.ai" -description: "Enhance your Hass.io installation with a local voice assistant." ---- - -[Snips.ai](https://snips.ai/) is an AI-powered voice assistant that runs on the Raspberry Pi 3 and x86 platforms. It runs on-device and is Private by Design. - -
- -The Snips add-on depends on the Mosquitto add on to bridge to Home Assistant, so make sure that is installed. - -
- -Home Assistant comes with certain Intents builtin to handle common tasks. A complete list of Intents can be found in this wiki [Hass Snips Bundle](https://github.com/tschmidty69/hass-snips-bundle-intents/wiki). - -The Snips add-on by default comes with an assistant that allows you to turn on lights or switches, open covers, or add and list items to a [Shopping List](/integrations/shopping_list/) if that integration is enabled. - -If using a USB microphone and speakers plugged into the Raspberry Pi output, Snips will work without any change to the configuration. Trying saying things like: - -```txt -Turn on kitchen light -Open garage door -What is on my shopping list -``` - -To get started creating your own configuration, follow [their tutorial](https://docs.snips.ai/getting-started/quick-start-console) to create an assistant and download the training data. You can also add the Home Assistant Skill to your assistant to enable the built-in intents, and add or create your own intents to do more complex tasks. - -Now install and activate the [Samba](/addons/samba/) add-on so you can upload your training data. Connect to the "share" Samba share and copy your assistant over. Name the file `assistant.zip` or whatever you have configured in the configuration options. - -Now it's time to start Snips for the first time. You can configure the microphone and sound card using the Add-on interface. Now start the add-on. - -### Add-On configuration - -```json -{ - "mqtt_bridge": { - "active": true, - "host": "172.17.0.1", - "port": 1883, - "user": "", - "password": "" - }, - "assistant": "assistant.zip", - "language": "en", - "custom_tts": false, - "tts_platform": "amazon_polly" -} -``` - -{% configuration %} -assistant: - description: The name of your custom assistant in `/share`. If no assistant is found then a default assistant will be used. - type: string -language: - description: Language. This is used to select the default custom assistant, Currently `en`, `de` and `fr` are supported. - type: string -custom_tts: - description: Whether to use a TTS provider from Home Assistant for a variety of voices. - type: boolean - default: false -tts_platform: - description: Which TTS platform to use. - type: string -{% endconfiguration %} - -### Home Assistant configuration - -A simple configuration just requires this. Consult [Snips.ai integration](/integrations/snips/) for more options. - -```yaml -snips: -``` - -### Home Assistant configuration - -There is an active [discord](https://discordapp.com/invite/3939Kqx) channel and [Snips forum](https://forum.snips.ai/) for further support. - -### Examples - -So now you can turn lights on and off, let's check the weather. Log on to the [console](https://console.snips.ai/). If this is your first time, create a new assistant and add the Home Assistant skill, along with the Weather skill by snips. Download your assistant manually and copy it to the `/share` folder on your HassIO installation using the Samba add-on. - -Next create a weather sensor, e.g., one for [Dark Sky](/integrations/darksky/), and put the `api_key` in your `secrets.yaml` file. For this example to work you will need to have a valid API key from [Dark Sky](https://darksky.net/dev). - -```yaml -- platform: darksky - name: "Dark Sky Weather" - api_key: !secret dark_sky_key - update_interval: - minutes: 10 - monitored_conditions: - - summary - - hourly_summary - - temperature - - temperature_max - - temperature_min -``` - -Next add this to your `configuration.yaml` file to reference a new `intent_script` integration. This is a good practice to [split your configuration files](/docs/configuration/splitting_configuration/) up. - -```yaml -intent_script: !include intent_script.yaml -``` - -Finally, create this `intent_script.yaml` file in your configuration directory. - -{% raw %} - -```yaml -searchWeatherForecast: - speech: - type: plain - text: > - The weather is currently - {{ states('sensor.dark_sky_weather_temperature') | round(0) }} - degrees outside and {{ states('sensor.dark_sky_weather_summary') }}. - The high today will be - {{ states('sensor.dark_sky_weather_daily_high_temperature') | round(0)}} - and {{ states('sensor.dark_sky_weather_hourly_summary') }} -``` - -{% endraw %} - -Now just restart HassIO and ask it what the weather is like. - -[their tutorial]: https://github.com/snipsco/snips-platform-documentation/wiki/2.-Create-an-assistant-using-an-existing-bundle diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown deleted file mode 100644 index 0458117bb9dd..000000000000 --- a/source/_addons/ssh.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "SSH Server" -description: "Allow logging in remotely to Hass.io using SSH." -featured: true ---- - -Setting up an [SSH](https://openssh.com/) server allows access to your Hass.io folders with any SSH client. It also includes a command-line tool to access the [Hass.io API](https://github.com/home-assistant/hassio/blob/dev/API.md). Try it out: - -```bash -hassio help -``` - -
- -This add-on will not enable you to install packages or do anything as root. This is not allowed with Hass.io. - -
- -To use this add-on, you must have a private/public key to log in. To generate them, follow the [instructions for Windows][win] and [these for other platforms][other]. It is possible to set a password for login since version 2.0 but for high security use private/public keys. You can not run both variants at the same time. - -To start this add-on for the first time, you either need to include a key (enclosed in quotation marks, on a single line without line breaks) or set a password in the options section. - -```json -{ - "authorized_keys": [ - "ssh-rsa AKDJD3839...== my-key" - ], - "password": "" -} -``` - -The username for login over SSH is `root`. The complete login command is `ssh root@hassio.local`. - -After logging in, you will find yourself in this add-on's container. The Home Assistant configuration directory is mounted on the path `/config`. - -{% configuration %} -authorized_keys: - description: Your public keys for the authorized key file. Every element will be a line inside that file. - required: false - type: string -password: - description: Set a password for login. We do **NOT** recommend this variant. - required: false - type: string -{% endconfiguration %} - -
- -
- -[win]: https://www.digitalocean.com/community/tutorials/how-to-create-ssh-keys-with-putty-to-connect-to-a-vps -[other]: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ - -
-This add-on is not compatible if Hass.io was installed via the generic Linux installer. -
diff --git a/source/_addons/tellstick.markdown b/source/_addons/tellstick.markdown deleted file mode 100644 index c618bd9f03b3..000000000000 --- a/source/_addons/tellstick.markdown +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: "TellStick" -description: "Telldus TellStick service enabler and tools." ---- - -Setting up the [Tellstick](http://telldus.com) service and tools contained in the [telldus-core](http://developer.telldus.com/) package and adding configuration to enable Tellstick and Tellstick Duo to work on your Hass.io. - -To use this add-on, you first install it from the list of Built-in add-ons in Hass.io. -After installation you are presented with a default and example configuration, to alter this you must follow both the JSON format and also be aligned with the [valid parameters for Tellstick configuration file (tellstick.conf)](http://developer.telldus.com/wiki/TellStick_conf). - -After any changes have been made to the configuration, you need to restart the add-on for the changes to take effect. - -You will need to add internal communication details to `configuration.yaml` to enable the integration from Hass.io and the add-on. - -```yaml -# Example configuration.yaml entry -tellstick: - host: core-tellstick - port: [50800, 50801] -``` - -To add [lights](/integrations/tellstick#light), [sensors](/integrations/tellstick#sensor) and [switches](/integrations/tellstick#switch) you follow the guidelines for each type individually that is [described for Home Assistant](/integrations/tellstick/) - -The add-on will also enable you to interact with the `tdtool` via a Home Assistant services call, see example below for self-learning device. - -## Examples - -Example for adding more devices in the add-on configuration (note the comma separator between devices): - -```json -{ - "devices": [ - { - "id": 1, - "name": "Outdoor light", - "protocol": "everflourish", - "model": "selflearning-switch", - "house": "A", - "unit": "1" - }, - { - "id": 2, - "name": "Hallway dimmer", - "protocol": "risingsun", - "model": "selflearning-dimmer", - "house": "A", - "unit": "2" - } - ] -} -``` - -{% configuration %} -id: - description: A number and must be unique for each device. - required: true - type: integer -name: - description: A name for easy identification of the device. - required: true - type: string -protocol: - description: This is the protocol the device uses. More on the different protocols later down. - required: true - type: string -model: - description: The model parameter is only used by some protocols where there exists different types of devices using the same protocol. This can be dimmers versus non-dimmers, codeswitch versus self-learning, etc. - required: false - type: string -house: - description: Depending on protocol the values here can vary a lot to identify or group per house or type. - required: false - type: string -unit: - description: Unit identifier, in most cases a value between 1 to 16 and often used in combination with the house. - required: false - type: integer -fade: - description: Fade is either `true` or `false` and tells a dimmer if it should fade smooth or instant between values (only for IKEA protocol as it seems). - required: false - type: boolean - default: false -code: - description: A number series based on ones and zeroes often used for dip-switch based devices. - required: false - type: string -{% endconfiguration %} - -For more information about the configuration including protocols, see the [telldus documentation](http://developer.telldus.com/wiki/TellStick_conf). - -## Service calls - -If you wish to teach a self-learning device in your TellStick configuration: - -Go to Home Assistant service call in Developer tools and select. - -- Service: `hassio.addon_stdin` -- Enter service Data: - `{"addon":"core_tellstick","input":{"function":"learn","device":"1"}}` - -Replace `1` with the corresponding ID of the device in your TellStick configuration. - -You can also use this to list devices or sensors and read the output in the add-on log: -`{"addon":"core_tellstick","input":{"function":"list-sensors"}}` - -### Supported service commands - -- `"function":"list"`: List currently configured devices with name and device id and all discovered sensors. - -- `"function":"list-sensors"` -- `"function":"list-devices"`: Alternative devices/sensors listing: Shows devices and/or sensors using key=value format (with tabs as separators, one device/sensor per line, no header lines.) - -- `"function":"on","device":"x"`: Turns on device. ’x’ could either be an integer of the device-id, or the name of the device. - -- `"function":"off","device":"x"`: Turns off device. ’x’ could either be an integer of the device-id, or the name of the device. - -- `"function":"bell","device":"x"`: Sends bell command to devices supporting this. ’x’ could either be an integer of the device-id, or the name of the device. - -- `"function":"learn","device":"x"`: Sends a special learn command to devices supporting this. This is normally devices of ’selflearning’ type. ’x’ could either be an integer of the device-id, or the name of the device. diff --git a/source/_cookbook/automation_first_light.markdown b/source/_cookbook/automation_first_light.markdown index d16a4310e59f..f752ad5f9bf6 100644 --- a/source/_cookbook/automation_first_light.markdown +++ b/source/_cookbook/automation_first_light.markdown @@ -4,7 +4,7 @@ description: "Automation examples that trigger lights in the morning." ha_category: Automation Examples --- -#### Create an input_boolean in your configuration.yaml +#### Create an input_boolean ```yaml input_boolean: @@ -13,7 +13,7 @@ input_boolean: icon: mdi:kettle ``` -#### The Main Automation +#### The Main Automation ```yaml ## These first two control t input_boolean that allows the "first morning action" to occur diff --git a/source/_cookbook/automation_for_rainy_days.markdown b/source/_cookbook/automation_for_rainy_days.markdown index c6d2eaf785d3..35f66c70948c 100644 --- a/source/_cookbook/automation_for_rainy_days.markdown +++ b/source/_cookbook/automation_for_rainy_days.markdown @@ -17,7 +17,7 @@ automation: to: 'rain' condition: - condition: state - entity_id: group.all_devices + entity_id: all state: 'home' - condition: time after: '14:00' diff --git a/source/_cookbook/automation_sun.markdown b/source/_cookbook/automation_sun.markdown index 8add13a3c5d3..615aaed79d17 100644 --- a/source/_cookbook/automation_sun.markdown +++ b/source/_cookbook/automation_sun.markdown @@ -14,7 +14,7 @@ automation: offset: "-00:45:00" condition: condition: state - entity_id: group.all_devices + entity_id: all state: home action: service: light.turn_on diff --git a/source/_cookbook/fail2ban.markdown b/source/_cookbook/fail2ban.markdown index 9f698f8aaa87..5813f33913ec 100644 --- a/source/_cookbook/fail2ban.markdown +++ b/source/_cookbook/fail2ban.markdown @@ -87,8 +87,7 @@ filter = ha logpath = /home/homeassistant/.homeassistant/home-assistant.log # 3600 seconds = 1 hour -bantime = 3600 -bantime = 30 # during testing it is useful to have a short ban interval, comment out this line later +bantime = 30 # during testing it is useful to have a short ban interval, change this to 3600 later # Maximum amount of login attempts before IP is blocked maxretry = 3 @@ -161,5 +160,5 @@ Fail2ban should now be configured and running, if an IP address is banned you wi If you want to read more about `fail2ban`, some links are below: - - [fail2ban Split config](http://www.fail2ban.org/wiki/index.php/FEATURE_Split_config) + - [fail2ban Split configuration](http://www.fail2ban.org/wiki/index.php/FEATURE_Split_config) - [How To Protect SSH with Fail2Ban on Ubuntu 14.04](https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-14-04) diff --git a/source/_cookbook/ifttt.manything.markdown b/source/_cookbook/ifttt.manything.markdown index ccc39bd9bfc8..c2aa460254f5 100644 --- a/source/_cookbook/ifttt.manything.markdown +++ b/source/_cookbook/ifttt.manything.markdown @@ -7,7 +7,7 @@ redirect_from: /integrations/ifttt.manything/ --- -[Manything](https://manything.com) is a smart app that turns your Android device, iPhone, iPod, or iPad into a WiFi camera for monitoring your home, your pets, anything! Comes with live streaming, motion activated alerts, cloud video recording, and more. +[Manything](https://manything.com) is a smart app that turns your Android device, iPhone, iPod, or iPad into a Wi-Fi camera for monitoring your home, your pets, anything! Comes with live streaming, motion activated alerts, cloud video recording, and more. To get manything support, HA will use IFTTT's [Webhooks Service](https://ifttt.com/maker_webhooks) and the [ManyThing Service](https://ifttt.com/manything). Use the [IFTTT Setup instructions](/integrations/ifttt/) to activate the IFTTT Platform. @@ -21,7 +21,7 @@ automation: # if we leave the house during the day. trigger: - platform: state - entity_id: group.all_devices + entity_id: all to: 'not_home' condition: - platform: state @@ -36,7 +36,7 @@ automation: # when we get home unless it's nighttime. trigger: - platform: state - entity_id: group.all_devices + entity_id: all to: 'home' condition: - condition: state @@ -59,9 +59,9 @@ For ManyThing support, you need to set up an `on` and `off` event. You can use the developer tools to test your [Maker Service](https://ifttt.com/maker_webhooks) trigger. To do this, open the Home Assistant UI, open the sidebar, click on the first icon in the developer tools. This should get you to the 'Call Service' screen. Fill in the following values: -Field | Value ------ | ----- -domain | `ifttt` -service | `trigger` -Service Data | `{"event": "manything_on"}` +| Field | Value | +| ------------ | --------------------------- | +| domain | `ifttt` | +| service | `trigger` | +| Service Data | `{"event": "manything_on"}` | diff --git a/source/_cookbook/owntracks_two_mqtt_broker.markdown b/source/_cookbook/owntracks_two_mqtt_broker.markdown index 6bb66837a816..d7ee62f43bb8 100644 --- a/source/_cookbook/owntracks_two_mqtt_broker.markdown +++ b/source/_cookbook/owntracks_two_mqtt_broker.markdown @@ -40,7 +40,7 @@ $ docker run -ti -p 1884:1883 \ --name mosquitto-ext -d toke/mosquitto ``` -Here are the config files: +Here are the configuration files: `/volume1/data/mosquitto-int/config/mosquitto.conf` diff --git a/source/_cookbook/python_component_automation.markdown b/source/_cookbook/python_component_automation.markdown index 9b55b7653e3d..f37ad9a61f5e 100644 --- a/source/_cookbook/python_component_automation.markdown +++ b/source/_cookbook/python_component_automation.markdown @@ -41,12 +41,20 @@ import voluptuous as vol import homeassistant.components as core import homeassistant.helpers.config_validation as cv from homeassistant.components import device_tracker, light -from homeassistant.const import (ATTR_ENTITY_ID, SERVICE_TURN_OFF, - SERVICE_TURN_ON, STATE_HOME, STATE_NOT_HOME, - STATE_OFF, STATE_ON) +from homeassistant.const import ( + ATTR_ENTITY_ID, + SERVICE_TURN_OFF, + SERVICE_TURN_ON, + STATE_HOME, + STATE_NOT_HOME, + STATE_OFF, + STATE_ON, +) from homeassistant.core import split_entity_id -from homeassistant.helpers.event import (async_track_state_change, - async_track_time_change) +from homeassistant.helpers.event import ( + async_track_state_change, + async_track_time_change, +) # The domain of your component. Should be equal to the name of your component. DOMAIN = "example" @@ -54,26 +62,26 @@ DOMAIN = "example" # List of integration names (string) your integration depends upon. # We depend on group because group will be loaded after all the integrations that # initialize devices have been setup. -DEPENDENCIES = ['group', 'device_tracker', 'light'] +DEPENDENCIES = ["group", "device_tracker", "light"] # Configuration key for the entity id we are targeting. -CONF_TARGET = 'target' +CONF_TARGET = "target" # Variable for storing configuration parameters. TARGET_ID = None # Name of the service that we expose. -SERVICE_FLASH = 'flash' +SERVICE_FLASH = "flash" # Shortcut for the logger _LOGGER = logging.getLogger(__name__) # Validate that all required config options are given. -CONFIG_SCHEMA = vol.Schema({ - DOMAIN: vol.Schema({ - vol.Optional(CONF_TARGET): cv.entity_id - }) -}, extra=vol.ALLOW_EXTRA) +CONFIG_SCHEMA = vol.Schema( + {DOMAIN: vol.Schema({vol.Optional(CONF_TARGET): cv.entity_id})}, + extra=vol.ALLOW_EXTRA, +) + async def async_setup(hass, config): """Setup example component.""" @@ -84,8 +92,7 @@ async def async_setup(hass, config): # Validate that the target entity id exists. if hass.states.get(TARGET_ID) is None: - _LOGGER.error("Target entity id %s does not exist", - TARGET_ID) + _LOGGER.error("Target entity id %s does not exist", TARGET_ID) # Tell the bootstrapper that we failed to initialize and clear the # stored target id so our functions don't run. @@ -120,7 +127,7 @@ async def async_setup(hass, config): return if device_tracker.is_on(hass) and not core.is_on(hass, TARGET_ID): - _LOGGER.info('People home at 7AM, turning target on') + _LOGGER.info("People home at 7AM, turning target on") await hass.services.async_call(domain, SERVICE_TURN_ON, data) async def async_flash_service(service): @@ -133,7 +140,9 @@ async def async_setup(hass, config): if core.is_on(hass, TARGET_ID): # We need this call to run blocking, as we want to wait 10s after it finished - await hass.services.async_call(domain, SERVICE_TURN_OFF, data, blocking=True) + await hass.services.async_call( + domain, SERVICE_TURN_OFF, data, blocking=True + ) time.sleep(10) await hass.services.async_call(domain, SERVICE_TURN_ON, data) else: @@ -146,15 +155,26 @@ async def async_setup(hass, config): # If all lights turn off, turn off. async_track_state_change( - hass, light.ENTITY_ID_ALL_LIGHTS, async_switch_off, STATE_ON, STATE_OFF) + hass, light.ENTITY_ID_ALL_LIGHTS, async_switch_off, STATE_ON, STATE_OFF + ) # If all people leave the house and the entity is on, turn it off. async_track_state_change( - hass, device_tracker.ENTITY_ID_ALL_DEVICES, async_switch_off, STATE_HOME, STATE_NOT_HOME) + hass, + device_tracker.ENTITY_ID_ALL_DEVICES, + async_switch_off, + STATE_HOME, + STATE_NOT_HOME, + ) # If anyone comes home and the entity is not on, turn it on. async_track_state_change( - hass, device_tracker.ENTITY_ID_ALL_DEVICES, async_switch_on, STATE_NOT_HOME, STATE_HOME) + hass, + device_tracker.ENTITY_ID_ALL_DEVICES, + async_switch_on, + STATE_NOT_HOME, + STATE_HOME, + ) # Call wakeup callback at 7 AM async_track_time_change(hass, async_wake_up, hour=7, minute=00, second=00) diff --git a/source/_cookbook/python_component_mqtt_basic.markdown b/source/_cookbook/python_component_mqtt_basic.markdown index 0824b4788c11..5801ec44d185 100644 --- a/source/_cookbook/python_component_mqtt_basic.markdown +++ b/source/_cookbook/python_component_mqtt_basic.markdown @@ -18,21 +18,21 @@ This example follows a topic on MQTT and updates the state of an entity to the l import homeassistant.loader as loader # The domain of your component. Should be equal to the name of your component. -DOMAIN = 'hello_mqtt' +DOMAIN = "hello_mqtt" # List of integration names (string) your integration depends upon. -DEPENDENCIES = ['mqtt'] +DEPENDENCIES = ["mqtt"] -CONF_TOPIC = 'topic' -DEFAULT_TOPIC = 'home-assistant/hello_mqtt' +CONF_TOPIC = "topic" +DEFAULT_TOPIC = "home-assistant/hello_mqtt" def setup(hass, config): """Set up the Hello MQTT component.""" mqtt = hass.components.mqtt topic = config[DOMAIN].get(CONF_TOPIC, DEFAULT_TOPIC) - entity_id = 'hello_mqtt.last_message' + entity_id = "hello_mqtt.last_message" # Listener to be called when we receive a message. # The msg parameter is a Message object with the following members: @@ -45,15 +45,15 @@ def setup(hass, config): mqtt.subscribe(topic, message_received) # Set the initial state. - hass.states.set(entity_id, 'No messages') + hass.states.set(entity_id, "No messages") # Service to publish a message on MQTT. def set_state_service(call): """Service to send a message.""" - mqtt.publish(topic, call.data.get('new_state')) + mqtt.publish(topic, call.data.get("new_state")) # Register our service with Home Assistant. - hass.services.register(DOMAIN, 'set_state', set_state_service) + hass.services.register(DOMAIN, "set_state", set_state_service) # Return boolean to indicate that initialization was successfully. return True diff --git a/source/_cookbook/python_component_simple_alarm.markdown b/source/_cookbook/python_component_simple_alarm.markdown index 67ce2b1c329d..376d278217dc 100644 --- a/source/_cookbook/python_component_simple_alarm.markdown +++ b/source/_cookbook/python_component_simple_alarm.markdown @@ -43,19 +43,19 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = 'simple_alarm"' -DEPENDENCIES = ['group', 'device_tracker', 'light'] +DEPENDENCIES = ["group", "device_tracker", "light"] # Attribute to tell which light has to flash when a known person comes home # If omitted will flash all. -CONF_KNOWN_LIGHT = 'known_light' +CONF_KNOWN_LIGHT = "known_light" # Attribute to tell which light has to flash when an unknown person comes home # If omitted will flash all. -CONF_UNKNOWN_LIGHT = 'unknown_light' +CONF_UNKNOWN_LIGHT = "unknown_light" # Services to test the alarms -SERVICE_TEST_KNOWN_ALARM = 'test_known' -SERVICE_TEST_UNKNOWN_ALARM = 'test_unknown' +SERVICE_TEST_KNOWN_ALARM = "test_known" +SERVICE_TEST_UNKNOWN_ALARM = "test_unknown" def setup(hass, config): @@ -66,8 +66,7 @@ def setup(hass, config): light_id = config[DOMAIN].get(conf_key, light.ENTITY_ID_ALL_LIGHTS) if hass.states.get(light_id) is None: - _LOGGER.error( - "Light id %s could not be found in state machine", light_id) + _LOGGER.error("Light id %s could not be found in state machine", light_id) return False @@ -88,18 +87,19 @@ def setup(hass, config): def unknown_alarm(): """ Fire an alarm if the light turns on while no one is home. """ light.turn_on( - hass, unknown_light_id, - flash=light.FLASH_LONG, rgb_color=[255, 0, 0]) + hass, unknown_light_id, flash=light.FLASH_LONG, rgb_color=[255, 0, 0] + ) # Send a message to the user notify.send_message( - hass, "The lights just got turned on while no one was home.") + hass, "The lights just got turned on while no one was home." + ) # Setup services to test the effect + hass.services.register(DOMAIN, SERVICE_TEST_KNOWN_ALARM, lambda call: known_alarm()) hass.services.register( - DOMAIN, SERVICE_TEST_KNOWN_ALARM, lambda call: known_alarm()) - hass.services.register( - DOMAIN, SERVICE_TEST_UNKNOWN_ALARM, lambda call: unknown_alarm()) + DOMAIN, SERVICE_TEST_UNKNOWN_ALARM, lambda call: unknown_alarm() + ) def unknown_alarm_if_lights_on(entity_id, old_state, new_state): """Called when a light has been turned on.""" @@ -107,8 +107,12 @@ def setup(hass, config): unknown_alarm() track_state_change( - hass, light.ENTITY_ID_ALL_LIGHTS, - unknown_alarm_if_lights_on, STATE_OFF, STATE_ON) + hass, + light.ENTITY_ID_ALL_LIGHTS, + unknown_alarm_if_lights_on, + STATE_OFF, + STATE_ON, + ) def ring_known_alarm(entity_id, old_state, new_state): """Called when a known person comes home.""" @@ -117,8 +121,12 @@ def setup(hass, config): # Track home coming of each device track_state_change( - hass, hass.states.entity_ids(device_tracker.DOMAIN), - ring_known_alarm, STATE_NOT_HOME, STATE_HOME) + hass, + hass.states.entity_ids(device_tracker.DOMAIN), + ring_known_alarm, + STATE_NOT_HOME, + STATE_HOME, + ) return True ``` diff --git a/source/_cookbook/sonos_say.markdown b/source/_cookbook/sonos_say.markdown index 1c77c4e6bb35..0d89583d62ff 100644 --- a/source/_cookbook/sonos_say.markdown +++ b/source/_cookbook/sonos_say.markdown @@ -52,7 +52,7 @@ Note that this example uses the `voicerss` text-to-speech platform. There are ma ```yaml tts: - - platform: google + - platform: google_translate ``` If you want to use this TTS engine, change the line in the example provided to: diff --git a/source/_cookbook/track_battery_level.markdown b/source/_cookbook/track_battery_level.markdown index caaede147058..b73828caa7a9 100644 --- a/source/_cookbook/track_battery_level.markdown +++ b/source/_cookbook/track_battery_level.markdown @@ -4,11 +4,16 @@ description: "Basic example how to track the battery level of your mobile device ha_category: Automation Examples --- +## Android and iOS Devices + +The [Home Assistant Companion Apps](https://companion.home-assistant.io/) for iOS and Android pass the current battery level to Home Assistant with every location update. The default name of the sensor used is `sensor.battery_level`. + ### iOS Devices If you have a device running iOS (iPhone, iPad, etc), The [iCloud](/integrations/icloud) integration is gathering various details about your device including the battery level. To display it in the Frontend use a [template sensor](/integrations/template). You can also use the `battery` [sensor device class](/integrations/sensor/#device-class) to dynamically change the icon with the battery level. {% raw %} + ```yaml sensor: - platform: template @@ -24,17 +29,42 @@ sensor: {%- endif %} device_class: battery ``` + +{% endraw %} + +### Android Devices + +On your Android device, once the official [Home Assistant Companion app](https://companion.home-assistant.io/) is installed and connected to your Home Assistance instance, you will be able to display the battery level in the frontend by adding a [template sensor](/integrations/template) to your configuration YAML file. You can also use the battery [sensor device class](/integrations/sensor/#device-class) to dynamically change the icon with the battery level. + +{% raw %} + +```yaml +sensor: + - platform: template + sensors: + battery_phone: + friendly_name: AndroidPhone Battery + unit_of_measurement: '%' + value_template: >- + {%- if state_attr('device_tracker.xxxxx', 'battery_level') %} + {{ state_attr('device_tracker.xxxxx', 'battery_level')|round }} + {% else %} + {{ states('device_tracker.xxxxx') }} + {%- endif %} + device_class: battery +``` + {% endraw %} -### Android and iOS Devices -While running the [Owntracks](/integrations/owntracks) device tracker you can retrieve the battery level. -How you achieve this depends on how you have configured your Owntracks instance. +Replace 'device_tracker.xxxxx' with your phone name as shown under Configuration/Devices Device Info/Entities, for example: 'device_tracker.mi_a1' #### MQTT + If you have configured Owntracks to send reports via MQTT you can use the received data via a MQTT sensor. Replace username with your MQTT username (for the embedded MQTT it's simply homeassistant), and deviceid with the set Device ID in Owntracks. {% raw %} + ```yaml sensor: - platform: mqtt @@ -44,14 +74,16 @@ sensor: value_template: '{{ value_json.batt }}' device_class: battery ``` + {% endraw %} #### HTTP -If you have configured Owntracks to send reports to your Home Assistant instance via HTTP you can use a template sensor. +If you have configured Owntracks to send reports to your Home Assistant instance via HTTP you can use a template sensor. Replace `deviceid` with the set Device ID in Owntracks. {% raw %} + ```yaml sensor: - platform: template @@ -60,4 +92,5 @@ sensor: value_template: "{{ state_attr('device_tracker.deviceid', 'battery_level') }}" unit_of_measurement: '%' ``` + {% endraw %} diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 2ba4458766ff..9bb3f81f0148 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -1,5 +1,7 @@ - topic: Action - description: "[Actions](/docs/automation/action/) are events that fires once all triggers and conditions have been met." + description: "An [Action](/docs/automation/action/) is an event that can be fired as a response to a trigger, once all conditions have been met." +- topic: Add-on + description: "Add-ons provide additional, standalone, applications that can run beside Home Assistant. Most of these, add-on provided, applications can be integrated into Home Assistant using integrations. Examples of add-ons are: an MQTT broker, database service or a file server." - 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 @@ -7,7 +9,7 @@ - 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." + 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 @@ -31,7 +33,11 @@ - topic: hass description: "HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for Home Assistant. It is also the command-line tool." - topic: Hass.io - description: "[Hass.io](/hassio/) is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration, and can easily be extended." + description: "[Hass.io](/hassio/) is a full UI managed home automation ecosystem that runs Home Assistant, the Hass.io Supervisor and add-ons. It comes pre-installed on HassOS, but can be installed on any Linux system. It leverages Docker, which is managed by the Hass.io Supervisor." +- topic: Hass.io Supervisor + description: "The Hass.io Supervisor is a program that manages a Hass.io installation, taking care of installing and updating Home Assistant, add-ons, itself and, if used, updating the HassOS operating system." +- topic: HassOS + description: "HassOS, the Home Assistant Operating System, is an embedded, minimalistic, operating system designed to run the Hass.io ecosystem on single board computers (like the Raspberry Pi) or Virtual Machines. The Hass.io Supervisor can keep it up to date, removing the need for you to manage an operating system." - topic: Integration description: "[Integrations](/integrations/) provide the core logic for the functionality in Home Assistant. Like `notify` provides sending notifications." - topic: Lovelace @@ -45,7 +51,7 @@ - topic: Platform description: "[Platforms](/docs/configuration/platform_options/) make the connection to a specific software or hardware platform. For example, the `pushbullet` platform works with the service pushbullet.com to send notifications." - topic: Scene - 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." + 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 diff --git a/source/_docs/asterisk_mbox.markdown b/source/_docs/asterisk_mbox.markdown index 724c376d6f24..a36c5439dcb4 100644 --- a/source/_docs/asterisk_mbox.markdown +++ b/source/_docs/asterisk_mbox.markdown @@ -25,14 +25,14 @@ Before beginning make sure that you have the following: - A functional Asterisk PBX setup which is using the default `voicemail` application. - Both Home Assistant and Asterisk PBX running on the same LAN (or the same server). - The Asterisk PBX server has Python 3.5 or newer installed. -- Administrator access on the Asterisk PBX (for python module installation). +- Administrator access on the Asterisk PBX (for Python module installation). - Account access to the `asterisk` user that runs the Asterisk PBX software. ### Installation 1. Apply for a Google API key to enable speech-transcription services -2. Install the `asterisk_mbox_server` python module: +2. Install the `asterisk_mbox_server` Python module: ```bash pip3 install asterisk_mbox_server @@ -54,13 +54,13 @@ Before beginning make sure that you have the following: ``` - - **host** (*Optional*): The IP address to listen on for client requests. This defaults to all IP addresses on the server. To listen only locally, choose `127.0.0.1` - - **port** (*Optional*): The port to listen on for client requests. Defaults to 12345. - - **password** (*Required*): A password shared between client and server. Use only alpha-numeric characters and spaces - - **mbox\_path** (*Required*): The path to the storage location of mailbox files. This is typically `/var/spool/asterisk/voicemail/default//` - - **cache\_file** (*Required*): A fully-qualified path to a file that can be written by the server containing transcriptions of voicemails. Example: `/var/spool/asterisk/transcription.cache` - - **google\_key** (*Required*): Your 40 characters Google API key. - - **cdr** (*Optional*): Where to find CDR data. Supports various SQL databases as well as a file log. Configuring the CDR will enable the `asterisk_cdr` platfom. + - `host` (*Optional*): The IP address to listen on for client requests. This defaults to all IP addresses on the server. To listen only locally, choose `127.0.0.1` + - `port` (*Optional*): The port to listen on for client requests. Defaults to 12345. + - `password` (*Required*): A password shared between client and server. Use only alpha-numeric characters and spaces + - `mbox_path` (*Required*): The path to the storage location of mailbox files. This is typically `/var/spool/asterisk/voicemail/default//` + - `cache_file` (*Required*): A fully-qualified path to a file that can be written by the server containing transcriptions of voicemails. Example: `/var/spool/asterisk/transcription.cache` + - `google_key` (*Required*): Your 40 characters Google API key. + - `cdr` (*Optional*): Where to find CDR data. Supports various SQL databases as well as a file log. Configuring the CDR will enable the `asterisk_cdr` platform. Once complete, ensure this file is only accessible by the Asterisk user: @@ -68,6 +68,7 @@ Before beginning make sure that you have the following: sudo chown asterisk:asterisk /etc/asterisk/asterisk_mbox.ini sudo chmod 600 /etc/asterisk/asterisk_mbox.ini ``` + 4. Interactively start the server to verify it is functioning ```bash @@ -91,7 +92,7 @@ Before beginning make sure that you have the following: Type=simple User=asterisk Group=asterisk - ExecStart=/usr/local/bin/asterisk_mbox_server -cfg /etc/asterisk/asterisk_mbox.ini + ExecStart=/usr/local/bin/asterisk_mbox_server --cfg /etc/asterisk/asterisk_mbox.ini Restart=on-failure [Install] diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index be648d369813..f62ea7a62ab0 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -15,9 +15,8 @@ If you are starting Home Assistant for the first time, or you have logged out, y When you start Home Assistant for the first time the _owner_ user account is created. This account has some special privileges and can: - - Create and manage other user accounts. - - Configure integrations and other settings (coming soon). - - Configure Hass.io (coming soon). +- Create and manage other user accounts. +- Configure integrations and other settings (coming soon).
For the moment, other user accounts will have the same access as the owner account. In the future, non-owner accounts will be able to have restrictions applied. @@ -76,21 +75,23 @@ INFO (MainThread) [homeassistant.components.http.auth] You need to use a bearer ### Lost owner password +Before using the procedure below, make sure you explore options provided [here](/docs/locked_out). + While you should hopefully be storing your passwords in a password manager, if you lose the password associated with the owner account the only way to resolve this is to delete *all* the authentication data. You do this by shutting down Home Assistant and deleting the following files from the `.storage/` folder in your [configuration folder](/docs/configuration/): -* `auth` -* `auth_provider.homeassistant` -* `onboarding` -* `hassio` (for hassio users) -* `cloud` (for nabucasa users) +- `auth` +- `auth_provider.homeassistant` +- `onboarding` +- `hassio` +- `cloud` When you start Home Assistant next, you'll be required to set up authentication again. -### Error: invalid client id or redirect url +### Error: invalid client id or redirect URL Screenshot of Error: invalid client id or redirect url -You have to use a domain name, not IP address, to remote access Home Assistant otherwise you will get **Error: invalid client id or redirect url** error on the login form. However, you can use the IP address to access Home Assistant in your home network. +You have to use a domain name, not IP address, to remote access Home Assistant otherwise you will get `Error: invalid client id or redirect url` error on the login form. However, you can use the IP address to access Home Assistant in your home network. This is because we only allow an IP address as a client ID when your IP address is an internal network address (e.g., `192.168.0.1`) or loopback address (e.g., `127.0.0.1`). diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown index 9d33438b5748..d38b7f215b47 100644 --- a/source/_docs/authentication/multi-factor-auth.markdown +++ b/source/_docs/authentication/multi-factor-auth.markdown @@ -33,7 +33,7 @@ homeassistant: - type: totp ``` -If no `auth_mfa_modules` config section is defined in `configuration.yaml` a TOTP module named "Authenticator app" will be autoloaded. +If no `auth_mfa_modules` configuration section is defined in `configuration.yaml` a TOTP module named "Authenticator app" will be autoloaded. You will need an authenticator app on your phone. We recommend either [Google Authenticator](https://support.google.com/accounts/answer/1066447) or [Authy](https://authy.com/). Both are available for iOS or Android. @@ -63,7 +63,7 @@ TOTP is _time based_ so it relies on your Home Assistant clock being accurate. I The Notify MFA module uses the [notify component](/integrations/notify/) to send you an [HMAC-based One-Time Password](https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_algorithm). It is typically sent to your phone, but can be sent to any destination supported by a `notify` service. You use this password to log in. -#### Setting up TOTP +#### Setting up MFA notify Add Notify MFA to your `configuration.yaml` file like this: diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown index 3e5aca59414a..9068562e563f 100644 --- a/source/_docs/authentication/providers.markdown +++ b/source/_docs/authentication/providers.markdown @@ -118,7 +118,7 @@ homeassistant: - group: system-users ``` -First note, for `trusted_users` configuration you need to use `user id`, which you can find through Configuration -> Users -> View User Detail. The `trusted_users` configuration will not validate the existing of the user, so please make sure you have put in the correct user id by yourself. +First note, for `trusted_users` configuration you need to use `user id`, which you can find through Configuration -> Users -> View User Detail. The `trusted_users` configuration will not validate the existence of the user, so please make sure you have put in the correct user id by yourself. Second note, a trusted user with an IPv6 address must put the IPv6 address in quotes as shown. diff --git a/source/_docs/automation/condition.markdown b/source/_docs/automation/condition.markdown index 76072d2f3ec5..931b26c19c51 100644 --- a/source/_docs/automation/condition.markdown +++ b/source/_docs/automation/condition.markdown @@ -21,9 +21,9 @@ automation: condition: or conditions: - condition: template - value_template: '{% raw %}{{ state_attr('sun.sun', 'elevation') < 4 }}{% endraw %}' + value_template: "{% raw %}{{ state_attr('sun.sun', 'elevation') < 4 }}{% endraw %}" - condition: template - value_template: '{% raw %}{{ states('sensor.sensorluz_7_0') < 10 }}{% endraw %}' + value_template: "{% raw %}{{ states('sensor.sensorluz_7_0') < 10 }}{% endraw %}" action: - service: scene.turn_on entity_id: scene.DespiertaDespacho diff --git a/source/_docs/automation/editor.markdown b/source/_docs/automation/editor.markdown index 3cb6a998a962..37f4886676df 100644 --- a/source/_docs/automation/editor.markdown +++ b/source/_docs/automation/editor.markdown @@ -79,7 +79,7 @@ For example, the below automation will be triggered when the sun goes from below ```yaml # Example automations.yaml entry -- id: my_unique_id # <-- Required for editor to work. +- id: my_unique_id # <-- Required for editor to work, for automations created with the editor the id will be automatically generated. alias: Hello world trigger: - platform: state diff --git a/source/_docs/automation/examples.markdown b/source/_docs/automation/examples.markdown index 3b19efd458f4..820ea637c34f 100644 --- a/source/_docs/automation/examples.markdown +++ b/source/_docs/automation/examples.markdown @@ -20,13 +20,13 @@ automation: event: sunset offset: '-01:00:00' - platform: state - entity_id: group.all_devices + entity_id: all to: 'home' condition: # Prefix the first line of each condition configuration # with a '-'' to enter multiple - condition: state - entity_id: group.all_devices + entity_id: all state: 'home' - condition: time after: '16:00:00' @@ -40,7 +40,7 @@ automation: - alias: 'Rule 2 - Away Mode' trigger: platform: state - entity_id: group.all_devices + entity_id: all to: 'not_home' action: service: light.turn_off @@ -63,7 +63,6 @@ automation: # Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component. - alias: 'Xiaomi Cube Action' - hide_entity: false initial_state: false trigger: platform: event diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index eb68f068c61a..d5ff1b985532 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -31,30 +31,22 @@ automation 2: notify.{{ trigger.topic.split('/')[-1] }} data_template: message: '{{ trigger.payload }}' - + automation 3: trigger: - # Multiple Entities for which you want to perform the same action. + # Multiple entities for which you want to perform the same action. - platform: state entity_id: - light.bedroom_closet - to: 'on' - # Trigger when someone leaves the closet light on for 10 minutes. - for: '00:10:00' - - platform: state - entity_id: - light.kiddos_closet - to: 'on' - for: '00:10:00' - - platform: state - entity_id: - light.linen_closet to: 'on' + # Trigger when someone leaves one of those lights on for 10 minutes. for: '00:10:00' action: - service: light.turn_off data_template: - # Whichever entity triggers the automation we want to turn off THAT entity, not the others. + # Turn off whichever entity triggered the automation. entity_id: "{{ trigger.entity_id }}" ``` {% endraw %} @@ -76,17 +68,23 @@ It is possible to use `data` and `data_template` concurrently but be aware that ## Trigger State Object -Knowing how to access the [state object](/docs/configuration/state_object/) of a trigger entity could be one of the more common questions. Here are a few ways for the [`state`](#state), [`numeric_state`](#numeric_state) and [`template`](#template) triggers: +Knowing how to access the [state object](/docs/configuration/state_object/) of a trigger entity can be useful in automations. Here are a few ways to access the [`state`](#state), [`numeric_state`](#numeric_state) and [`template`](#template) triggers: * `trigger.from_state` will return the **previous** [state object](/docs/configuration/state_object/) of the entity. * `trigger.to_state` will return the **new** [state object](/docs/configuration/state_object/) that triggered trigger. * `states[trigger.to_state.domain][trigger.to_state.object_id]` will return the **current** [state object](/docs/configuration/state_object/) of the entity. +
+ + Be aware that if you reference a trigger state object in an automation action, attempting to test that automation by calling the `automation.trigger` service or by clicking EXECUTE in the More Info box for the automation will not work. This is because the trigger state object doesn't exist in those contexts. One way to test automations like these is to manually change the state of the trigger entity at Developer Tools > States. + +
+ ## Available Trigger Data The following tables show the available trigger data per platform. -### event +### Event | Template variable | Data | | ---- | ---- | @@ -94,7 +92,7 @@ The following tables show the available trigger data per platform. | `trigger.event` | Event object that matched. | `trigger.event.data` | Optional data -### mqtt +### MQTT | Template variable | Data | | ---- | ---- | @@ -104,7 +102,7 @@ The following tables show the available trigger data per platform. | `trigger.payload_json` | Dictonary of the JSON parsed payload. | `trigger.qos` | QOS of payload. -### numeric_state +### Numeric State | Template variable | Data | | ---- | ---- | @@ -116,7 +114,7 @@ The following tables show the available trigger data per platform. | `trigger.to_state` | The new [state object] that triggered trigger. | `trigger.for` | Timedelta object how long state has met above/below criteria, if any. -### state +### State | Template variable | Data | | ---- | ---- | @@ -126,7 +124,7 @@ The following tables show the available trigger data per platform. | `trigger.to_state` | The new [state object] that triggered trigger. | `trigger.for` | Timedelta object how long state has been to state, if any. -### sun +### Sun | Template variable | Data | | ---- | ---- | @@ -134,7 +132,7 @@ The following tables show the available trigger data per platform. | `trigger.event` | The event that just happened: `sunset` or `sunrise`. | `trigger.offset` | Timedelta object with offset to the event, if any. -### template +### Template | Template variable | Data | | ---- | ---- | @@ -144,21 +142,21 @@ The following tables show the available trigger data per platform. | `trigger.to_state` | New [state object] of entity that caused template to change. | `trigger.for` | Timedelta object how long state has been to state, if any. -### time +### Time | Template variable | Data | | ---- | ---- | | `trigger.platform` | Hardcoded: `time` | `trigger.now` | DateTime object that triggered the time trigger. -### time pattern +### Time Pattern | Template variable | Data | | ---- | ---- | | `trigger.platform` | Hardcoded: `time_pattern` | `trigger.now` | DateTime object that triggered the time_pattern trigger. -### webhook +### Webhook | Template variable | Data | | ---- | ---- | @@ -167,7 +165,7 @@ The following tables show the available trigger data per platform. | `trigger.json` | The JSON data of the request (if it had a JSON content type). | `trigger.data` | The form data of the request (if it had a form data content type). -### zone +### Zone | Template variable | Data | | ---- | ---- | diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 2be3ee4b4359..9cad84046be2 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -22,12 +22,6 @@ automation: mood: happy ``` -
- -Starting 0.42, it is no longer possible to listen for event `homeassistant_start`. Use the 'homeassistant' platform below instead. - -
- ### Home Assistant trigger Triggers when Home Assistant starts up or shuts down. @@ -136,6 +130,12 @@ The `for` template(s) will be evaluated when an entity changes as specified. Triggers when the state of any of given entities changes. If only `entity_id` is given trigger will activate for all state changes, even if only state attributes change. +
+ +The values you see in your overview will often not be the same as the actual state of the entity. For instance, the overview may show `Connected` when the underlying entity is actually `on`. You should check the state of the entity by looking in the _States_ menu under _Developer tools_. + +
+ ```yaml automation: trigger: @@ -182,9 +182,9 @@ Use quotes around your values for `from` and `to` to avoid the YAML parser inter #### Sunset / Sunrise trigger -Triggers when the sun is setting or rising, i.e. when the sun elevation reaches 0°. +Triggers when the sun is setting or rising, i.e., when the sun elevation reaches 0°. -An optional time offset can be given to have it trigger a set time before or after the sun event (e.g. 45 minutes before sunset). +An optional time offset can be given to have it trigger a set time before or after the sun event (e.g., 45 minutes before sunset).
@@ -216,7 +216,7 @@ automation: trigger: platform: numeric_state entity_id: sun.sun - value_template: "{{ state.attributes.elevation }}" + value_template: "{{ state_attr('sun.sun', 'elevation') }}" # Can be a positive or negative number below: -4.0 action: @@ -288,7 +288,7 @@ As an alternative, providing you include the sensor [time](/integrations/time_da automation: trigger: platform: template - value_template: "{{ (as_timestamp(states.sensor.time.last_changed) - as_timestamp(states.YOUR.ENTITY.last_changed)) > 300 }}" + value_template: "{{ (states.sensor.time.last_changed - states.YOUR.ENTITY.last_changed).total_seconds() > 300 }}" ``` {% endraw %} diff --git a/source/_docs/automation/troubleshooting.markdown b/source/_docs/automation/troubleshooting.markdown index 5085acd0a12b..12354c708df4 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. In order for **Check Config** to be visible, you must enable **Advanced Mode** on your user profile. +It is also useful to go to **Configuration** -> **Server Control** and click on **Check Configuration** button in Configuration validation section to make sure there are no syntax errors before restarting Home Assistant. In order for **Check configuration** 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/_docs/autostart/init.d.markdown b/source/_docs/autostart/init.d.markdown index f5e47d2ff117..7aaf41acdf55 100644 --- a/source/_docs/autostart/init.d.markdown +++ b/source/_docs/autostart/init.d.markdown @@ -6,31 +6,31 @@ redirect_from: /getting-started/autostart-init.d/ Home Assistant can run as a daemon within init.d with the script below. -### 1. Copy script +## 1. Copy script Copy either the daemon script or the Python environment script at the end of this page to `/etc/init.d/hass-daemon` depending on your installation. After that, set the script to be executable: ```bash -$ sudo chmod +x /etc/init.d/hass-daemon +sudo chmod +x /etc/init.d/hass-daemon ``` -### 2. Select a user. +## 2. Select a user -Create or pick a user that the Home Assistant daemon will run under. Update script to set `RUN_AS` to the username that should be used to execute hass. +Create or pick a user that the Home Assistant daemon will run under. Update script to set `RUN_AS` to the username that should be used to execute Home Assistant. -### 3. Change hass executable and other variables if required. +## 3. Change `hass` executable and other variables if required Some installation environments may require a change in the Home Assistant executable `hass`. Update script to set `HASS_BIN` to the appropriate `hass` executable path. Please also check the other variables for the appropriate value. In general the defaults should work -### 4. Install this service +## 4. Install this service ```bash -$ sudo service hass-daemon install +sudo service hass-daemon install ``` -### 5. Create logrotate rule +## 5. Create logrotate rule This logrotate script at `/etc/logrotate.d/homeassistant` will create an outage of a few seconds every week at night. If you do not want this add `--log-rotate-days 7` to the `FLAGS` variable in the init script. @@ -55,11 +55,11 @@ File `/var/log/homeassistant/home-assistant.log`: That's it. Restart your machine and Home Assistant should start automatically. -If HA does not start, check the log file output for errors at `/var/log/homeassistant/home-assistant.log` +If Home Assistant does not start, check the log file output for errors at `/var/log/homeassistant/home-assistant.log` -### Extra: Running commands before hass executes +### Extra: Running commands before Home Assistant executes -If any commands need to run before executing hass (like loading a virtual environment), put them in PRE_EXEC. This command must end with a semicolon. +If any commands need to run before executing Home Assistant (like loading a virtual environment), put them in PRE_EXEC. This command must end with a semicolon. ### Daemon script diff --git a/source/_docs/autostart/synology.markdown b/source/_docs/autostart/synology.markdown index ec134d4a8aaf..58906c7c8b4c 100644 --- a/source/_docs/autostart/synology.markdown +++ b/source/_docs/autostart/synology.markdown @@ -6,7 +6,7 @@ redirect_from: /getting-started/autostart-synology/ To get Home Assistant to automatically start when you boot your Synology NAS: -SSH into your synology & login as admin or root +SSH into your Synology & login as admin or root ```bash $ cd /volume1/homeassistant @@ -32,13 +32,13 @@ exec /bin/sh /volume1/homeassistant/hass-daemon start Register the autostart ```bash -$ ln -s homeassistant.conf /etc/init/homeassistant.conf +ln -s homeassistant.conf /etc/init/homeassistant.conf ``` Make the relevant files executable: ```bash -$ chmod -r 777 /etc/init/homeassistant.conf +chmod -r 777 /etc/init/homeassistant.conf ``` That's it - reboot your NAS and Home Assistant should automatically start diff --git a/source/_docs/autostart/systemd.markdown b/source/_docs/autostart/systemd.markdown index ab4ce5ea93ca..270fd374e703 100644 --- a/source/_docs/autostart/systemd.markdown +++ b/source/_docs/autostart/systemd.markdown @@ -77,24 +77,24 @@ WantedBy=multi-user.target You need to reload `systemd` to make the daemon aware of the new configuration. ```bash -$ sudo systemctl --system daemon-reload +sudo systemctl --system daemon-reload ``` To have Home Assistant start automatically at boot, enable the service. ```bash -$ sudo systemctl enable home-assistant@YOUR_USER +sudo systemctl enable home-assistant@YOUR_USER ``` To disable the automatic start, use this command. ```bash -$ sudo systemctl disable home-assistant@YOUR_USER +sudo systemctl disable home-assistant@YOUR_USER ``` To start Home Assistant now, use this command. ```bash -$ sudo systemctl start home-assistant@YOUR_USER +sudo systemctl start home-assistant@YOUR_USER ``` You can also substitute the `start` above with `stop` to stop Home Assistant, `restart` to restart Home Assistant, and 'status' to see a brief status report as seen below. @@ -114,18 +114,18 @@ $ sudo systemctl status home-assistant@YOUR_USER To get Home Assistant's logging output, simple use `journalctl`. ```bash -$ sudo journalctl -f -u home-assistant@YOUR_USER +sudo journalctl -f -u home-assistant@YOUR_USER ``` Because the log can scroll quite quickly, you can select to view only the error lines: ```bash -$ sudo journalctl -f -u home-assistant@YOUR_USER | grep -i 'error' +sudo journalctl -f -u home-assistant@YOUR_USER | grep -i 'error' ``` When working on Home Assistant, you can easily restart the system and then watch the log output by combining the above commands using `&&` ```bash -$ sudo systemctl restart home-assistant@YOUR_USER && sudo journalctl -f -u home-assistant@YOUR_USER +sudo systemctl restart home-assistant@YOUR_USER && sudo journalctl -f -u home-assistant@YOUR_USER ``` ### Automatically restarting Home Assistant on failure diff --git a/source/_docs/autostart/upstart.markdown b/source/_docs/autostart/upstart.markdown index 5870aa065014..065f525e25a6 100644 --- a/source/_docs/autostart/upstart.markdown +++ b/source/_docs/autostart/upstart.markdown @@ -3,10 +3,10 @@ title: "Autostart using Upstart" description: "Instructions on how to setup Home Assistant to launch on boot using Upstart." --- -Many linux distributions use the Upstart system (or similar) for managing daemons. Typically, systems based on Debian 7 or previous use Upstart. This includes Ubuntu releases before 15.04. If you are unsure if your system is using Upstart, you may check with the following command: +Many Linux distributions use the Upstart system (or similar) for managing daemons. Typically, systems based on Debian 7 or previous use Upstart. This includes Ubuntu releases before 15.04. If you are unsure if your system is using Upstart, you may check with the following command: ```bash -$ ps -p 1 -o comm= +ps -p 1 -o comm= ``` If the preceding command returns the string `init`, you are likely using Upstart. @@ -128,4 +128,4 @@ sudo service hass-daemon stop When running Home Assistant with this script, the configuration directory will be located at `/var/opt/homeassistant`. This directory will contain a verbose log rather than simply an error log. -When running daemons, it is good practice to have the daemon run under its own user name rather than the default user's name. Instructions for setting this up are outside the scope of this document. +When running daemons, it is good practice to have the daemon run under its own username rather than the default user's name. Instructions for setting this up are outside the scope of this document. diff --git a/source/_docs/backend/database.markdown b/source/_docs/backend/database.markdown index 6eb9b5df2078..2e5964bab9cd 100644 --- a/source/_docs/backend/database.markdown +++ b/source/_docs/backend/database.markdown @@ -4,7 +4,7 @@ description: "Details about the database used by Home Assistant." redirect_from: /details/database/ --- -The default database used by Home Assistant is [SQLite](https://www.sqlite.org/), and the database file is stored in your [configuration directory](/getting-started/configuration/) (e.g., `/.homeassistant/home-assistant_v2.db`). If you prefer to run a database server (e.g. PostgreSQL), use the [`recorder` component](/integrations/recorder/). +Database is used in by Home Assistant as history and tracker only, to store the events and its parameters. The default database used by Home Assistant is [SQLite](https://www.sqlite.org/), and the database file is stored in your [configuration directory](/getting-started/configuration/) (e.g., `/.homeassistant/home-assistant_v2.db`). If you prefer to run a database server (e.g., PostgreSQL), use the [`recorder` component](/integrations/recorder/). To work with the SQLite database manually from the command-line, you will need an [installation](http://www.sqlitetutorial.net/download-install-sqlite/) of `sqlite3`. Alternatively [DB Browser for SQLite](http://sqlitebrowser.org/) provides a viewer for exploring the database data and an editor for executing SQL commands. First load your database with `sqlite3`: diff --git a/source/_docs/backend/updater.markdown b/source/_docs/backend/updater.markdown index 9f02d7654020..3fb75020da28 100644 --- a/source/_docs/backend/updater.markdown +++ b/source/_docs/backend/updater.markdown @@ -6,7 +6,7 @@ redirect_from: /details/updater/ Starting with 0.31 the [updater component](/integrations/updater/) sends an optional report about Home Assistant instance. -If you want to opt-in to include integration information, add `include_used_components` to your config. This will allow the Home Assistant developers to focus development efforts on the most popular components. +If you want to opt-in to include integration information, add `include_used_components` to your configuration. This will allow the Home Assistant developers to focus development efforts on the most popular components. ```yaml updater: @@ -16,7 +16,7 @@ updater: We are only collecting this information to better understand our user base to provide better long term support and feature development. | Name | Description | Example | Data Source | -|-----------------------|--------------------------------------------|------------------------------------|----------------| +| --------------------- | ------------------------------------------ | ---------------------------------- | -------------- | | `arch` | CPU Architecture | `x86_64` | Local Instance | | `distribution` | Linux Distribution name (only Linux) | `Ubuntu` | Local Instance | | `docker` | True if running inside Docker | `false` | Local Instance | diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index 30528baefb22..b416afff1d66 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -9,19 +9,19 @@ The web interface can be found at `http://ip.ad.dre.ss:8123/` - for example if y The location of the folder differs between operating systems: -| OS | Path | -| -- | ---- | -| macOS | `~/.homeassistant` | -| Linux | `~/.homeassistant` | -| Windows | `%APPDATA%/.homeassistant` | -| Hass.io | `/config` | -| Docker | `/config` | +| OS | Path | +| -------------- | -------------------------- | +| Home Assistant | `/config` | +| Docker | `/config` | +| macOS | `~/.homeassistant` | +| Linux | `~/.homeassistant` | +| Windows | `%APPDATA%/.homeassistant` | -If you want to use a different folder for configuration, use the config command line parameter: `hass --config path/to/config`. +If you want to use a different folder for configuration, use the configuration command line parameter: `hass --config path/to/config`. Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains integrations to be loaded with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable functionality. -If you run into trouble while configuring Home Assistant, have a look at the [configuration troubleshooting page](/getting-started/troubleshooting-configuration/) and at the [configuration.yaml examples](/cookbook/#example-configurationyaml). +If you run into trouble while configuring Home Assistant, have a look at the [configuration troubleshooting page](/getting-started/troubleshooting-configuration/) and at the [`configuration.yaml` examples](/cookbook/#example-configurationyaml).
diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index 0e16aa277145..0c80d3cb26c3 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -66,4 +66,4 @@ whitelist_external_dirs: ### Reload Core Service -Home Assistant offers a service to reload the core configuration while Home Assistant is running called `homeassistant.reload_core_config`. This allows you to change any of the above sections and see it being applied without having to restart Home Assistant. To call this service, go to the "Service" tab under Developer Tools, select the `homeassistant.reload_core_config` service and click the "CALL SERVICE" button. Alternatively, you can press the "Reload Core" button under Configuration > Server Control. +Home Assistant offers a service to reload the core configuration while Home Assistant is running called `homeassistant.reload_core_config`. This allows you to change any of the above sections and see it being applied without having to restart Home Assistant. To call this service, go to the "Service" tab under Developer Tools, select the `homeassistant.reload_core_config` service and click the "CALL SERVICE" button. Alternatively, you can press the "Reload Location & Customizations" button under Configuration > Server Control. diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 04eea1c21585..b4eaa8182ba1 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -27,6 +27,7 @@ Under the *Configuration* menu you'll find the *Customization* menu. If this men homeassistant: customize: !include customize.yaml ``` + #### Possible values {% configuration customize %} @@ -34,25 +35,11 @@ friendly_name: description: Name of the entity as displayed in the UI. required: false type: string -homebridge_name: - description: Name of the entity in `HomeBridge`. - required: false - type: string hidden: description: Set to `true` to hide the entity. required: false type: boolean default: false -homebridge_hidden: - description: Set to `true` to hide the entity from `HomeBridge`. - required: false - type: boolean - default: false -emulated_hue_hidden: - description: Set to `true` to hide the entity from `emulated_hue` (this will be deprecated in the near future and should be configured in [`emulated_hue`](/integrations/emulated_hue)). - required: false - type: boolean - default: false entity_picture: description: URL to use as picture for entity. required: false @@ -89,6 +76,7 @@ Device class is currently supported by the following components: * [Binary Sensor](/integrations/binary_sensor/) * [Sensor](/integrations/sensor/) * [Cover](/integrations/cover/) +* [Media Player](/integrations/media_player/) ### Manual customization @@ -132,12 +120,11 @@ homeassistant: "scene.month_*_colors": hidden: true emulated_hue_hidden: false - homebridge_hidden: true ``` ### Reloading customize -Home Assistant offers a service to reload the core configuration while Home Assistant is running called `homeassistant.reload_core_config`. This allows you to change your customize section and see it being applied without having to restart Home Assistant. To call this service, go to the "Service" tab under Developer Tools, select the `homeassistant.reload_core_config` service and click the "CALL SERVICE" button. Alternatively, you can press the "Reload Core" button under Configuration > Server Control. +Home Assistant offers a service to reload the core configuration while Home Assistant is running called `homeassistant.reload_core_config`. This allows you to change your customize section and see it being applied without having to restart Home Assistant. To call this service, go to the "Service" tab under Developer Tools, select the `homeassistant.reload_core_config` service and click the "CALL SERVICE" button. Alternatively, you can press the "Reload Location & Customizations" button under Configuration > Server Control.
New customize information will be applied the next time the state of the entity gets updated. diff --git a/source/_docs/configuration/devices.markdown b/source/_docs/configuration/devices.markdown index 343b7ed84325..d49409db3e8f 100644 --- a/source/_docs/configuration/devices.markdown +++ b/source/_docs/configuration/devices.markdown @@ -6,7 +6,7 @@ redirect_from: /getting-started/devices/ Home Assistant will be able to automatically discover many devices and services available on your network if you have [the discovery component](/integrations/discovery/) enabled (the default setting). -See the [components overview page](/integrations/) to find installation instructions for your devices and services. If you can't find support for your favorite device or service, [consider adding support](/developers/add_new_platform/). +See the [integrations overview page](/integrations/) to find installation instructions for your devices and services. If you can't find support for your favorite device or service, [consider adding support](/developers/add_new_platform/). Classification for the available integrations: diff --git a/source/_docs/configuration/events.markdown b/source/_docs/configuration/events.markdown index 4d5de172b7f7..5c8e641808a5 100644 --- a/source/_docs/configuration/events.markdown +++ b/source/_docs/configuration/events.markdown @@ -8,82 +8,63 @@ The core of Home Assistant is the event bus. The event bus allows any integratio Home Assistant contains a few built-in events that are used to coordinate between various components. -### Event `homeassistant_start` -Event `homeassistant_start` is fired when all integrations from the configuration have been initialized. This is the event that will start the timer firing off `time_changed` events. - -
- - Starting 0.42, it is no longer possible to listen for event `homeassistant_start`. Use the 'homeassistant' [platform](/docs/automation/trigger) instead. - -
- -### Event `homeassistant_stop` -Event `homeassistant_stop` is fired when Home Assistant is shutting down. It should be used to close any open connection or release any resources. - - ### Event `state_changed` Event `state_changed` is fired when a state changes. Both `old_state` and `new_state` are state objects. [Documentation about state objects.](/topics/state_object/) -Field | Description ------ | ----------- -`entity_id` | Entity ID of the changed entity. Example: `light.kitchen` -`old_state` | The previous state of the entity before it changed. This field is omitted if the entity is new. -`new_state` | The new state of the entity. This field is omitted if the entity is removed from the state machine. +| Field | Description | +| ----------- | --------------------------------------------------------------------------------------------------- | +| `entity_id` | Entity ID of the changed entity. Example: `light.kitchen` | +| `old_state` | The previous state of the entity before it changed. This field is omitted if the entity is new. | +| `new_state` | The new state of the entity. This field is omitted if the entity is removed from the state machine. | ### Event `time_changed` Event `time_changed` is fired every second by the timer and contains the current time. -Field | Description ------ | ----------- -`now` | A [datetime object](https://docs.python.org/3.4/library/datetime.html#datetime.datetime) containing the current time in UTC. +| Field | Description | +| ----- | ---------------------------------------------------------------------------------------------------------------------------- | +| `now` | A [datetime object](https://docs.python.org/3.4/library/datetime.html#datetime.datetime) containing the current time in UTC. | ### Event `service_registered` Event `service_registered` is fired when a new service has been registered within Home Assistant. -Field | Description ------ | ----------- -`domain` | Domain of the service. Example: `light`. -`service` | The service to call. Example: `turn_on` +| Field | Description | +| --------- | ---------------------------------------- | +| `domain` | Domain of the service. Example: `light`. | +| `service` | The service to call. Example: `turn_on` | ### Event `call_service` Event `call_service` is fired to call a service. -Field | Description ------ | ----------- -`domain` | Domain of the service. Example: `light`. -`service` | The service to call. Example: `turn_on` -`service_data` | Dictionary with the service call parameters. Example: `{ 'brightness': 120 }`. -`service_call_id` | String with a unique call id. Example: `23123-4`. +| Field | Description | +| ----------------- | ------------------------------------------------------------------------------ | +| `domain` | Domain of the service. Example: `light`. | +| `service` | The service to call. Example: `turn_on` | +| `service_data` | Dictionary with the service call parameters. Example: `{ 'brightness': 120 }`. | +| `service_call_id` | String with a unique call id. Example: `23123-4`. | ### Event `service_executed` Event `service_executed` is fired by the service handler to indicate the service is done. -Field | Description ------ | ----------- -`service_call_id` | String with the unique call id of the service call that was executed. Example: `23123-4`. - -
- - Starting with 0.84, it is no longer possible to listen for event `service_executed`. - -
+| Field | Description | +| ----------------- | ----------------------------------------------------------------------------------------- | +| `service_call_id` | String with the unique call id of the service call that was executed. Example: `23123-4`. | ### Event `platform_discovered` Event `platform_discovered` is fired when a new platform has been discovered by the [`discovery`](/integrations/discovery/) component. -Field | Description ------ | ----------- -`service` | The platform that is discovered. Example: `zwave`. -`discovered` | Dictionary containing discovery information. Example: `{ "host": "192.168.1.10", "port": 8889}`. +| Field | Description | +| ------------ | ------------------------------------------------------------------------------------------------ | +| `service` | The platform that is discovered. Example: `zwave`. | +| `discovered` | Dictionary containing discovery information. Example: `{ "host": "192.168.1.10", "port": 8889}`. | ### Event `component_loaded` Event `component_loaded` is fired when a new integration has been loaded and initialized. -Field | Description ------ | ----------- -`component` | Domain of the integration that has just been initialized. Example: `light`. +| Field | Description | +| ----------- | --------------------------------------------------------------------------- | +| `component` | Domain of the integration that has just been initialized. Example: `light`. | diff --git a/source/_docs/configuration/group_visibility.markdown b/source/_docs/configuration/group_visibility.markdown deleted file mode 100644 index df670c509ea9..000000000000 --- a/source/_docs/configuration/group_visibility.markdown +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: "Group Visibility" -description: "Instructions on how to change group visibility using automations." -redirect_from: /topics/group_visibility/ ---- - -After filling Home Assistant with all your precious home automation devices, you usually end up with a cluttered interface and lots of groups that are not interesting in your current context. What if you just want to show groups that are interesting _now_ and hide the rest? That's when group visibility comes to play. - -## Changing visibility of a group - -To change visibility of a group, use the service `group.set_visibility`, pass the group name as `entity_id` and use `visible` to decide whether the group should be shown or hidden. - -```yaml -service: group.set_visibility -entity_id: group.basement -data: - visible: false -``` - -
-If a sensor belongs to only one group and that group is hidden, the sensor will "jump" to the top of the web interface. Add the sensor to an additional (visible) group if you do not want this to happen. -
- -## Automations - -First you should decide under which circumstances a group should be visible or not. Depending on the complexity, you might have to write two automations: one that hides the group and another that shows it. - -In this example, the group `group.basement` is hidden when the sun sets and shown again when it rises: - -```yaml -automation: - trigger: - platform: sun - event: sunset - action: - service: group.set_visibility - entity_id: group.basement - data: - visible: false - -automation 2: - trigger: - platform: sun - event: sunrise - action: - service: group.set_visibility - entity_id: group.basement - data: - visible: true -``` - -## Easier automations - -One of the most common uses cases are to show groups during certain times of day, maybe commuting information during a work day morning or light switches when it is getting dark. The complexity of automations needed to make this happen will quickly get out of hand. So, one way to make the automations easier is to create a sensor that alters its state depending on time of day. One way of doing that is using a `command_line` sensor and a script: - -```python -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -from datetime import time, datetime - -def mk_occasion(name, start, end, days=None): - s = start.split(':') - e = end.split(':') - return {'name' : name, - 'start': time(int(s[0]), int(s[1]), int(s[2])), - 'end' : time(int(e[0]), int(e[1]), int(e[2])), - 'days' : days} - -# Matching is done from top to bottom -OCCASIONS = [ - # More specific occasions - mk_occasion('work_morning', '06:00:00', '07:10:00', range(5)), - - # General matching - mk_occasion('weekday', '00:00:00', '23:59:59', range(5)), - mk_occasion('weekend', '00:00:00', '23:59:59', [5, 6]) -] - -def get_current_occasion(occasion_list, default_occasion='normal'): - now = datetime.now() - for occasion in OCCASIONS: - if occasion['start'] <= now.time() <= occasion['end'] and \ - (occasion['days'] is None or now.weekday() in occasion['days']): - return occasion['name'] - return default_occasion - -if __name__ == '__main__': - print(get_current_occasion(OCCASIONS)) -``` - -This script will output "work_morning" from 06:00-07:10 during weekdays (Monday-Friday), "weekday" during all other time from Monday-Friday and "weekend" on Saturdays and Sundays. Adjust according to your needs. To create the sensor, just add it like this: - -```yaml -sensor: - - platform: command_line - name: Occasion - command: "python3 occasion.py" -``` -
-If you are using docker to run Home Assistant then the occasion.py script will be placed under /config. Your command should instead be: command: "python3 /config/occasion.py" -
- - -To simplify things, we create a Home Assistant script that changes the visibility of a group, but also verifies that an entity is in a specific state: - -```yaml -script: - group_visibility: - sequence: - - service: group.set_visibility - data_template: - entity_id: '{% raw %}{{ entity_id }}{% endraw %}' - visible: '{% raw %}{{ is_state(cond, visible_state) }}{% endraw %}' -``` - -The last part is writing an automation that hides or shows the group: - -```yaml -automation: - - alias: Work morning - trigger: - - platform: state - entity_id: sensor.occasion - - platform: homeassistant - event: start - action: - service: script.group_visibility - data: - entity_id: group.work_sensors - cond: sensor.occasion - visible_state: 'work_morning' -``` - -Our previously defined script will be called if `sensor.occasion` changes state OR when Home Assistant has started. The group `group.work_sensors` will be shown when `sensor.occasion` changes state to "work_morning" and hidden otherwise. - -### The complete example - -```yaml -group: - default_view: - entities: - - group.work_sensors - - # Only visible when it's time to go to work - work_sensors: - name: Time to go to work - entities: - - sensor.something1 - - sensor.something2 - -sensor: - - platform: command_line - name: Occasion - command: "python3 occasion.py" - -script: - group_visibility: - sequence: - - service: group.set_visibility - data_template: - entity_id: '{% raw %}{{ entity_id }}{% endraw %}' - visible: '{% raw %}{{ is_state(cond, visible_state) }}{% endraw %}' - -automation: - - alias: Work morning - trigger: - - platform: state - entity_id: sensor.occasion - - platform: homeassistant - event: start - action: - service: script.group_visibility - data: - entity_id: group.work_sensors - cond: sensor.occasion - visible_state: 'work_morning' -``` diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index d3ba7e9dba09..d3b26d31339e 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -6,7 +6,7 @@ redirect_from: /topics/packages/ Packages in Home Assistant provide a way to bundle different component's configuration together. We already learned about the two configuration styles (specifying platforms entries together or individually) on the [adding devices](/docs/configuration/devices/) page. Both of these configuration methods require you to create the integration key in the main `configuration.yaml` file. With packages we have a way to include different components, or different configuration parts using any of the `!include` directives introduced in [splitting the configuration](/docs/configuration/splitting_configuration). -Packages are configured under the core `homeassistant/packages` in the configuration and take the format of a package name (no spaces, all lower case) followed by a dictionary with the package config. For example, package `pack_1` would be created as: +Packages are configured under the core `homeassistant/packages` in the configuration and take the format of a package name (no spaces, all lower case) followed by a dictionary with the package configuration. For example, package `pack_1` would be created as: ```yaml homeassistant: @@ -60,7 +60,7 @@ There are some rules for packages that will be merged: 1. Platform based integrations (`light`, `switch`, etc) can always be merged. 2. Components where entities are identified by a key that will represent the entity_id (`{key: config}`) need to have unique 'keys' between packages and the main configuration file. - For example if we have the following in the main config. You are not allowed to re-use "my_input" again for `input_boolean` in a package: + For example if we have the following in the main configuration. You are not allowed to re-use "my_input" again for `input_boolean` in a package: ```yaml input_boolean: @@ -84,6 +84,24 @@ homeassistant: This uses the concept splitting the configuration and will include all files in a directory with the keys representing the filenames. See the documentation about [splitting the configuration](/docs/configuration/splitting_configuration/) for more information about `!include_dir_named` and other include statements that might be helpful. The benefit of this approach is to pull all configurations required to integrate a system, into one file, rather than across several. +The following example allows to have subfolders in the `packages` folder, which could make managing multiple packages easier by grouping: + +```yaml +homeassistant: + packages: !include_dir_merge_named packages/ +``` + +and in `packages/subsystem1/functionality1.yaml`: + +```yaml +subsystem1_functionality1: + input_boolean: + ... + binary_sensor: + ... + automation: +``` + ### Customizing entities with packages It is possible to [customize entities](/docs/configuration/customizing-devices/) within packages. Just create your customization entries under: diff --git a/source/_docs/configuration/secrets.markdown b/source/_docs/configuration/secrets.markdown index c9d108f9282b..f09b10eeadb1 100644 --- a/source/_docs/configuration/secrets.markdown +++ b/source/_docs/configuration/secrets.markdown @@ -4,9 +4,9 @@ description: "Storing secrets outside of your configuration.yaml." redirect_from: /topics/secrets/ --- -The `configuration.yaml` file is a plain-text file, thus it is readable by anyone who has access to the file. The file contains passwords and API tokens which need to be redacted if you want to share your configuration. By using `!secret` you can remove any private information from your configuration files. This separation can also help you to keep easier track of your passwords and API keys, as they are all stored at one place and no longer spread across the `configuration.yaml` file or even multiple yaml files if you [split up your configuration](/docs/configuration/splitting_configuration/). +The `configuration.yaml` file is a plain-text file, thus it is readable by anyone who has access to the file. The file contains passwords and API tokens which need to be redacted if you want to share your configuration. By using `!secret` you can remove any private information from your configuration files. This separation can also help you to keep easier track of your passwords and API keys, as they are all stored at one place and no longer spread across the `configuration.yaml` file or even multiple YAML files if you [split up your configuration](/docs/configuration/splitting_configuration/). -### Using secrets.yaml +### Using `secrets.yaml` The workflow for moving private information to `secrets.yaml` is very similar to the [splitting of the configuration](/docs/configuration/splitting_configuration/). Create a `secrets.yaml` file in your Home Assistant [configuration directory](/docs/configuration/). diff --git a/source/_docs/configuration/securing.markdown b/source/_docs/configuration/securing.markdown index 34391126d781..8ec666a8cab0 100644 --- a/source/_docs/configuration/securing.markdown +++ b/source/_docs/configuration/securing.markdown @@ -15,13 +15,13 @@ Here's the summary of what you *must* do to secure your Home Assistant system: ## Remote Access -If you want secure remote access, the easiest option is to use [Home Assistant cloud](/cloud/). Other options are to use [TLS/SSL](/docs/ecosystem/certificates/lets_encrypt/) to expose your instance to the internet, use a [VPN](http://www.pivpn.io/), [Tor](/docs/ecosystem/tor/) or an [SSH tunnel](/blog/2017/11/02/secure-shell-tunnel/). +If you want secure remote access, the easiest option is to use [Home Assistant cloud](/cloud/). Other options are to use [TLS/SSL](/docs/ecosystem/certificates/lets_encrypt/) to expose your instance to the internet, use a [VPN](https://pivpn.dev/), [Tor](/docs/ecosystem/tor/) or an [SSH tunnel](/blog/2017/11/02/secure-shell-tunnel/). ### Extras for manual installations As well as the above we advise that you consider the following to improve security: -- For systems that use SSH set `PermitRootLogin no` in your sshd config (usually `/etc/ssh/sshd_config`) and to use SSH keys for authentication instead of passwords. This is particularly important if you enable remote access to your SSH services. +- For systems that use SSH set `PermitRootLogin no` in your sshd configuration (usually `/etc/ssh/sshd_config`) and to use SSH keys for authentication instead of passwords. This is particularly important if you enable remote access to your SSH services. - Lock down the host following good practice guidance, for example: * [Securing Debian Manual](https://www.debian.org/doc/manuals/securing-debian-howto/index.en.html) (this also applies to Raspbian) * [Red Hat Enterprise Linux 7 Security Guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Security_Guide/Red_Hat_Enterprise_Linux-7-Security_Guide-en-US.pdf), [CIS Red Hat Enterprise Linux 7 Benchmark](https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v1.0.0.pdf) diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index b09e0015afb1..ec01ded75920 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -4,9 +4,9 @@ description: "Splitting the configuration.yaml into several files." redirect_from: /topics/splitting_configuration/ --- -So you've been using Home Assistant for a while now and your configuration.yaml file brings people to tears or you simply want to start off with the distributed approach, here's how to "split the configuration.yaml" into more manageable (read: humanly readable) pieces. +So you've been using Home Assistant for a while now and your `configuration.yaml` file brings people to tears or you simply want to start off with the distributed approach, here's how to split the `configuration.yaml` into more manageable (read: humanly readable) pieces. -First off, several community members have sanitized (read: without api keys/passwords etc) versions of their configurations available for viewing, you can see a list of them [here](/cookbook/#example-configurationyaml). +First off, several community members have sanitized (read: without API keys/passwords etc) versions of their configurations available for viewing, you can see a list of them [here](/cookbook/#example-configurationyaml). As commenting code doesn't always happen, please read on for the details. @@ -56,6 +56,7 @@ zwave: mqtt: broker: 127.0.0.1 ``` + As with the core snippet, indentation makes a difference. The integration headers (`mqtt:`) should be fully left aligned (aka no indent), and the parameters (`broker:`) should be indented two (2) spaces. While some of these integrations can technically be moved to a separate file they are so small or "one off's" where splitting them off is superfluous. Also, you'll notice the # symbol (hash/pound). This represents a "comment" as far as the commands are interpreted. Put another way, any line prefixed with a `#` will be ignored. This makes breaking up files for human readability really convenient, not to mention turning off features while leaving the entry intact. @@ -148,18 +149,20 @@ That about wraps it up. If you have issues checkout `home-assistant.log` in the configuration directory as well as your indentations. If all else fails, head over to our [Discord chat server][discord] and ask away. -### Debugging multiple configuration files +## Debugging multiple configuration files If you have many configuration files, the `check_config` script allows you to see how Home Assistant interprets them: + - Listing all loaded files: `hass --script check_config --files` -- Viewing a component's config: `hass --script check_config --info light` -- Or all components' config: `hass --script check_config --info all` +- Viewing a component's configuration: `hass --script check_config --info light` +- Or all components' configuration: `hass --script check_config --info all` You can get help from the command line using: `hass --script check_config --help` -### Advanced Usage +## Advanced Usage We offer four advanced options to include whole directories at once. Please note that your files must have the `.yaml` file extension; `.yml` is not supported. + - `!include_dir_list` will return the content of a directory as a list with each file content being an entry in the list. The list entries are ordered based on the alphanumeric ordering of the names of the files. - `!include_dir_named` will return the content of a directory as a dictionary which maps filename => content of file. - `!include_dir_merge_list` will return the content of a directory as a list by merging all files (which should contain a list) into 1 big list. @@ -182,7 +185,7 @@ These work recursively. As an example using `!include_dir_* automation`, will in └── configuration.yaml (not included) ``` -#### Example: `!include_dir_list` +### Example: `!include_dir_list` `configuration.yaml` @@ -244,7 +247,7 @@ It is important to note that each file must contain only **one** entry when usin It is also important to note that if you are splitting a file after adding -id: to support the automation UI, the -id: line must be removed from each of the split files. -#### Example: `!include_dir_named` +### Example: `!include_dir_named` `configuration.yaml` @@ -321,7 +324,7 @@ speech: {% endif %}{% endraw %} ``` -#### Example: `!include_dir_merge_list` +### Example: `!include_dir_merge_list` `configuration.yaml` @@ -376,7 +379,7 @@ automation: !include_dir_merge_list automation/ It is important to note that when using `!include_dir_merge_list`, you must include a list in each file (each list item is denoted with a hyphen [-]). Each file may contain one or more entries. -#### Example: `!include_dir_merge_named` +### Example: `!include_dir_merge_named` `configuration.yaml` diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 5df06230c4f7..de04e1a88be4 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -11,7 +11,7 @@ This is an advanced feature of Home Assistant. You'll need a basic understanding Templating is a powerful feature that allows you to control information going into and out of the system. It is used for: -- Formatting outgoing messages in, for example, the [notify](/integrations/notify/) platforms and [alexa](/integrations/alexa/) component. +- Formatting outgoing messages in, for example, the [notify](/integrations/notify/) platforms and [Alexa](/integrations/alexa/) component. - Process incoming data from sources that provide raw data, like [MQTT](/integrations/mqtt/), [`rest` sensor](/integrations/rest/) or the [`command_line` sensor](/integrations/sensor.command_line/). - [Automation Templating](/docs/automation/templating/). @@ -57,7 +57,7 @@ Extensions allow templates to access all of the Home Assistant specific states a - `states('device_tracker.paulus')` will return the state string (not the object) of the given entity or `unknown` if it doesn't exist. - `is_state('device_tracker.paulus', 'home')` will test if the given entity is the specified state. - `state_attr('device_tracker.paulus', 'battery')` will return the value of the attribute or None if it doesn't exist. -- `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity attribute is the specified state (in this case, a numeric value). +- `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity attribute is the specified state (in this case, a numeric value). Note that the attribute can be `None` and you want to check if it is `None`, you need to use `state_attr('sensor.my_sensor', 'attr') == None`.
@@ -104,7 +104,7 @@ Other state examples: {% if states('sensor.temperature') | float > 20 %} It is warm! -{%endif %} +{% endif %} {{ as_timestamp(states.binary_sensor.garage_door.last_changed) }} @@ -169,20 +169,28 @@ The same thing can also be expressed as a filter: ### Time -- `now()` will be rendered as the current time in your time zone. - - For specific values: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` -- `utcnow()` will be rendered as UTC time. +- `now()` returns a datetime object that represents the current time in your time zone. + - You can also use: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` and other [`datetime`](https://docs.python.org/3.8/library/datetime.html#datetime.datetime) attributes and functions. +- `utcnow()` returns a datetime object of the current time in the UTC timezone. - For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`. -- `as_timestamp()` will convert datetime object or string to UNIX timestamp. This function also be used as a filter. -- `strptime(string, format)` will parse a string to a datetime based on a [format](https://docs.python.org/3.6/library/datetime.html#strftime-and-strptime-behavior). -- `relative_time` will convert datetime object to its human-friendly "age" string. The age can be in second, minute, hour, day, month or year (but only the biggest unit is considered, e.g. if it's 2 days and 3 hours, "2 days" will be returned). Note that it only works for dates _in the past_. -- Filter `timestamp_local` will convert an UNIX timestamp to local time/data. -- Filter `timestamp_utc` will convert a UNIX timestamp to UTC time/data. -- Filter `timestamp_custom(format_string, local_boolean)` will convert a UNIX timestamp to a custom format, the use of a local timestamp is default. Supports the standard [Python time formatting options](https://docs.python.org/3/library/time.html#time.strftime). +- `as_timestamp()` converts datetime object or string to UNIX timestamp. This function also be used as a filter. +- `strptime(string, format)` parses a string based on a [format](https://docs.python.org/3.8/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. +- `relative_time` converts datetime object to its human-friendly "age" string. The age can be in second, minute, hour, day, month or year (but only the biggest unit is considered, e.g., if it's 2 days and 3 hours, "2 days" will be returned). Note that it only works for dates _in the past_. +- Filter `timestamp_local` converts an UNIX timestamp to its string representation as date/time in your local timezone. +- Filter `timestamp_utc` converts a UNIX timestamp to its string representation representation as date/time in UTC timezone. +- Filter `timestamp_custom(format_string, local_time=True)` converts an UNIX timestamp to its string representation based on a custom format, the use of a local timezone is default. Supports the standard [Python time formatting options](https://docs.python.org/3/library/time.html#time.strftime). + +Note: [UNIX timestamp](https://en.wikipedia.org/wiki/Unix_time) is the number of seconds that have elapsed since 00:00:00 UTC on 1 January 1970. Therefore, if used as a function's argument, it can be substituted with a numeric value (`int` or `float`): + +{% raw %} +```yaml +{{ 120 | timestamp_local }} +``` +{% endraw %} ### To/From JSON -The `to_json` filter serializes an object to a JSON string. In some cases, it may be necessary to format a JSON string for use with a webhook, as a parameter for command line utilities or any number of other applications. This can be complicated in a template, especially when dealing with escaping special characters. Using the `to_json` filter, this is handled automatically. +The `to_json` filter serializes an object to a JSON string. In some cases, it may be necessary to format a JSON string for use with a webhook, as a parameter for command-line utilities or any number of other applications. This can be complicated in a template, especially when dealing with escaping special characters. Using the `to_json` filter, this is handled automatically. The `from_json` filter operates similarly, but in the other direction, de-serializing a JSON string back into an object. @@ -292,7 +300,7 @@ Closest to some entity: {{ closest(states.zone.school, ['group.children', states.device_tracker]) }} ``` -It will also work as a filter over a iterable group of entities or groups: +It will also work as a filter over an iterable group of entities or groups: ```text Closest out of given entities: @@ -325,7 +333,10 @@ Some of these functions can also be used in a [filter](https://jinja.palletsproj - `e` mathematical constant, approximately 2.71828. - `pi` mathematical constant, approximately 3.14159. - `tau` mathematical constant, approximately 6.28318. -- Filter `round(x)` will convert the input to a number and round it to `x` decimals. +- Filter `round(x)` will convert the input to a number and round it to `x` decimals. Round has four modes and the default mode (with no mode specified) will [round-to-even](https://en.wikipedia.org/wiki/Rounding#Roundhalfto_even). + - `round(x, "floor")` will always round down to `x` decimals + - `round(x, "ceil")` will always round up to `x` decimals + - `round(1, "half")` will always round to the nearest .5 value. `x` should be 1 for this mode - Filter `max` will obtain the largest item in a sequence. - Filter `min` will obtain the smallest item in a sequence. - Filter `value_one|bitwise_and(value_two)` perform a bitwise and(&) operation with two values. @@ -334,8 +345,8 @@ Some of these functions can also be used in a [filter](https://jinja.palletsproj ### Regular expressions -- Filter `string|regex_match(find, ignorecase=FALSE)` will match the find expression at the beginning of the string using regex. -- Filter `string|regex_search(find, ignorecase=FALSE)` will match the find expression anywhere in the string using regex. +- Filter `string|regex_match(find, ignorecase=False)` will match the find expression at the beginning of the string using regex. +- Filter `string|regex_search(find, ignorecase=True)` will match the find expression anywhere in the string using regex. - Filter `string|regex_replace(find='', replace='', ignorecase=False)` will replace the find expression with the replace string using regex. - Filter `string|regex_findall_index(find='', index=0, ignorecase=False)` will find all regex matches of find in string and return the match at index (findall returns an array of matches). @@ -377,7 +388,7 @@ Nested JSON in a response is supported as well: }, "values": { "temp": 26.09, - "hum": 56.73, + "hum": 56.73 } } ``` diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index 6c0b22d35cd7..3aadb1251ffc 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -4,28 +4,28 @@ description: "Common problems with tweaking your configuration and their solutio redirect_from: /getting-started/troubleshooting-configuration/ --- -It can happen that you run into trouble while configuring Home Assistant. Perhaps a integration is not showing up or is acting strangely. This page will discuss a few of the most common problems. +It can happen that you run into trouble while configuring Home Assistant. Perhaps an integration is not showing up or is acting strangely. This page will discuss a few of the most common problems. Before we dive into common issues, make sure you know where your configuration directory is. Home Assistant will print out the configuration directory it is using when starting up. -Whenever a integration or configuration option results in a warning, it will be stored in `home-assistant.log` in the configuration directory. This file is reset on start of Home Assistant. +Whenever an integration or configuration option results in a warning, it will be stored in `home-assistant.log` in the configuration directory. This file is reset on start of Home Assistant. -### My integration does not show up +## My integration does not show up -When a integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. +When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. If you have incorrect entries in your configuration files you can use the [`check_config`](/docs/tools/check_config/) script to assist in identifying them: `hass --script check_config`. If you need to provide the path for your configuration you can do this using the `-c` argument like this: `hass --script check_config -c /path/to/your/config/dir`. -#### Problems with the configuration +### Problems with the configuration -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). +One of the most common problems with Home Assistant is an invalid `configuration.yaml` or other configuration file. + +- With Home Assistant you can use the [`ha` command](/hassio/commandline/#home-assistant): `ha core check`. + - You can test your configuration with Home Assistant Core using the command line with: `hass --script check_config`. + - On Docker you can use `docker exec home-assistant python -m homeassistant --script check_config --config /config` - where `home-assistant` 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). `configuration.yaml` does not allow multiple sections to have the same name. If you want to load multiple platforms for one component, you can append a [number or string](/getting-started/devices/#style-2-list-each-device-separately) to the name or nest them using [this style](/getting-started/devices/#style-1-collect-every-entity-under-the-parent): @@ -55,13 +55,14 @@ It can happen that some integrations either do not work right away or stop worki #### Multiple files -If you are using multiple files for your setup, make sure that the pointers are correct and the format of the files is valid. +If you are using multiple files for your setup, make sure that the pointers are correct and the format of the files is valid. ```yaml light: !include devices/lights.yaml sensor: !include devices/sensors.yaml ``` -Contents of `lights.yaml` (notice it does not contain `light: `): + +Contents of `lights.yaml` (notice it does not contain `light:`): ```yaml - platform: hyperion @@ -89,8 +90,8 @@ Whenever you report an issue, be aware that we are volunteers who do not have ac The only characters valid in entity names are: -* Lowercase letters -* Numbers -* Underscores +- Lowercase letters +- Numbers +- Underscores If you create an entity with other characters then Home Assistant may not generate an error for that entity. However you will find that attempts to use that entity will generate errors (or possibly fail silently). diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index 435e9f38fef3..4fd7bcf2a707 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -10,7 +10,6 @@ For integrations that you want to use in Home Assistant, you add code in your `c The following example entry assumes that you would like to set up the [notify component](/integrations/notify) with the [pushbullet platform](/integrations/pushbullet). - ```yaml notify: platform: pushbullet @@ -66,11 +65,14 @@ sensor: ## Including values ### Environmental variables -You can include values from your system's environment variables with `!env_var`. Note that this will only work in a scenario where it is possible to specify these. Hass.io users are recommended to use `!include` statements instead. + +On Home Assistant Core installations, you can include values from your system's environment variables with `!env_var`. +Note that this will only work for Home Assistant Core installations, in a scenario where it is possible to specify these. +Regular Home Assistant users are recommended to use `!include` statements instead. ```yaml -http: - api_password: !env_var PASSWORD +example: + password: !env_var PASSWORD ``` #### Default value @@ -78,8 +80,8 @@ http: If an environment variable is not set, you can fallback to a default value. ```yaml -http: - api_password: !env_var PASSWORD default_password +example: + password: !env_var PASSWORD default_password ``` ### Including entire files @@ -87,7 +89,7 @@ http: To improve readability, you can source out certain domains from your main configuration file with the `!include`-syntax. ```yaml -lights: !include lights.yaml +light: !include lights.yaml ``` More information about this feature can also be found at [splitting configuration](/docs/configuration/splitting_configuration/). @@ -102,7 +104,7 @@ If you see the following message: found character '\t' that cannot start any token ``` -This means that you've mistakenly entered a tab character, instead of spaces. +This means that you've mistakenly entered a tab character, instead of spaces. ### Upper and lower case diff --git a/source/_docs/ecosystem.markdowm b/source/_docs/ecosystem.markdown similarity index 100% rename from source/_docs/ecosystem.markdowm rename to source/_docs/ecosystem.markdown diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown old mode 100755 new mode 100644 index dff067d40424..59a6d36d0973 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -4,7 +4,7 @@ description: "AppDaemon is a loosely coupled, multithreaded, sandboxed Python ex redirect_from: /ecosystem/appdaemon/ --- -AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant. +AppDaemon is a loosely coupled, multithreaded, sandboxed Python execution environment for writing automation apps for Home Assistant. # Another Take on Automation @@ -12,7 +12,7 @@ AppDaemon is not meant to replace Home Assistant Automations and Scripts, rather - New paradigm - Some problems require a procedural and/or iterative approach, and `AppDaemon` Apps are a much more natural fit for this. Recent enhancements to Home Assistant scripts and templates have made huge strides, but for the most complex scenarios, Apps can do things that automations can't. - Ease of use - AppDaemon's API is full of helper functions that make programming as easy and natural as possible. The functions and their operation are as "Pythonic" as possible; experienced Python programmers should feel right at home. -- Reuse - write a piece of code once and instantiate it as an App as many times as you need with different parameters; e.g., a motion light program that you can use in five different places around your home. The code stays the same, you just dynamically add new instances of it in the config file. +- Reuse - write a piece of code once and instantiate it as an App as many times as you need with different parameters; e.g., a motion light program that you can use in five different places around your home. The code stays the same, you just dynamically add new instances of it in the configuration file. - Dynamic - AppDaemon has been designed from the start to enable the user to make changes without requiring a restart of Home Assistant, thanks to its loose coupling. However, it is better than that - the user can make changes to code and AppDaemon will automatically reload the code, figure out which Apps were using it, and restart them to use the new code without the need to restart `AppDaemon` itself. It is also possible to change parameters for an individual or multiple Apps and have them picked up dynamically. For a final trick, removing or adding Apps is also picked up dynamically. Testing cycles become a lot more efficient as a result. - Complex logic - Python's If/Else constructs are clearer and easier to code for arbitrarily complex nested logic. - Durable variables and state - Variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened. @@ -31,18 +31,17 @@ Let's start with a simple App to turn a light on every night at sunset and off e ```python import appdaemon.plugins.hass.hassapi as hass -class OutsideLights(hass.Hass): - def initialize(self): - self.run_at_sunrise(self.sunrise_cb) - self.run_at_sunset(self.sunset_cb) - - def sunrise_cb(self, kwargs): - self.turn_on(self.args["off_scene"]) +class OutsideLights(hass.Hass): + def initialize(self): + self.run_at_sunrise(self.sunrise_cb) + self.run_at_sunset(self.sunset_cb) - def sunset_cb(self, kwargs): - self.turn_on(self.args["on_scene"]) + def sunrise_cb(self, kwargs): + self.turn_on(self.args["off_scene"]) + def sunset_cb(self, kwargs): + self.turn_on(self.args["on_scene"]) ``` This is also fairly easy to achieve with Home Assistant automations, but we are just getting started. @@ -54,18 +53,18 @@ Our next example is to turn on a light when motion is detected and it is dark, a ```python import appdaemon.plugins.hass.hassapi as hass + class FlashyMotionLights(hass.Hass): + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new="on") - def initialize(self): - self.listen_state(self.motion, "binary_sensor.drive", new = "on") - - def motion(self, entity, attribute, old, new, kwargs): - if self.sun_down(): - self.turn_on("light.drive") - self.run_in(self.light_off, 60) - - def light_off(self, kwargs): - self.turn_off("light.drive") + def motion(self, entity, attribute, old, new, kwargs): + if self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + + def light_off(self, kwargs): + self.turn_off("light.drive") ``` This is starting to get a little more complex in Home Assistant automations, requiring an automation rule and two separate scripts. @@ -75,26 +74,26 @@ Now let's extend this with a somewhat artificial example to show something that ```python import appdaemon.plugins.hass.hassapi as hass -class MotionLights(hass.Hass): - def initialize(self): - self.listen_state(self.motion, "binary_sensor.drive", new = "on") - - def motion(self, entity, attribute, old, new, kwargs): - if self.self.sun_down(): - self.turn_on("light.drive") - self.run_in(self.light_off, 60) - self.flashcount = 0 - self.run_in(self.flash_warning, 1) - - def light_off(self, kwargs): - self.turn_off("light.drive") - - def flash_warning(self, kwargs): - self.toggle("light.living_room") - self.flashcount += 1 - if self.flashcount < 10: - self.run_in(self.flash_warning, 1) +class MotionLights(hass.Hass): + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new="on") + + def motion(self, entity, attribute, old, new, kwargs): + if self.self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + self.flashcount = 0 + self.run_in(self.flash_warning, 1) + + def light_off(self, kwargs): + self.turn_off("light.drive") + + def flash_warning(self, kwargs): + self.toggle("light.living_room") + self.flashcount += 1 + if self.flashcount < 10: + self.run_in(self.flash_warning, 1) ``` Of course, if I wanted to make this App or its predecessor reusable, I would have provide parameters for the sensor, the light to activate on motion, the warning light, and even the number of flashes and delay between flashes. diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown old mode 100755 new mode 100644 index 80afe9b3494b..f3dbef572898 --- a/source/_docs/ecosystem/appdaemon/api.markdown +++ b/source/_docs/ecosystem/appdaemon/api.markdown @@ -13,13 +13,16 @@ The first step is to create a unique file within the apps directory (as defined ```python import homeassistant.appapi as appapi + class MotionLights(appapi.AppDaemon): + """Motion lights implementation.""" ``` -When configured as an app in the config file (more on that later) the lifecycle of the App begins. It will be instantiated as an object by AppDaemon, and immediately, it will have a call made to its `initialize()` function - this function must appear as part of every app: +When configured as an app in the configuration file (more on that later) the lifecycle of the App begins. It will be instantiated as an object by AppDaemon, and immediately, it will have a call made to its `initialize()` function - this function must appear as part of every app: ```python def initialize(self): + """Perform initialization.""" ``` The initialize function allows the app to register any callbacks it might need for responding to state changes, and also any setup activities. When the `initialize()` function returns, the App will be dormant until any of its callbacks are activated. @@ -50,17 +53,17 @@ import datetime # Declare Class class NightLight(appapi.AppDaemon): - #initialize() function which will be called at startup and reload - def initialize(self): - # Create a time object for 7pm - time = datetime.time(19, 00, 0) - # Schedule a daily callback that will call run_daily() at 7pm every night - self.run_daily(self.run_daily_callback, time) + # initialize() function which will be called at startup and reload + def initialize(self): + # Create a time object for 7pm + time = datetime.time(19, 00, 0) + # Schedule a daily callback that will call run_daily() at 7pm every night + self.run_daily(self.run_daily_callback, time) - # Our callback function will be called by the scheduler every day at 7pm - def run_daily_callback(self, kwargs): - # Call to Home Assistant to turn the porch light on - self.turn_on("light.porch") + # Our callback function will be called by the scheduler every day at 7pm + def run_daily_callback(self, kwargs): + # Call to Home Assistant to turn the porch light on + self.turn_on("light.porch") ``` To summarize - an App's lifecycle consists of being initialized, which allows it to set one or more state and/or schedule callbacks. When those callbacks are activated, the App will typically use one of the Service Calling calls to effect some change to the devices of the system and then wait for the next relevant state change. That's all there is to it! @@ -273,7 +276,7 @@ In most cases, the attribute `state` has the most important value in it, e.g., f #### Synopsis ```python -get_state(entity = None, attribute = None) +get_state(entity=None, attribute=None) ``` `get_state()` is used to query the state of any integration within Home Assistant. State updates are continuously tracked so this call runs locally and does not require AppDaemon to call back to Home Assistant and as such is very efficient. @@ -311,10 +314,10 @@ state = self.get_state("switch") state = self.get_state("light.office_1") # Return the brightness attribute for light.office_1 -state = self.get_state("light.office_1", attribute = "brightness") +state = self.get_state("light.office_1", attribute="brightness") # Return the entire state for light.office_1 -state = self.get_state("light.office_1", attribute = "all") +state = self.get_state("light.office_1", attribute="all") ``` ### set_state() @@ -348,7 +351,7 @@ A list of keyword values to be changed or added to the entities state. e.g., `st #### Examples ```python -status = self.set_state("light.office_1", state = "on", attributes = {"color_name": "red"}) +status = self.set_state("light.office_1", state="on", attributes={"color_name": "red"}) ``` ### About Callbacks @@ -361,7 +364,7 @@ There are 3 types of callbacks within AppDaemon: - State Callbacks - react to a change in state - Scheduler Callbacks - react to a specific time or interval -- Event Callbacks - react to specific Home Assistant and Appdaemon events. +- Event Callbacks - react to specific Home Assistant and AppDaemon events. All callbacks allow the user to specify additional parameters to be handed to the callback via the standard Python `**kwargs` mechanism for greater flexibility. @@ -409,8 +412,9 @@ AppDaemons's state callbacks allow an App to listen to a wide variety of events, When calling back into the App, the App must provide a class function with a known signature for AppDaemon to call. The callback will provide various information to the function to enable the function to respond appropriately. For state callbacks, a class defined callback function should look like this: ```python - def my_callback(self, entity, attribute, old, new, **kwargs): - +def my_callback(self, entity, attribute, old, new, **kwargs): + """Handle state callback.""" + # do some useful work here ``` You can call the function whatever you like - you will reference it in the `listen_state()` call, and you can create as many callback functions as you need. @@ -450,7 +454,7 @@ A dictionary containing any constraints and/or additional user specific keyword #### Synopsis ```python -handle = listen_state(callback, entity = None, **kwargs) +handle = listen_state(callback, entity=None, **kwargs) ``` #### Returns @@ -492,8 +496,9 @@ Note: `old` and `new` can be used singly or together. If duration is supplied as a parameter, the callback will not fire unless the state listened for is maintained for that number of seconds. This makes the most sense if a specific attribute is specified (or the default os `state` is used), an in conjunction with the `old` or `new` parameters, or both. When the callback is called, it is supplied with the values of `entity`, `attr`, `old` and `new` that were current at the time the actual event occurred, since the assumption is that none of them have changed in the intervening period. ```python - def my_callback(self, **kwargs): - +def my_callback(self, **kwargs): + """Handle state change.""" + # do some useful work here ``` (Scheduler callbacks are documented in detail later in this document) @@ -515,20 +520,25 @@ self.handle = self.listen_state(self.my_callback, "light") self.handle = self.listen_state(self.my_callback, "light.office_1") # Listen for a state change involving light.office1 and return the entire state as a dict -self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "all") +self.handle = self.listen_state(self.my_callback, "light.office_1", attribute="all") # Listen for a state change involving the brightness attribute of light.office1 -self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "brightness") +self.handle = self.listen_state( + self.my_callback, "light.office_1", attribute="brightness" +) # Listen for a state change involving light.office1 turning on and return the state attribute -self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on") +self.handle = self.listen_state(self.my_callback, "light.office_1", new="on") # Listen for a state change involving light.office1 changing from brightness 100 to 200 and return the state attribute -self.handle = self.listen_state(self.my_callback, "light.office_1", old = "100", new = "200") +self.handle = self.listen_state( + self.my_callback, "light.office_1", old="100", new="200" +) # Listen for a state change involving light.office1 changing to state on and remaining on for a minute -self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on", duration = 60) - +self.handle = self.listen_state( + self.my_callback, "light.office_1", new="on", duration=60 +) ``` ### cancel_listen_state() @@ -592,8 +602,9 @@ AppDaemon contains a powerful scheduler that is able to run with 1 second resolu As with State Change callbacks, Scheduler Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: ```python - def my_callback(self, **kwargs): - +def my_callback(self, **kwargs): + """Handle scheduler callback.""" + # do some useful work here ``` You can call the function whatever you like; you will reference it in the Scheduler call, and you can create as many callback functions as you need. @@ -643,7 +654,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python self.handle = self.run_in(self.run_in_c) -self.handle = self.run_in(self.run_in_c, title = "run_in5") +self.handle = self.run_in(self.run_in_c, title="run_in5") ``` #### run_once() @@ -678,6 +689,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run at 4pm today, or 4pm tomorrow if it is already after 4pm import datetime + ... runtime = datetime.time(16, 0, 0) handle = self.run_once(self.run_once_c, runtime) @@ -716,6 +728,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run at 4pm today import datetime + ... runtime = datetime.time(16, 0, 0) today = datetime.date.today() @@ -755,6 +768,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run daily at 7pm import datetime + ... time = datetime.time(19, 0, 0) self.run_daily(self.run_daily_c, runtime) @@ -767,7 +781,7 @@ Execute a callback at the same time every hour. If the time has already passed, #### Synopsis ```python -self.handle = self.run_hourly(callback, time = None, **kwargs) +self.handle = self.run_hourly(callback, time=None, **kwargs) ``` #### Returns @@ -793,6 +807,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run every hour, on the hour import datetime + ... time = datetime.time(0, 0, 0) self.run_daily(self.run_daily_c, runtime) @@ -804,7 +819,7 @@ Execute a callback at the same time every minute. If the time has already passed #### Synopsis ```python -self.handle = self.run_minutely(callback, time = None, **kwargs) +self.handle = self.run_minutely(callback, time=None, **kwargs) ``` #### Returns @@ -830,6 +845,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run Every Minute on the minute import datetime + ... time = datetime.time(0, 0, 0) self.run_minutely(self.run_minutely_c, time) @@ -872,6 +888,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run every 17 minutes starting in 2 hours time import datetime + ... self.run_every(self.run_every_c, time, 17 * 60) ``` @@ -944,11 +961,11 @@ For example: ```python # Run a callback in 2 minutes minus a random number of seconds between 0 and 60, e.g., run between 60 and 120 seconds from now -self.handle = self.run_in(callback, 120, random_start = -60, **kwargs) +self.handle = self.run_in(callback, 120, random_start=-60, **kwargs) # Run a callback in 2 minutes plus a random number of seconds between 0 and 60, e.g., run between 120 and 180 seconds from now -self.handle = self.run_in(callback, 120, random_end = 60, **kwargs) +self.handle = self.run_in(callback, 120, random_end=60, **kwargs) # Run a callback in 2 minutes plus or minus a random number of seconds between 0 and 60, e.g., run between 60 and 180 seconds from now -self.handle = self.run_in(callback, 120, random_start = -60, random_end = 60, **kwargs) +self.handle = self.run_in(callback, 120, random_start=-60, random_end=60, **kwargs) ``` ## Sunrise and Sunset @@ -987,15 +1004,17 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python import datetime -... + +# ... + # Run 45 minutes before sunset -self.run_at_sunrise(self.sun, offset = datetime.timedelta(minutes = -45).total_seconds(), "Sunrise -45 mins") +self.run_at_sunrise(self.sun, offset=datetime.timedelta(minutes=-45).total_seconds()) # or you can just do the math yourself -self.run_at_sunrise(self.sun, offset = 30 * 60, "Sunrise +30 mins") +self.run_at_sunrise(self.sun, offset=30 * 60) # Sunrise +30 mins # Run at a random time +/- 60 minutes from sunrise -self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 60*60, "Sunrise, random +/- 60 mins") +self.run_at_sunrise(self.sun, random_start=-60 * 60, random_end=60 * 60) # Run at a random time between 30 and 60 minutes before sunrise -self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 30*60, "Sunrise, random - 30 - 60 mins") +self.run_at_sunrise(self.sun, random_start=-60 * 60, random_end=30 * 60) ``` ### run_at_sunset() @@ -1031,14 +1050,18 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Example using timedelta import datetime -... -self.run_at_sunset(self.sun, datetime.timedelta(minutes = -45).total_seconds(), "Sunset -45 mins") + +# ... + +self.run_at_sunset( + self.sun, datetime.timedelta(minutes=-45).total_seconds() +) # Sunset -45 mins # or you can just do the math yourself -self.run_at_sunset(self.sun, 30 * 60, "Sunset +30 mins") +self.run_at_sunset(self.sun, 30 * 60) # Sunset +30 mins # Run at a random time +/- 60 minutes from sunset -self.run_at_sunset(self.sun, random_start = -60*60, random_end = 60*60, "Sunset, random +/- 60 mins") +self.run_at_sunset(self.sun, random_start=-60 * 60, random_end=60 * 60) # Run at a random time between 30 and 60 minutes before sunset -self.run_at_sunset(self.sun, random_start = -60*60, random_end = 30*60, "Sunset, random - 30 - 60 mins") +self.run_at_sunset(self.sun, random_start=-60 * 60, random_end=30 * 60) ``` ### sunrise() @@ -1096,7 +1119,7 @@ result = self.sun_up() ```python if self.sun_up(): - do something + do_something() ``` ### sun_down() @@ -1117,7 +1140,7 @@ result = self.sun_down() ```python if self.sun_down(): - do something + do_something() ``` ## Calling Services @@ -1153,8 +1176,8 @@ Each service has different parameter requirements. This argument allows you to s #### Examples ```python -self.call_service("light/turn_on", entity_id = "light.office_lamp", color_name = "red") -self.call_service("notify/notify", title = "Hello", message = "Hello World") +self.call_service("light/turn_on", entity_id="light.office_lamp", color_name="red") +self.call_service("notify/notify", title="Hello", message="Hello World") ``` ### turn_on() @@ -1192,7 +1215,7 @@ A comma separated list of key value pairs to allow specification of parameters o ```python self.turn_on("switch.patio_lights") self.turn_on("scene.bedroom_on") -self.turn_on("light.office_1", color_name = "green") +self.turn_on("light.office_1", color_name="green") ``` ### turn_off() @@ -1246,7 +1269,7 @@ Fully qualified entity_id of the thing to be toggled, e.g., `light.office_lamp` ```python self.toggle("switch.patio_lights") -self.toggle("light.office_1", color_name = "green") +self.toggle("light.office_1", color_name="green") ``` ### select_value() @@ -1365,8 +1388,9 @@ In addition to the Home Assistant supplied events, AppDaemon adds 2 more events. As with State Change and Scheduler callbacks, Event Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: ```python - def my_callback(self, event_name, data, kwargs): - +def my_callback(self, event_name, data, kwargs): + """Handle event callback.""" + # do some useful work here ``` You can call the function whatever you like - you will reference it in the Scheduler call, and you can create as many callback functions as you need. @@ -1396,7 +1420,7 @@ Listen event sets up a callback for a specific event, or any event. #### Synopsis ```python -handle = listen_event(function, event = None, **kwargs): +handle = listen_event(function, event=None, **kwargs) ``` #### Returns @@ -1425,9 +1449,11 @@ Filtering will work with any event type, but it will be necessary to figure out ```python self.listen_event(self.mode_event, "MODE_CHANGE") # Listen for a minimote event activating scene 3: -self.listen_event(self.generic_event, "zwave.scene_activated", scene_id = 3) +self.listen_event(self.generic_event, "zwave.scene_activated", scene_id=3) # Listen for a minimote event activating scene 3 from a specific minimote: -self.listen_event(self.generic_event, "zwave.scene_activated", entity_id = "minimote_31", scene_id = 3) +self.listen_event( + self.generic_event, "zwave.scene_activated", entity_id="minimote_31", scene_id=3 +) ``` ### cancel_listen_event() @@ -1518,6 +1544,7 @@ Functions called as an event callback will be supplied with 2 arguments: ```python def service(self, event_name, data): + """Handle event.""" ``` #### event_name @@ -1560,7 +1587,7 @@ automation: This can be triggered with a call to AppDaemon's fire_event() as follows: ```python -self.fire_event("MODE_CHANGE", mode = "Day") +self.fire_event("MODE_CHANGE", mode="Day") ``` ## Presence @@ -1585,7 +1612,7 @@ An iterable list of all device trackers. ```python trackers = self.get_trackers() for tracker in trackers: - do something + do_something(tracker) ``` ### get_tracker_state() @@ -1618,12 +1645,12 @@ Fully qualified entity_id of the device tracker to query, e.g., `device_tracker. ```python trackers = self.get_trackers() for tracker in trackers: - self.log("{} is {}".format(tracker, self.get_tracker_state(tracker))) + self.log("{} is {}".format(tracker, self.get_tracker_state(tracker))) ``` ### everyone_home() -A convenience function to determine if everyone is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. +A convenience function to determine if everyone is home. #### Synopsis @@ -1638,11 +1665,11 @@ Returns `True` if everyone is at home, `False` otherwise. ```python if self.everyone_home(): - do something + do_something() ``` ### anyone_home() -A convenience function to determine if one or more person is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. +A convenience function to determine if one or more person is home. #### Synopsis @@ -1658,11 +1685,11 @@ Returns `True` if anyone is at home, `False` otherwise. ```python if self.anyone_home(): - do something + do_something() ``` ### noone_home() -A convenience function to determine if no people are at home. Use this in preference to getting the state of group.all_devices() as it avoids a race condition when using state change callbacks for device trackers. +A convenience function to determine if no people are at home. #### Synopsis @@ -1678,14 +1705,14 @@ Returns `True` if no one is home, `False` otherwise. ```python if self.noone_home(): - do something + do_something() ``` ## Miscellaneous Helper Functions ### time() -Returns a python `time` object representing the current time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. +Returns a Python `time` object representing the current time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. #### Synopsis @@ -1709,7 +1736,7 @@ now = self.time() ### date() -Returns a python `date` object representing the current date. Use this in preference to the standard Python ways to discover the current date, especially when using the "Time Travel" feature for testing. +Returns a Python `date` object representing the current date. Use this in preference to the standard Python ways to discover the current date, especially when using the "Time Travel" feature for testing. #### Synopsis @@ -1733,7 +1760,7 @@ today = self.date() ### datetime() -Returns a python `datetime` object representing the current date and time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. +Returns a Python `datetime` object representing the current date and time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. #### Synopsis @@ -1837,9 +1864,9 @@ A representation of the start and end time respectively in a string format with ```python if self.now_is_between("17:30:00", "08:00:00"): - do something + do_something() if self.now_is_between("sunset - 00:45:00", "sunrise + 00:45:00"): - do something + do_something_else() ``` ### friendly_name() @@ -1860,7 +1887,11 @@ The friendly name of the entity if it exists or the entity id if not. ```python tracker = "device_tracker.andrew" -self.log("{} ({}) is {}".format(tracker, self.friendly_name(tracker), self.get_tracker_state(tracker))) +self.log( + "{} ({}) is {}".format( + tracker, self.friendly_name(tracker), self.get_tracker_state(tracker) + ) +) ``` ### split_entity() @@ -1888,7 +1919,7 @@ A list with 2 entries, the device and entity respectively. ```python device, entity = self.split_entity(entity_id) if device == "scene": - do something specific to scenes + do_something_specific_to_scenes() ``` @@ -1905,7 +1936,7 @@ get_app(self, name) ##### name -Name of the app required. This is the name specified in header section of the config file, not the module or class. +Name of the app required. This is the name specified in header section of the configuration file, not the module or class. #### Returns @@ -1935,7 +1966,7 @@ A list of split devices with 1 or more entries. ```python for sensor in self.split_device_list(self.args["sensors"]): - do something for each sensor, e.g., make a state subscription + do_something(sensor) # e.g., make a state subscription ``` @@ -1948,7 +1979,7 @@ AppDaemon uses 2 separate logs - the general log and the error log. An AppDaemon #### Synopsis ```python -log(message, level = "INFO") +log(message, level="INFO") ``` #### Returns @@ -1969,7 +2000,7 @@ The log level of the message - takes a string representing the standard logger l ```python self.log("Log Test: Parameter is {}".format(some_variable)) -self.log("Log Test: Parameter is {}".format(some_variable), level = "ERROR") +self.log("Log Test: Parameter is {}".format(some_variable), level="ERROR") ``` ### error() @@ -1977,7 +2008,7 @@ self.log("Log Test: Parameter is {}".format(some_variable), level = "ERROR") #### Synopsis ```python -error(message, level = "WARNING") +error(message, level="WARNING") ``` #### Returns @@ -1997,26 +2028,26 @@ The log level of the message - takes a string representing the standard logger l ```python self.error("Some Warning string") -self.error("Some Critical string", level = "CRITICAL") +self.error("Some Critical string", level="CRITICAL") ``` ## Sharing information between Apps Sharing information between different Apps is very simple if required. Each app gets access to a global dictionary stored in a class attribute called `self.global_vars`. Any App can add or read any key as required. This operation is not however threadsafe so some car is needed. -In addition, Apps have access to the entire configuration if required, meaning they can access AppDaemon configuration items as well as parameters from other Apps. To use this, there is a class attribute called `self.config`. It contains a `ConfigParser` object, which is similar in operation to a `Dictionary`. To access any apps parameters, simply reference the ConfigParser object using the Apps name (form the config file) as the first key, and the parameter required as the second, for instance: +In addition, Apps have access to the entire configuration if required, meaning they can access AppDaemon configuration items as well as parameters from other Apps. To use this, there is a class attribute called `self.config`. It contains a `ConfigParser` object, which is similar in operation to a `Dictionary`. To access any apps parameters, simply reference the ConfigParser object using the Apps name (form the configuration file) as the first key, and the parameter required as the second, for instance: ```python -other_apps_arg = self.config["some_app"]["some_parameter"]. +other_apps_arg = self.config["some_app"]["some_parameter"] ``` -To get AppDaemon's config parameters, use the key "AppDaemon", e.g.: +To get AppDaemon's configuration parameters, use the key "AppDaemon", e.g.: ```python app_timezone = self.config["AppDaemon"]["time_zone"] ``` -And finally, it is also possible to use the AppDaemon as a global area for sharing parameters across Apps. Simply add the required parameters to the AppDaemon section of your config: +And finally, it is also possible to use the AppDaemon as a global area for sharing parameters across Apps. Simply add the required parameters to the AppDaemon section of your configuration: ```ini [AppDaemon] @@ -2099,4 +2130,4 @@ $ appdaemon -s "2016-06-06 19:16:00" -s "2016-06-06 20:16:00" -t 0 ### A Note on Times -Some Apps you write may depend on checking times of events relative to the current time. If you are time traveling this will not work if you use standard python library calls to get the current time and date etc. For this reason, always use the AppDamon supplied `time()`, `date()` and `datetime()` calls, documented earlier. These calls will consult with AppDaemon's internal time rather than the actual time and give you the correct values. +Some Apps you write may depend on checking times of events relative to the current time. If you are time traveling this will not work if you use standard Python library calls to get the current time and date etc. For this reason, always use the AppDamon supplied `time()`, `date()` and `datetime()` calls, documented earlier. These calls will consult with AppDaemon's internal time rather than the actual time and give you the correct values. diff --git a/source/_docs/ecosystem/appdaemon/configuration.markdown b/source/_docs/ecosystem/appdaemon/configuration.markdown index 785cf0728fdd..599a8fa9af41 100644 --- a/source/_docs/ecosystem/appdaemon/configuration.markdown +++ b/source/_docs/ecosystem/appdaemon/configuration.markdown @@ -4,6 +4,6 @@ description: "AppDaemon Configuration" redirect_from: /ecosystem/appdaemon/configuration/ --- -the documentation for configuring Appdaemon can be found in its own documentation. +the documentation for configuring AppDaemon can be found in its own documentation. https://appdaemon.readthedocs.io/en/latest/CONFIGURE.html diff --git a/source/_docs/ecosystem/appdaemon/running.markdown b/source/_docs/ecosystem/appdaemon/running.markdown old mode 100755 new mode 100644 index 1599c8e81dfc..615ad1d356dd --- a/source/_docs/ecosystem/appdaemon/running.markdown +++ b/source/_docs/ecosystem/appdaemon/running.markdown @@ -8,16 +8,16 @@ As configured, `AppDaemon` comes with a single HelloWorld App that will send a g ## Docker -Assuming you have set the config up as described above for Docker, you can run it with the command: +Assuming you have set the configuration up as described above for Docker, you can run it with the command: ```bash -$ docker run -d -v /conf:/conf --name appdaemon appdaemon:latest +$ docker run -d -v /conf:/conf --name appdaemon acockburn/appdaemon:latest ``` In the example above you would use: ```bash -$ docker run -d -v /Users/foo/ha-config:/conf --name appdaemon appdaemon:latest +$ docker run -d -v /Users/foo/ha-config:/conf --name appdaemon acockburn/appdaemon:latest ``` Where you place the `conf` and `conf/apps` directory is up to you - it can be in downloaded repository, or anywhere else on the host, as long as you use the correct mapping in the `docker run` command. diff --git a/source/_docs/ecosystem/appdaemon/tutorial.markdown b/source/_docs/ecosystem/appdaemon/tutorial.markdown old mode 100755 new mode 100644 index c0344c8ec1a4..c5a81f7fe6ad --- a/source/_docs/ecosystem/appdaemon/tutorial.markdown +++ b/source/_docs/ecosystem/appdaemon/tutorial.markdown @@ -19,11 +19,11 @@ So given the importance of Automation, what should Automation allow us to do? I In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and its Restful API. -So why `AppDaemon`? AppDaemon is not meant to replace Home Assistant Automations and Scripts, rather complement them. For a lot of things, automations work well and can be very succinct. However, there is a class of more complex automations for which they become harder to use, and appdeamon then comes into its own. It brings quite a few things to the table: +So why `AppDaemon`? AppDaemon is not meant to replace Home Assistant Automations and Scripts, rather complement them. For a lot of things, automations work well and can be very succinct. However, there is a class of more complex automations for which they become harder to use, and AppDaemon then comes into its own. It brings quite a few things to the table: - New paradigm - some problems require a procedural and/or iterative approach, and `AppDaemon` Apps are a much more natural fit for this. Recent enhancements to Home Assistant scripts and templates have made huge strides, but for the most complex scenarios, Apps can do things that Automations can't - Ease of use - AppDaemon's API is full of helper functions that make programming as easy and natural as possible. The functions and their operation are as "Pythonic" as possible, experienced Python programmers should feel right at home. -- Reuse - write a piece of code once and instantiate it as an app as many times as you need with different parameters e.g., a motion light program that you can use in 5 different places around your home. The code stays the same, you just dynamically add new instances of it in the config file +- Reuse - write a piece of code once and instantiate it as an app as many times as you need with different parameters e.g., a motion light program that you can use in 5 different places around your home. The code stays the same, you just dynamically add new instances of it in the configuration file - Dynamic - AppDaemon has been designed from the start to enable the user to make changes without requiring a restart of Home Assistant, thanks to its loose coupling. However, it is better than that - the user can make changes to code and AppDaemon will automatically reload the code, figure out which Apps were using it and restart them to use the new code with out the need to restart `AppDaemon` itself. It is also possible to change parameters for an individual or multiple apps and have them picked up dynamically, and for a final trick, removing or adding apps is also picked up dynamically. Testing cycles become a lot more efficient as a result. - Complex logic - Python's If/Else constructs are clearer and easier to code for arbitrarily complex nested logic - Durable variables and state - variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened @@ -58,41 +58,40 @@ different scenes in a different version of the App. ```python import appdaemon.plugins.hass.hassapi as hass - class OutsideLights(hass.Hass): - - def initialize(self): - self.run_at_sunrise(self.sunrise_cb) - self.run_at_sunset(self.before_sunset_cb, offset=-900) - def sunrise_cb(self, kwargs): - self.turn_on(self.args["off_scene"]) + class OutsideLights(hass.Hass): + def initialize(self): + self.run_at_sunrise(self.sunrise_cb) + self.run_at_sunset(self.before_sunset_cb, offset=-900) - def before_sunset_cb(self, kwargs): - self.turn_on(self.args["on_scene"]) + def sunrise_cb(self, kwargs): + self.turn_on(self.args["off_scene"]) + def before_sunset_cb(self, kwargs): + self.turn_on(self.args["on_scene"]) ``` This is also fairly easy to achieve with Home Assistant automations, but we are just getting started. ### Motion Light -Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changesd where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callback function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: +Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callback function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: ```python import appdaemon.appapi as appapi -class FlashyMotionLights(appapi.AppDaemon): - def initialize(self): - self.listen_state(self.motion, "binary_sensor.drive", new = "on") +class FlashyMotionLights(appapi.AppDaemon): + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new="on") - def motion(self, entity, attribute, old, new, kwargs): - if self.sun_down(): - self.turn_on("light.drive") - self.run_in(self.light_off, 60) + def motion(self, entity, attribute, old, new, kwargs): + if self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) - def light_off(self, kwargs): - self.turn_off("light.drive") + def light_off(self, kwargs): + self.turn_off("light.drive") ``` This is starting to get a little more complex in Home Assistant automations requiring an Automation rule and two separate scripts. @@ -102,26 +101,26 @@ Now lets extend this with a somewhat artificial example to show something that i ```python import homeassistant.appapi as appapi -class MotionLights(appapi.AppDaemon): - - def initialize(self): - self.listen_state(self.motion, "binary_sensor.drive", new = "on") - - def motion(self, entity, attribute, old, new, kwargs): - if self.self.sun_down(): - self.turn_on("light.drive") - self.run_in(self.light_off, 60) - self.flashcount = 0 - self.run_in(self.flash_warning, 1) - def light_off(self, kwargs): - self.turn_off("light.drive") - - def flash_warning(self, kwargs): - self.toggle("light.living_room") - self.flashcount += 1 - if self.flashcount < 10: - self.run_in(self.flash_warning, 1) +class MotionLights(appapi.AppDaemon): + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new="on") + + def motion(self, entity, attribute, old, new, kwargs): + if self.self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + self.flashcount = 0 + self.run_in(self.flash_warning, 1) + + def light_off(self, kwargs): + self.turn_off("light.drive") + + def flash_warning(self, kwargs): + self.toggle("light.living_room") + self.flashcount += 1 + if self.flashcount < 10: + self.run_in(self.flash_warning, 1) ``` Of course if I wanted to make this App or its predecessor reusable I would have provide parameters for the sensor, the light to activate on motion, the warning light and even the number of flashes and delay between flashes. diff --git a/source/_docs/ecosystem/appdaemon/updating.markdown b/source/_docs/ecosystem/appdaemon/updating.markdown index 9d95683b5c7c..9f3b1e3b8765 100644 --- a/source/_docs/ecosystem/appdaemon/updating.markdown +++ b/source/_docs/ecosystem/appdaemon/updating.markdown @@ -7,7 +7,7 @@ redirect_from: /ecosystem/appdaemon/updating/ To update AppDaemon after I have released new code, just run the following command to update your copy: ```bash -$ sudo pip3 install --upgrade appdaemon +sudo pip3 install --upgrade appdaemon ``` -If you are using docker, rerun the steps to grab the latest docker image. +If you are using Docker, rerun the steps to grab the latest Docker image. diff --git a/source/_docs/ecosystem/appdaemon/windows.markdown b/source/_docs/ecosystem/appdaemon/windows.markdown old mode 100755 new mode 100644 diff --git a/source/_docs/ecosystem/backup/backup_dropbox.markdown b/source/_docs/ecosystem/backup/backup_dropbox.markdown index 9586b3fea0cf..a16c58f6248a 100644 --- a/source/_docs/ecosystem/backup/backup_dropbox.markdown +++ b/source/_docs/ecosystem/backup/backup_dropbox.markdown @@ -4,9 +4,9 @@ description: "Instructions on how backup your Home Assistant configuration to Dr redirect_from: /cookbook/dropboxbackup/ --- -Backing up and regularly syncing your Home Assistant configuration to [Dropbox](http://dropbox.com) similar to [Github Backup](/docs/ecosystem/backup/backup_github/) +Backing up and regularly syncing your Home Assistant configuration to [Dropbox](http://dropbox.com) is similar to [GitHub Backup](/docs/ecosystem/backup/backup_github/) -### Requirements +## Requirements You need two parts in order to get it working correctly. @@ -25,6 +25,7 @@ In the Python script you can specify which files and directories should be exclu chmod +x dropbox_uploader.sh ./dropbox_uploader.sh ``` + Follow the instructions you see on your screen. ### Step 2: Running the Dropbox uploader @@ -35,18 +36,20 @@ Go to the folder you have placed `dropbox.py`. Copy file `dropbox_uploader.sh` to : `.homeassistant/extraconfig/shell_code/` (so the full path would be similar to: `/home/homeassistant/.homeassistant/extraconfig/shell_code/dropbox_uploader.sh`) - **Option B:** Edit `dropbox.py`: - Change the following line: + Change the following line: + ```txt uploader = "/home/homeassistant/.homeassistant/extraconfig/shell_code/dropbox_uploader.sh" ``` + to where you placed your file: (for example): + ```txt uploader = "/home/homeassistant/MyFolder/dropbox_uploader.sh" ``` - ```bash -$ python dropbox.py +python dropbox.py ``` The first time can take a lot of time since it will upload all your files! @@ -58,5 +61,5 @@ So you just made a full backup, next time you want it to be done automatically. Add it to your crontab, edit the **path/to** part. ```bash -$ (crontab -l 2>/dev/null; echo "0 3 * * * python /path/to/dropbox.py") | crontab - +(crontab -l 2>/dev/null; echo "0 3 * * * python /path/to/dropbox.py") | crontab - ``` diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index 5f3111cb5402..bc0348287404 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -50,7 +50,7 @@ Creating a `.gitignore` file in your repository will tell Git which files NOT to
- If you are creating the `.gitignore` file on Windows, make sure that you save the file with Unix line endings (i.e. by using an editor like Notepad++). + If you are creating the `.gitignore` file on Windows, make sure that you save the file with Unix line endings (i.e., by using an editor like Notepad++).
@@ -58,7 +58,7 @@ Here is an example that will ignore everything but your YAML configuration. ```bash # Example .gitignore file for your config dir. -# A * ensures that everything will be ignored. +# An * ensures that everything will be ignored. * # You can whitelist files/folders with !, these will not be ignored. diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index 163ef2fe5114..2c8b188e2691 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -5,34 +5,35 @@ description: "A guide to remotely accessing Home Assistant and securing the conn
-If you are using Hass.io do not use this guide. Instead, use the [DuckDNS add-on](/addons/duckdns/) for Hass.io. +This guide is for users running Home Assistant Core. +If you are using Home Assistant do not use this guide. Instead, use the [DuckDNS add-on](/addons/duckdns/) for Home Assistant.
This guide was added by mf_social on 16/03/2017 and was valid at the time of writing. This guide makes the following assumptions: - * You can access your Home Assistant instance across your local network, and access the device that it is on via SSH from your local network. - * You know the internal IP address of your router and can access your router's configuration pages. - * You have already secured your Home Assistant instance, following the advice on [this page](/docs/configuration/securing/) - * You want to access your Home Assistant instance when you are away from home (ie, not connected to your local network) and secure it with a TLS/SSL certificate. - * You have a basic understanding of the phrases I have used so far. - * You are not currently running anything on port 80 on your network (you'd know if you were). - * If you are not using Home Assistant on a Debian/Raspian system you will be able to convert any of the terminology I use in to the correct syntax for your system. - * You understand that this is a 'guide' covering the general application of these things to the general masses and there are things outside of the scope of it, and it does not cover every eventuality (although I have made some notes where people may stumble). Also, I have used some turns of phrase to make it easier to understand for the novice reader which people of advanced knowledge may say is inaccurate. My goal here is to get you through this guide with a satisfactory outcome and have a decent understanding of what you are doing and why, not to teach you advanced internet communication protocols. - * Each step presumes you have fully completed the previous step successfully, so if you did an earlier step following a different guide, please ensure that you have not missed anything out that may affect the step you have jumped to, and ensure that you adapt any commands to take in to account different file placements from other guides. +- You can access your Home Assistant instance across your local network, and access the device that it is on via SSH from your local network. +- You know the internal IP address of your router and can access your router's configuration pages. +- You have already secured your Home Assistant instance, following the advice on [this page](/docs/configuration/securing/) +- You want to access your Home Assistant instance when you are away from home (ie, not connected to your local network) and secure it with a TLS/SSL certificate. +- You have a basic understanding of the phrases I have used so far. +- You are not currently running anything on port 80 on your network (you'd know if you were). +- If you are not using Home Assistant on a Debian/Raspian system you will be able to convert any of the terminology I use in to the correct syntax for your system. +- You understand that this is a 'guide' covering the general application of these things to the general masses and there are things outside of the scope of it, and it does not cover every eventuality (although I have made some notes where people may stumble). Also, I have used some turns of phrase to make it easier to understand for the novice reader which people of advanced knowledge may say is inaccurate. My goal here is to get you through this guide with a satisfactory outcome and have a decent understanding of what you are doing and why, not to teach you advanced internet communication protocols. +- Each step presumes you have fully completed the previous step successfully, so if you did an earlier step following a different guide, please ensure that you have not missed anything out that may affect the step you have jumped to, and ensure that you adapt any commands to take in to account different file placements from other guides. Steps we will take: - - 0 - Gain a basic level of understanding around IP addresses, port numbers and port forwarding - - 1 - Set your device to have a static IP address - - 2 - Set up port forwarding without TLS/SSL and test connection - - 3 - Set up a DuckDNS account - - 4 - Obtain a TLS/SSL certificate from Let's Encrypt - - 5 - Check the incoming connection - - 6 - Clean up port forwards - - 7 - Set up a sensor to monitor the expiry date of the certificate - - 8 - Set up an automatic renewal of the TLS/SSL certificate - - 9 - Set up an alert to warn us if something went wrong +- 0 - Gain a basic level of understanding around IP addresses, port numbers and port forwarding +- 1 - Set your device to have a static IP address +- 2 - Set up port forwarding without TLS/SSL and test connection +- 3 - Set up a DuckDNS account +- 4 - Obtain a TLS/SSL certificate from Let's Encrypt +- 5 - Check the incoming connection +- 6 - Clean up port forwards +- 7 - Set up a sensor to monitor the expiry date of the certificate +- 8 - Set up an automatic renewal of the TLS/SSL certificate +- 9 - Set up an alert to warn us if something went wrong ### 0 - Gain a basic level of understanding around IP addresses, port numbers and port forwarding @@ -49,10 +50,11 @@ We will be looking for a system to run like this (in this example I will pretend ```text Outside world -> 203.0.113.12:8123 -> your router -> 192.168.0.200:8123 ``` + Sounds simple? It really is except for two small, but easy to overcome, complications: - * IP addresses are often dynamically allocated, so they can change. - * Because of the way the internet works you cannot chain IP addresses together to get from where you are, to where you want to go. +- IP addresses are often dynamically allocated, so they can change. +- Because of the way the internet works you cannot chain IP addresses together to get from where you are, to where you want to go. To get around the issue of changing IP addresses we must remember that there are two IP addresses affected. Your external one (which we will 'call' to get on to your network from the internet) and your internal one (192.168.0.200 in the example I am currently using). @@ -60,11 +62,12 @@ So, we can use a static IP to ensure that whenever our device running Home Assis We then have no control over our external IP, as our Service Provider will give us a new one at random intervals. To fix this we will use a service called DuckDNS which will give us a name for our connection (something like examplehome.duckdns.org) and behind the scenes will continue to update your external IP. So no matter how many times the IP address changes, typing examplehome.duckdns.org in to our browser will convert to the correct, up-to-date, IP address. This is covered in step 3 below. -To get around the issue of not being able to chain the IP addresses together (I can't say I want to call 203.0.113.12 and be put through to 192.168.0.200, and then be put through to extension 8123) we use port forwarding. Port forwarding is the process of telling your router which device to allow the outside connection to speak to. In the doctors surgery example, port forwarding is the receptionist. This takes a call from outside, and forwards it to the correct extension number inside. It is important to note that port forwarding can forward an incoming request for one port to a different port on your internal network if you so choose, and we will be doing this later on. The end result being that when we have our TLS/SSL certificate our incoming call will by default be requesting port 443 (because that is the default HTTPS port, like the default SSH port is 22), our port forwarding rule can forward this to our HA instance on port 8123 (or we can specify the port number in the URL). When this guide is completed we will run something like this: +To get around the issue of not being able to chain the IP addresses together (I can't say I want to call 203.0.113.12 and be put through to 192.168.0.200, and then be put through to extension 8123) we use port forwarding. Port forwarding is the process of telling your router which device to allow the outside connection to speak to. In the doctors surgery example, port forwarding is the receptionist. This takes a call from outside, and forwards it to the correct extension number inside. It is important to note that port forwarding can forward an incoming request for one port to a different port on your internal network if you so choose, and we will be doing this later on. The end result being that when we have our TLS/SSL certificate our incoming call will by default be requesting port 443 (because that is the default HTTPS port, like the default SSH port is 22), our port forwarding rule can forward this to our Home Assistant instance on port 8123 (or we can specify the port number in the URL). When this guide is completed we will run something like this: ```text Outside world -> https://examplehome.duckdns.org -> 203.0.113.12:443 -> your router -> 192.168.0.200:8123 ``` + So, let's make it happen... ### 1 - Set your device to have a static IP address @@ -136,7 +139,7 @@ All working? Hooray! You now have a static IP. This will now always be your in ### 2 - Set up port forwarding without TLS/SSL and test connection -Log in to your router's configuration pages and find the port forwarding options. This bit is hard to write a guide for because each router has a different way of presenting these options. Searching google for "port forwarding" and the name of your router may help. When you find it you will likely have options similar to: +Log in to your router's configuration pages and find the port forwarding options. This bit is hard to write a guide for because each router has a different way of presenting these options. Searching Google for "port forwarding" and the name of your router may help. When you find it you will likely have options similar to: Service name - Port Range - Local IP - Local Port - Protocol @@ -162,7 +165,7 @@ https://whatismyipaddress.com/ This will tell you your current external IP address -Type the external IP address in to the URL bar with http:// in front and :8123 after like so (203.0.113.12 is my example!): +Type the external IP address in to the URL bar with `http://` in front and :8123 after like so (203.0.113.12 is my example!): ```text http://203.0.113.12:8123 @@ -170,7 +173,7 @@ http://203.0.113.12:8123 Can you see your Home Assistant instance? If not, your router may not support 'loopback' - try the next step anyway and if that works, and this one still doesn't, just remember that you cannot use loopback, so will have to use internal addresses when you're on your home network. More on this later on if it's relevant to you. -Just to verify this isn't some kind of witchcraft that is actually using your internal network, pick up your phone, disconnect it from your WiFi so that you are on your mobile data and not connected to the home network, put the same URL in the browser on your phone. +Just to verify this isn't some kind of witchcraft that is actually using your internal network, pick up your phone, disconnect it from your Wi-Fi so that you are on your mobile data and not connected to the home network, put the same URL in the browser on your phone. Can you see it now, from a device that is definitely not connected to your local network? Excellent! You now have a remotely accessible Home Assistant instance. @@ -178,7 +181,7 @@ But what if your external IP changes? Plus, remembering all those numbers is pr ### 3 - Set up a DuckDNS account -Open your browser and go to https://duckdns.org. +Open your browser and go to . Sign in and create an account using one of the id validation options in the top right corner. @@ -196,7 +199,7 @@ duckdns: The access token is available on your DuckDNS page. Restart Home Assistant after the change. -What you have now done is set up DuckDNS so that whenever you type examplehome.duckdns.org in to your browser it will convert that to your router's external IP address. Your external IP address will always be up to date because Homeassistant will update DuckDNS every time it changes. +What you have now done is set up DuckDNS so that whenever you type examplehome.duckdns.org in to your browser it will convert that to your router's external IP address. Your external IP address will always be up to date because Home Assistant will update DuckDNS every time it changes. Now type your new URL in to your address bar on your browser with port 8123 on the end: @@ -208,7 +211,7 @@ What now happens behind the scenes is this: - DuckDNS receives the request and forwards the request to your router's external IP address (which has been kept up to date by your device running Home Assistant) - Your router receives the request on port 8123 and checks the port forwarding rules -- It finds the rule you created in step 2 and forwards the request to your HA instance +- It finds the rule you created in step 2 and forwards the request to your Home Assistant instance - Your browser displays your Home Assistant instance frontend. Did it work? Super! @@ -257,26 +260,23 @@ Make sure you are in the home directory for the Home Assistant user: cd ``` -We will now make a directory for the certbot software, download it and give it the correct permissions: +We will now install the certbot software: -```text -mkdir certbot -cd certbot/ -wget https://dl.eff.org/certbot-auto -chmod a+x certbot-auto +```bash +sudo apt-get install certbot -y ``` You might need to stop Home Assistant before continuing with the next step. You can do this via the Web-UI or use the following command if you are running on Raspbian: -```text +```bash sudo systemctl stop home-assistant@homeassistant.service ``` You can restart Home Assistant after the next step using the same command and replacing `stop` with `start`. Now we will run the certbot program to get our SSL certificate. You will need to include your email address and your DuckDNS URL in the appropriate places: -```text -./certbot-auto certonly --standalone --preferred-challenges http-01 --email your@email.address -d examplehome.duckdns.org +```bash +sudo certbot certonly --standalone --preferred-challenges http-01 --email your@email.address -d examplehome.duckdns.org ``` Once the program has run it will generate a certificate and other files and place them in a folder `/etc/letsencrypt/` . @@ -294,6 +294,7 @@ Our Home Assistant user needs access to files within the letsencrypt folder, so ```bash sudo chmod 755 /etc/letsencrypt/live/ sudo chmod 755 /etc/letsencrypt/archive/ +sudo chmod -R 777 /etc/letsencrypt/ ``` Did all of that go without a hitch? Wahoo! Your Let's Encrypt certificate is now ready to be used with Home Assistant. Move to step 5 to put it all together @@ -326,19 +327,18 @@ Protocol - Both Remember to save the rule changes. -Now edit your configuration.yaml file to reflect the SSL entries and your base URL (changing the `examplehome` subdomain to yours in all three places): +Now edit your `configuration.yaml` file to reflect the SSL entries and your base URL (changing the `examplehome` subdomain to yours in all three places): ```yaml http: - api_password: YOUR_PASSWORD ssl_certificate: /etc/letsencrypt/live/examplehome.duckdns.org/fullchain.pem ssl_key: /etc/letsencrypt/live/examplehome.duckdns.org/privkey.pem base_url: examplehome.duckdns.org ``` -You may wish to set up other options for the [http](/integrations/http/) integration at this point, these extra options are beyond the scope of this guide. +You may wish to set up other options for the [HTTP](/integrations/http/) integration at this point, these extra options are beyond the scope of this guide. -Save the changes to configuration.yaml. Restart Home Assistant. +Save the changes to `configuration.yaml`. Restart Home Assistant. In step 3 we accessed our Home Assistant from the outside world with our DuckDNS URL and our port number. We are going to use a slightly different URL this time. @@ -346,7 +346,7 @@ In step 3 we accessed our Home Assistant from the outside world with our DuckDNS https://examplehome.duckdns.org ``` -Note the **S** after http, and that no port number is added. This is because https will use port 443 automatically, and we have already set up our port forward to redirect this request to our Home Assistant instance on port 8123. +Note the **S** after http, and that no port number is added. This is because HTTPS will use port 443 automatically, and we have already set up our port forward to redirect this request to our Home Assistant instance on port 8123. You should now be able to see your Home Assistant instance via your DuckDNS URL, and importantly note that your browser shows the connection as secure. @@ -362,7 +362,7 @@ https://YOUR-HA-IP:8123 Some cases such as this are where your router does not allow 'loopback' or where there is a problem with incoming connections due to technical failure. In these cases you can still use your internal connection and safely ignore the warnings. -If you were previously using a webapp on your phone/tablet to access your Home Assistant you should delete the old one and create a new one with the new address. The old one will no longer work as it is not keyed to your new, secure URL. Instructions for creating your new webapp can be found [here](/docs/frontend/mobile/). +If you were previously using a webapp on your phone/tablet to access your Home Assistant you should delete the old one and create a new one with the new address. The old one will no longer work as it is not keyed to your new, secure URL. All done? Accessing your Home Assistant from across the world with your DuckDNS URL and a lovely secure logo on your browser? Ace! Now let's clean up our port forwards so that we are only exposing the parts of our network that are absolutely necessary to the outside world. @@ -380,8 +380,8 @@ If you have any more for Home Assistant you should delete them now. If you only You are now part of one of two groups: - * If you have BOTH rules you are able to set up auto renewals of your certificates using port 80 and the standard http challenge, as performed above. - * If you only have one, you are still able to set up auto renewals of your certificates, but will have to specify additional options when renewing that will temporarily stop Home Assistant and use port 8123 for certificate renewal. +- If you have BOTH rules you are able to set up auto renewals of your certificates using port 80 and the standard HTTP challenge, as performed above. +- If you only have one, you are still able to set up auto renewals of your certificates, but will have to specify additional options when renewing that will temporarily stop Home Assistant and use port 8123 for certificate renewal. Please remember whether you are a ONE-RULE person or a BOTH-RULE person for step 8! @@ -393,10 +393,10 @@ Move on to step 7 to see how to monitor your certificates expiry date, and be re Setting a sensor to read the number of days left on your TLS/SSL certificate before it expires is not required, but it has the following advantages: - * You can physically see how long you have left, pleasing your inner control freak - * You can set automations based on the number of days left - * You can set alerts to notify you if your certificate has not been renewed and is coming close to expiry. - * If you cannot set up automatic renewals due to your ISP blocking port 80, you will have timely reminders to complete the process manually. +- You can physically see how long you have left, pleasing your inner control freak +- You can set automations based on the number of days left +- You can set alerts to notify you if your certificate has not been renewed and is coming close to expiry. +- If you cannot set up automatic renewals due to your ISP blocking port 80, you will have timely reminders to complete the process manually. If you do not wish to set up a sensor you can skip straight to step 8 to learn how to update your certificates. @@ -424,13 +424,13 @@ sensor: command: "ssl-cert-check -b -c /etc/letsencrypt/live/examplehome.duckdns.org/cert.pem | awk '{ print $NF }'" ``` -Save the configuration.yaml. Restart Home Assistant. +Save the `configuration.yaml`. Restart Home Assistant. On your default_view you should now see a sensor badge containing your number of days until expiry. If you've been following this guide from the start and have not taken any breaks in between, this should be 89 or 90. The sensor will update every 3 hours. You can place this reading on a card using groups, or hide it using customize. These topics are outside of the scope of this guide, but information can be found on their respective integrations pages: [Group](/integrations/group/) and [Customize](/docs/configuration/customizing-devices/) Got your sensor up and running and where you want it? Top drawer! Nearly there, now move on to the final steps to ensure that you're never without a secure connection in the future. -### 8 - Set up an automatic renewal of the TLS/SSL certificate. +### 8 - Set up an automatic renewal of the TLS/SSL certificate The certbot program we downloaded in step 4 contains a script that will renew your certificate. The script will only obtain a new certificate if the current one has less than 30 days left on it, so running the script more often than is actually needed will not cause any harm. @@ -440,51 +440,53 @@ If you are a TWO-RULE person (from step 6), you can automatically renew your cer There are a number of options for automating the renewal process: -#### Option 1: +#### Option 1 + Your certificate can be renewed as a 'cron job' - cron jobs are background tasks run by the computer at specified intervals (and are totally independent of Home Assistant). Defining cron is outside of the scope of this guide but you will have had dealings with `crontab` when setting up DuckDNS in step 3 To set a cron job to run the script at regular intervals: - * SSH in to your device running Home Assistant. - * Change to your Home Assistant user (where `homeassistant` is the name of the user): +- SSH in to your device running Home Assistant. +- Change to your Home Assistant user (where `homeassistant` is the name of the user): -```bash -sudo -u homeassistant -H -s -``` + ```bash + sudo -u homeassistant -H -s + ``` - * Open the crontab: +- Open the crontab: -```bash -crontab -e -``` + ```bash + crontab -e + ``` - * If you are a TWO-RULE Person: Scroll to the bottom of the file and paste in the following line +- If you are a TWO-RULE Person: Scroll to the bottom of the file and paste in the following line -```text -30 2 * * 1 ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 -``` + ```text + 30 2 * * 1 certbot renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 + ``` -* If you are a ONE-RULE Person: Scroll to the bottom of the file and paste in the following line +- If you are a ONE-RULE Person: Scroll to the bottom of the file and paste in the following line -```text -30 2 * * 1 ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges tls-sni-01 --tls-sni-01-port 8123 --pre-hook "sudo systemctl stop home-assistant@homeassistant.service" --post-hook "sudo systemctl start home-assistant@homeassistant.service" -``` -* Let's take a moment to look at the differences here: - 1. This method uses a `tls-sni` challenge, so the Let's Encrypt CA will attempt to bind port 443 externally (which you have forwarded) - 2. `--tls-sni-01-port 8123` tells certbot to bind port 8123 internally, which matches with the port forwarding rules that are already in place. - 3. We define pre-hooks and post-hooks that stop our Home Assistant service before certbot runs, freeing port 8123 for certificate renewal, and restart Home Assistant after renewal is complete. + ```text + 30 2 * * 1 certbot renew --quiet --no-self-upgrade --standalone --preferred-challenges tls-sni-01 --tls-sni-01-port 8123 --pre-hook "sudo systemctl stop home-assistant@homeassistant.service" --post-hook "sudo systemctl start home-assistant@homeassistant.service" + ``` - * Save the file and exit +- Let's take a moment to look at the differences here: + 1. This method uses a `tls-sni` challenge, so the Let's Encrypt CA will attempt to bind port 443 externally (which you have forwarded) + 2. `--tls-sni-01-port 8123` tells certbot to bind port 8123 internally, which matches with the port forwarding rules that are already in place. + 3. We define pre-hooks and post-hooks that stop our Home Assistant service before certbot runs, freeing port 8123 for certificate renewal, and restart Home Assistant after renewal is complete. +- Save the file and exit + +#### Option 2 -#### Option 2: You can set an automation in Home Assistant to run the certbot renewal script. -Add the following sections to your configuration.yaml if you are a TWO-RULE person +Add the following sections to your `configuration.yaml` if you are a TWO-RULE person ```yaml shell_command: - renew_ssl: ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 + renew_ssl: certbot renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 automation: - alias: 'Auto Renew SSL Cert' @@ -495,37 +497,39 @@ automation: action: service: shell_command.renew_ssl ``` -If you are a ONE-RULE person, replace the `certbot-auto` command above with `~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges tls-sni-01 --tls-sni-01-port 8123 --pre-hook "sudo systemctl stop home-assistant@homeassistant.service" --post-hook "sudo systemctl start home-assistant@homeassistant.service"` -#### Option 3: +If you are a ONE-RULE person, replace the `certbot` command above with `certbot renew --quiet --no-self-upgrade --standalone --preferred-challenges tls-sni-01 --tls-sni-01-port 8123 --pre-hook "sudo systemctl stop home-assistant@homeassistant.service" --post-hook "sudo systemctl start home-assistant@homeassistant.service"` + +#### Option 3 + You can manually update the certificate when your certificate is less than 30 days to expiry. To manually update: - * SSH in to your device running Home Assistant. - * Change to your Home Assistant user (where `homeassistant` is the name of the user): +- SSH in to your device running Home Assistant. +- Change to your Home Assistant user (where `homeassistant` is the name of the user): -```bash -sudo -u homeassistant -H -s -``` + ```bash + sudo -u homeassistant -H -s + ``` - * Change to your certbot folder +- Change to your certbot folder -```bash -cd ~/certbot/ -``` + ```bash + cd ~/certbot/ + ``` - * Run the renewal command +- Run the renewal command -```bash -./certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 -``` + ```bash + certbot renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 + ``` -* If you are a ONE-RULE person, replace the `certbot-auto` command above with `~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges tls-sni-01 --tls-sni-01-port 8123 --pre-hook "sudo systemctl stop home-assistant@homeassistant.service" --post-hook "sudo systemctl start home-assistant@homeassistant.service"` +- If you are a ONE-RULE person, replace the `certbot` command above with `certbot renew --quiet --no-self-upgrade --standalone --preferred-challenges tls-sni-01 --tls-sni-01-port 8123 --pre-hook "sudo systemctl stop home-assistant@homeassistant.service" --post-hook "sudo systemctl start home-assistant@homeassistant.service"` So, now were all set up. We have our secured, remotely accessible Home Assistant instance and we're on track for keeping our certificates up to date. But what if something goes wrong? What if the automation didn't fire? What if the cron job forgot to run? What if the dog ate my homework? Read on to set up an alert so you can be notified in plenty of time if you need to step in and sort out any failures. -### 9 - Set up an alert to warn us if something went wrong. +### 9 - Set up an alert to warn us if something went wrong We set up our automatic renewal of our certificates and whatever method we used the certificate should be renewed on or around 30 days before it expires. But what if a week later it still hasn't been? This alert will go off if the expiry time on the certificate gets down to 21 days. This will give you 3 weeks to fix the problem, get your new certificate installed and get another 90 days of secure Home Assistant connections in play. diff --git a/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown b/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown index 27563e1a3d7e..5a67900752da 100644 --- a/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown +++ b/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown @@ -57,7 +57,6 @@ The [`http`](/integrations/http/) section must contain the full path to the need ```yaml http: - api_password: YOUR_SECRET_PASSWORD base_url: https://mydomain.com:8123 ssl_certificate: /etc/letsencrypt/live/mydomain.com/fullchain.pem ssl_key: /etc/letsencrypt/live/mydomain.com/privkey.pem diff --git a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown index e352481dd5b1..7926fedadcbc 100644 --- a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown +++ b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown @@ -1,56 +1,86 @@ --- -title: "Self-signed certificate for SSL/TLS" -description: "Configure a self-signed certificate to use with Home Assistant" +title: "Certificate Authority and self-signed certificate for SSL/TLS" +description: "Configure a Certificate Authority and self-signed certificate to use with Home Assistant" redirect_from: /cookbook/tls_self_signed_certificate/ --- -If your Home Assistant instance is only accessible from your local network you can still protect the communication between your browsers and the frontend with SSL/TLS. -[Let's encrypt]({{site_root}}/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/) will only work if you have a DNS entry and remote access is allowed. -The solution is to use a self-signed certificate. As you most likely don't have a certification authority (CA) your browser will complain about the security. If you have a CA then this will not be an issue. +If your Home Assistant instance is only accessible from your local network, you can still protect the communication between your browsers and the frontend with SSL/TLS. +[Let's Encrypt](/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/) will only work if you have a DNS entry and remote access is allowed. + +The solution is to use a self-signed certificate. Please note, however, that after you have completed these steps, your browser will complain about the security of the certificate as it was not issued by a trusted authority. + +* This is due to self-signed certificates having not been issued by a certification authority ([`CA`](https://cheapsslsecurity.com/blog/what-is-a-certificate-authority-ca/)). If you have your own CA, then this will not be an issue. +* A fantastic workaround for this, while keeping your instance isolated securely off the Internet, is to use a [`Certificate for SSL/TLS via domain ownership`](/docs/ecosystem/certificates/tls_domain_certificate/). + +If you don't mind the browser warnings and simply want SSL/TLS encryption and therefore have decided to use a self-signed certificate permanently or temporarily, read on! + +If you use Chrome browser version 58 or above and/or **don't want to have issues regarding a non-trusted CA or CN (Common Name)**, follow this full tutorial: [Create Root Certificate Authority and self-signed certificate for your Home Assistant. Compatible with Chrome browser > version 58](https://gist.github.com/tiagofreire-pt/4920be8d03a3dfa8201c6afedd00305e). Otherwise, follow this: To create a certificate locally, you need the [OpenSSL](https://www.openssl.org/) command-line tool. -Change to your Home Assistant [configuration directory](/getting-started/configuration/) like `~/.homeassistant`. This will make it easier to backup your certificate and the key. Run the command shown below. +Change to your Home Assistant [configuration directory](/getting-started/configuration/) like `~/.homeassistant`. This will make it easier to backup your certificate and the key. Run the command shown below. The certificate **must** be `.pem` extension. ```bash -openssl req -sha256 -newkey rsa:4096 -nodes -keyout privkey.pem -x509 -days 730 -out certificate.pem +openssl req -sha256 -addext "subjectAltName = IP:X.X.X.X" -newkey rsa:4096 -nodes -keyout privkey.pem -x509 -days 730 -out fullchain.pem ``` -For details about the parameters, please check the OpenSSL documentation. Provide the requested information during the generation process. +Where the `X.X.X.X` must be replaced with the IP address of your local machine running Home Assistant (e.g., `192.168.1.20`). + +For details about the parameters, please check the OpenSSL documentation. Provide the requested information during the generation process. -At the end you will have two files called `privkey.pem` and `certificate.pem`. The key and the certificate. +At the end you will have two files called `privkey.pem` and `fullchain.pem`. The key and the certificate. -Update the `http:` entry in your `configuration.yaml` file and let it point to your created files. +Update the `http:` entry in your `configuration.yaml` file and let it point to your created files. + +Hass.io: ```yaml http: - ssl_certificate: /home/your_user/.homeassistant/certificate.pem + ssl_certificate: /ssl/fullchain.pem + ssl_key: /ssl/privkey.pem +``` + +Non-Hass.io: + +```yaml +http: + ssl_certificate: /home/your_user/.homeassistant/fullchain.pem ssl_key: /home/your_user/.homeassistant/privkey.pem ``` -A restart of Home Assistant is required for the changes to take effect. +A restart of Home Assistant is required for the new certificate to take effect. If you get any log error about *ssl_key* or *ssl_certificate* that is **not a file for dictionary value** when run Home Assistant, you need to change owner or access permission of the `.pem` files as following: + +Home Assistant (through console or SSH add-on): + +```bash +chown root:root fullchain.pem privkey.pem +chmod 600 fullchain.pem privkey.pem +``` +Non-hass-io: + ```bash -sudo chown homeassistant:homeassistant certificate.pem privkey.pem -sudo chmod 755 certificate.pem privkey.pem +sudo chown homeassistant:homeassistant fullchain.pem privkey.pem +sudo chmod 600 fullchain.pem privkey.pem ``` A tutorial "[Working with SSL Certificates, Private Keys and CSRs](https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs)" could give you some insight about special cases. -### iOS and macOS Specific Requirements +## iOS and macOS Specific Requirements + +### iOS -#### iOS If you are going to use this certificate with the iOS app, you need to ensure you complete **all** fields during the certificate creation process, then: -* Send **only** the `certificate.pem` file to the iOS device, using airdrop or other transfer method. +* Send **only** the `fullchain.pem` file to the iOS device, using airdrop or other transfer method. * Open the `.pem` file on the iOS device, follow the prompts to trust and install it. * If you are using iOS 10.3 or newer then [additional steps](https://support.apple.com/en-us/HT204477) are needed. -#### iOS 13 and macOS 10.15 +### iOS 13 and macOS 10.15 There are [new security requirements](https://support.apple.com/en-us/HT210176) for TLS server certificates in iOS 13 and macOS 10.15. To summarize: diff --git a/source/_docs/ecosystem/hadashboard.markdown b/source/_docs/ecosystem/hadashboard.markdown old mode 100755 new mode 100644 diff --git a/source/_docs/ecosystem/haproxy.markdown b/source/_docs/ecosystem/haproxy.markdown index b9a09fed76d6..e601ef5e9ecb 100644 --- a/source/_docs/ecosystem/haproxy.markdown +++ b/source/_docs/ecosystem/haproxy.markdown @@ -57,7 +57,8 @@ defaults timeout connect 5000 timeout client 50000 timeout server 50000 - timeout http-request 5s #protection from Slowloris attacks + timeout tunnel 60000 # long enough for websocket pings every 55 seconds + timeout http-request 5s # protection from Slowloris attacks frontend www-http bind *:80 @@ -68,7 +69,7 @@ frontend www-https bind *:443 ssl crt /etc/haproxy/certs/MYCERT.pem acl hass-acl hdr(host) -i SUBDOMAIN.DOMAIN.COM use_backend hass-backend if hass-acl - + backend hass-backend server hass :8123 @@ -85,11 +86,11 @@ Forward ports 443 and (optionally) 80 to your server on your router. Do not forward port 8123, HAProxy takes care of securing the connection with HTTPS on 443. If 8123 is forwarded then it will not be secured. -Replace 443 with whatever port you chose to bind to in the config if different. +Replace 443 with whatever port you chose to bind to in the configuration if different. ### Configure Home Assistant HTTP Component -In your `configuration.yaml` file, edit the [http component](/integrations/http/). +In your `configuration.yaml` file, edit the [HTTP component](/integrations/http/). ```text http: diff --git a/source/_docs/ecosystem/hass-configurator.markdown b/source/_docs/ecosystem/hass-configurator.markdown deleted file mode 100644 index 48df2d527e88..000000000000 --- a/source/_docs/ecosystem/hass-configurator.markdown +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: "HASS Configurator" -description: "Instructions on how to install and use the HASS Configurator" -redirect_from: /ecosystem/hass-configurator/ ---- - -### Configuration UI for Home Assistant - -Since there is currently no nice way to edit the YAML files Home Assistant is using through the frontend, here is a small webapp that hopefully makes configuration easier. It is a customized and embedded [Ace editor](https://ace.c9.io/), which has syntax highlighting for YAML, the format used for Home Assistant's configuration files. There is also an integrated file browser to select whatever file you want to edit. When you're done editing the file, simply click the save button and your changes will be applied. -This is essentially a browser-based alternative to modifying your configuration through SSH, Windows + SMB, Github, etc. - -

- -Screenshot of the HASS Configurator. -

- -### Feature list - -- Web-based editor to modify your files -- Upload and download files -- Git integration -- List of available triggers, events, entities, conditions and services. Selected element gets inserted into the editor at the last cursor position. -- Check valid configuration and restart Home Assistant directly with the click of a button -- SSL support -- Optional authentication and IP filtering for additional security -- Direct links to Home Assistant documentation and icons -- Execute shell commands -- Runs on pretty much any machine Home Assistant can run on - -
-This tool allows you to browse your filesystem and modify files. So be careful which files you edit, or you might break critical parts of your system.
-Consider running the configurator as a user with limited privileges to limit possible damage. -
- -### Installation (Linux, macOS) -There are no dependencies on Python modules that are not part of the standard library. All the fancy JavaScript libraries are loaded from CDN (which means this doesn't work when you're offline). -- Copy [configurator.py](https://github.com/danielperna84/hass-configurator/blob/master/configurator.py) to your Home Assistant configuration directory (e.g `/home/homeassistant/.homeassistant`): `wget https://raw.githubusercontent.com/danielperna84/hass-configurator/master/configurator.py` -- Make it executable: `sudo chmod 755 configurator.py` -- (Optional) Set the `GIT` variable in configurator.py to `True` if [GitPython](https://gitpython.readthedocs.io/) is installed on your system. This is required if you want to make use of the Git integration. -- Execute it: `sudo ./configurator.py` -- To terminate the process do the usual `CTRL+C`, maybe once or twice - -### Configuration -Near the top of the `configurator.py` file you will find some global variables you can change to customize the configurator. When setting variables of the type _string_, the string must be within quotation marks. The default settings are fine for just checking out the configurator quickly. For more customized setups it might be advisable to change some settings. -To keep your settings across updates it is also possible to save settings in an external file. In that case copy [settings.conf](https://github.com/danielperna84/hass-configurator/blob/master/settings.conf) wherever you like and append the full path to the file to the command when starting the configurator. e.g., `sudo .configurator.py /home/homeassistant/.homeassistant/mysettings.conf`. This file is in JSON format, so make sure it has a valid syntax (you can set the editor to JSON to get syntax highlighting for the settings). The major difference to the settings in the .py file is that `None` becomes `null`. - -#### LISTENIP (string) -The IP the service is listening on. By default it is binding to `0.0.0.0`, which is every interface on the system. -#### LISTENPORT (integer) -The port the service is listening on. By default it is using `3218`, but you can change this if you need to. -#### BASEPATH (string) -It is possible to place configurator.py somewhere else. Set the `BASEPATH` to something like `"/home/homeassistant/.homeassistant"`, and no matter where you are running the configurator from, it will start serving files from there. This is needed if you plan on running the configurator with systemd or some other way of daemonizing the configurator. -#### SSL_CERTIFICATE / SSL_KEY (string) -If you are using SSL, set the paths to your SSL files here. This is similar to the SSL setup you can do in Home Assistant. -#### HASS_API (string) -The configurator fetches some data from your running Home Assistant instance. If the API is not available through the default URL, modify this variable to fix this. -#### HASS_API_PASSWORD (string) -If you plan on using the restart button, you have to set your API password. Calling the restart service of Home Assistant is prohibited without authentication. -#### CREDENTIALS (string) -Set credentials in the form of `"username:password"` if authentication should be required for access to the configurator. -#### ALLOWED_NETWORKS (list) -Limit access to the configurator by adding allowed IP addresses / networks to the list, e.g `ALLOWED_NETWORKS = ["192.168.0.0/24", "172.16.47.23"]` -#### BANNED_IPS (list) -List of statically banned IP addresses, e.g., `BANNED_IPS = ["1.1.1.1", "2.2.2.2"]` -#### BANLIMIT (integer) -Ban IPs after `n` failed login attempts. Restart the service to reset banning. The default of `0` disables this feature. `CREDENTIALS` has to be set for this to work. -#### IGNORE_PATTERN (list) -Files and folders to ignore in the UI, e.g., `IGNORE_PATTERN = [".*", "*.log", "__pycache__"]`. -#### DIRSFIRST (bool) -If set to `True`, directories will be displayed at the top of the filebrowser. -#### GIT (bool) -Set this variable to `True` to enable Git integration. This feature requires [GitPython](https://gitpython.readthedocs.io) - to be installed on the system that is running the configurator. For technical reasons this feature cannot be enabled with the static settings file. - -__Note regarding `ALLOWED_NETWORKS`, `BANNED_IPS` and `BANLIMIT`__: -The way this is implemented works in the following order: - -1. (Only if `CREDENTIALS` is set) Check credentials - - Failure: Retry `BANLIMIT` times, after that return error 420 (unless you try again without any authentication headers set, such as in a private tab of your browser) - - Success: Continue -2. Check if client IP address is in `BANNED_IPS` - - Yes: Return error 420 - - No: Continue -3. Check if client IP address is in `ALLOWED_NETWORKS` - - Yes: Continue and display UI of configurator - - No: Return error 420 - -### Embedding into Home Assistant -Home Assistant has the [panel_iframe](/integrations/panel_iframe/) component. With this it is possible to embed the configurator directly into Home Assistant, allowing you to modify your configuration through the Home Assistant frontend. -An example configuration would look like this: - -```yaml -panel_iframe: - configurator: - title: Configurator - icon: mdi:wrench - url: http://123.123.132.132:3218 -``` - -
-Be careful when setting up port forwarding to the configurator while embedding it into Home Assistant. If you don't restrict access by requiring authentication and/or blocking based on client IP addresses, your configuration will be exposed to the Internet! -
- -### Daemonizing / Keeping the configurator running -Since the configurator script on its own is not a service, you will have to take some extra steps to keep it running. Here are five options (for Linux), but there are more depending on your usecase. - -1. Fork the process into the background with the command: -`nohup sudo ./configurator.py &` -2. If your system is using systemd (that's usually what you'll find on a Raspberry Pi), there's a [template file](https://github.com/danielperna84/hass-configurator/blob/master/hass-configurator.systemd) you can use and then apply the same process to integrate it as mentioned in the [Home Assistant documentation](/docs/autostart/systemd/). If you use this method you have to set the `BASEPATH` variable according to your environment. -3. If you have [supervisor](http://supervisord.org/) running on your system, [hass-poc-configurator.supervisor](https://github.com/danielperna84/hass-configurator/blob/master/hass-configurator.supervisor) would be an example configuration you could use to control the configurator. -4. A tool called [tmux](https://tmux.github.io/), which should be pre-installed with [HASSbian](/docs/installation/hassbian/). -5. A tool called [screen](http://ss64.com/bash/screen.html) (alternative to tmux). If it's not already installed on your system, you can do `sudo apt-get install screen` or `sudo yum install screen` to get it. When it's installed, start a screen session by executing `screen`. Then navigate to your Home Assistant directory and start the configurator like described above. Put the screen session into the background by pressing `CTRL+A` and then `CTRL+D`. It is now safe to disconnect from your SSH session. -To resume the screen session, log in to your machine and execute `screen -r`. - -### Troubleshooting, Issues etc. -If you encounter difficulties setting up the configurator or stumble upon a possible bug, head over to the [Issues](https://github.com/danielperna84/hass-configurator/issues) section of the configurator repository. Additionally there is a thread at the [Home Assistant Community](https://community.home-assistant.io/t/simplistic-configuration-ui/10175) where common problems may have been discussed already. And if not, there are always friendly people around to help finding solutions. diff --git a/source/_docs/ecosystem/ios.markdown b/source/_docs/ecosystem/ios.markdown deleted file mode 100644 index 15b293692b8d..000000000000 --- a/source/_docs/ecosystem/ios.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "iOS" -description: "Documentation about the Home Assistant iOS app." -redirect_from: /ecosystem/ios/ ---- - -The Home Assistant for iOS app offers a companion app for iOS which is deeply integrated into both Home Assistant and iOS. Its basic features include: - -* Advanced push notifications -* Location tracking -* Basic control of all Home Assistant entities -* Integration with third party apps - -The app is available on the iOS App Store in every country that Apple supports. - -

- -## Basic requirements - -* iOS device running at least iOS 9, but iOS 10 is greatly preferred. -* Home Assistant 0.42.4 or higher for push notification support. -* SSL is strongly recommended. Self-signed SSL certificates will not work due to Apple's limitations. - -The `ios` integration is the companion integration for the Home Assistant iOS app. While not required, adding the `ios` integration to your setup will greatly enhance the iOS app with new notification, location and sensor functions not possible with a standalone app. - -Loading the `ios` integration will also load the [`device_tracker`](/integrations/device_tracker), [`zeroconf`](/integrations/zeroconf) and [`notify`](/integrations/notify) platforms. - -The Home Assistant for iOS app supports the new authentication system introduced in Home Assistant 0.77. - -## Setup - -### Automated Setup - -The `ios` integration will automatically be loaded under the following circumstances: - -1. The [`discovery`](/integrations/discovery) integration is enabled. -2. You have just installed the app and are at the getting started screen. - -Automated discovery and integration loading only happens at first install of the app. You may need to wait a few minutes for the iOS integration to load as the `discovery` integration only scans the network every 5 minutes. - -After the first automated setup you need to add `ios:` to your configuration so that the integration loads by default even after restarting Home Assistant. - -### Manual Setup - -You may also manually load the `ios` integration by adding the following to your configuration: - -```yaml -# Example configuration.yaml entry -ios: -``` - -{% configuration %} -push: - description: Actionable push notifications configuration. See the [actionable notifications documentation](/docs/ecosystem/ios/notifications/actions/) for more information. - required: false - type: list -{% endconfiguration %} - diff --git a/source/_docs/ecosystem/ios/devices_file.markdown b/source/_docs/ecosystem/ios/devices_file.markdown deleted file mode 100644 index 9d1d2043786b..000000000000 --- a/source/_docs/ecosystem/ios/devices_file.markdown +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "ios.conf" -description: "Describes the contents and purpose of ios.conf" ---- - -The `ios.conf` file contains the most recent state of all registered iOS devices. Deleting this file will not disable the devices and the file will be recreated the next time a new device is connected or an existing one reconnects. diff --git a/source/_docs/ecosystem/ios/integration.markdown b/source/_docs/ecosystem/ios/integration.markdown deleted file mode 100644 index aa1b82526071..000000000000 --- a/source/_docs/ecosystem/ios/integration.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Integration" -description: "Examples of how Home Assistant for iOS can be integrated with other apps" -redirect_from: /ecosystem/ios/integration/ ---- - -Home Assistant for iOS supports opening from other apps via URL. - -Query parameters are passed as a dictionary in the call. - -## Call service -Example: `homeassistant://call_service/device_tracker.see?entity_id=device_tracker.entity` - -## Fire event -You can create an [event trigger](/docs/automation/trigger/#event-trigger) and fire the event. - -Example: `homeassistant://fire_event/custom_event?entity_id=MY_CUSTOM_EVENT` - -## Send one shot location -Example: `homeassistant://send_location/` diff --git a/source/_docs/ecosystem/ios/location.markdown b/source/_docs/ecosystem/ios/location.markdown deleted file mode 100644 index 87cd0bce96c8..000000000000 --- a/source/_docs/ecosystem/ios/location.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Location" -description: "Documentation about the location tracking abilities in Home Assistant for iOS" -redirect_from: /ecosystem/ios/location/ ---- - -## Location tracking when outside a Home Assistant zone - -Home Assistant for iOS receives _significant location updates_ from iOS. Whenever an update is received, it is sent to Home Assistant. Roughly, an update is received every time that your device transfers to a new cellular tower, a significant amount of time has passed (usually a couple hours) or a connection state changes and the system notices your location recently changed. - -Apple [defines][apple-location-programming-guide] significant significant-change location updates as: - -> The significant-change location service delivers updates only when there has been a significant change in the device’s location, such as 500 meters or more. - -They also say in the [Energy Efficiency Guide][apple-energy-guide]: - -> Significant-change location updates wake the system and your app once every 15 minutes, at minimum, even if no location changes have occurred. - -Finally, I think this answer from [Stack Overflow][stackoverflow] says it best: - -> The significant location change is the least accurate of all the location monitoring types. It only gets its updates when there is a cell tower transition or change. This can mean a varying level of accuracy and updates based on where the user is. City area, more updates with more towers. Out of town, interstate, fewer towers and changes. - -What's the real story on significant-change location updates? Who knows, because Apple keeps it private. - -## Location tracking in Home Assistant zones - -At launch, Home Assistant for iOS sets up geofences for all zones in your Home Assistant configuration. Enter and exit notifications are sent to Home Assistant. - -### Configuration - -Add `track_ios: false` to your zone configurations to disable zone location tracking for all connected iOS apps. - -### iBeacons - -As of 1.0.3 the app has basic support for using iBeacons to trigger enter/exit updates. To configure them, add your iBeacon details to your zone like this: - -```yaml -zone.home: - beacon: - uuid: B9407F30-F5F8-466E-AFF9-25556B57FE6D - major: 60042 - minor: 43814 -``` - -Restart Home Assistant and then the iOS app. It will then begin using iBeacons _instead of your location_ for enter and exit triggers around your zones. To add an iBeacon to `zone.home` add the above under your `customize`. - -[apple-energy-guide]: https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/LocationBestPractices.html#//apple_ref/doc/uid/TP40015243-CH24-SW4 -[apple-location-programming-guide]: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW9 -[stackoverflow]: http://stackoverflow.com/a/13331625/486182 diff --git a/source/_docs/ecosystem/ios/notifications.markdown b/source/_docs/ecosystem/ios/notifications.markdown deleted file mode 100644 index 2d7ec759bf19..000000000000 --- a/source/_docs/ecosystem/ios/notifications.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Notifications Introduction" -description: "Getting started with iOS notifications" -redirect_from: /ecosystem/ios/notifications/ ---- - -The `ios` notify platform enables sending push notifications to the Home Assistant iOS app. - -The 'ios' integration will automatically load the notify service. -The service integration can be called using `service: notify.ios_`. -Your device ID can be found in the `ios.conf` file in your configuration folder. The file is compressed JSON. You can view it easier by copying the file contents and pasting them into [JSONLint](http://jsonlint.com). - -In this example, the device ID is `robbiet480_7plus`, so the notify service to use is `notify.ios_robbiet480_7plus`: -```json -{"devices":{"robbiet480_7plus":{"app":{"bundleIdentifer":"io.robbie.HomeAssistant","versionNumber":1,"buildNumber":53},"pushSounds":[],"permissions":["location"],"deviceId":"robbiet480_7plus","device":{"type":"iPhone 7 Plus","systemName":"iOS","systemVersion":"10.3","permanentID":"AB9F02FE-6AC6-47B8-ADEB-5DD87B489156","localizedModel":"iPhone","name":"Robbie's iPhone 7 Plus","model":"iPhone"},"battery":{"state":"Full","level":100},"pushToken":"SECRET","pushId":"SECRET"}}} -``` - -You can find more information in the [Basic Notifications](/docs/ecosystem/ios/notifications/basic/) documentation and the [Actionable Notifications](/docs/ecosystem/ios/notifications/actions/) documentation. diff --git a/source/_docs/ecosystem/ios/notifications/actions.markdown b/source/_docs/ecosystem/ios/notifications/actions.markdown deleted file mode 100644 index f67edbf5eba9..000000000000 --- a/source/_docs/ecosystem/ios/notifications/actions.markdown +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: "Actionable notifications" -description: "Making push notifications a two way system" -redirect_from: /ecosystem/ios/notifications/actions/ ---- - -Actionable notifications allow you to attach 1-4 custom buttons to a notification. When one of the actions is selected Home Assistant will be notified which action was chosen. This allows you to build complex automations. - -Examples of actionable notifications: - -- A notification is sent whenever motion is detected in your home while you are away or asleep. You can add an action to Sound Alarm. When tapped, Home Assistant is notified that the `sound_alarm` action was selected. You can add an automation to sound the burglar alarm whenever this event is seen. -- Someone rings your front door bell. You can send an action to lock or unlock your front door. When tapped, a notification is sent back to Home Assistant upon which you can build automations. -- Send a notification whenever your garage door opens with actions to open and close the garage. - -

- - Actionable notifications allow the user to send a command back to Home Assistant. -

- -## Overview of how actionable notifications work - -In advance of sending a notification: - -1. Define a notification category in your Home Assistant configuration which contain 1-4 actions. -2. At launch iOS app requests notification categories from Home Assistant (can also be done manually in notification settings). - -When sending a notification: - -1. Send a notification with `data.push.category` set to a pre-defined notification category identifier. -2. Push notification delivered to device -3. User opens notification. -3. Action tapped -4. Identifier of action sent back to HA as the `actionName` property of the event `ios.notification_action_fired`, along with other metadata such as the device and category name. - -

- - How the iOS device and Home Assistant work together to enable actionable notifications. -

- -## Definitions -- Category - A category represents a type of notification that the app might receive. Think of it as a unique group of actions. -- Actions - An action consists of a button title and the information that iOS needs to notify the app when the action is selected. You create separate action objects for distinct action your app supports. - -## Category parameters - -- **name** (*Required*): A friendly name for this category. -- **identifier** (*Required*): A unique identifier for the category. Must be lowercase and have no special characters or spaces. -- **actions** (*Required*): A list of actions. - -## Actions parameters - -- **identifier** (*Required*): A unique identifier for this action. Must be uppercase and have no special characters or spaces. Only needs to be unique to the category, not unique globally. -- **title** (*Required*): The text to display on the button. Keep it short. -- **activationMode** (*Optional*): The mode in which to run the app when the action is performed. Setting this to `foreground` will make the app open after selecting. Default value is `background`. -- **authenticationRequired** (*Optional*): If `true`, the user must unlock the device before the action is performed. -- **destructive** (*Optional*): When the value of this property is a truthy value, the system displays the corresponding button differently to indicate that the action is destructive (text color is red). -- **behavior** (*Optional*): When `textInput` the system provides a way for the user to enter a text response to be included with the notification. The entered text will be sent back to Home Assistant. Default value is `default`. -- **textInputButtonTitle** (*Optional*): The button label. *Required* if `behavior` is `textInput`. -- **textInputPlaceholder** (*Optional*): The placeholder text to show in the text input field. Only used if `behavior` is `textInput` and the device runs iOS 10. - -Here's a fully built example configuration: - -```yaml -ios: - push: - categories: - - name: Alarm - identifier: 'alarm' - actions: - - identifier: 'SOUND_ALARM' - title: 'Sound Alarm' - activationMode: 'background' - authenticationRequired: true - destructive: true - behavior: 'default' - - identifier: 'SILENCE_ALARM' - title: 'Silence Alarm' - activationMode: 'background' - authenticationRequired: true - destructive: false - behavior: 'textInput' - textInputButtonTitle: 'Silencio!' - textInputPlaceholder: 'Placeholder' -``` - -## Building automations for notification actions -Here is an example automation to send a notification with a category in the payload: - -```yaml -automation: - - alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_robbies_iphone_7_plus - data: - message: "Something happened at home!" - data: - push: - badge: 5 - sound: - category: "alarm" # Needs to match the top level identifier you used in the ios configuration - action_data: # Anything passed in action_data will get echoed back to Home Assistant. - entity_id: light.test - my_custom_data: foo_bar -``` - -When an action is selected an event named `ios.notification_action_fired` will be emitted on the Home Assistant event bus. Below is an example payload. - -```json -{ - "sourceDeviceName": "Robbie's iPhone 7 Plus", - "sourceDeviceID": "robbies_iphone_7_plus", - "actionName": "SOUND_ALARM", - "sourceDevicePushId": "ab9f02fe-6ac6-47b8-adeb-5dd87b489156", - "textInput": "", - "actionData": {} -} -``` - -Here's an example automation for the given payload: -```yaml -automation: - - alias: Sound the alarm - trigger: - platform: event - event_type: ios.notification_action_fired - event_data: - actionName: SOUND_ALARM - action: - ... -``` - -Notes: - -* `textInput` will only exist if `behavior` was set to `textInput`. -* `actionData` is a dictionary with parameters passed in the `action_data` dictionary of the `push` dictionary in the original notification. -* When adding or updating push categories be sure to update push settings within the Home Assistant iOS app. This can be found within the app at **Settings** (gear icon) > **Notification Settings**. - -## Compatibility with different devices - -* For devices that support "Force Touch" / "3D Touch" - a long press on the notification will cause the actions to appear. Devices such as iPhone 6S, iPhone 6S Plus, iPhone 7, iPhone 7 Plus, iPhone 8, iPhone 8 Plus, iPhone X, iPhone XS, iPhone XS Max as well as some iPad and Apple Watch models. - -* For device that do not support this feature - a left to right swipe on the notification + tap on 'View' button, will cause the relevant actions to appear. Devices such as iPhone 6 and below, iPhone SE, iPhone XR as some iPad models. diff --git a/source/_docs/ecosystem/ios/notifications/architecture.markdown b/source/_docs/ecosystem/ios/notifications/architecture.markdown deleted file mode 100644 index 13719e929674..000000000000 --- a/source/_docs/ecosystem/ios/notifications/architecture.markdown +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Architecture" -description: "The push notification system layout" -redirect_from: /ecosystem/ios/notifications/architecture/ ---- - -

- - The push notification infrastructure layout -

diff --git a/source/_docs/ecosystem/ios/notifications/attachments.markdown b/source/_docs/ecosystem/ios/notifications/attachments.markdown deleted file mode 100644 index 25f55d40199d..000000000000 --- a/source/_docs/ecosystem/ios/notifications/attachments.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "Notification attachments" -description: "Adding attachments to iOS push notifications" -redirect_from: /ecosystem/ios/notifications/attachments/ ---- - -iOS 10 adds _attachments_ to notifications. An attachment is an image, video, or audio file which is downloaded to the device when a notification is received and shown alongside the notification. A thumbnail is shown when the notification is not expanded. The full size attachment is shown when the notification is expanded. - -
-To expand a notification on 3D Touch devices simply force touch any notification. On non-3D Touch devices swipe and tap the "View" button. -
- -```yaml -- alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_robbies_iphone_7_plus - data: - message: "Something happened at home!" - data: - attachment: - url: "https://github.com/home-assistant/home-assistant-assets/blob/master/logo-round-192x192.png?raw=true" - content-type: png - hide-thumbnail: false -``` - -Notes: -* The thumbnail of the notification will be the media at the `url`. -* The notification content is the media at the `url`. -* Attachment can be used with custom push notification categories. - -## Example - -

- - An unexpanded push notification with an attachment. -

- -

- - The same notification but expanded to show the full size attachment -

- -## Supported media types - -If the attachment does not appear please ensure it is in one of the following formats: - -### Audio attachments - -Maximum file size: 5 MB - -Allowed Formats: AIFF, WAV, MP3, MPEG4 Audio - -### Image attachments - -Maximum file size: 10 MB - -Allowed Formats: JPEG, GIF, PNG - -### Video attachments - -Maximum file size: 50 MB - -Allowed Formats: MPEG, MPEG2, MPEG4, AVI - -## Configuration - -- **url** (*Required*): The URL of content to use as the attachment. This URL _must_ be accessible from the Internet, or the receiving device must be on the same network as the hosted content. -- **content-type** (*Optional*): By default, the extension of the URL will be checked to determine the filetype. If there is no extension/it can't be determined you can manually provide a file extension. -- **hide-thumbnail** (*Optional*): If set to `true` the thumbnail will not show on the notification. The content will only be viewable by expanding. diff --git a/source/_docs/ecosystem/ios/notifications/basic.markdown b/source/_docs/ecosystem/ios/notifications/basic.markdown deleted file mode 100644 index bfc46df10475..000000000000 --- a/source/_docs/ecosystem/ios/notifications/basic.markdown +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: "Basic Notifications" -description: "Basic notes about iOS notifications" -redirect_from: /ecosystem/ios/notifications/basic/ ---- - -The iOS notify platform accepts the standard `title`, `message` and `target` parameters. The iOS notify platform supports targets as services. Assuming that you did not set a `name` when configuring the platform you should find all your registered and notification-enabled iOS devices available as notify targets as services with names prefixed "notify.ios_" and then the device name you entered at setup. - -Notes: - -* `title` only displays on Apple Watch and devices with iOS 10 or above. - -* `target` can be used to specific a single device using its PushID, found in `ios.conf`. The preferred way of providing a target is through a target specific notify service. - -

- - A push notification showing all of the basic options `title` and `message` as well as `subtitle` and [actions](/ecosystem/ios/notifications/actions/). -

- -### Enhancing basic notifications - -#### Badge -You can set the icon badge in the payload: - -```yaml -automation: - - alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_ - data: - title: "Smart Home Alerts" - message: "Something happened at home!" - data: - push: - badge: 5 -``` - -#### Subtitle -Starting with iOS 10, a subtitle is supported in addition to the title: - -```yaml -automation - - alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_ - data: - title: "Smart Home Alerts" - message: "Something happened at home!" - data: - subtitle: "Subtitle goes here" -``` - -#### Thread-id (grouping notifications) -Starting with iOS 12, grouping of notifications is supported. All notifications with the same thread-id will be grouped together in the notification center. Without a thread-id, all notifications from the app will be placed in a single group. - -```yaml -automation: - - alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_ - data: - title: "Smart Home Alerts" - message: "Something happened at home!" - data: - push: - thread-id: "example-notification-group" -``` - - -### Sending notifications to multiple phones -To send notifications to multiple phones, create a [notification group](/integrations/notify.group/): -```yaml -notify: - - name: NOTIFIER_NAME - platform: group - services: - - service: ios_iphone_one - - service: ios_iphone_two -``` -Now, you can send notifications to everyone in the group using: -```yaml - automation: - - alias: Notify iOS app - trigger: - ... - action: - service: notify.NOTIFIER_NAME - data: - message: "Something happened at home!" - data: - push: - badge: 5 -``` diff --git a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown b/source/_docs/ecosystem/ios/notifications/content_extensions.markdown deleted file mode 100644 index 4badaa3df483..000000000000 --- a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: "Dynamic content" -description: "Extend your notifications with dynamic content" -redirect_from: /ecosystem/ios/notifications/content_extensions/ ---- - -With the new Content Extension feature found in iOS 10, dynamic content can now be displayed as part of a notification without opening an app. - -# Map -Will show a map with a red tipped pin at the coordinates given. -The map will be centered at the coordinates given. - -```yaml -service: notify.ios_ -data: - message: Something happened at home! - data: - push: - category: map - action_data: - latitude: "40.785091" - longitude: "-73.968285" -``` - -## Showing a second pin - -You can use the following properties under `action_data` to display a second pin. If used, the first pin will be red and the second green. - -- **second_latitude**: The latitude of the second pin. **Must be a string!** -- **second_longitude**: The longitude of the second pin. **Must be a string!** -- **shows_line_between_points**: A Boolean value indicating whether a line should be drawn between the first and second pin. - -## Extra configuration - -You can also pass the following properties under `action_data` to modify the map in various ways. All are expected to be boolean values unless otherwise noted: - -- **shows_compass**: A Boolean indicating whether the map displays a compass control. -- **shows_points_of_interest**: A Boolean indicating whether the map displays point-of-interest information. -- **shows_scale**: A Boolean indicating whether the map shows scale information. -- **shows_traffic**: A Boolean value indicating whether the map displays traffic information. -- **shows_user_location**: A Boolean value indicating whether the map should try to display the user’s location. - -

- - An example of the map dynamic content. -

- - -# Camera Stream - -The notification thumbnail will be a still image from the camera. -The notification content is a real time MJPEG stream of a camera (assuming the camera supports it). - -You can use the attachment parameters `content-type` and `hide-thumbnail` with camera to control the thumbnail. - -You can view an example [here](https://www.youtube.com/watch?v=LmYwpxPKW0g). - -Note: This functionality is only available from iOS 11 onwards. - -```yaml -service: notify.ios_ -data: - message: Motion detected in the Living Room - data: - attachment: - content-type: jpeg - push: - category: camera - entity_id: camera.demo_camera -``` - -
- -
- -# Combining with actionable notifications - -As you can see the `category` key is used to tell the device what kind of content extension to use. You can use the same category identifiers in your own custom [actions](/ecosystem/ios/notifications/actions/) to add actions to the content extension. - -For example this configuration adds actions to a camera content message. - -```yaml -ios: - push: - categories: - - name: Camera With Actions - identifier: 'camera' - actions: - - identifier: 'OPEN_COVER' - title: 'Open Cover' - activationMode: 'background' - authenticationRequired: true - destructive: no - - identifier: 'CLOSE_COVER' - title: 'Close Cover' - activationMode: 'background' - authenticationRequired: true - destructive: true -``` - -# Troubleshooting - -If you are having problems with receiving these special notifications try restarting your phone first. The extensions somewhat often fail to register properly until a restart. diff --git a/source/_docs/ecosystem/ios/notifications/privacy_security_rate_limits.markdown b/source/_docs/ecosystem/ios/notifications/privacy_security_rate_limits.markdown deleted file mode 100644 index aec550b5a7ee..000000000000 --- a/source/_docs/ecosystem/ios/notifications/privacy_security_rate_limits.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Privacy, rate limiting and security" -description: "Notes about important topics relating to push notifications" -redirect_from: /ecosystem/ios/notifications/privacy_security_rate_limits/ ---- - -## Privacy - -No notification content is stored on remote servers. Only the required push registration data and a simple counter of the total number of push notifications sent per day per device (for rate limiting purposes) is kept. - -## Rate limiting - -Currently, you are allowed to send a maximum of 150 push notifications per day per device. This is to ensure that the service remains cheap to maintain. In the future we may add support for upgrading to allow more notifications. The rate limit resets at midnight UTC daily. When a notification is sent your current rate limits (including sent notifications and notifications remaining for the day) will be output to your Home Assistant logs. If an error occurs while sending a notification your rate limit will not be affected. - -## Security - -All traffic between your Home Assistant instance, the push infrastructure, and Apple, is encrypted with SSL. diff --git a/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown b/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown deleted file mode 100644 index 7573adabddc2..000000000000 --- a/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Requesting location updates" -description: "Ask the device to send a location update remotely" -redirect_from: /ecosystem/ios/notifications/requesting_location_updates/ ---- - -
-Do not rely on this functionality due to the time limits mentioned below. -
- -You can force a device to attempt to report its location by sending a special notification. - -```yaml -automation - - alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_ - data: - message: "request_location_update" -``` - -Assuming the device receives the notification, it will attempt to get a location update within 5 seconds and report it to Home Assistant. This is a little bit hit or miss since Apple imposes a maximum time allowed for the app to work with the notification and location updates sometimes take longer than usual due to factors such as waiting for GPS acquisition. - diff --git a/source/_docs/ecosystem/ios/notifications/sounds.markdown b/source/_docs/ecosystem/ios/notifications/sounds.markdown deleted file mode 100644 index 0668b16dc763..000000000000 --- a/source/_docs/ecosystem/ios/notifications/sounds.markdown +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: "Notification Sounds" -description: "Adding sounds to notifications" -redirect_from: /ecosystem/ios/notifications/sounds/ ---- - -Adding a custom sound to a notification allows you to easily identify the notification without even looking at your device. Home Assistant for iOS comes with some notification sounds pre-installed but you can also upload your own. - -Here is an example notification that uses one of the pre-installed sounds. - -```yaml -- alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_ - data: - message: “Something happened at home!” - data: - push: - sound: "US-EN-Morgan-Freeman-Roommate-Is-Arriving.wav" -``` - -Notes: -* You must use the full filename in the payload (including extension). - -## Custom push notification sounds - -The app allows you to use your own custom sounds in push notifications. The sounds must be formatted as 32bit float 48000Hz wav files. You set the filename of the sound in the notification payload. To add sounds: - -1. Connect the device to a PC or Mac running the latest version of iTunes. -2. Go to the device in iTunes. -3. Select "File Sharing" in the left-hand menu. -4. Select Home Assistant. -5. Drag and drop properly formatted sounds (32bit float 48000Hz wav files). -6. Click Sync in the lower right. -7. Once the sync is complete, disconnect the device from the computer. -8. On your iOS device, open the Home Assistant app. -9. Go to Settings -> Notification Settings. -10. Select "Import sounds from iTunes". - -Assuming that you correctly formatted the sounds they are now available to use in push notifications. - -Notes: - -* **Please note that due to a bug in iOS 10 you may need to restart your entire device before notification sounds can be played. This should hopefully be fixed by Apple soon.** -* Uploading a file with the same name as an existing one will overwrite the original. -* You can view what sounds are installed on each device by inspecting the `ios.conf` file in your configuration directory. They are listed in the `pushSounds` array. - -### Preinstalled notification sounds - -```txt -US-EN-Alexa-Back-Door-Opened.wav -US-EN-Alexa-Back-Door-Unlocked.wav -US-EN-Alexa-Basement-Door-Opened.wav -US-EN-Alexa-Basement-Door-Unlocked.wav -US-EN-Alexa-Boyfriend-Is-Arriving.wav -US-EN-Alexa-Daughter-Is-Arriving.wav -US-EN-Alexa-Front-Door-Opened.wav -US-EN-Alexa-Front-Door-Unlocked.wav -US-EN-Alexa-Garage-Door-Opened.wav -US-EN-Alexa-Girlfriend-Is-Arriving.wav -US-EN-Alexa-Good-Morning.wav -US-EN-Alexa-Good-Night.wav -US-EN-Alexa-Husband-Is-Arriving.wav -US-EN-Alexa-Mail-Has-Arrived.wav -US-EN-Alexa-Motion-At-Back-Door.wav -US-EN-Alexa-Motion-At-Front-Door.wav -US-EN-Alexa-Motion-Detected-Generic.wav -US-EN-Alexa-Motion-In-Back-Yard.wav -US-EN-Alexa-Motion-In-Basement.wav -US-EN-Alexa-Motion-In-Front-Yard.wav -US-EN-Alexa-Motion-In-Garage.wav -US-EN-Alexa-Patio-Door-Opened.wav -US-EN-Alexa-Patio-Door-Unlocked.wav -US-EN-Alexa-Smoke-Detected-Generic.wav -US-EN-Alexa-Smoke-Detected-In-Basement.wav -US-EN-Alexa-Smoke-Detected-In-Garage.wav -US-EN-Alexa-Smoke-Detected-In-Kitchen.wav -US-EN-Alexa-Son-Is-Arriving.wav -US-EN-Alexa-Water-Detected-Generic.wav -US-EN-Alexa-Water-Detected-In-Basement.wav -US-EN-Alexa-Water-Detected-In-Garage.wav -US-EN-Alexa-Water-Detected-In-Kitchen.wav -US-EN-Alexa-Welcome-Home.wav -US-EN-Alexa-Wife-Is-Arriving.wav -US-EN-Daisy-Back-Door-Motion.wav -US-EN-Daisy-Back-Door-Open.wav -US-EN-Daisy-Front-Door-Motion.wav -US-EN-Daisy-Front-Door-Open.wav -US-EN-Daisy-Front-Window-Open.wav -US-EN-Daisy-Garage-Door-Open.wav -US-EN-Daisy-Guest-Bath-Leak.wav -US-EN-Daisy-Kitchen-Sink-Leak.wav -US-EN-Daisy-Kitchen-Window-Open.wav -US-EN-Daisy-Laundry-Room-Leak.wav -US-EN-Daisy-Master-Bath-Leak.wav -US-EN-Daisy-Master-Bedroom-Window-Open.wav -US-EN-Daisy-Office-Window-Open.wav -US-EN-Daisy-Refrigerator-Leak.wav -US-EN-Daisy-Water-Heater-Leak.wav -US-EN-Morgan-Freeman-Back-Door-Closed.wav -US-EN-Morgan-Freeman-Back-Door-Locked.wav -US-EN-Morgan-Freeman-Back-Door-Opened.wav -US-EN-Morgan-Freeman-Back-Door-Unlocked.wav -US-EN-Morgan-Freeman-Basement-Door-Closed.wav -US-EN-Morgan-Freeman-Basement-Door-Locked.wav -US-EN-Morgan-Freeman-Basement-Door-Opened.wav -US-EN-Morgan-Freeman-Basement-Door-Unlocked.wav -US-EN-Morgan-Freeman-Boss-Is-Arriving.wav -US-EN-Morgan-Freeman-Boyfriend-Is-Arriving.wav -US-EN-Morgan-Freeman-Cleaning-Supplies-Closet-Opened.wav -US-EN-Morgan-Freeman-Coworker-Is-Arriving.wav -US-EN-Morgan-Freeman-Daughter-Is-Arriving.wav -US-EN-Morgan-Freeman-Friend-Is-Arriving.wav -US-EN-Morgan-Freeman-Front-Door-Closed.wav -US-EN-Morgan-Freeman-Front-Door-Locked.wav -US-EN-Morgan-Freeman-Front-Door-Opened.wav -US-EN-Morgan-Freeman-Front-Door-Unlocked.wav -US-EN-Morgan-Freeman-Garage-Door-Closed.wav -US-EN-Morgan-Freeman-Garage-Door-Opened.wav -US-EN-Morgan-Freeman-Girlfriend-Is-Arriving.wav -US-EN-Morgan-Freeman-Good-Morning.wav -US-EN-Morgan-Freeman-Good-Night.wav -US-EN-Morgan-Freeman-Liquor-Cabinet-Opened.wav -US-EN-Morgan-Freeman-Motion-Detected.wav -US-EN-Morgan-Freeman-Motion-In-Basement.wav -US-EN-Morgan-Freeman-Motion-In-Bedroom.wav -US-EN-Morgan-Freeman-Motion-In-Game-Room.wav -US-EN-Morgan-Freeman-Motion-In-Garage.wav -US-EN-Morgan-Freeman-Motion-In-Kitchen.wav -US-EN-Morgan-Freeman-Motion-In-Living-Room.wav -US-EN-Morgan-Freeman-Motion-In-Theater.wav -US-EN-Morgan-Freeman-Motion-In-Wine-Cellar.wav -US-EN-Morgan-Freeman-Patio-Door-Closed.wav -US-EN-Morgan-Freeman-Patio-Door-Locked.wav -US-EN-Morgan-Freeman-Patio-Door-Opened.wav -US-EN-Morgan-Freeman-Patio-Door-Unlocked.wav -US-EN-Morgan-Freeman-Roommate-Is-Arriving.wav -US-EN-Morgan-Freeman-Searching-For-Car-Keys.wav -US-EN-Morgan-Freeman-Setting-The-Mood.wav -US-EN-Morgan-Freeman-Smartthings-Detected-A-Flood.wav -US-EN-Morgan-Freeman-Smartthings-Detected-Carbon-Monoxide.wav -US-EN-Morgan-Freeman-Smartthings-Detected-Smoke.wav -US-EN-Morgan-Freeman-Smoke-Detected-In-Basement.wav -US-EN-Morgan-Freeman-Smoke-Detected-In-Garage.wav -US-EN-Morgan-Freeman-Smoke-Detected-In-Kitchen.wav -US-EN-Morgan-Freeman-Someone-Is-Arriving.wav -US-EN-Morgan-Freeman-Son-Is-Arriving.wav -US-EN-Morgan-Freeman-Starting-Movie-Mode.wav -US-EN-Morgan-Freeman-Starting-Party-Mode.wav -US-EN-Morgan-Freeman-Starting-Romance-Mode.wav -US-EN-Morgan-Freeman-Turning-Off-All-The-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Air-Conditioner.wav -US-EN-Morgan-Freeman-Turning-Off-The-Bar-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Chandelier.wav -US-EN-Morgan-Freeman-Turning-Off-The-Family-Room-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Hallway-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Kitchen-Light.wav -US-EN-Morgan-Freeman-Turning-Off-The-Light.wav -US-EN-Morgan-Freeman-Turning-Off-The-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Mood-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-TV.wav -US-EN-Morgan-Freeman-Turning-On-The-Air-Conditioner.wav -US-EN-Morgan-Freeman-Turning-On-The-Bar-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-Chandelier.wav -US-EN-Morgan-Freeman-Turning-On-The-Family-Room-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-Hallway-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-Kitchen-Light.wav -US-EN-Morgan-Freeman-Turning-On-The-Light.wav -US-EN-Morgan-Freeman-Turning-On-The-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-Mood-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-TV.wav -US-EN-Morgan-Freeman-Vacate-The-Premises.wav -US-EN-Morgan-Freeman-Water-Detected-In-Basement.wav -US-EN-Morgan-Freeman-Water-Detected-In-Garage.wav -US-EN-Morgan-Freeman-Water-Detected-In-Kitchen.wav -US-EN-Morgan-Freeman-Welcome-Home.wav -US-EN-Morgan-Freeman-Wife-Is-Arriving.wav -``` diff --git a/source/_docs/ecosystem/nginx.markdown b/source/_docs/ecosystem/nginx.markdown index 8a84cb0d0d48..9383b9ad58dc 100644 --- a/source/_docs/ecosystem/nginx.markdown +++ b/source/_docs/ecosystem/nginx.markdown @@ -10,8 +10,7 @@ Using NGINX as a proxy for Home Assistant allows you to serve Home Assistant sec Chances are, you have a dynamic IP address (your ISP changes your address periodically). If this is true, you can use a Dynamic DNS service to obtain a domain and set it up to update with you IP. If you purchase your own domain name, you will be able to easily get a trusted SSL certificate later. - -### 2 Install nginx on your server +### 2 Install NGINX on your server This will vary depending on your OS. Check out Google for this. After installing, ensure that NGINX is not running. @@ -24,7 +23,8 @@ You will at least need nginx >= 1.3.13, as WebSocket support is required for the There are two ways of obtaining an SSL certificate. #### Using Let's Encrypt -If you purchased your own domain, you can use https://letsencrypt.org/ to obtain a free, publicly trusted SSL certificate. This will allow you to work with services like IFTTT. Download and install per the instructions online and get a certificate using the following command. + +If you purchased your own domain, you can use to obtain a free, publicly trusted SSL certificate. This will allow you to work with services like IFTTT. Download and install per the instructions online and get a certificate using the following command. ```bash $ sudo ./letsencrypt-auto certonly --standalone -d example.com -d www.example.com @@ -53,7 +53,7 @@ cd /etc/nginx/ssl sudo openssl dhparam -out dhparams.pem 2048 ``` -### 5. Install configuration file in nginx. +### 5. Install configuration file in NGINX Create a new file `/etc/nginx/sites-available/hass` and copy the configuration file at the bottom of the page into it. @@ -63,7 +63,7 @@ Some Linux distributions (including CentOS and Fedora) will not have the `/etc/n
-### 6. Enable the Home Assistant configuration. +### 6. Enable the Home Assistant configuration ```bash cd /etc/nginx/sites-enabled @@ -71,11 +71,11 @@ sudo unlink default sudo ln ../sites-available/hass default ``` -### 7. Start NGINX. +### 7. Start NGINX -Double check this configuration to ensure all settings are correct and start nginx. +Double check this configuration to ensure all settings are correct and start NGINX. -### 8. Port forwarding. +### 8. Port forwarding Forward ports 443 and 80 to your server on your router. Do not forward port 8123. @@ -97,7 +97,7 @@ http: trusted_proxies: ``` -### NGINX Config +### NGINX configuration ```nginx map $http_upgrade $connection_upgrade { @@ -130,9 +130,9 @@ server { # These shouldn't need to be changed - listen [::]:443 default_server ipv6only=off; # if your nginx version is >= 1.9.5 you can also add the "http2" flag here + listen [::]:443 ssl default_server ipv6only=off; # if your nginx version is >= 1.9.5 you can also add the "http2" flag here add_header Strict-Transport-Security "max-age=31536000; includeSubdomains"; - ssl on; + # ssl on; # Uncomment if you are using nginx < 1.15.0 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_prefer_server_ciphers on; diff --git a/source/_docs/ecosystem/nginx_subdomain.markdown b/source/_docs/ecosystem/nginx_subdomain.markdown index c749b49d5ee6..2d4ba1519941 100644 --- a/source/_docs/ecosystem/nginx_subdomain.markdown +++ b/source/_docs/ecosystem/nginx_subdomain.markdown @@ -85,6 +85,10 @@ server { location / { proxy_pass http://localhost:8124; proxy_set_header Host $host; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; } location /api/websocket { diff --git a/source/_docs/ecosystem/notebooks/api.markdown b/source/_docs/ecosystem/notebooks/api.markdown deleted file mode 100644 index 063510542e23..000000000000 --- a/source/_docs/ecosystem/notebooks/api.markdown +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Home Assistant Python API" -description: "Basic example of interacting with Home Assistant live from a Jupyter notebook using the Python API." -redirect_from: /ecosystem/notebooks/api/ ---- - -Python API is deprecated. diff --git a/source/_docs/ecosystem/notebooks/database.markdown b/source/_docs/ecosystem/notebooks/database.markdown deleted file mode 100644 index b91fdadb3fed..000000000000 --- a/source/_docs/ecosystem/notebooks/database.markdown +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Database" -description: "Accessing the Home-Assistant database from a Jupyter notebook." -redirect_from: /ecosystem/notebooks/database/ ---- - -You can directly access the Home-Assistant database from Jupyter notebooks. The [Database example](https://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/other/database-examples.ipynb) shows you how you can work with stored database values. diff --git a/source/_docs/ecosystem/notebooks/graph.markdown b/source/_docs/ecosystem/notebooks/graph.markdown deleted file mode 100644 index c48a18a3849f..000000000000 --- a/source/_docs/ecosystem/notebooks/graph.markdown +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Graph" -description: "Basic example how to create a graph with a Jupyter notebook." -redirect_from: /ecosystem/notebooks/graph/ ---- - -For graphing this [Jupyter notebook](https://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/other/graph-single-sensor.ipynb) should get you started. diff --git a/source/_docs/ecosystem/notebooks/installation.markdown b/source/_docs/ecosystem/notebooks/installation.markdown deleted file mode 100644 index 0afed74486d0..000000000000 --- a/source/_docs/ecosystem/notebooks/installation.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "Installation" -description: "Setup and first steps for Jupyter Notebooks and Home Assistant." -redirect_from: /ecosystem/notebooks/installation/ ---- - -To run Jupyter Notebooks locally, an installation of [Jupyter](http://jupyter.org/) is needed. Consider running Jupyter in a [virtualenv](/docs/installation/virtualenv/) in order to properly manage dependencies. - -```bash -$ pip3 install jupyter matplotlib -``` - -
- -Certain notebooks hosted in the [Home Assistant notebooks repository](https://github.com/home-assistant/home-assistant-notebooks) require access to a running Home Assistant instance or parts of a Home Assistant installation. If you want to run those notebooks, install Home Assistant with `$ pip3 install homeassistant` as well. - -
- -Run Jupyter from the command line. - -```bash -$ jupyter notebook -[I 17:22:18.081 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret -[I 17:22:18.921 NotebookApp] Serving notebooks from local directory: /home/fabaff/home-assistant -[I 17:22:18.921 NotebookApp] 0 active kernels -[I 17:22:18.921 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/ -[I 17:22:18.922 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). -``` - -Open `http://localhost:8888/` in your browser. Press "New" -> "Python3" to open a new notebook. - -

- -

- -You will get an empty notebook with one cell. Cells can contain code or text. To get the output of a cell you need to execute them with "Cell" -> "Run Cells" from the menu or by pressing the Play icon. - -

- -

- -The downloadable version of this notebook is available in the [Home Assistant notebooks repository](https://github.com/home-assistant/home-assistant-notebooks/blob/master/other/first-notebook.ipynb). - - -As you can see is the Jupyter notebook workflow is very similar to working directly with a Python shell. One advantage of notebooks is that you can go back and forth between cells as you please and save your work. diff --git a/source/_docs/ecosystem/notebooks/stats.markdown b/source/_docs/ecosystem/notebooks/stats.markdown deleted file mode 100644 index c1232bcb0392..000000000000 --- a/source/_docs/ecosystem/notebooks/stats.markdown +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Statistics" -description: "Basic example how to create basic statistics with a Jupyter notebook." -redirect_from: /ecosystem/notebooks/stats/ ---- - -The [Statistics notebook](https://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/other/database-statistics.ipynb) shows some basic statistical analysis on data in the Home Assistant database. diff --git a/source/_docs/ecosystem/scenegen.markdown b/source/_docs/ecosystem/scenegen.markdown deleted file mode 100644 index a3a758b8bc99..000000000000 --- a/source/_docs/ecosystem/scenegen.markdown +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: "SceneGen" -description: "Scenegen is a scene generation tool for Home Assistant" -redirect_from: /ecosystem/scenegen/ ---- - -Scenegen is a scene generation tool for [Home Assistant](/) home automation software. It creates scenes by example, by reading the current states of devices and outputting a corresponding scene. Scenegen is written in python using Home Assistant's RESTful API so can be run from anywhere. It currently supports lights and switches only. - -## Installation - -### Clone the Repository -Clone the [**scenegen**](https://github.com/home-assistant/scenegen) repository to the current local directory on your machine. - -```bash -git clone https://github.com/home-assistant/scenegen.git -``` - -Change your working directory to the repository root. Moving forward, we will be working from this directory. - -```bash -cd scenegen -``` - -## Install Prerequisites - -Before running `SceneGen` you will need to add some python prerequisites: - -```bash -sudo pip3 install configparser -``` - -You should now be ready to run `scenegen` - -## Basic Operation - -```text -usage: scenegen [-h] [-k KEY] [-s SCENENAME] [-m MAPFILE] [-f FILTER] - [-c {xy_color,rgb_color,color_temp,color_name}] [-t TYPES] - url - -positional arguments: - url url for Home Assistant instance - -optional arguments: - -h, --help show this help message and exit - -k KEY, --key KEY API Key of Home Assistant instance - -s SCENENAME, --scenename SCENENAME - Name of scene to generate - -m MAPFILE, --mapfile MAPFILE - Name of mapfile to enable device filtering - -f FILTER, --filter FILTER - Comma separated list of device collections as defined - in mapfile - -c {xy_color,rgb_color,color_temp,color_name}, --colortype {xy_color,rgb_color,color_temp,color_name} - color type to use - -t TYPES, --types TYPES - list of device types to include - -``` - -For basic operation just supply the url and optionally the api key (using the --key option) on the command line and scenegen will output a list of all lights and switches with their attributes. Optionally use the `--scenename` flag to explicitly set the scenename. - -```bash -$ ./scenegen.py https:// -k -name: My New Scene -entities: - light.bedroom: - state: on - brightness: 28 - light.kitchen: - state: off - light.living_room: - state: off - light.bedside: - state: on - brightness: 125 - color_temp: 412 - light.office_level_29: - state: on - brightness: 28 -``` - -This output can be cut and pasted into your configuration.yaml file as required (ensuring correct indentation of course). - -Scenegen supports all documented effects for lights including transitions and flash effects, however generally it is easier to run scenegen to get the basic setup and add any effects manually later. - -Note that depending on the type of light there may be a delay in actually setting up its parameters and Home Assistant actually receiving that state. For instance, if you set a scene up with the Hue App, Home Assistant won't see those changes for up to 10 seconds. Turning on a ZWave light might not be seen for an entire poll interval. For this reason, its good practice to wait for a while after the scene is setup before running scenegen. Alternatively, perform all setup using the Home Assistant frontend and it will instantly have the required state for capture. - -## Advanced Usage - -For a more advanced way to use the output try the following. In configuration.yaml add the following line: - -```yaml -scene: !include_dir_list scenes -``` - -This will tell Home Assistant to look in the subdirectory `scenes` for yaml files containing scene information. Each file will be named for the scene it will create and should contain information formatted as above. Then simply run Scenegen and redirect its output to the scenes subdirectory: - -```bash -./scenegen.py https:// -k > scenes/my_new_scene.yaml -``` - -This will create a new scene called `my_new_scene` which will automatically be picked up by Home Assistant on the next restart. - -## Colors - -Scenegen allows colors to be captured, and in fact Home Assistant light entities store up to 4 different ways of specifying the colors. This is redundant for creating scenes so Scenegen picks 1 and goes with it. The default is `color_temp` but you can change this with the `--colortype` flag, supported options are `xy_color`, `rgb_color`, `color_temp` and `color_name`. - -## Types - -By default, Scenegen will list all lights and switches. To restrict the device type use the `--types` option and supply a comma separated list (no spaces) of types to output. e.g.: - -```bash -./scenegen.py https:// -k --types light,switch -``` - -or: - -```bash -./scenegen.py https:// -k --types light -``` - -This will make more sense as and when more types are added. - -## Maps and Filters - -Maps allow you to specify and label various subsets of devices that you want to work on together. A mapfile is specified using the `--mapfile` option and is a `.ini` style file consisting of section headers and entries. The section headers specify a region or zone or otherwise organized selection of entities you want to filter on, and it is mandatory to have at least one. If you create a map file like this: - -```text -[entities] -light.living_room: -light.dining_room: -``` - -The trailing colons are necessary to prevent parsing errors for including just keys, as opposed to key=value so just go with it - it reminds us of YAML ;) - -If you run scenegen with the `--mapfile` argument pointing to that file you will only get output for the listed entities (the name of the section is irrelevant if not using the `--filter` option). A more complex mapfile might look like this: - -```text -[Outside] -light.porch: -switch.path_lights: -[Living Room] -light.living_room_front: -light.living_room_back: -[Bedroom] -light.bedside: -``` - -Again, if you run with that map file it will output all of the entities listed, however you now have the possibility of restricting output devices based on the sections they are in, using the `--filter` option and supplying a comma separated list of sections you want to include, for instance: - -```bash -./scenegen.py https:// -k --mapfile map.cfg --filter "Outside,Living Room" -``` - -The intended use of the mapfile and filter is that you create a map of all your devices and organize them into zones that you are interested in creating scenes for and use the filter to limit output to that zone. For instance you might want to create 3 or 4 scenes for your living room, and once the map is set up you can easily do so without the addition of unwanted devices. - -## Updating SceneGen -To update SceneGen after a new version is released, just run the following command to update your copy: - -```bash -git pull -``` - diff --git a/source/_docs/ecosystem/tor.markdown b/source/_docs/ecosystem/tor.markdown index 613d57f5ce75..37ac2694acd7 100644 --- a/source/_docs/ecosystem/tor.markdown +++ b/source/_docs/ecosystem/tor.markdown @@ -80,7 +80,7 @@ For Tor Browser on Windows, Mac or Linux, you can find the torrc file here: ` **Menu** -> **Settings** to the "Torrc Custom Config" entry. Restart Orbot, and then use the [Orfox browser app](https://guardianproject.info/apps/orfox/), and browse to the "dot onion" site name to access your Home Assistant instance. You can also use Orbot's VPN mode, to enable Tor access from any application on your device, such as Tasker or Owntracks. +For [Orbot: Tor on Android](https://guardianproject.info/apps/orbot), add it in **Orbot** -> **Menu** -> **Settings** to the "Torrc Custom Configuration" entry. Restart Orbot, and then use the [Orfox browser app](https://guardianproject.info/apps/orfox/), and browse to the "dot onion" site name to access your Home Assistant instance. You can also use Orbot's VPN mode, to enable Tor access from any application on your device, such as Tasker or Owntracks. On iOS, we have not fully tested this yet, but you should be able to add custom torrc entries on [Onion Browser](https://mike.tig.as/onionbrowser/), Red Onion or TOBY browsers, all available in the iTunes App Store. diff --git a/source/_docs/frontend/browsers.markdown b/source/_docs/frontend/browsers.markdown index 36261fcbb096..c5fac552d018 100644 --- a/source/_docs/frontend/browsers.markdown +++ b/source/_docs/frontend/browsers.markdown @@ -64,11 +64,17 @@ We would appreciate if you help to keep this page up-to-date and add feedback. There are reports that devices running with iOS prior to iOS 10, especially old iPads, are having trouble. +## webOS + +| Browser | Release | State | Comments | +| :-------------------- |:---------------|:-----------|:-------------------------| +| [LG webOS TV Built-in]| 2019-2020 | fails | loads empty page | + [Chrome]: https://www.google.com/chrome/ [Chromium]: https://www.chromium.org/ [Conkeror]: http://conkeror.org/ [Edge]: https://www.microsoft.com/en-us/windows/microsoft-edge -[elinks]: http://elinks.or.cz/ +[elinks]: http://elinks.or.cz/ [Epiphany]: https://wiki.gnome.org/Apps/Web [Firefox]: https://www.mozilla.org/en-US/firefox/ [IE]: https://support.microsoft.com/en-us/help/17621/internet-explorer-downloads @@ -83,3 +89,4 @@ There are reports that devices running with iOS prior to iOS 10, especially old [Uzbl]: https://www.uzbl.org/ [w3m]: http://w3m.sourceforge.net/ [Waterfox]: https://www.waterfoxproject.org +[LG webOS TV Built-In]: https://www.lg.com/uk/support/solutions/tv/smart-tv/internet-browsing diff --git a/source/_docs/frontend/mobile.markdown b/source/_docs/frontend/mobile.markdown deleted file mode 100644 index e126c8ee7553..000000000000 --- a/source/_docs/frontend/mobile.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Getting started on Mobile" -description: "Android/iOS instructions to add Home Assistant to your homescreen." -redirect_from: /getting-started/mobile/ ---- - -Home Assistant has [a companion app for iOS](/docs/ecosystem/ios/). - -On both Android and iOS, you can add the Home Assistant "web app" to your homescreen as if it was native (Home Assistant leverages the W3C [manifest.json](https://w3c.github.io/manifest/) support). - -### Android - - 1. Open Chrome - 2. Navigate to your Home Assistant instance - 3. Tap on the Menu icon (three vertical bars) - 4. Tap on Add to Homescreen - 5. A dialog will popup; tap on Add - -

- -

- -### iOS - - 1. Open Safari - 2. Navigate to your Home Assistant instance - 3. Tap on the Share icon in the middle of the bottom toolbar - 4. Tap on "Add to Home Screen" - 5. A dialog will popup; tap on Add diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown index 0e350ef90948..94f822f7b732 100644 --- a/source/_docs/installation.markdown +++ b/source/_docs/installation.markdown @@ -43,17 +43,17 @@ NUC i7/i9 | Pure power, you should not have *any* performance issues ## Recommended -These install options are fully supported by Home Assistant's documentation. For example, if a integration requires that you install something to make it work on one of these methods then the integration page will document the steps required. +These install options are fully supported by Home Assistant's documentation. For example, if an integration requires that you install something to make it work on one of these methods then the integration page will document the steps required.
-The only installation methods that allow you to use Hass.io Add-ons are the Hass.io image and manual installer. All other methods only install the base Home Assistant packages, however the software from the add-ons may still usually be installed manually like any other program. +The only installation methods that allow you to use Home Assistant Add-ons is using the Home Assistant image and [manual Supervised installer](/hassio/installation/#alternative-install-home-assistant-supervised-on-a-generic-linux-host). All other methods only install the base Home Assistant packages, however the software from the add-ons may still usually be installed manually like any other program.
**Method**|**You have**|**Recommended for** :-----|:-----|:----- -[Hass.io](/hassio/installation/)|Raspberry Pi
VM|Anybody +[Home Assistant](/hassio/installation/)|Raspberry Pi
VM|Anybody [Docker](/docs/installation/docker/)|Docker|Anybody already running Docker ## Alternative installs @@ -94,21 +94,15 @@ These guides are provided as-is. Some of these install methods are more limited
CentOS/RHEL
- -
- -
-
Windows
-
- +
macOS
- +
Synology
@@ -118,10 +112,10 @@ These guides are provided as-is. Some of these install methods are more limited
FreeNAS
- +
- +
-
Hass.io
on generic Linux server
+
Home Assistant Supervised
on generic Linux server
diff --git a/source/_docs/installation/armbian.markdown b/source/_docs/installation/armbian.markdown index 3c61119fc87e..2f6862973c40 100644 --- a/source/_docs/installation/armbian.markdown +++ b/source/_docs/installation/armbian.markdown @@ -3,7 +3,7 @@ title: "Installation on a Armbian system" description: "Instructions to install Home Assistant on an Armbian-powered systems." --- -[armbian](https://www.armbian.com) runs on a wide-variety of [ARM development boards](https://www.armbian.com/download/). Currently there are around 50 boards supported inclusive the OrangePi family, Cubieboard, Pine64, and Odroid. +[armbian](https://www.armbian.com) runs on a wide-variety of [ARM development boards](https://www.armbian.com/download/). Currently there are around 50 boards supported inclusive the OrangePi family, Cubieboard, Pine64, and ODROID. Setup Python and `pip`: @@ -13,6 +13,7 @@ sudo apt-get install python3-dev python3-pip ``` Now that you installed python, there are two ways to install Home Assistant: + 1. It is recommended to install Home Assistant in a virtual environment to avoid using `root`, using the [VirtualEnv instructions](/docs/installation/virtualenv/) 2. Alternatively, you can install Home Assistant for the user you created when first booting Armbian: @@ -23,8 +24,6 @@ hass --open-ui Running these commands will: - - Install Home Assistant - - Launch Home Assistant and serve the web interface on `http://localhost:8123` - - the configuration files will be created in /home/{user}/.homeassistant - - +- Install Home Assistant +- Launch Home Assistant and serve the web interface on `http://localhost:8123` +- The configuration files will be created in `/home/{user}/.homeassistant` diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown index 780244d65ee0..194fbac0c276 100644 --- a/source/_docs/installation/docker.markdown +++ b/source/_docs/installation/docker.markdown @@ -4,6 +4,14 @@ description: "Instructions to install Home Assistant on a Docker." redirect_from: /getting-started/installation-docker/ --- +
+ +These below instructions are for an installation of Home Assistant Core running in your own Docker environment, which you manage yourself. + +For an installation of Home Assistant Supervised, which includes Home Assistant's add-on ecosystem, see the instructions for installing [Home Assistant Supervised on a generic Linux host](/hassio/installation/#alternative-install-home-assistant-supervised-on-a-generic-linux-host/). + +
+ ## Platform Installation Installation with Docker is straightforward. Adjust the following command so that `/PATH_TO_YOUR_CONFIG` points at the folder where you want to store your configuration and run it: @@ -11,50 +19,50 @@ Installation with Docker is straightforward. Adjust the following command so tha ### Linux ```bash -$ docker run --init -d --name="home-assistant" -e "TZ=America/New_York" -v /PATH_TO_YOUR_CONFIG:/config --net=host homeassistant/home-assistant:stable +docker run --init -d --name="home-assistant" -e "TZ=America/New_York" -v /PATH_TO_YOUR_CONFIG:/config --net=host homeassistant/home-assistant:stable ``` ### Raspberry Pi 3 (Raspbian) ```bash -$ docker run --init -d --name="home-assistant" -e "TZ=America/New_York" -v /PATH_TO_YOUR_CONFIG:/config --net=host homeassistant/raspberrypi3-homeassistant:stable +docker run --init -d --name="home-assistant" -e "TZ=America/New_York" -v /PATH_TO_YOUR_CONFIG:/config --net=host homeassistant/raspberrypi3-homeassistant:stable ``` You need to replace `/PATH_TO_YOUR_CONFIG` with your path to the configuration, for example if you choose your configuration path to be `/home/pi/homeassistant`, then command would be: - + ```bash -$ docker run --init -d --name="home-assistant" -e "TZ=America/New_York" -v /home/pi/homeassistant:/config --net=host homeassistant/raspberrypi3-homeassistant:stable +docker run --init -d --name="home-assistant" -e "TZ=America/New_York" -v /home/pi/homeassistant:/config --net=host homeassistant/raspberrypi3-homeassistant:stable ``` ### macOS When using `docker-ce` (or `boot2docker`) on macOS, you are unable to map the local timezone to your Docker container ([Docker issue](https://github.com/docker/for-mac/issues/44)). Instead of `-v /etc/localtime:/etc/localtime:ro`, just pass in the timezone environment variable when you launch the container, e.g, `-e "TZ=America/Los_Angeles"`. Replace "America/Los_Angeles" with [your timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones). -If you wish to browse directly to `http://localhost:8123` from your macOS host, meaning forward ports directly to the container, replace the `--net=host` switch with `-p 8123:8123`. More detail can be found in [the docker forums](https://forums.docker.com/t/should-docker-run-net-host-work/14215/10). +If you wish to browse directly to `http://localhost:8123` from your macOS host, meaning forward ports directly to the container, replace the `--net=host` switch with `-p 8123:8123`. More detail can be found in [the Docker forums](https://forums.docker.com/t/should-docker-run-net-host-work/14215/10). ```bash -$ docker run --init -d --name="home-assistant" -e "TZ=America/Los_Angeles" -v /PATH_TO_YOUR_CONFIG:/config -p 8123:8123 homeassistant/home-assistant:stable +docker run --init -d --name="home-assistant" -e "TZ=America/Los_Angeles" -v /PATH_TO_YOUR_CONFIG:/config -p 8123:8123 homeassistant/home-assistant:stable ``` -Alternatively, `docker-compose` works with any recent release of `docker-ce` on macOS. Note that (further down this page) we provide an example `docker-compose.yml` however it differs from the `docker run` example above. To make the .yml directives match, you would need to make _two_ changes: first add the equivalent `ports:` directive, then _remove_ the `network_mode: host` section. This is because `Port mapping is incompatible with network_mode: host:`. More details can be found at [Docker networking docs](https://docs.docker.com/network/). Note also the `/dev/tty*` device name used by your Arduino etc. devices will differ from the Linux example, so the compose `mount:` may require updates. +Alternatively, `docker-compose` works with any recent release of `docker-ce` on macOS. Note that (further down this page) we provide an example `docker-compose.yml` however it differs from the `docker run` example above. To make the .yml directives match, you would need to make _two_ changes: first add the equivalent `ports:` directive, then _remove_ the `network_mode: host` section. This is because `Port mapping is incompatible with network_mode: host:`. More details can be found at [Docker networking documentation](https://docs.docker.com/network/). Note also the `/dev/tty*` device name used by your Arduino etc. devices will differ from the Linux example, so the compose `mount:` may require updates. ### Windows Docker containers are completely isolated from its Windows host system. So when you delete a container, all the changes you made to that container are also removed. If you want to have configuration files or other assets remain persistent, try mounting Windows folders on containers. -Before proceeding, make sure you have shared out a drive for docker to mount to. This will allow the saving of config files to persist on the local machine rather than in the docker container (which may be destroyed when upgraded). +Before proceeding, make sure you have shared out a drive for Docker to mount to. This will allow the saving of configuration files to persist on the local machine rather than in the Docker container (which may be destroyed when upgraded). ```powershell -$ docker run --init -d --name="home-assistant" -e "TZ=America/Los_Angeles" -v /PATH_TO_YOUR_CONFIG:/config --net=host homeassistant/home-assistant:stable +docker run --init -d --name="home-assistant" -e "TZ=America/Los_Angeles" -v /PATH_TO_YOUR_CONFIG:/config --net=host homeassistant/home-assistant:stable ``` It’s easier to understand the trick when put into practice. Here we would like to mount a current working directory (something like `C:\Users\\homeassistant` make sure this exists first) into the `homeassistant/home-assistant:stable` image at the `/config` location in the container. We would do that as so: ```powershell -$ docker run --init -d --name="home-assistant" -e "TZ=America/Los_Angeles" -v //c/Users//homeassistant:/config --net=host homeassistant/home-assistant:stable +docker run --init -d --name="home-assistant" -e "TZ=America/Los_Angeles" -v //c/Users//homeassistant:/config --net=host homeassistant/home-assistant:stable ``` When running Home Assistant in Docker on Windows, you may have some difficulty getting ports to map for routing (since the `--net=host` switch actually applies to the hypervisor's network interface). To get around this, you will need to add port proxy ipv4 rules to your local Windows machine, like so (Replacing '192.168.1.10' with whatever your Windows IP is, and '10.0.50.2' with whatever your Docker container's IP is): @@ -64,30 +72,33 @@ netsh interface portproxy add v4tov4 listenaddress=192.168.1.10 listenport=8123 netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8123 connectaddress=10.0.50.2 connectport=8123 ``` -This will let you access your Home Assistant portal from `http://localhost:8123`, and if you forward port 8123 on your router to your machine IP, the traffic will be forwarded on through to the docker container. +This will let you access your Home Assistant portal from `http://localhost:8123`, and if you forward port 8123 on your router to your machine IP, the traffic will be forwarded on through to the Docker container. ### Synology NAS -As Synology within DSM now supports Docker (with a neat UI), you can simply install Home Assistant using docker without the need for command-line. For details about the package (including compatibility-information, if your NAS is supported), see +As Synology within DSM now supports Docker (with a neat UI), you can simply install Home Assistant using Docker without the need for command-line. For details about the package (including compatibility-information, if your NAS is supported), see The steps would be: -* Install "Docker" package on your Synology NAS -* Launch Docker-app and move to "Registry"-section -* Find "homeassistant/home-assistant" within registry and click on "Download". Choose the "latest" tag, this will make version updates easier later on. -* Wait for some time until your NAS has pulled the image -* Move to the "Image"-section of the Docker-app -* Click on "Launch" -* Choose a container-name you want (e.g., "homeassistant") -* Click on "Advanced Settings" -* Set "Enable auto-restart" if you like -* Within "Volume" click on "Add Folder" and choose either an existing folder or add a new folder. The "mount path" has to be "/config", so that Home Assistant will use it for the configs and logs. It is therefore recommended that the folder you choose should be named "config" or "homeassistant/config" to avoid confusion when referencing it within service calls. -* Within "Network" select "Use same network as Docker Host" -* To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) -* Confirm the "Advanced Settings" -* Click on "Next" and then "Apply" -* Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Synology NAS IP address - for example `http://192.168.1.10:8123`) - -To use a Z-Wave USB stick for Z-Wave control, the HA Docker container needs extra configuration to access to the USB stick. While there are multiple ways to do this, the least privileged way of granting access can only be performed via the Terminal, at the time of writing. See this page for configuring Terminal acces to your Synology NAS: + +- Install "Docker" package on your Synology NAS +- Launch Docker-app and move to "Registry"-section +- Find "homeassistant/home-assistant" within registry and click on "Download". Choose the "stable" tag. +- Wait for some time until your NAS has pulled the image +- Move to the "Image"-section of the Docker-app +- Click on "Launch" +- Choose a container-name you want (e.g., "homeassistant") +- Click on "Advanced Settings" +- Set "Enable auto-restart" if you like +- Within "Volume" click on "Add Folder" and choose either an existing folder or add a new folder. The "mount path" has to be "/config", so that Home Assistant will use it for the configs and logs. It is therefore recommended that the folder you choose should be named "config" or "homeassistant/config" to avoid confusion when referencing it within service calls. +- Within "Network" select "Use same network as Docker Host" +- To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) +- Confirm the "Advanced Settings" +- Click on "Next" and then "Apply" +- Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Synology NAS IP address - for example `http://192.168.1.10:8123`) + +If you are using the built-in firewall, you must also add the port 8123 to allowed list. This can be found in "Control Panel -> Security" and then the Firewall tab. Click "Edit Rules" besides the Firewall Profile dropdown box. Create a new rule and select "Custom" for Ports and add 8123. Edit Source IP if you like or leave it at default "All". Action should stay at "Allow". + +To use a Z-Wave USB stick for Z-Wave control, the HA Docker container needs extra configuration to access to the USB stick. While there are multiple ways to do this, the least privileged way of granting access can only be performed via the Terminal, at the time of writing. See this page for configuring Terminal acces to your Synology NAS: @@ -99,7 +110,7 @@ Adjust the following Terminal command as follows : - Replace `/PATH_TO_YOUR_CONFIG` points at the folder where you want to store your configuration - Replace `/PATH_TO_YOUR_USB_STICK` matches the path for your USB stick (e.g., `/dev/ttyACM0` for most Synology users) -- Replace "Australia/Melbourne" with [your timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) +- Replace "Australia/Melbourne" with [your timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) Run it in Terminal. @@ -111,41 +122,44 @@ Complete the remainder of the Z-Wave configuration by [following the instruction Remark: to update your Home Assistant on your Docker within Synology NAS, you just have to do the following: -* Go to the Docker-app and move to "Registry"-section -* Find "homeassistant/home-assistant" within registry and click on "Download". Choose the "latest" tag, this will overwrite your current image to the latest version. -* Wait until the system-message/-notification comes up, that the download is finished (there is no progress bar) -* Move to "Container"-section -* Stop your container if it's running -* Right-click on it and select "Action"->"Clear". You won't lose any data, as all files are stored in your config-directory -* Start the container again - it will then boot up with the new Home Assistant image +- Go to the Docker-app and move to "Registry"-section +- Find "homeassistant/home-assistant" within registry and click on "Download". Choose the "stable" tag. +- Wait until the system-message/-notification comes up, that the download is finished (there is no progress bar) +- Move to "Container"-section +- Stop your container if it's running +- Right-click on it and select "Action"->"Clear". You won't lose any data, as all files are stored in your configuration-directory +- Start the container again - it will then boot up with the new Home Assistant image Remark: to restart your Home Assistant within Synology NAS, you just have to do the following: -* Go to the Docker-app and move to "Container"-section -* Right-click on it and select "Action"->"Restart". + +- Go to the Docker-app and move to "Container"-section +- Right-click on it and select "Action"->"Restart".
-If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assistant on Synology Docker these instructions do not correctly configure the container to access the USB devices. To configure these devices on your Synology Docker Home Assistant you can follow the instructions provided here by Phil Hawthorne. + +If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assistant on Synology Docker these instructions do not correctly configure the container to access the USB devices. To configure these devices on your Synology Docker Home Assistant you can follow the instructions provided [here](https://philhawthorne.com/installing-home-assistant-io-on-a-synology-diskstation-nas/) by Phil Hawthorne. +
### QNAP NAS -As QNAP within QTS now supports Docker (with a neat UI), you can simply install Home Assistant using docker without the need for command-line. For details about the package (including compatibility-information, if your NAS is supported), see https://www.qnap.com/solution/container_station/en/index.php +As QNAP within QTS now supports Docker (with a neat UI), you can simply install Home Assistant using Docker without the need for command-line. For details about the package (including compatibility-information, if your NAS is supported), see The steps would be: - - Install "Container Station" package on your Qnap NAS - - Launch Container Station and move to "Create Container"-section - - Search image "homeassistant/home-assistant" with Docker hub and click on "Install" - Make attention to CPU architecture of your NAS. For ARM CPU types the correct image is "homeassistant/armhf-homeassistant" - - Choose "latest" version and click next - - Choose a container-name you want (e.g., "homeassistant") - - Click on "Advanced Settings" - - Within "Shared Folders" click on "Volume from host" > "Add" and choose either an existing folder or add a new folder. The "mount point has to be `/config`, so that Home Assistant will use it for the configuration and logs. - - Within "Network" and select Network Mode to "Host" - - To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) - - Click on "Create" - - Wait for some time until your NAS has created the container - - Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Qnap NAS IP address - for example `http://192.xxx.xxx.xxx:8123`) +- Install "Container Station" package on your Qnap NAS +- Launch Container Station and move to "Create Container"-section +- Search image "homeassistant/home-assistant" with Docker Hub and click on "Install" + Make attention to CPU architecture of your NAS. For ARM CPU types the correct image is "homeassistant/armhf-homeassistant" +- Choose "stable" version and click next +- Choose a container-name you want (e.g., "homeassistant") +- Click on "Advanced Settings" +- Within "Shared Folders" click on "Volume from host" > "Add" and choose either an existing folder or add a new folder. The "mount point has to be `/config`, so that Home Assistant will use it for the configuration and logs. +- Within "Network" and select Network Mode to "Host" +- To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) +- Click on "Create" +- Wait for some time until your NAS has created the container +- Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Qnap NAS IP address - for example `http://192.xxx.xxx.xxx:8123`) Remark: To update your Home Assistant on your Docker within Qnap NAS, you just remove container and image and do steps again (Don't remove "config" folder). @@ -153,38 +167,38 @@ If you want to use a USB Bluetooth adapter or Z-Wave USB stick with Home Assista #### Z-Wave - - Connect to your NAS over SSH - - Load cdc-acm kernel module(when nas restart need to run this command) - `insmod /usr/local/modules/cdc-acm.ko` - - Find USB devices attached. Type command: - `ls /dev/tty*` - The above command should show you any USB devices plugged into your NAS. If you have more than one, you may get multiple items returned. Like : `ttyACM0` - - - Run Docker command: - `docker run --init --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London --device /dev/ttyACM0 homeassistant/home-assistant:stable` - - `-v` is your config path - `-e` is set timezone - - - Edit `configuration.yaml` +- Connect to your NAS over SSH +- Load cdc-acm kernel module(when NAS restart need to run this command) + `insmod /usr/local/modules/cdc-acm.ko` +- Find USB devices attached. Type command: + `ls /dev/tty*` + The above command should show you any USB devices plugged into your NAS. If you have more than one, you may get multiple items returned. Like : `ttyACM0` + +- Run Docker command: + `docker run --init --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London --device /dev/ttyACM0 homeassistant/home-assistant:stable` + + `-v` is your configuration path + `-e` is set timezone + +- Edit `configuration.yaml` ```yaml zwave: usb_path: /dev/ttyACM0 ``` -That will tell Home Assistant where to look for our Z-wave radio. +That will tell Home Assistant where to look for our Z-Wave radio. #### Bluetooth - - Connect to your NAS over SSH - - Run Docker command: - `docker run --init --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London -v /dev/bus/usb:/dev/bus/usb -v /var/run/dbus:/var/run/dbus homeassistant/home-assistant:stable` - - First `-v` is your config path - `-e` is set timezone - - - Edit the `configuration.yaml` file +- Connect to your NAS over SSH +- Run Docker command: + `docker run --init --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London -v /dev/bus/usb:/dev/bus/usb -v /var/run/dbus:/var/run/dbus homeassistant/home-assistant:stable` + + First `-v` is your configuration path + `-e` is set timezone + +- Edit the `configuration.yaml` file ```yaml device_tracker: @@ -200,7 +214,7 @@ If you change the configuration you have to restart the server. To do that you h ## Docker Compose -As the docker command becomes more complex, switching to `docker-compose` can be preferable and support automatically restarting on failure or system restart. Create a `docker-compose.yml` file: +As the Docker command becomes more complex, switching to `docker-compose` can be preferable and support automatically restarting on failure or system restart. Create a `docker-compose.yml` file: ```yaml version: '3' @@ -219,18 +233,18 @@ As the docker command becomes more complex, switching to `docker-compose` can be Then start the container with: ```bash -$ docker-compose up -d +docker-compose up -d ``` To restart Home Assistant when you have changed configuration: ```bash -$ docker-compose restart +docker-compose restart ``` ## Exposing Devices -In order to use Z-Wave, Zigbee or other integrations that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your docker command: +In order to use Z-Wave, Zigbee or other integrations that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your Docker command: ```bash $ docker run --init -d --name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config \ @@ -257,3 +271,9 @@ or in a `docker-compose.yml` file: restart: always network_mode: host ``` + +
+ +On Mac, USB devices are [not passed through](https://github.com/docker/for-mac/issues/900) by default. Follow the instructions in [Using USB with Docker for Mac](https://dev.to/rubberduck/using-usb-with-docker-for-mac-3fdd) by Christopher McClellan if your device is not showing up. + +
diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index 0b6c0c362acc..86b41b505aed 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -8,27 +8,25 @@ description: "Installation of Home Assistant on your FreeNAS." This has been tested on FreeNAS 11.2 and should also work on FreeBSD 11.x as well. These instructions assume you already have a running and accessible jail. For more information on creating a jail read the official FreeNAS User Guide regarding [Jails](https://www.ixsystems.com/documentation/freenas/11.2/jails.html). Once you have the jail available, follow the steps below. Directories used follow standard BSD conventions but can be adjusted as you wish. Enter the Home Assistant jail. If you don't know which name you have given the jail, you can use the `iocage list` command to check. + ```bash # If the jail is called 'HomeAssistant' iocage exec HomeAssistant ``` -Create the user and group that Home Assistant will run as. The user/group ID of `8123` can be replaced if this is already in use in your environment. +Install the suggested packages: ```bash -pw groupadd -n homeassistant -g 8123 -echo 'homeassistant:8123:8123::::::/bin/csh:' | adduser -f - +pkg update +pkg upgrade +pkg install -y autoconf bash ca_root_nss gmake pkgconf python37 py37-sqlite3 ``` -Install the necessary Python packages and virtualenv: +Create the user and group that Home Assistant will run as. The user/group ID of `8123` can be replaced if this is already in use in your environment. ```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 +pw groupadd -n homeassistant -g 8123 +echo 'homeassistant:8123:8123::::::/usr/local/bin/bash:' | adduser -f - ``` Create the installation directory: @@ -38,13 +36,14 @@ mkdir -p /usr/local/share/homeassistant chown -R homeassistant:homeassistant /usr/local/share/homeassistant ``` -Install Home Assistant itself: +Create the virtualenv and install Home Assistant itself: ```bash su homeassistant cd /usr/local/share/homeassistant -virtualenv -p python3.7 . -source ./bin/activate.csh +python3.7 -m venv . +source ./bin/activate +pip3 install --upgrade pip pip3 install homeassistant ``` @@ -82,29 +81,37 @@ vi /usr/local/etc/rc.d/homeassistant ```bash #!/bin/sh # -# Based upon work by tprelog at https://www.ixsystems.com/community/resources/fn-11-2-iocage-home-assistant-jail-plugins-for-node-red-mosquitto-amazon-dash-tasmoadmin.102/ +# Based upon work by tprelog at https://github.com/tprelog/iocage-homeassistant/blob/11.3-RELEASE/overlay/usr/local/etc/rc.d/homeassistant # # PROVIDE: homeassistant # REQUIRE: LOGIN # KEYWORD: shutdown # -# homeassistant_enable: Set to YES to enable the homeassistant service. -# Default: NO -# homeassistant_user: The user account used to run the homeassistant daemon. -# This is optional, however do not specifically set this to an -# empty string as this will cause the daemon to run as root. -# Default: homeassistant -# homeassistant_group: The group account used to run the homeassistant daemon. -# This is optional, however do not specifically set this to an -# 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: /home/homeassistant/.homeassistant -# homeassistant_install_dir: Directory where Home Assistant is installed. -# Default: /usr/local/share/homeassistant +# homeassistant_user: The user account used to run the homeassistant daemon. +# This is optional, however do not specifically set this to an +# empty string as this will cause the daemon to run as root. +# Default: homeassistant +# homeassistant_group: The group account used to run the homeassistant daemon. +# This is optional, however do not specifically set this to an +# empty string as this will cause the daemon to run with group wheel. +# Default: homeassistant # -# sysrc homeassistant_enable=yes -# service homeassistant start +# homeassistant_venv: Directory where homeassistant virtualenv is installed. +# Default: "/usr/local/share/homeassistant" +# Change: `sysrc homeassistant_venv="/srv/homeassistant"` +# UnChange: `sysrc -x homeassistant_venv` +# +# homeassistant_config_dir: Directory where homeassistant config is located. +# Default: "/home/homeassistant/.homeassistant" +# Change: `sysrc homeassistant_config_dir="/home/hass/homeassistant"` +# UnChange: `sysrc -x homeassistant_config_dir` + +# ------------------------------------------------------- +# Copy this file to '/usr/local/etc/rc.d/homeassistant' +# `chmod +x /usr/local/etc/rc.d/homeassistant` +# `sysrc homeassistant_enable=yes` +# `service homeassistant start` +# ------------------------------------------------------- . /etc/rc.subr name=homeassistant @@ -112,43 +119,85 @@ rcvar=${name}_enable pidfile_child="/var/run/${name}.pid" pidfile="/var/run/${name}_daemon.pid" +logfile="/var/log/${name}.log" load_rc_config ${name} : ${homeassistant_enable:="NO"} : ${homeassistant_user:="homeassistant"} : ${homeassistant_group:="homeassistant"} : ${homeassistant_config_dir:="/home/homeassistant/.homeassistant"} -: ${homeassistant_install_dir:="/usr/local/share/homeassistant"} +: ${homeassistant_venv:="/usr/local/share/homeassistant"} command="/usr/sbin/daemon" -start_precmd=${name}_precmd -homeassistant_precmd() -{ - rc_flags="-f -P ${pidfile} -p ${pidfile_child} ${homeassistant_install_dir}/bin/hass --config ${homeassistant_config_dir} ${rc_flags}" - - if [ ! -e "${pidfile_child}" ]; then - install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${pidfile_child}"; - fi - - if [ ! -e "${pidfile}" ]; then - install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${pidfile}"; - fi +extra_commands="check_config restart test upgrade" +start_precmd=${name}_precmd +homeassistant_precmd() { + rc_flags="-f -o ${logfile} -P ${pidfile} -p ${pidfile_child} ${homeassistant_venv}/bin/hass --config ${homeassistant_config_dir} ${rc_flags}" + [ ! -e "${pidfile_child}" ] && install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${pidfile_child}" + [ ! -e "${pidfile}" ] && install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${pidfile}" + [ -e "${logfile}" ] && rm -f -- "${logfile}" + install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${logfile}" if [ ! -d "${homeassistant_config_dir}" ]; then - install -d -g ${homeassistant_group} -o ${homeassistant_user} -- "${homeassistant_config_dir}"; + install -d -g ${homeassistant_group} -o ${homeassistant_user} -m 775 -- "${homeassistant_config_dir}" fi - - echo "Performing check on Home Assistant configuration:" - eval "${homeassistant_install_dir}/bin/hass" --config "${homeassistant_config_dir}" --script check_config } stop_postcmd=${name}_postcmd -homeassistant_postcmd() -{ +homeassistant_postcmd() { rm -f -- "${pidfile}" rm -f -- "${pidfile_child}" } +upgrade_cmd="${name}_upgrade" +homeassistant_upgrade() { + service ${name} stop + su ${homeassistant_user} -c ' + source ${@}/bin/activate || exit 1 + pip3 install --upgrade homeassistant + deactivate + ' _ ${homeassistant_venv} || exit 1 + [ $? == 0 ] && homeassistant_check_config && service ${name} start +} + +check_config_cmd="${name}_check_config" +homeassistant_check_config() { + [ ! -e "${homeassistant_config_dir}/configuration.yaml" ] && return 0 + echo "Performing check on Home Assistant configuration:" + #eval "${homeassistant_venv}/bin/hass --config ${homeassistant_config_dir} --script check_config" + su ${homeassistant_user} -c ' + source ${1}/bin/activate || exit 2 + hass --config ${2} --script check_config || exit 3 + deactivate + ' _ ${homeassistant_venv} ${homeassistant_config_dir} +} + +restart_cmd="${name}_restart" +homeassistant_restart() { + homeassistant_check_config || exit 1 + echo "Restarting Home Assistant" + service ${name} stop + service ${name} start +} + +test_cmd="${name}_test" +homeassistant_test() { + echo -e "\nTesting virtualenv...\n" + [ ! -d "${homeassistant_venv}" ] && echo -e " NO DIRECTORY: ${homeassistant_venv}\n" && exit + [ ! -f "${homeassistant_venv}/bin/activate" ] && echo -e " NO FILE: ${homeassistant_venv}/bin/activate\n" && exit + + ## switch users / activate virtualenv / get version + su "${homeassistant_user}" -c ' + source ${1}/bin/activate || exit 2 + echo " $(python --version)" || exit 3 + echo " Home Assistant $(pip3 show homeassistant | grep Version | cut -d" " -f2)" || exit 4 + deactivate + ' _ ${homeassistant_venv} + + [ $? != 0 ] && echo "exit $?" +} + +load_rc_config ${name} run_rc_command "$1" ``` @@ -169,11 +218,11 @@ You can also restart the jail to ensure that Home Assistant starts on boot.
-USB Z-wave sticks may give `dmesg` warnings similar to "data interface 1, has no CM over data, has no break". This doesn't impact the function of the Z-Wave stick in Home Assistant. Just make sure the proper `/dev/cu*` is used in the Home Assistant `configuration.yaml` file. +USB Z-Wave sticks may give `dmesg` warnings similar to "data interface 1, has no CM over data, has no break". This doesn't impact the function of the Z-Wave stick in Home Assistant. Just make sure the proper `/dev/cu*` is used in the Home Assistant `configuration.yaml` file.
-# Adding support for Z-wave stick +## Adding support for Z-Wave stick The following two packages need to be installed in the jail @@ -182,57 +231,73 @@ pkg install gmake pkg install libudev-devd ``` -Then you can install the zwave package +Then you can install the Z-Wave package + ```bash -pip3 install homeassistant-pyozw==0.1.4 +su homeassistant +cd /usr/local/share/homeassistant +source ./bin/activate.csh +pip3 install homeassistant-pyozw==0.1.7 +deactivate +exit ``` -Stop the hass Jail +Stop the Home Assistant Jail + ```bash -sudo iocage stop hass +sudo iocage stop HomeAssistant ``` -Edit the devfs rules on the Freenas Host +Edit the devfs rules on the FreenNAS Host + ```bash vi /etc/devfs.rules ``` -Add the following lines +Add the following lines + ```bash -[devfsrules_jail_allow_usb=7] -add path 'cu\*' mode 0660 group 8123 unhide +[devfsrules_jail_allow_usb=7] +add path 'cu\*' mode 0660 group 8123 unhide ``` Reload devfs + ```bash sudo service devfs restart ``` -Edit the ruleset used by the jail in the Freenas GUI by going to Jails -> hass -> Edit -> Jail Properties -> devfs_ruleset +Edit the ruleset used by the jail in the FreeNAS GUI by going to Jails -> `hass` -> Edit -> Jail Properties -> devfs_ruleset Set it to 7 -Start the hass jail +Start the Home Assistant jail + ```bash -sudo iocage start hass +sudo iocage start HomeAssistant ``` -Connect to the hass jail and verify that you see the modem devices +Connect to the Home Assistant jail and verify that you see the modem devices + ```bash -sudo iocage console hass +sudo iocage console HomeAssistant ``` ```bash ls /dev/cu* ``` -This should ouput the following + +This should output the following + ```bash /dev/cuau0 /dev/cuaU0 ``` -Add the zwave config to your `configuration.yaml` and restart HA +Add the Z-Wave configuration to your `configuration.yaml` and restart Home Assistant + ```bash vi /home/homeassistant/.homeassistant/configuration.yaml ``` + ```yaml zwave: usb_path: /dev/cuaU0 @@ -243,8 +308,8 @@ zwave: service homeassistant restart ``` +## Updating -# Updating Before updating, read the changelog to see what has changed and how it affects your Home Assistant instance. Enter the jail using `iocage exec `. Stop the Home Assistant service: ```bash @@ -256,7 +321,7 @@ Then, enter the `venv`: ```bash su homeassistant cd /usr/local/share/homeassistant -source ./bin/activate.csh +source ./bin/activate ``` Upgrade Home Assistant: diff --git a/source/_docs/installation/python.markdown b/source/_docs/installation/python.markdown index ecb670566763..367cf4e6d0f9 100644 --- a/source/_docs/installation/python.markdown +++ b/source/_docs/installation/python.markdown @@ -6,7 +6,7 @@ redirect_from: /getting-started/installation-python/
-If you're running a Linux-based platform, we strongly recommend you follow the instructions for a [virtual environment](/docs/installation/virtualenv/) instead. If you're running on Windows then [see here](/docs/installation/windows/#installing-in-a-python-virtual-environment) instead. +If you're running a Linux-based platform, we strongly recommend you follow the instructions for a [virtual environment](/docs/installation/virtualenv/) instead.
diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown index c1799b537443..c25e90461a12 100644 --- a/source/_docs/installation/raspberry-pi.markdown +++ b/source/_docs/installation/raspberry-pi.markdown @@ -67,22 +67,22 @@ cd /srv/homeassistant python3 -m venv . source bin/activate ``` -Once you have activated the virtual environment (notice the prompt change) you will need to run the following command to install a required python package. +Once you have activated the virtual environment (notice the prompt change to `(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $`) you will need to run the following command to install a required Python package. ```bash -(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ python3 -m pip install wheel +python3 -m pip install wheel ``` -Once you have installed the required python package it is now time to install Home Assistant! +Once you have installed the required Python package it is now time to install Home Assistant! ```bash -(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant +pip3 install homeassistant ``` Start Home Assistant for the first time. This will complete the installation for you, automatically creating the `.homeassistant` configuration directory in the `/home/homeassistant` directory, and installing any basic dependencies. ```bash -(homeassistant) $ hass +hass ``` You can now reach your installation on your Raspberry Pi over the web interface on `http://ipaddress:8123`. diff --git a/source/_docs/installation/synology.markdown b/source/_docs/installation/synology.markdown index cb39fdbf1753..67ebae4f9954 100644 --- a/source/_docs/installation/synology.markdown +++ b/source/_docs/installation/synology.markdown @@ -10,35 +10,40 @@ Synology only provide Python 3.5.1, which is not compatible with Home Assistant
-There are 2 alternatives, when using Home Assistant on Synology NAS: -1. using Docker -2. directly running on DSM +There are 3 alternatives, when using Home Assistant on Synology NAS: +1. Using Home Assistant Core on Docker +2. Directly running Home Assistant Core on DSM +3. Using the Home Assistant a VM (if you have an Intel based Synology) -Option 1 is described on the [Docker installation page](/docs/installation/docker/), whereas Option 2 is described below. +Option 1 is described on the [Docker installation page](/docs/installation/docker/). +Option 3 uses the Synology Based Virtual Machine Manager. You can import the VDI image to be found at the [Home Assistant installation page](/hassio/installation/). Download the image and add it to the image store. The go to "Virtual Machine" in the interface and create a new VM with the image you just added. + +The main benefit from this method is that you can assign Home Assistant its own IP number, so there is no risk regarding TCP/UDP port conflicts. USB dongles an be connected to the VM without the need to install a driver in DSM. + +Option 2 is described below. The following configuration has been tested on Synology 413j running DSM 6.0-7321 Update 1. Running these commands will: - - Install Home Assistant - - Enable Home Assistant to be launched on `http://localhost:8123` +- Install Home Assistant +- Enable Home Assistant to be launched on `http://localhost:8123` Using the Synology webadmin: - - Install python3 using the Synology Package Center - - Create homeassistant user and add to the "users" group +- Install python3 using the Synology Package Center +- Create a `homeassistant` user and add to the "users" group -SSH onto your synology & login as admin or root +SSH onto your Synology & login as admin or root - - Log in with your own administrator account - - Switch to root using: +- Log in with your own administrator account +- Switch to root using: ```bash $ sudo -i ``` - Check the path to python3 (assumed to be /volume1/@appstore/py3k/usr/local/bin) ```bash @@ -51,13 +56,13 @@ Install PIP (Python's package management system) # ./python3 -m ensurepip ``` -Use PIP to install Homeassistant package 0.64.3 +Use PIP to install the Home Assistant package 0.64.3 ```bash # ./python3 -m pip install homeassistant==0.64.3 ``` -Create homeassistant config directory & switch to it +Create a Home Assistant configuration directory & switch to it ```bash # mkdir /volume1/homeassistant @@ -65,6 +70,7 @@ Create homeassistant config directory & switch to it # chmod 755 /volume1/homeassistant # cd /volume1/homeassistant ``` + Hint: alternatively you can also create a "Shared Folder" via Synology WebUI (e.g., via "File Station") - this has the advantage that the folder is visible via "File Station". Create hass-daemon file using the following code (edit the variables in uppercase if necessary) @@ -174,14 +180,14 @@ esac ``` -Create links to python folders to make things easier in the future: +Create links to Python folders to make things easier in the future: ```bash # ln -s /volume1/@appstore/py3k/usr/local/bin/python3 python3 # ln -s /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/homeassistant homeassistant ``` -Set the owner and permissions on your config folder +Set the owner and permissions on your configuration folder ```bash # chown -R homeassistant:users /volume1/homeassistant @@ -207,7 +213,7 @@ Update your firewall (if it is turned on the Synology device): - Click on OK again -Copy your configuration.yaml file into the config folder +Copy your `configuration.yaml` file into the configuration folder That's it... you're all set to go Here are some useful commands: @@ -235,4 +241,3 @@ $ sudo /volume1/homeassistant/hass-daemon restart ```bash $ /volume1/@appstore/py3k/usr/local/bin/python3 -m pip install --upgrade homeassistant ``` - diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown index ff13b539ebf3..716da0e55bf3 100644 --- a/source/_docs/installation/updating.markdown +++ b/source/_docs/installation/updating.markdown @@ -6,38 +6,37 @@ redirect_from: /getting-started/updating/
-The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/) or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant). +The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install: [Home Assistant](/hassio/) or [Home Assistant Core](/docs/installation/virtualenv/#upgrading-home-assistant).
-Check what's new in the latest version and potentially impacts your system in [Home Assistant release notes](https://github.com/home-assistant/home-assistant/releases). It is good practice to review these release notes and pay close attention to the **Breaking Changes** that are listed there. If you haven't done an update for a while, you should also check previous release notes as they can also contain relevant **Breaking Changes**. **Breaking Changes** may require configuration updates for your components. If you missed this and Home Assistant refuses to start, check the log file in the [configuration](/docs/configuration/) directory, e.g., `.homeassistant/home-assistant.log`, for details about broken components. +Check what's new in the latest version and potentially impacts your system in the [Home Assistant release notes](https://github.com/home-assistant/home-assistant/releases). It is good practice to review these release notes and pay close attention to the **Breaking Changes** that are listed there. If you haven't done an update for a while, you should also check previous release notes as they can also contain relevant **Breaking Changes**. These **Breaking Changes** may require configuration updates for your components. If you missed this and Home Assistant refuses to start, check the log file in the [configuration](/docs/configuration/) directory, e.g., `.homeassistant/home-assistant.log`, for details about broken components.
-To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [Hass.io](/hassio/) or [Virtualenv](/docs/installation/virtualenv). +To avoid permission errors, the upgrade must be run as the same user as was used during the initial installation, again review the documentation specific to your install [Home Assistant](/hassio/) or [Home Assistant Core](/docs/installation/virtualenv).
The default way to update Home Assistant to the latest release, when available, is: ```bash -$ pip3 install --upgrade homeassistant +pip3 install --upgrade homeassistant ``` For a Docker container, simply pull the latest one: ```bash -$ sudo docker pull homeassistant/home-assistant:latest +sudo docker pull homeassistant/home-assistant:latest ``` For a Raspberry Pi Docker container, simply pull the latest one: ```bash -$ sudo docker pull homeassistant/raspberrypi3-homeassistant:latest +sudo docker pull homeassistant/raspberrypi3-homeassistant:latest ``` - -After updating, you must start/restart Home Assistant for the changes to take effect. This means that you will have to restart `hass` itself or the [autostarting](/docs/autostart/) daemon (if applicable). Startup can take considerable amount of time (i.e. minutes) depending on your device. This is because all requirements are updated as well. +After updating, you must start/restart Home Assistant for the changes to take effect. This means that you will have to restart `hass` itself or the [autostarting](/docs/autostart/) daemon (if applicable). Startup can take a considerable amount of time (i.e., minutes) depending on your device. This is because all requirements are updated as well. [BRUH automation](https://www.bruhautomation.io/) has created [a tutorial video](https://www.youtube.com/watch?v=tuG2rs1Cl2Y) explaining how to upgrade Home Assistant. @@ -46,15 +45,15 @@ After updating, you must start/restart Home Assistant for the changes to take ef In the event that a Home Assistant version doesn't play well with your hardware setup, you can downgrade to a previous release: ```bash -$ pip3 install homeassistant==0.XX.X +pip3 install homeassistant==0.XX.X ``` #### Run the beta version -If you would like to test next release before anyone else, you can install the beta version released every two weeks: +If you would like to test the next release before anyone else, you can install the beta version released every two weeks: ```bash -$ pip3 install --pre --upgrade homeassistant +pip3 install --pre --upgrade homeassistant ``` #### Run the development version @@ -69,11 +68,11 @@ If you want to stay on the bleeding-edge Home Assistant development branch, you $ pip3 install --upgrade git+git://github.com/home-assistant/home-assistant.git@dev ``` -### Update Hass.io installation +### Update Home Assistant installation -Best practice for updating a Hass.io installation: +Best practice for updating a Home Assistant installation: -1. Backup your installation, using the snapshot functionality Hass.io offers. +1. Backup your installation, using the snapshot functionality Home Assistant offers. 2. Check the release notes for breaking changes on [Home Assistant release notes](https://github.com/home-assistant/home-assistant/releases). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f`) and search for **Breaking Changes**. 3. Check your configuration using the [Check Home Assistant configuration](/addons/check_config/) add-on. 4. If the check passes, you can safely update. If not, update your configuration accordingly. diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index c3b46fdb6c26..1d19fca3d7d0 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -12,6 +12,8 @@ It's recommended when installing Python packages that you use a [virtual environ This is a generic guide for running Home Assistant under Python. We recommend to use [our recommended installation guides](/docs/installation/#recommended). The steps below may be shorter but some users find difficulty when applying updates and may run into issues. +Before you begin the guide below, ensure that you have a *so-called standard* build environment that includes things like `make`, `gcc`, `python3`, including Python 3 `setuptools` and `pip` modules. Less obvious is the need to install `openssl-dev` (for opensslv.h) and `libffi-dev` (for cffi.h) for things to build later on. + {% comment %} @@ -96,7 +98,7 @@ pip3 install --upgrade git+git://github.com/home-assistant/home-assistant.git@de - In the future, if you want to start Home Assistant manually again, follow step 2, 3 and 5. - It's recommended to run Home Assistant as a dedicated user. -- If you want Home Assistant to automatically start at boot, check the [autostart docs](/docs/autostart/) +- If you want Home Assistant to automatically start at boot, check the [autostart documentation](/docs/autostart/)
diff --git a/source/_docs/installation/windows.markdown b/source/_docs/installation/windows.markdown deleted file mode 100644 index 0d0095d63b76..000000000000 --- a/source/_docs/installation/windows.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Installation on a Windows system" -description: "Instructions to install Home Assistant on a Microsoft Windows system." ---- - -To run Home Assistant on Microsoft Windows installation you need to install Python first. Download Python (the latest version of Python 3.6 is recommended) for [https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) and follow the instructions of the installer. - -
-There may be alpha or beta releases of Python listed on that download page (marked by the letters `a` or `b` in the version number. Do not use these versions. -
- -If you use your machine for something other than Home Assistant, you should install it in a [Python virtual environment](#installing-in-a-python-virtual-environment). - -Start - -```bash -C:\...\> pip3 install homeassistant -C:\...\> py -m homeassistant --open-ui -``` - -For autostarting Home Assistant please refer to this [guide](https://community.home-assistant.io/t/autostart-on-windows/3504). - -Check this [video](https://www.youtube.com/watch?v=X27eVvuqwnY) for the installation on Windows 10. - -
-The Microsoft Windows platform is not a primary target to install Home Assistant. Also, not all tools and third-party modules will work. -
- -## Updating - -To update Home Assistant, stop it and then run: - -```bash -C:\...\> pip3 install --upgrade homeassistant -``` - -Then start Home Assistant. - -## Installing in a Python virtual environment - -Open `cmd.exe` and paste the following commands (one at the time): - -```bash -C:\...\> py -m venv homeassistant -C:\...\> cd homeassistant -C:\...\> Scripts\activate.bat -C:\...\> py -m pip install wheel setuptools pip -C:\...\> py -m pip install homeassistant -C:\...\> hass -``` - -## Upgrading in a Python virtual environment - -To update Home Assistant, stop it and then open `cmd.exe` and paste the following commands (one at the time): - -```bash -C:\...\> cd homeassistant -C:\...\> Scripts\activate.bat -C:\...\> py -m pip install --upgrade homeassistant -``` -Then start Home Assistant. diff --git a/source/_docs/locked_out.md b/source/_docs/locked_out.md new file mode 100644 index 000000000000..bf0d7317d77c --- /dev/null +++ b/source/_docs/locked_out.md @@ -0,0 +1,66 @@ +--- +title: "I'm Locked Out!" +description: "Options for regaining access" +--- + +The sections below deal with recovering from a situation where you are not able to sign in, +or need to recover your data. + +## Forgot Password + +### Home Assistant (including Supervised) + +If you are still logged in to the web interface with your user, then you are in luck. Add a new user as an administrator and give the new user a password you can remember. Then log out, and log in with this new user. You may then delete the old user account. But this way, your configuration will remain, and you don't have to do a new onboarding process. + +If you’ve forgotten your user, then deleting the files mentioned above will be necessary to start a new onboarding process. + +If you know the user, but not the password and you can access the [Home Assistant console](https://www.home-assistant.io/hassio/commandline/) and use the command below: + +Connect a keyboard and monitor to your device. + +`ha auth reset --username "" --password ""` + +### Home Assistant Core + +While you should hopefully be storing your passwords in a password manager, if you lose the password associated with the owner account the only way to resolve this is to delete *all* the authentication data. You do this by shutting down Home Assistant and deleting the following files from the `.storage/` folder in your [configuration folder](/docs/configuration/): + +- `auth` +- `auth_provider.homeassistant` +- `onboarding` +- `hassio` +- `cloud` + +## Recovering Data for Home Assistant (including Supervised) + +Unless your SD card/data is corrupted, you can still get to your files or troubleshoot further. +There are a few routes: + +- Connect a USB keyboard and HDMI monitor directly to the Raspberry Pi. +- Remove the SD and access the files from another machine (preferably one running Linux). + +## Connect directly + +If you’re using a Raspberry Pi, you're likely going to have to pull the power in order to get your monitor recognized at boot. Pulling power has a risk of corrupting the SD, but you may not have another option. Most standard USB keyboards should be recognized easily. + +Once you're connected, you'll see a running dmesg log. Hit the enter key to interrupt the log. +Sign in as "root". There is no password. + +You will then be at the Home Assistant CLI, where you can run the custom commands. These are the same as you would run using the SSH add-on but without using `ha` in front of it. For example: + +- `core logs` for Home Assistant Core log +- `supervisor logs` for supervisor logs +- `host reboot` to reboot the host +- `dns logs` for checking DNS +- etc (typing `help` will show more) + +## Accessing Files from the SD/HDD + +### Remove the SD and access the files from another computer + +The files are on an EXT4 partition (`hassos-data`) and the path is `/mnt/data/supervisor`. +These are easily accessed using another Linux machine with EXT support. + +For Windows or macOS you will need third party software. Below are some options. + +- Windows: (read-only access to the SD) +- Mac: diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index 553fcbb36dc6..9f5079e66cf9 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -1,15 +1,18 @@ --- -title: "MQTT Brokers" -description: "Instructions on how to setup MQTT brokers for Home Assistant." +title: "MQTT Broker" +description: "Instructions on how to setup a MQTT broker for Home Assistant." logo: mqtt.png --- -The MQTT integration needs you to run an MQTT broker for Home Assistant to connect to. There are four options, each with various degrees of ease of setup and privacy. +The MQTT integration needs you to run an MQTT broker for Home Assistant to connect to. ### Run your own -This is the most private option, but it requires a little bit of work to setup. There are multiple free and open-source brokers to pick from: e.g., [Mosquitto](http://mosquitto.org/), [EMQ](https://github.com/emqx/emqx) or [Mosca](http://www.mosca.io/). -For hass.io users, the recommended setup method is to use the [Mosquitto MQTT broker addon](/addons/mosquitto). +This is the most private option, is running your own MQTT broker. + +The recommended setup method is to use the [Mosquitto MQTT broker add-on](/addons/mosquitto). + +## Configuration ```yaml # Example configuration.yaml entry @@ -48,7 +51,7 @@ protocol: type: string certificate: required: false - description: Path to the certificate file, e.g., `/home/user/.homeassistant/server.crt`. + description: Path to the certificate file, e.g., `/ssl/server.crt`. type: string tls_insecure: required: false @@ -61,26 +64,6 @@ tls_version: type: string {% endconfiguration %} -
- -There is an issue with the Mosquitto package included in Ubuntu 14.04 LTS. Specify `protocol: 3.1` in your MQTT configuration to work around this issue. - -If you get this error `AttributeError: module 'ssl' has no attribute 'PROTOCOL_TLS'` then you need to set `tls_version: '1.2'`. - -
- -
- -If you are running a Mosquitto instance on the same server as Home Assistant then you must ensure that the Mosquitto service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) then you should edit the file `/etc/systemd/system/home-assistant@homeassistant.service` as `root` (e.g., `sudo nano /etc/systemd/system/home-assistant@homeassistant.service`) and add the Mosquitto service: - -```txt -[Unit] -Description=Home Assistant -After=network.target mosquitto.service -``` - -
-
If you are running a Mosquitto instance on a different server with proper SSL encryption using a service like Let's Encrypt you may have to set the certificate to the operating systems own `.crt` certificates file. In the instance of Ubuntu this would be `certificate: /etc/ssl/certs/ca-certificates.crt` @@ -142,14 +125,14 @@ If you experience an error message like `Failed to connect due to exception: [SS Home Assistant contains an embedded MQTT broker called [HBMQTT](https://pypi.python.org/pypi/hbmqtt). If you don't have an MQTT broker, you can configure this one to be used. If configured, Home Assistant will automatically connect to it. -| Setting | Value | -| -------------- | ----- | -| Host | localhost | -| Port | 1883 | -| Protocol | 3.1.1 | -| User | homeassistant | -| Password | _password set under mqtt settings_ | -| Websocket port | 8080 | +| Setting | Value | +| -------------- | ---------------------------------- | +| Host | localhost | +| Port | 1883 | +| Protocol | 3.1.1 | +| User | `homeassistant` | +| Password | _password set under MQTT settings_ | +| Websocket port | 8080 | ```yaml # Example configuration.yaml entry @@ -161,10 +144,6 @@ mqtt: As of release 0.92, the embedded broker has been marked as deprecated. This means bugs may not be fixed, and the functionality may be removed in a future release.
-
-Before release 0.76, the embedded broker would use your API password as a password to the MQTT user. This is no longer the case. -
-
There is [an issue](https://github.com/beerfactory/hbmqtt/issues/62) with the HBMQTT broker and the WebSocket connection that is causing a memory leak. If you experience this issue, consider using another broker like Mosquitto. diff --git a/source/_docs/mqtt/certificate.markdown b/source/_docs/mqtt/certificate.markdown index 86225053aca9..a1dc43c41a6f 100644 --- a/source/_docs/mqtt/certificate.markdown +++ b/source/_docs/mqtt/certificate.markdown @@ -16,7 +16,7 @@ mqtt: {% configuration %} certificate: - description: "'auto' or the certificate authority certificate file that is to be treated as trusted by this client. To enable a secure (TLS) connection to your server you must define the 'certitificate' configuration parameter. 'auto' uses the certifite CAs bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem`." + description: "'auto' or the certificate authority certificate file that is to be treated as trusted by this client. To enable a secure (TLS) connection to your server you must define the 'certificate' configuration parameter. 'auto' uses the certifite CAs bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem`." required: false type: string client_key: diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index debd51fb9f20..cdee9b31d7e5 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -12,6 +12,7 @@ Supported by MQTT discovery: - [Binary sensors](/integrations/binary_sensor.mqtt/) - [Cameras](/integrations/camera.mqtt/) - [Covers](/integrations/cover.mqtt/) +- [Device Triggers](/integrations/device_trigger.mqtt/) - [Fans](/integrations/fan.mqtt/) - [HVACs](/integrations/climate.mqtt/) - [Lights](/integrations/light.mqtt/) @@ -55,13 +56,11 @@ The discovery topic need to follow a specific format: ``` - ``: One of the supported MQTT components, eg. `binary_sensor`. -- `` (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. -- ``: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. +- `` (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). +- ``: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. The ID of the device must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). The payload must be a JSON dictionary and will be checked like an entry in your `configuration.yaml` file if a new device is added. This means that missing variables will be filled with the platform's default values. All configuration variables which are *required* must be present in the initial payload send to `/config`. -If the integration is `alarm_control_panel`, `binary_sensor`, or `sensor` and the mandatory `state_topic` is not present in the payload, `state_topic` will be automatically set to //[/]/state. The automatic setting of `state_topic` is deprecated and may be removed in a future version of Home Assistant. - An empty payload will cause a previously discovered device to be deleted. The `` level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like `/+//+/set`. @@ -73,6 +72,9 @@ Configuration variable names in the discovery payload may be abbreviated to cons Supported abbreviations: ```txt + 'act_t': 'action_topic', + 'act_tpl': 'action_template', + 'atype': 'automation_type', 'aux_cmd_t': 'aux_command_topic', 'aux_stat_tpl': 'aux_state_template', 'aux_stat_t': 'aux_state_topic', @@ -86,18 +88,23 @@ Supported abbreviations: 'bri_stat_t': 'brightness_state_topic', 'bri_tpl': 'brightness_template', 'bri_val_tpl': 'brightness_value_template', + 'clr_temp_cmd_tpl': 'color_temp_command_template', 'bat_lev_t': 'battery_level_topic', 'bat_lev_tpl': 'battery_level_template', 'chrg_t': 'charging_topic', 'chrg_tpl': 'charging_template', 'clr_temp_cmd_t': 'color_temp_command_topic', 'clr_temp_stat_t': 'color_temp_state_topic', + 'clr_temp_tpl': 'color_temp_template', 'clr_temp_val_tpl': 'color_temp_value_template', 'cln_t': 'cleaning_topic', 'cln_tpl': 'cleaning_template', 'cmd_off_tpl': 'command_off_template', 'cmd_on_tpl': 'command_on_template', 'cmd_t': 'command_topic', + 'cmd_tpl': 'command_template', + 'cod_arm_req': 'code_arm_required', + 'cod_dis_req': 'code_disarm_required', 'curr_temp_t': 'current_temperature_topic', 'curr_temp_tpl': 'current_temperature_template', 'dev': 'device', @@ -109,6 +116,8 @@ Supported abbreviations: 'fanspd_t': 'fan_speed_topic', 'fanspd_tpl': 'fan_speed_template', 'fanspd_lst': 'fan_speed_list', + 'flsh_tlng': 'flash_time_long', + 'flsh_tsht': 'flash_time_short', 'fx_cmd_t': 'effect_command_topic', 'fx_list': 'effect_list', 'fx_stat_t': 'effect_state_topic', @@ -123,39 +132,61 @@ Supported abbreviations: 'hold_cmd_t': 'hold_command_topic', 'hold_stat_tpl': 'hold_state_template', 'hold_stat_t': 'hold_state_topic', + 'hs_cmd_t': 'hs_command_topic', + 'hs_stat_t': 'hs_state_topic', + 'hs_val_tpl': 'hs_value_template', 'ic': 'icon', 'init': 'initial', 'json_attr': 'json_attributes', 'json_attr_t': 'json_attributes_topic', + 'json_attr_tpl': 'json_attributes_template', 'max_temp': 'max_temp', 'min_temp': 'min_temp', 'mode_cmd_t': 'mode_command_topic', 'mode_stat_tpl': 'mode_state_template', 'mode_stat_t': 'mode_state_topic', 'name': 'name', + 'off_dly': 'off_delay', 'on_cmd_type': 'on_command_type', 'opt': 'optimistic', 'osc_cmd_t': 'oscillation_command_topic', 'osc_stat_t': 'oscillation_state_topic', 'osc_val_tpl': 'oscillation_value_template', + 'pl': 'payload', 'pl_arm_away': 'payload_arm_away', 'pl_arm_home': 'payload_arm_home', + 'pl_arm_nite': 'payload_arm_night', 'pl_avail': 'payload_available', + 'pl_cln_sp': 'payload_clean_spot', 'pl_cls': 'payload_close', 'pl_disarm': 'payload_disarm', 'pl_hi_spd': 'payload_high_speed', + 'pl_home': 'payload_home', 'pl_lock': 'payload_lock', + 'pl_loc': 'payload_locate', 'pl_lo_spd': 'payload_low_speed', 'pl_med_spd': 'payload_medium_speed', 'pl_not_avail': 'payload_not_available', + 'pl_not_home': 'payload_not_home', 'pl_off': 'payload_off', + 'pl_off_spd': 'payload_off_speed', 'pl_on': 'payload_on', 'pl_open': 'payload_open', 'pl_osc_off': 'payload_oscillation_off', 'pl_osc_on': 'payload_oscillation_on', + 'pl_paus': 'payload_pause', 'pl_stop': 'payload_stop', + 'pl_strt': 'payload_start', + 'pl_stpa': 'payload_start_pause', + 'pl_ret': 'payload_return_to_base', + 'pl_toff': 'payload_turn_off', + 'pl_ton': 'payload_turn_on', 'pl_unlk': 'payload_unlock', + 'pos_clsd': 'position_closed', + 'pos_open': 'position_open', 'pow_cmd_t': 'power_command_topic', + 'pow_stat_t': 'power_state_topic', + 'pow_stat_tpl': 'power_state_template', 'r_tpl': 'red_template', 'ret': 'retain', 'rgb_cmd_tpl': 'rgb_command_template', @@ -164,6 +195,7 @@ Supported abbreviations: 'rgb_val_tpl': 'rgb_value_template', 'send_cmd_t': 'send_command_topic', 'send_if_off': 'send_if_off', + 'set_fan_spd_t': 'set_fan_speed_topic', 'set_pos_tpl': 'set_position_template', 'set_pos_t': 'set_position_topic', 'pos_t': 'position_topic', @@ -171,18 +203,30 @@ Supported abbreviations: 'spd_stat_t': 'speed_state_topic', 'spd_val_tpl': 'speed_value_template', 'spds': 'speeds', + 'src_type': 'source_type', 'stat_clsd': 'state_closed', + 'stat_closing': 'state_closing', 'stat_off': 'state_off', 'stat_on': 'state_on', 'stat_open': 'state_open', + 'stat_opening': 'state_opening', + 'stat_locked': 'state_locked', + 'stat_unlocked': 'state_unlocked', 'stat_t': 'state_topic', 'stat_tpl': 'state_template', 'stat_val_tpl': 'state_value_template', + 'stype': 'subtype', 'sup_feat': 'supported_features', 'swing_mode_cmd_t': 'swing_mode_command_topic', 'swing_mode_stat_tpl': 'swing_mode_state_template', 'swing_mode_stat_t': 'swing_mode_state_topic', 'temp_cmd_t': 'temperature_command_topic', + 'temp_hi_cmd_t': 'temperature_high_command_topic', + 'temp_hi_stat_tpl': 'temperature_high_state_template', + 'temp_hi_stat_t': 'temperature_high_state_topic', + 'temp_lo_cmd_t': 'temperature_low_command_topic', + 'temp_lo_stat_tpl': 'temperature_low_state_template', + 'temp_lo_stat_t': 'temperature_low_state_topic', 'temp_stat_tpl': 'temperature_state_template', 'temp_stat_t': 'temperature_state_topic', 'tilt_clsd_val': 'tilt_closed_value', @@ -191,8 +235,9 @@ Supported abbreviations: 'tilt_max': 'tilt_max', 'tilt_min': 'tilt_min', 'tilt_opnd_val': 'tilt_opened_value', - 'tilt_status_opt': 'tilt_status_optimistic', + 'tilt_opt': 'tilt_optimistic', 'tilt_status_t': 'tilt_status_topic', + 'tilt_status_tpl': 'tilt_status_template', 't': 'topic', 'uniq_id': 'unique_id', 'unit_of_meas': 'unit_of_measurement', @@ -227,9 +272,12 @@ The following software has built-in support for MQTT discovery: - [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) - [Zigbee2mqtt](https://github.com/koenkk/zigbee2mqtt) - [Zwave2Mqtt](https://github.com/OpenZWave/Zwave2Mqtt) (starting with 2.0.1) +- [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) ### Examples +#### Motion detection (binary sensor) + A motion detection device which can be represented by a [binary sensor](/integrations/binary_sensor.mqtt/) for your garden would send its configuration as JSON payload to the Configuration topic. After the first message to `config`, then the MQTT messages sent to the state topic will update the state in Home Assistant. - Configuration topic: `homeassistant/binary_sensor/garden/config` @@ -253,6 +301,18 @@ Delete the sensor by sending an empty message. $ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '' ``` +#### Sensors with multiple values + +Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions. + +- Configuration topic no1: `homeassistant/sensor/sensorBedroomT/config` +- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}" }` +- Configuration topic no2: `homeassistant/sensor/sensorBedroomH/config` +- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }` +- Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }` + +#### Switches + Setting up a switch is similar but requires a `command_topic` as mentioned in the [MQTT switch documentation](/integrations/switch.mqtt/). - Configuration topic: `homeassistant/switch/irrigation/config` @@ -270,27 +330,45 @@ Set the state. $ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/set" -m ON ``` -Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions. - -- Configuration topic no1: `homeassistant/sensor/sensorBedroomT/config` -- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}" }` -- Configuration topic no2: `homeassistant/sensor/sensorBedroomH/config` -- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }` -- Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }` +#### Abbreviating topic names Setting up a switch using topic prefix and abbreviated configuration variable names to reduce payload length. - Configuration topic: `homeassistant/switch/irrigation/config` - Command topic: `homeassistant/switch/irrigation/set` - State topic: `homeassistant/switch/irrigation/state` -- Payload: `{"~": "homeassistant/switch/irrigation", "name": "garden", "cmd_t": "~/set", "stat_t": "~/state"}` +- Configuration payload: `{"~": "homeassistant/switch/irrigation", "name": "garden", "cmd_t": "~/set", "stat_t": "~/state"}` + +#### Lighting -Setting up a climate integration (heat only) with abbreviated configuration variable names to reduce payload length. +Setting up a [light that takes JSON payloads](/integrations/light.mqtt/#json-schema), with abbreviated configuration variable names: + +- Configuration topic: `homeassistant/light/kitchen/config` +- Command topic: `homeassistant/light/kitchen/set` +- State topic: `homeassistant/light/kitchen/state` +- Example state payload: `{"state": "ON", "brightness": 255}` +- Configuration payload: + + ```json + { + "~": "homeassistant/light/kitchen", + "name": "Kitchen", + "unique_id": "kitchen_light", + "cmd_t": "~/set", + "stat_t": "~/state", + "schema": "json", + "brightness": true + } + ``` + +#### Climate control + +Setting up a climate integration (heat only): - Configuration topic: `homeassistant/climate/livingroom/config` - Configuration payload: -```yaml +```json { "name":"Livingroom", "mode_cmd_t":"homeassistant/climate/livingroom/thermostatModeCmd", @@ -314,7 +392,7 @@ Setting up a climate integration (heat only) with abbreviated configuration vari - State topic: `homeassistant/climate/livingroom/state` - State payload: -```yaml +```json { "mode":"off", "target_temp":"21.50", diff --git a/source/_docs/mqtt/service.markdown b/source/_docs/mqtt/service.markdown index 5ad15fa9dbf3..f848093a169c 100644 --- a/source/_docs/mqtt/service.markdown +++ b/source/_docs/mqtt/service.markdown @@ -37,7 +37,7 @@ payload_template: {{ states('device_tracker.paulus') }} ```yaml topic: home-assistant/light/1/state payload: "{\"Status\":\"off\", \"Data\":\"something\"}" -``` +``` Example of how to use `qos` and `retain`: @@ -47,3 +47,16 @@ payload: on qos: 2 retain: true ``` + +### Service `mqtt.dump` + +Listen to the specified topic matcher and dumps all received messages within a specific duration into the file `mqtt_dump.txt` in your configuration folder. This is useful when debugging a problem. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `topic` | no | Topic to dump. Can contain a wildcard (`#` or `+`). +| `duration` | yes | Duration in seconds that we will listen for messages. Default is 5 seconds. + +```yaml +topic: openzwave/# +``` diff --git a/source/_docs/scene.markdown b/source/_docs/scene.markdown new file mode 100644 index 000000000000..bd1e21f61c5b --- /dev/null +++ b/source/_docs/scene.markdown @@ -0,0 +1,88 @@ +--- +title: "Scenes" +description: "Instructions on how to setup scenes within Home Assistant." +--- + +You can create scenes that 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. + +```yaml +# Example configuration.yaml entry +scene: + - name: Romantic + entities: + light.tv_back_light: on + light.ceiling: + state: on + xy_color: [0.33, 0.66] + brightness: 200 + - name: Movies + entities: + light.tv_back_light: + state: on + brightness: 125 + light.ceiling: off + media_player.sony_bravia_tv: + state: on + source: HDMI 1 + state: on +``` + +{% configuration %} +name: + description: Friendly name of scene. + required: true + type: string +entities: + description: Entities to control and their desired state. + required: true + type: list +{% endconfiguration %} + +As you can see, there are two ways to define the states of each `entity_id`: + +- Define the `state` directly with the entity. Be aware, that `state` needs to be defined. +- Define a complex state with its attributes. You can see all attributes available for a particular entity under `developer-tools -> state`. + +Scenes can be activated using the service `scene.turn_on` (there is no 'scene.turn_off' service). + +```yaml +# Example automation +automation: + trigger: + platform: state + entity_id: device_tracker.sweetheart + from: "not_home" + to: "home" + action: + service: scene.turn_on + entity_id: scene.romantic +``` + +## Applying a scene without defining it + +With the `scene.apply` service you are able to apply a scene without first defining it via configuration. Instead, you pass the states as part of the service data. The format of the data is the same as the `entities` field in a configuration. + +```yaml +# Example automation +automation: + trigger: + platform: state + entity_id: device_tracker.sweetheart + from: "not_home" + to: "home" + action: + service: scene.apply + data: + entities: + light.tv_back_light: + state: on + brightness: 100 + light.ceiling: off + media_player.sony_bravia_tv: + state: on + source: HDMI 1 +``` + +## Reloading scenes + +Whenever you make a change to your scene configuration, you can call the `scene.reload` service to reload the scenes. diff --git a/source/_docs/scene/editor.markdown b/source/_docs/scene/editor.markdown new file mode 100644 index 000000000000..c03d9478f694 --- /dev/null +++ b/source/_docs/scene/editor.markdown @@ -0,0 +1,77 @@ +--- +title: "Scenes Editor" +description: "Instructions on how to use the scenes editor." +--- + +In Home Assistant 0.102 we introduced the first version of our scene editor. If you just created a new configuration with Home Assistant, then you're all set! Go to the UI and enjoy. + +From the UI choose **Configuration** which is located in the sidebar, then click on **Scenes** to go to the scene editor. Press the **+** sign in the lower right corner to get started. + +Choose a meaningful name for your scene. + +

+ +

+ +Select all the devices (and/or entities when in advanced mode) you want to include in your scene. +The state of your devices will be saved, so it can be restored when you are finished creating your scene. +Set the state of the devices to how you want them to be in your scene, this can be done by clicking on it and edit the state from the popup, or any other method that changes the state. +On the moment you save the scene, all the states of your devices are stored in the scene. +When you leave the editor the states of the devices are restored to the state from before you started editing. + +## Updating your configuration to use the editor + +First, check that you have activated the configuration editor. + +```yaml +# Activate the configuration editor +config: +``` + +The scene editor reads and writes to the file `scenes.yaml` in the root of your [configuration](/docs/configuration/) folder. +Currently, both the name of this file and its location are fixed. +Make sure that you have set up the scene integration to read from it: + +```yaml +# Configuration.yaml example +scene: !include scenes.yaml +``` + +If you still want to use your old scene section, add a label to the old entry: + +```yaml +scene old: + - name: ... +``` + +You can use the `scene:` and `scene old:` sections at the same time: + +- `scene old:` to keep your manual designed scenes +- `scene:` to save the scene created by the online editor + +```yaml +scene: !include scenes.yaml +scene old: !include_dir_merge_list scenes +``` + +## Migrating your scenes to `scenes.yaml` + +If you want to migrate your old scenes to use the editor, you'll have to copy them to `scenes.yaml`. Make sure that `scenes.yaml` remains a list! For each scene that you copy over, you'll have to add an `id`. This can be any string as long as it's unique. + +For example: + +```yaml +# Example scenes.yaml entry +- id: my_unique_id # <-- Required for editor to work. + name: Romantic + entities: + light.tv_back_light: on + light.ceiling: + state: on + xy_color: [0.33, 0.66] + brightness: 200 +``` + +
+Any comments in the YAML file will be lost and templates will be reformatted when you update a scene via the editor. +
diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index c871b6303da8..ee17347b3da8 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -107,7 +107,6 @@ Wait until some things are complete. We support at the moment `wait_template` fo # Wait for sensor to trigger or 1 minute before continuing to execute. - wait_template: "{{ is_state('binary_sensor.entrance', 'on') }}" timeout: '00:01:00' - continue_on_timeout: 'true' ``` {% endraw %} @@ -133,7 +132,7 @@ It is also possible to use dummy variables, e.g., in scripts, when using `wait_t ``` {% endraw %} -You can also get the script to abort after the timeout by using `continue_on_timeout` +You can also get the script to abort after the timeout by using optional `continue_on_timeout` {% raw %} ```yaml @@ -144,6 +143,8 @@ You can also get the script to abort after the timeout by using `continue_on_tim ``` {% endraw %} +Without `continue_on_timeout` the script will always continue. + ### Fire an Event This action allows you to fire an event. Events can be used for many things. It could trigger an automation or indicate to another integration that something is happening. For instance, in the below example it is used to create an entry in the logbook. diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index 4293ca6a9908..e0fcdde6c3dc 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -4,13 +4,13 @@ description: "Documentation about all available conditions." redirect_from: /getting-started/scripts-conditions/ --- -Conditions can be used within a script or automation to prevent further execution. When a condition does not return true, the script or automation will stop executing. A condition will look at the system right now. For example a condition can test if a switch is currently turned on or off. +Conditions can be used within a script or automation to prevent further execution. When a condition does not return true, the script or automation stops executing. A condition will look at the system at that moment. For example, a condition can test if a switch is currently turned on or off. Unlike a trigger, which is always `or`, conditions are `and` by default - all conditions have to be true. ### AND condition -Test multiple conditions in 1 condition statement. Passes if all embedded conditions are valid. +Test multiple conditions in one condition statement. Passes if all embedded conditions are valid. ```yaml condition: @@ -24,7 +24,7 @@ condition: below: 20 ``` -If you do not want to combine AND and OR conditions, you can also just list them sequentially. +If you do not want to combine AND and OR conditions, you can list them sequentially. The following configuration works the same as the one listed above: @@ -42,7 +42,7 @@ Currently you need to format your conditions like this to be able to edit them u ### OR condition -Test multiple conditions in 1 condition statement. Passes if any embedded condition is valid. +Test multiple conditions in one condition statement. Passes if any embedded condition is valid. ```yaml condition: @@ -58,7 +58,7 @@ condition: ### MIXED AND and OR conditions -Test multiple AND and OR conditions in 1 condition statement. Passes if any embedded conditions is valid. +Test multiple AND and OR conditions in one condition statement. Passes if any embedded condition is valid. This allows you to mix several AND and OR conditions together. ```yaml @@ -80,7 +80,7 @@ condition: ### Numeric state condition -This type of condition attempts to parse the state of specified entity as a number and triggers if the value matches the thresholds. +This type of condition attempts to parse the state of the specified entity as a number, and triggers if the value matches the thresholds. If both `below` and `above` are specified, both tests have to pass. @@ -93,7 +93,7 @@ condition: above: 17 below: 25 # If your sensor value needs to be adjusted - value_template: {% raw %}{{ float(state.state) + 2 }}{% endraw %} + value_template: {% raw %}'{{ float(state.state) + 2 }}'{% endraw %} ``` ### State condition @@ -134,8 +134,8 @@ condition: #### Sun elevation condition -The sun elevation can be used to test if the sun has set or risen, it is dusk, it is night etc. when a trigger occurs. -For an in depth explanation of sun elevation see [sun elevation trigger][sun_elevation_trigger]. +The sun elevation can be used to test if the sun has set or risen, it is dusk, it is night, etc. when a trigger occurs. +For an in-depth explanation of sun elevation, see [sun elevation trigger][sun_elevation_trigger]. [sun_elevation_trigger]: /docs/automation/trigger/#sun-elevation-trigger @@ -157,56 +157,60 @@ condition: #### Sunset/sunrise condition -The sun condition can also test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger][sun_trigger]. +The sun condition can also test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger][sun_trigger]. When both keys are used, the result is a logical `and` of separate conditions. + +Note that if only `before` key is used, the condition will be `true` _from midnight_ until sunrise/sunset. If only `after` key is used, the condition will be `true` from sunset/sunrise _until midnight_. Therefore, to cover time between sunset and sunrise one need to use `after: sunset` and `before: sunrise` as 2 separate conditions and combine them using `or`. [sun_trigger]: /docs/automation/trigger/#sun-trigger
-The sunset/sunrise conditions do not work in locations inside the polar circles, and also not in locations with highly skewed local time zone. +The sunset/sunrise conditions do not work in locations inside the polar circles, and also not in locations with a highly skewed local time zone. -It is advised to use conditions evaluating the solar elevation instead of the before/after sunset/sunrise conditions. +In those cases it is advised to use conditions evaluating the solar elevation instead of the before/after sunset/sunrise conditions.
```yaml condition: condition: sun after: sunset - # Optional offset value - in this case it must from -1 hours relative to sunset, or after after_offset: "-01:00:00" ``` +This is 'when light' - equivalent to a state condition on `sun.sun` of `above_horizon`. + ```yaml condition: - condition: or # 'when dark' condition: either after sunset or before sunrise - equivalent to a state condition on `sun.sun` of `below_horizon` - conditions: - - condition: sun - after: sunset - - condition: sun - before: sunrise + - condition: sun + after: sunrise + before: sunset ``` +This is 'when dark' - equivalent to a state condition on `sun.sun` of `below_horizon`. + +We cannot use both keys in this case as it will always be `false`. + ```yaml condition: - condition: and # 'when light' condition: before sunset and after sunrise - equivalent to a state condition on `sun.sun` of `above_horizon` + condition: or conditions: - condition: sun - before: sunset + after: sunset - condition: sun - after: sunrise + before: sunrise ``` -A visual timeline is provided below showing an example of when these conditions will be true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions will be true. +A visual timeline is provided below showing an example of when these conditions are true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions are true. Graphic showing an example of sun conditions ### Template condition -The template condition will test if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'. +The template condition tests if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'. ```yaml condition: condition: template - value_template: "{% raw %}{{ (state_attr('device_tracker.iphone', 'battery')|int) > 50 }}{% endraw %}" + value_template: "{% raw %}{{ (state_attr('device_tracker.iphone', 'battery_level')|int) > 50 }}{% endraw %}" ``` Within an automation, template conditions also have access to the `trigger` variable as [described here][automation-templating]. @@ -216,7 +220,7 @@ Within an automation, template conditions also have access to the `trigger` vari ### Time condition -The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week +The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week. ```yaml condition: @@ -231,7 +235,9 @@ condition: ``` Valid values for `weekday` are `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. -Time condition windows can span across the midnight threshold. In the example above, the condition window is from 3pm to 2am. +Note that if only `before` key is used, the condition will be `true` *from midnight* until the specified time. +If only `after` key is used, the condition will be `true` from the specified time *until midnight*. +Time condition windows can span across the midnight threshold if **both** `after` and `before` keys are used. In the example above, the condition window is from 3pm to 2am.
@@ -241,7 +247,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/owntracks/) and the [iCloud platform](/integrations/icloud/). +Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have set up a device tracker platform that supports reporting GPS coordinates. ```yaml condition: diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index 38d65358f10e..626f5b94ad4d 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -6,7 +6,7 @@ redirect_from: /getting-started/scripts-service-calls/ Various integrations allow calling services when a certain event occurs. The most common one is calling a service when an automation trigger happens. But a service can also be called from a script or via the Amazon Echo. -The configuration options to call a config are the same between all integrations and are described on this page. +The configuration options to call a configuration are the same between all integrations and are described on this page. Examples on this page will be given as part of an automation integration configuration but different approaches can be used for other integrations too. @@ -94,9 +94,12 @@ There are four `homeassistant` services that aren't tied to any single domain, t * `homeassistant.turn_on` - Turns on an entity (that supports being turned on), for example an `automation`, `switch`, etc * `homeassistant.turn_off` - Turns off an entity (that supports being turned off), for example an `automation`, `switch`, etc * `homeassistant.toggle` - Turns off an entity that is on, or turns on an entity that is off (that supports being turned on and off) -* `homeassistant.update_entity` - Request the update of an entity, rather than waiting for the next scheduled update, for example [google travel time] sensor, a [template sensor], or a [light] +* `homeassistant.update_entity` - Request the update of an entity, rather than waiting for the next scheduled update, for example [Google travel time] sensor, a [template sensor], or a [light] + +Complete service details and examples can be found on the [Home Assistant integration][homeassistant-integration-services] page. [templating]: /topics/templating/ [google travel time]: /integrations/google_travel_time/ [template sensor]: /integrations/template/ [light]: /integrations/light/ +[homeassistant-integration-services]: /integrations/homeassistant#services diff --git a/source/_docs/security.markdown b/source/_docs/security.markdown index c507c426331d..1a2c72ec3a26 100644 --- a/source/_docs/security.markdown +++ b/source/_docs/security.markdown @@ -7,7 +7,7 @@ As Home Assistant is like every other service or daemon that is running on a com [Secure your installation](/docs/configuration/securing/) once you've finished with the installation process regardless of your use case. -Home Assistant is NOT able to change the configuration of your router or firewall. This means that you need to setup [port-forwarding](/docs/configuration/remote/) and adjusting firewall rules if you want to allow access from the internet. By default your frontend and your Hass.io add-ons like Mosquitto, SSH and your Samba shares are only accessible from your local network. +Home Assistant is NOT able to change the configuration of your router or firewall. This means that you need to setup [port-forwarding](/docs/configuration/remote/) and adjusting firewall rules if you want to allow access from the internet. By default your frontend and your Home Assistant add-ons like Mosquitto, SSH and your Samba shares are only accessible from your local network. ## Server banner @@ -17,8 +17,6 @@ Further [details about the fingerprint/server banner](/docs/security/webserver/) The default port of Home Assistant is 8123. This is the port where the [`frontend`](/integrations/frontend/) and the [`API`](/integrations/api/) is served. Both are depending on the [`http`](/integrations/http/) integration which contains the capability to adjust the settings like `server_host` or `server_port`. -See the [open ports](/docs/security/porosity/) of a Hass.io instance with various add-ons. - ## HTTP SSL/TLS Home Assistant is following the [Mozilla's Operations Security team recommendations](https://wiki.mozilla.org/Security/Server_Side_TLS) for Server side SSL/TLS settings. Home Assistant uses **Modern compatibility** by default. If an user wishes to use **Intermediate compatibility**, this is configurable in the [`http` integration](/integrations/http/). @@ -27,7 +25,7 @@ Home Assistant is following the [Mozilla's Operations Security team recommendati The SSH connection for [debugging](https://developers.home-assistant.io/docs/en/hassio_debugging.html) on port 22222 is not enabled by default and can only be used with keys. -If SSH is used with the [SSH server add-on](/addons/ssh/) then the user is responsible for the configuration and security. +If SSH is used with the [SSH server add-on](/addons/ssh/) then the user is responsible for the configuration and security. ## Source code diff --git a/source/_docs/security/porosity.markdown b/source/_docs/security/porosity.markdown deleted file mode 100644 index 6da453ee98d3..000000000000 --- a/source/_docs/security/porosity.markdown +++ /dev/null @@ -1,189 +0,0 @@ ---- -title: "Home Assistant/Hass.io porosity" -description: "Use nmap to scan your Home Assistant instance." ---- - -As a large amount of users are running [Hass.io](/hassio/), here we are using a Raspberry Pi 3 B and Hass.io 0.70.0 to show how Home Assistant looks from the network side. This is not a full blown investigation, just a quick overview. - -The IP address of the Home Assistant machine is 192.168.0.215. The system which is the source of the scans is a machine running Fedora 27 and Nmap 7.60 is used to perform the port scans. Both systems are in the same network. - -## SSH server Add-on - -To get access to Hass.io in secure way, SSH is provided by the [SSH server add-on](/addons/ssh/). - -```bash -$ sudo nmap -A -n --reason -Pn -T5 -p1-65535 192.168.0.215 - -Starting Nmap 7.60 ( https://nmap.org ) at 2018-05-29 15:08 CEST -Nmap scan report for 192.168.0.215 -Host is up, received arp-response (0.00051s latency). -Not shown: 65532 closed ports -Reason: 65532 resets -PORT STATE SERVICE REASON VERSION -22/tcp open ssh syn-ack ttl 63 OpenSSH 7.5 (protocol 2.0) -| ssh-hostkey: -| 2048 e3:a2:2d:20:3a:67:68:b9:b1:9e:16:fa:48:80:82:96 (RSA) -| 256 92:f0:f4:be:4f:44:60:0e:c4:92:8a:cb:34:9e:c5:c2 (ECDSA) -|_ 256 09:da:a2:14:cd:c4:69:e9:13:e6:70:64:98:d0:55:0c (EdDSA) -8123/tcp open http syn-ack ttl 64 aiohttp 3.1.3 (Python 3.6) -|_http-open-proxy: Proxy might be redirecting requests -| http-robots.txt: 1 disallowed entry -|_/ -|_http-server-header: Python/3.6 aiohttp/3.1.3 -|_http-title: Home Assistant -22222/tcp open ssh syn-ack ttl 64 Dropbear sshd 2016.74 (protocol 2.0) -MAC Address: B8:41:CD:4B:7A:5D (Raspberry Pi Foundation) -Device type: general purpose -Running: Linux 3.X|4.X -OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 -OS details: Linux 3.2 - 4.8 -Network Distance: 1 hop -Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel - -TRACEROUTE -HOP RTT ADDRESS -1 0.51 ms 192.168.0.215 - -OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . -Nmap done: 1 IP address (1 host up) scanned in 726.23 seconds -``` - -That port 22 and 8123 are open was expected. On port 22222 is an additional SSH server running. This port is for [debugging](https://developers.home-assistant.io/docs/en/hassio_debugging.html) and supports only a login with a key. This means that you would need to remove the SD card from your Raspberry Pi, create an `authorized_keys` with your SSH public key in it and put the SD Card back in your Pi to get access. - -## Mosquitto MQTT broker Add-on - -While setting up the [Mosquitto MQTT broker add-on](/addons/mosquitto/) no settings very modified, the add-on was running with the default settings. - -```bash -$ sudo nmap -A -n --reason -Pn -T5 -p1-65535 192.168.0.215 - -Starting Nmap 7.60 ( https://nmap.org ) at 2018-05-29 15:52 CEST -Nmap scan report for 192.168.0.215 -Host is up, received arp-response (0.0011s latency). -Not shown: 65532 closed ports -Reason: 65532 resets -PORT STATE SERVICE REASON VERSION -1883/tcp open mosquitto version 1.4.12 syn-ack ttl 63 -| mqtt-subscribe: -| Topics and their most recent payloads: -| $SYS/broker/load/connections/5min: 0.39 -[...] -| $SYS/broker/load/connections/15min: 0.13 -|_ $SYS/broker/clients/total: 2 -8123/tcp open http syn-ack ttl 64 aiohttp 3.1.3 (Python 3.6) -|_http-open-proxy: Proxy might be redirecting requests -| http-robots.txt: 1 disallowed entry -|_/ -|_http-server-header: Python/3.6 aiohttp/3.1.3 -|_http-title: Home Assistant -22222/tcp open ssh syn-ack ttl 64 Dropbear sshd 2016.74 (protocol 2.0) -MAC Address: B8:41:CD:4B:7A:5D (Raspberry Pi Foundation) -Device type: general purpose -Running: Linux 3.X|4.X -OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 -OS details: Linux 3.2 - 4.8 -Network Distance: 1 hop -Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel - -TRACEROUTE -HOP RTT ADDRESS -1 1.13 ms 192.168.0.215 - -OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . -Nmap done: 1 IP address (1 host up) scanned in 223.76 seconds -``` - -To secure MQTT to consider to use certificates and to specify users with password under `logins:` at least. Use port 1883 only in your local network. - -## Samba Add-on - -The [Samba add-on](/addons/samba/) enables one to use a Windows system to access the configuration and other shares. Per default there is no user set. To increase your local security we strongly suggest that you set a username and a password and don't allow guests. A sample configuration could look like the one below. - -A port scan for Hass.io with this add-on will give you the details. - -```bash -$ sudo nmap -A -n --reason -Pn -T5 -p1-65535 192.168.0.215 - -Starting Nmap 7.60 ( https://nmap.org ) at 2018-05-29 16:29 CEST -Host is up, received arp-response (0.00045s latency). -Not shown: 65523 closed ports -Reason: 65523 resets -PORT STATE SERVICE REASON VERSION -139/tcp open netbios-ssn syn-ack ttl 64 Samba smbd 3.X - 4.X (workgroup: WORKGROUP) -445/tcp open netbios-ssn syn-ack ttl 64 Samba smbd 4.7.3 (workgroup: WORKGROUP) -8123/tcp open http syn-ack ttl 64 aiohttp 3.1.3 (Python 3.6) -|_http-open-proxy: Proxy might be redirecting requests -| http-robots.txt: 1 disallowed entry -|_/ -|_http-server-header: Python/3.6 aiohttp/3.1.3 -|_http-title: Home Assistant -22222/tcp open ssh syn-ack ttl 64 Dropbear sshd 2016.74 (protocol 2.0) -MAC Address: B8:41:CD:4B:7A:5D (Raspberry Pi Foundation) -Device type: general purpose -Running: Linux 3.X|4.X -OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 -OS details: Linux 3.2 - 4.8 -Network Distance: 1 hop -Service Info: Host: HASSIO; OS: Linux; CPE: cpe:/o:linux:linux_kernel - -Host script results: -|_nbstat: NetBIOS name: HASSIO, NetBIOS user: , NetBIOS MAC: (unknown) -| smb-os-discovery: -| OS: Windows 6.1 (Samba 4.7.3) -| Computer name: \x00 -| NetBIOS computer name: HASSIO\x00 -| Workgroup: WORKGROUP\x00 -|_ System time: 2018-05-29T16:41:05+02:00 -| smb-security-mode: -| account_used: guest -| authentication_level: user -| challenge_response: supported -|_ message_signing: disabled (dangerous, but default) -| smb2-security-mode: -| 2.02: -|_ Message signing enabled but not required -| smb2-time: -| date: 2018-05-29 16:41:05 -|_ start_date: 1601-01-01 00:53:28 - -TRACEROUTE -HOP RTT ADDRESS -1 0.46 ms 192.168.0.215 - -OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . -Nmap done: 1 IP address (1 host up) scanned in 727.43 seconds -``` - -139 and 445 are open and it's possible to enumerate the shares. With different tools you will get pretty much the same information. - -```bash -$ smbclient -L //192.168.0.215 -U% - - Sharename Type Comment - --------- ---- ------- - config Disk - addons Disk - share Disk - backup Disk - IPC$ IPC -IPC Service (Samba Home Assistant config share) -Reconnecting with SMB1 for workgroup listing. - - Server Comment - --------- ------- - - Workgroup Master - --------- ------- - WORKGROUP HASSIO -``` - -But without username and password you can't get access to the configuration file with the settings shown here. - -```json -[...] - "guest": false, - "username": "homeassistant", - "password": "homeassistant", - "interface": "eth0" -} -``` diff --git a/source/_docs/tools/credstash.markdown b/source/_docs/tools/credstash.markdown index 8833cd090132..c696f102b872 100644 --- a/source/_docs/tools/credstash.markdown +++ b/source/_docs/tools/credstash.markdown @@ -5,7 +5,7 @@ description: "Script to store credentials securely in AWS" Using [Credstash](https://github.com/fugue/credstash) is an alternative way to `secrets.yaml`. They can be managed from the command line via the credstash script. -Before using credstash, you need to set up AWS credentials either via the `aws` command line tool or using environment variables as explained in the [AWS CLI docs](http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) as well as creating a KMS key named `credstash` as explained in the [credstash Readme](https://github.com/fugue/credstash#setting-up-kms). After that is complete, you can use the provided script to add secrets to your Home Assistant secret store in credstash. +Before using credstash, you need to set up AWS credentials either via the `aws` command line tool or using environment variables as explained in the [AWS CLI documentation](http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) as well as creating a KMS key named `credstash` as explained in the [credstash Readme](https://github.com/fugue/credstash#setting-up-kms). After that is complete, you can use the provided script to add secrets to your Home Assistant secret store in credstash. ```bash $ hass --script credstash --help @@ -14,8 +14,8 @@ $ hass --script credstash --help To store a password in credstash, replace your password or API key with `!secret` and an identifier in `configuration.yaml` file. ```yaml -http: - api_password: !secret http_password +example: + password: !secret example_password ``` Create an entry in your credstash store. diff --git a/source/_docs/tools/dev-tools.markdown b/source/_docs/tools/dev-tools.markdown index 5e2e0ed8096c..72c1e0c65065 100644 --- a/source/_docs/tools/dev-tools.markdown +++ b/source/_docs/tools/dev-tools.markdown @@ -20,6 +20,7 @@ Screenshot of Home Assistant's Developer Tools. | Info | Details about Home Assistant | ## What can I do with Developer Tools? + The Developer Tools is meant for **all** (not just for the developers) to quickly try out things - like calling services, update states, raising events, and publish messages in mqtt…etc.). It is also a necessary tool for those who write custom automations and scripts by hand. The following describes each of the section in detail. ## Services @@ -88,7 +89,7 @@ For more information about jinja2, visit [jinja2 documentation](http://jinja.poc ## MQTT -This section is only visible if the MQTT integration is configured. To configure MQTT, add `mqtt:` to the `configuration.yaml` file. For more information, refer to the [mqtt](/integrations/mqtt/) component. +This section is only visible if the MQTT integration is configured. To configure MQTT, add `mqtt:` to the `configuration.yaml` file. For more information, refer to the [MQTT](/integrations/mqtt/) integration. Even though MQTT in general provides deeper functionality, the developer tools section of MQTT is limited to publishing messages to a given topic. It supports templates for the payload. To publish a message, simply specify the topic name and the payload and click “PUBLISH” button. diff --git a/source/_docs/tools/hass.markdown b/source/_docs/tools/hass.markdown index 05a91d9f6ba2..c464a6780606 100644 --- a/source/_docs/tools/hass.markdown +++ b/source/_docs/tools/hass.markdown @@ -10,8 +10,8 @@ The command-line part of Home Assistant is `hass`. $ hass -h usage: hass [-h] [--version] [-c path_to_config_dir] [--demo-mode] [--debug] [--open-ui] [--skip-pip] [-v] [--pid-file path_to_pid_file] - [--log-rotate-days LOG_ROTATE_DAYS] [--runner] [--script ...] - [--daemon] + [--log-rotate-days LOG_ROTATE_DAYS] [--log-file LOG_FILE] + [--log-no-color] [--runner] [--script ...] [--daemon] Home Assistant: Observe, Control, Automate. diff --git a/source/_docs/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown index 126a495fcdd7..57c4d5ade656 100644 --- a/source/_docs/z-wave/adding.markdown +++ b/source/_docs/z-wave/adding.markdown @@ -26,7 +26,7 @@ When you add a device, it may initially appear without a specific entity ID (e.g Security Z-Wave devices require a network key. Some devices only expose their full capabilities when included this way. You should always read the manual for your device to find out the recommended inclusion method. Note, secure devices that had been connected to another hub/network in the past may have a "theft protection" feature which requires to first exclude the device successfully from the previous hub using the previous hub/Software setup before it can be enrolled in a new hub/network. -A valid network key will be a 16 byte value, defined in the zwave section of your configuration, such as the following example: +A valid network key will be a 16 byte value, defined in the Z-Wave section of your configuration, such as the following example: ```yaml zwave: diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index 5a516eaf4948..8f82c1a12390 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -26,7 +26,7 @@ Here is where you [include and exclude](/docs/z-wave/adding/) Z-Wave devices fro * **Stop Network** stops the Z-Wave network * **Soft Reset** tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command, and may cause the Z-Wave network to hang. * **Test Network** tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead". -* **Save Config** Saves the current cache of the network to zwcfg_[home_id].xml +* **Save Configuration** Saves the current cache of the network to `zwcfg_[home_id].xml`. ## Z-Wave Node Management @@ -78,11 +78,11 @@ Battery powered devices need to be awake before you can use the Z-Wave control p This is a dropdown where you can select all the entities of this node. Once selected you can then use: * **Refresh Entity** to refresh just that entity's values -* **Entity Attributes** to display the attributes of that entity (e.g., its friendly name, the ID of the node, etc) +* **Entity Information** to display the attributes of that entity (e.g., its friendly name, the ID of the node, etc) Here you can mark a device as requiring polling so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/devices/#polling), since excessive polling can break your Z-Wave network. -The **Polling intensity** says how many poll intervals does is this device polled on. For example, if you set 2 then it's polled on every second interval. +The **Polling intensity** says how many poll intervals this device is polled on. For example, if you set 2 then it's polled on every second interval. You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don't want it to appear in Home Assistant, or if you've got a device that's failed and you're unable to exclude it. @@ -108,7 +108,7 @@ Some Z-Wave devices may associate themselves with the broadcast node (node 255). That would remove the broadcast group from association group 1 of the device with node_id 3. -### Node config options +### Node configuration options You can set the *wakeup* interval (in seconds) of the device, this is shown for all devices that can be battery powered, even if they are currently mains powered. The wakeup interval only applies when those devices are battery powered. @@ -116,7 +116,7 @@ You can set the *wakeup* interval (in seconds) of the device, this is shown for The wakeup interval has no impact on the device's ability to report sensor changes. This is purely for how often the Z-Wave chip will check in with the controller. That activity consumes a lot of battery power compared to reporting sensor changes and if you reduce it you'll be reducing the battery life of your device.
-Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake. +Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Configuration Parameter** to updated it. Battery powered devices will be updated the next time they wake. ### Node protection @@ -154,7 +154,7 @@ for x in range(0, 10): translations["%s" % x] = "\\x3%s" % x for c in sys.argv[1]: - print(translations[c], end='') + print(translations[c], end="") ``` ## OZW Log diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index c5981a106cf7..067fa2a8d746 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -5,7 +5,7 @@ description: "Extended instructions how to setup Z-Wave." ## Supported Z-Wave USB Sticks & Hardware Modules -You need to have a compatible Z-Wave stick or module installed. This needs to be a *static controller*, which most Z-Wave sticks and modules will be. If yours is a *bridge* device then it won't work with [OpenZWave](http://openzwave.com/), which is what provides Home Assistant's Z-Wave capabilities. The following devices have been confirmed to work: +You need to have a compatible Z-Wave stick or module installed. This needs to be a *static controller*, which most Z-Wave sticks and modules will be. If yours is a *bridge* device then it won't work with [OpenZWave](http://openzwave.com/), which is what provides Home Assistant's Z-Wave capabilities. USB sticks using the new 700 series Z-Wave platform are not compatible. The following devices have been confirmed to work:
@@ -13,28 +13,28 @@ There have [been reports](https://www.raspberrypi.org/forums/viewtopic.php?f=28&
-* Aeotec Z-Stick Series 5 -* Everspring USB stick - Gen 5 -* Sigma Designs UZB stick -* Vision USB stick - Gen5 -* Zooz Z-Wave Plus S2 stick ZST10 -* ZWave.me Razberry Board -* ZWave.me UZB1 stick +- Aeotec Z-Stick Series 5 +- Everspring USB stick - Gen 5 +- Sigma Designs UZB stick +- Vision USB stick - Gen5 +- Zooz Z-Wave Plus S2 stick ZST10 +- ZWave.me Razberry Board +- ZWave.me UZB1 stick We recommend that you purchase a [Z-Wave Plus](https://z-wavealliance.org/z-wave_plus_certification/) controller, to take advantage of the improvements this provides. As OpenZWave doesn't support S2 or Smart Start, there's no need to buy one just for support of these features.
- If you're using Hass.io or running HASS in a Docker container, it's recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through. + If you're using Hass.io or running Home Assistant in a Docker container, it's recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through.
## Stick Alternatives The alternative to a stick is a hub that supports Z-Wave. Home Assistant supports the following hubs with Z-Wave support: - - [Vera](/integrations/vera/) - - [Wink](/integrations/wink/) - - [Fibaro](/integrations/fibaro/) - - [SmartThings](/integrations/smartthings/) +- [Vera](/integrations/vera/) +- [Wink](/integrations/wink/) +- [Fibaro](/integrations/fibaro/) +- [SmartThings](/integrations/smartthings/) ## Controller Notes diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index de7ac0066182..2c3d99eb847d 100644 --- a/source/_docs/z-wave/device-specific.markdown +++ b/source/_docs/z-wave/device-specific.markdown @@ -17,7 +17,7 @@ You can set the settings of the Z-Wave device through the Z-Wave control panel. These devices require a network key to be set for the Z-Wave network before they are paired, using the **Add Node Secure** option. -Home Assistant stores logs from Z-Wave in `OZW_log.txt` in the Home Assistant config directory, when you pair a secure device you should see communication from the node with lines starting with `info: NONCES` in `OZW_log.txt` when the device is paired successfully with a secure connection. +Home Assistant stores logs from Z-Wave in `OZW_log.txt` in the Home Assistant configuration directory, when you pair a secure device you should see communication from the node with lines starting with `info: NONCES` in `OZW_log.txt` when the device is paired successfully with a secure connection. ### Specific Devices @@ -27,6 +27,8 @@ It's totally normal for your Z-Wave stick to cycle through its LEDs (Yellow, Blu Use the following example commands from a terminal session on your Pi where your Z-Wave stick is connected. +**Note:** You should only do this when Home Assistant has been stopped. + Turn off "Disco lights": ```bash @@ -455,7 +457,7 @@ Press circle and plus simultaneously to wake up the device. -Once you've added the NanoMote to your z-wave network, you'll need to update your zwcfg_\*.xml file with the below xml data. Stop Home Assistant and open your zwcfg_\*.xml file (located in your config folder). Find the NanoMote device section and then its corresponding `CommandClass` section with id="91". Replace the entire CommandClass section with the below xml data. Save the file and restart Home Assistant. +Once you've added the NanoMote to your Z-Wave network, you'll need to update your `zwcfg_*.xml` file with the below XML data. Stop Home Assistant and open your `zwcfg_*.xml` file (located in your configuration folder). Find the NanoMote device section and then its corresponding `CommandClass` section with id="91". Replace the entire CommandClass section with the below XML data. Save the file and restart Home Assistant. ```xml @@ -816,3 +818,61 @@ Button presses will trigger `zwave.scene_activated` with the following: - `scene_id`: the number of the button you press from top left (1) to bottom right (8) {% endraw %} + +### Logicgroup ZDB5100 Matrix + + + +Once you've added the ZDB5100 to your Z-Wave network, you'll need to update your `zwcfg_*.xml` file with the below XML data. Stop Home Assistant and open your `zwcfg_*.xml` file (located in your configuration folder). Find the ZDB5100 device section and then its corresponding `CommandClass` section with id="91". Replace the entire CommandClass section with the below XML data. Save the file and restart Home Assistant. + +```xml + + + + + + + + +``` + +Below is a table of the action/scenes for the ZDB5100 Matrix: + +**Action**|**scene\_id**|**scene\_data** +:-----:|:-----:|:-----: +Button one single tap|1|7680 +Button one double tap|1|7860 +Button one triple tap|1|7920 +Button one hold|1|7800 +Button one release|1|7740 +Button two single tap|2|7680 +Button two double tap|2|7860 +Button two triple tap|2|7920 +Button two hold|2|7800 +Button two release|2|7740 +Button three single tap|3|7680 +Button three double tap|3|7860 +Button three triple tap|3|7920 +Button three hold|3|7800 +Button three release|3|7740 +Button four single tap|4|7680 +Button four double tap|4|7860 +Button four triple tap|4|7920 +Button four hold|4|7800 +Button four release|4|7740 + +Example Event: + +```yaml +- alias: MatrixButton2 + trigger: + - event_type: zwave.scene_activated + platform: event + event_data: + node_id: 2 + scene_id: 2 + scene_data: 7680 + action: + - service: switch.toggle + entity_id: switch.office_fan +``` diff --git a/source/_docs/z-wave/devices.markdown b/source/_docs/z-wave/devices.markdown index 534ccb70fd26..94d36ff44ea1 100644 --- a/source/_docs/z-wave/devices.markdown +++ b/source/_docs/z-wave/devices.markdown @@ -4,7 +4,7 @@ description: "What you need to know about Z-Wave devices." redirect_from: /getting-started/z-wave-devices/ --- -## Devices, Nodes, Entities, what? +## Devices, Nodes, Entities The *device* is the hardware, and also used when referring to the node and all its entities. There are 3 main types of devices: @@ -20,7 +20,7 @@ The *entity* is an individual integration of the node. It may be a sensor that y ## Z-Wave, Plus, Security 2 -There have been 2 extensions to the Z-Wave protocol. Using these requires that your controller supports these extensions, but devices are backwards compatible. +There have been 2 extensions to the Z-Wave protocol. Using these requires that your controller supports these extensions, but devices are backward compatible. ### Z-Wave Plus @@ -59,14 +59,14 @@ Where a device doesn't send updates on status changes to the controller, you can For example, with `polling_interval=60000` (which is the default) if you have 10 devices that are being polled at every interval, and each polling takes one secound (request/response round trip), then it will take 10 seconds to complete the polling list. This only leaves 50 seconds left for normal traffic. The more devices you poll, and the shorter the interval, the less bandwidth that's available for normal traffic. -Polling needs to be enabled per device, you can control this through the *polling intensity* (interval) of the device. See the [Node Management](/docs/z-wave/control-panel#z-wave-node-management) docs for details. +Polling needs to be enabled per device, you can control this through the *polling intensity* (interval) of the device. See the [Node Management](/docs/z-wave/control-panel#z-wave-node-management) documentation for details. ## Central Scene support 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? +## Supported Devices -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. +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. diff --git a/source/_docs/z-wave/entities.markdown b/source/_docs/z-wave/entities.markdown index d958447edbb4..089ccf628f9d 100644 --- a/source/_docs/z-wave/entities.markdown +++ b/source/_docs/z-wave/entities.markdown @@ -5,7 +5,7 @@ description: "A summary of common entity names."
-This is a work in progress, based upon reports in the forum, the author's own devices and reading of various documentation. It will be incomplete, so if you have a device that isn't reported here or have a device that reports a different value, please provide a report in the [Z-Wave section](https://community.home-assistant.io/c/configuration/zwave) of the forum or the #zwave channel on [Discord](https://discord.gg/RkajcgS). +This is a work in progress, based upon reports in the forum, the author's own devices and reading of various documentation. It will be incomplete, so if you have a device that isn't reported here or have a device that reports a different value, please provide a report in the [Z-Wave section](https://community.home-assistant.io/c/configuration/zwave) of the forum or the `#zwave` channel on [Discord](https://discord.gg/RkajcgS).
@@ -21,7 +21,8 @@ This is for a single purpose sensor, multi sensors are explained under Multi Sen Devices (usually sensors) that support the Alarm command class will create entities starting with `sensor`, and with some generic suffixes, and a suffix that relates to the supported alarm class. For example, the smoke detector `lounge` will have an entity `sensor.lounge_smoke`, and possibly also `sensor.lounge_alarm_type` and `sensor.lounge_alarm_level`. If the device creates a `binary_sensor` entity, it is recommended to use that rather then the `sensor` entity. -Note that the older Z-Wave alarm command class version 1 didn't have standardized types, and so each manufacturer specified their own version and type info. With Version 2 the alarm type was standardized to the below list. See the [openzwave alarm command class documents](https://github.com/OpenZWave/open-zwave/wiki/Alarm-Command-Class) for more info. You can see which version your sensor supports via the zwcfg_0x\*.xml file. An example with version 2 support: +Note that the older Z-Wave alarm command class version 1 didn't have standardized types, and so each manufacturer specified their own version and type info. With Version 2 the alarm type was standardized to the below list. See the [openzwave alarm command class documents](https://github.com/OpenZWave/open-zwave/wiki/Alarm-Command-Class) for more info. You can see which version your sensor supports via the `zwcfg_0x*.xml` file. An example with version 2 support: + ```xml ``` @@ -70,74 +71,74 @@ The meaning of the `alarm_level` entity depends on the nature of the alarm senso #### Smoke, CO, and CO2 - - **1**: Detection - will include a Node Location Report - - **2**: Detection (unknown location) - - **254**: Unknown event +- **1**: Detection - will include a Node Location Report +- **2**: Detection (unknown location) +- **254**: Unknown event #### Heat - - **1**: Overheat detected - will include a Node Location Report - - **2**: Overheat detected (unknown location) - - **3**: Rapid temperature rise - will include a Node Location Report - - **4**: Rapid temperature rise (unknown location) - - **5**: Underheat detection - will include a Node Location Report - - **6**: Underheat detection (unknown location) - - **254**: Unknown event +- **1**: Overheat detected - will include a Node Location Report +- **2**: Overheat detected (unknown location) +- **3**: Rapid temperature rise - will include a Node Location Report +- **4**: Rapid temperature rise (unknown location) +- **5**: Underheat detection - will include a Node Location Report +- **6**: Underheat detection (unknown location) +- **254**: Unknown event #### Water leak - - **1**: Water leak detected - will include a Node Location Report - - **2**: Water leak detected (unknown location) - - **3**: Water level dropped - will include a Node Location Report - - **4**: Water level dropped (unknown location) - - **254**: Unknown event +- **1**: Water leak detected - will include a Node Location Report +- **2**: Water leak detected (unknown location) +- **3**: Water level dropped - will include a Node Location Report +- **4**: Water level dropped (unknown location) +- **254**: Unknown event #### Access control - - **1**: Manual lock - - **2**: Manual unlock - - **3**: RF lock - - **4**: RF unlock - - **5**: Keypad lock - will include the User Identifier of the User Code Report - - **6**: Keypad unlock - will include the User Identifier of the User Code Report - - **254**: Unknown event +- **1**: Manual lock +- **2**: Manual unlock +- **3**: RF lock +- **4**: RF unlock +- **5**: Keypad lock - will include the User Identifier of the User Code Report +- **6**: Keypad unlock - will include the User Identifier of the User Code Report +- **254**: Unknown event #### Burglar - - **1**: Intrusion - will include a Node Location Report - - **2**: Intrusion (unknown location) - - **3**: Tampering (case opened) - - **4**: Tampering (invalid code) - - **5**: Glass break - will include a Node Location Report - - **6**: Glass break (invalid code) - - **254**: Unknown event +- **1**: Intrusion - will include a Node Location Report +- **2**: Intrusion (unknown location) +- **3**: Tampering (case opened) +- **4**: Tampering (invalid code) +- **5**: Glass break - will include a Node Location Report +- **6**: Glass break (invalid code) +- **254**: Unknown event #### Power Management - - **1**: Power applied - - **2**: AC disconnected - - **3**: AC re-connected - - **4**: Surge detection - - **5**: Voltage drop or drift - - **254**: Unknown event +- **1**: Power applied +- **2**: AC disconnected +- **3**: AC re-connected +- **4**: Surge detection +- **5**: Voltage drop or drift +- **254**: Unknown event #### System Alarm - - **1**: System hardware failure - - **2**: System software failure - - **254**: Unknown event +- **1**: System hardware failure +- **2**: System software failure +- **254**: Unknown event #### Emergency Alarm - - **1**: Contact Police - - **2**: Contact Fire Service - - **3**: Contact Medical Service - - **254**: Unknown event +- **1**: Contact Police +- **2**: Contact Fire Service +- **3**: Contact Medical Service +- **254**: Unknown event #### Alarm Clock - - **1**: Wake up - - **254**: Unknown event +- **1**: Wake up +- **254**: Unknown event ### Access Control Entity @@ -150,41 +151,45 @@ The meaning of the `alarm_level` entity depends on the nature of the alarm senso If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/integrations/binary_sensor.template/) to create one (here we've defined it as a door, but you can use [any relevant device class](/integrations/binary_sensor/#device-class): {% raw %} + ```yaml binary_sensor: - platform: template - sensors: + sensors: YOUR_SENSOR: friendly_name: "Friendly name here" device_class: door value_template: "{{ is_state('sensor.YOUR_ORIGINAL_SENSOR_access_control', '22') }}" ``` + {% endraw %} ### Burglar Entity - **burglar**: These *may* vary between brands - - **0**: Not active - - **2**: Smoke (?) - - **3**: Tamper - - **8**: Motion - - **22**: Open - - **23**: Closed - - **254**: Deep sleep - - **255**: Case open + - **0**: Not active + - **2**: Smoke (?) + - **3**: Tamper + - **8**: Motion + - **22**: Open + - **23**: Closed + - **254**: Deep sleep + - **255**: Case open If your device has a `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/integrations/binary_sensor.template/) to create one (here we've defined it as a motion sensor, but you can use [any relevant device class](/integrations/binary_sensor/#device-class): {% raw %} + ```yaml binary_sensor: - platform: template - sensors: + sensors: YOUR_SENSOR: friendly_name: "Friendly name here" device_class: motion value_template: "{{ is_state('sensor.YOUR_SENSOR_burglar', '8') }}" ``` + {% endraw %} ### Source Node ID Entity diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index d8c0842ea063..bfd703af5ea7 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -15,7 +15,7 @@ zwave: device_config: !include zwave_device_config.yaml ``` -{% configuration zwave %} +{% configuration Z-Wave %} usb_path: description: The port where your device is connected to your Home Assistant host. Z-Wave sticks will generally be `/dev/ttyACM0` and GPIO hats will generally be `/dev/ttyAMA0`. required: false @@ -32,12 +32,12 @@ config_path: type: string default: the 'config' that is installed by python-openzwave polling_interval: - description: The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. + description: The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the Z-Wave network and cause problems. required: false type: integer default: 60000 debug: - description: Print verbose z-wave info to log. + description: Print verbose Z-Wave info to log. required: false type: boolean default: false @@ -88,8 +88,9 @@ device_config / device_config_domain / device_config_glob: Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. An easy script to generate a random key: + ```bash -$ cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' +cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' ``` You can also use sites like [this one](https://www.random.org/cgi-bin/randbyte?nbytes=16&format=h) to generate the required data, just remember to put `0x` before each pair of characters: @@ -104,25 +105,25 @@ Ensure you keep a backup of this key. If you have to rebuild your system and don ## First Run -On platforms other than Hass.io and Docker, the compilation and installation of python-openzwave happens when you first enable the Z-Wave component, and can take half an hour or more on a Raspberry Pi. When you upgrade Home Assistant and python-openzwave is also upgraded, this will also result in a delay while the new version is compiled and installed. +On platforms other than Home Assistant and Docker, the compilation and installation of python-openzwave happens when you first enable the Z-Wave component, and can take half an hour or more on a Raspberry Pi. When you upgrade Home Assistant and python-openzwave is also upgraded, this will also result in a delay while the new version is compiled and installed. The first run after adding a device is when the `zwave` integration will take time to initialize the entities, some entities may appear with incomplete names. Running a network heal may speed up this process. ## Platform specific instructions -### Hass.io +### Home Assistant You do not need to install any software to use Z-Wave. -If the path of `/dev/ttyACM0` doesn't work, look in the *System* section of the *Hass.io* menu. There you'll find a *Hardware* button which will list all the hardware found. +If the path of `/dev/ttyACM0` doesn't work, look in the *System* section of the *Supervisor* menu. There you'll find a *Hardware* button which will list all the hardware found. -You can also check what hardware has been found using the [hassio command](/hassio/commandline/#hardware): +You can also check what hardware has been found using the [`ha` command](/hassio/commandline/#hardware): ```bash -$ hassio hardware info +ha hardware info ``` -If you did an alternative install on Linux then the `modemmanager` package will interfere with any Z-Wave (or Zigbee) stick and should be removed or disabled. Failure to do so will result in random failures of those components. For example you can disable with `sudo systemctl disable ModemManager` and remove with `sudo apt-get purge modemmanager`. +If you did an alternative install of Home Assistant on Linux (e.g., installing Ubuntu, then Docker, then Home Assistant Supervised) then the `modemmanager` package will interfere with any Z-Wave (or Zigbee) stick and should be removed or disabled in the host OS. Failure to do so will result in random failures of those components, e.g., dead or unreachable Z-Wave nodes, most notably right after Home Assistant restarts. Connect to your host OS via SSH, then you can disable with `sudo systemctl disable ModemManager` and remove with `sudo apt-get purge modemmanager` (commands are for Debian/Ubuntu). ### Docker @@ -131,7 +132,7 @@ You do not need to install any software to use Z-Wave. To enable access to the Z-Wave stick, add `--device=/dev/ttyACM0` to the `docker` command that starts your container, for example: ```bash -$ docker run -d --name="home-assistant" -v /home/pi/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --net=host --device=/dev/ttyACM0 homeassistant/raspberrypi3-homeassistant +docker run -d --name="home-assistant" -v /home/pi/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --net=host --device=/dev/ttyACM0 homeassistant/raspberrypi3-homeassistant ``` If the path of `/dev/ttyACM0` doesn't work then you can find the path of the stick by disconnecting and then reconnecting it, and running the following in the Docker host: @@ -148,12 +149,12 @@ The `modemmanager` package will interfere with any Z-Wave (or Zigbee) stick and On the Raspberry Pi you will need to enable the serial interface in the `raspi-config` tool before you can add Z-Wave to Home Assistant. Make sure to reboot the Raspberry Pi for the setting to take effect. -#### Linux +#### Linux with Home Assistant Core On Debian Linux platforms there are dependencies you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems): ```bash -$ sudo apt-get install libudev-dev +sudo apt-get install libudev-dev build-essential ``` You may also have to install the Python development libraries for your version of Python. For example `libpython3.6-dev`, and possibly `python3.6-dev` if you're using Python 3.6. @@ -180,20 +181,21 @@ Or, if there is no result, try to find detailed USB connection info with: dmesg | grep USB ``` -If Home Assistant (`hass`) runs with another user (e.g., *homeassistant*) you need to give access to the stick with: +If Home Assistant (`hass`) runs with another user (e.g., `homeassistant`) you need to give access to the stick with: ```bash -$ sudo usermod -aG dialout homeassistant +sudo usermod -aG dialout homeassistant ``` The output from `ls -ltr` above contains the following information: -* The device type is `c` (character special) -* The permissions are `rw-rw----`, meaning only the owner and group can read and write to it -* There is only `1` link to the file -* It is owned by `root` and can be accessed by members of the group `dialout` -* It has a major device number of `204`, and a minor device number of `64` -* The device was connected at `10:25` on `21 September` -* The device is `/dev/ttyUSB0`. + +- The device type is `c` (character special). +- The permissions are `rw-rw----`, meaning only the owner and group can read and write to it. +- There is only `1` link to the file. +- It is owned by `root` and can be accessed by members of the group `dialout`. +- It has a major device number of `204`, and a minor device number of `64`. +- The device was connected at `10:25` on `21 September`. +- The device is `/dev/ttyUSB0`. #### macOS @@ -215,13 +217,17 @@ ls /dev/cu.usbmodem* If your device path changes when you restart, see [this guide](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/) on fixing it. -## Ubuntu and Debian based host system +### Random unreachable Z-Wave nodes: ModemManager interference -If your instance is running on a Debian based system, e.g., Ubuntu, the ModemManager may cause unexpected issues. +If this applies to your situation: -The ModemManager might be claiming or interfering with a USB Z-Wave stick, like the much used Aeotec ones. If you experience issues where the stick stops responding, needs to be re-plugged or Home Assistant needs a restart to get Z-Wave back, chances are high that the ModemManager is causing the issue. +- Some or all Z-Wave nodes are unreachable after restarting Home Assistant; not necessarily after every restart but seemingly random. +- The Z-Wave stick stops responding, needs to be re-plugged or Home Assistant needs a restart to get Z-Wave back. +- Your host OS is Debian-based/Ubuntu (for example: you installed Ubuntu, then Docker, then Hass.io). - Execute the following command on your host system to disable the ModemManager: +Then chances are high that the ModemManager in the host OS is causing the issue, claiming or interfering with the USB Z-Wave stick like the much used Aeotec ones. In this case you need to disable ModemManager. + +Connect to your host OS (e.g., Ubuntu) through SSH, then execute the following command on your host system to disable the ModemManager: ```bash systemctl disable ModemManager.service @@ -264,7 +270,9 @@ sudo usermod -aG dialout homeassistant If you're getting errors like: - openzwave-embed/open-zwave-master/libopenzwave.a: No such file or directory +```txt +openzwave-embed/open-zwave-master/libopenzwave.a: No such file or directory +``` Then the problem is that you're missing `libudev-dev` (or the equivalent for your distribution), please [install it](/docs/z-wave/installation/#linux). diff --git a/source/_docs/z-wave/query-stage.markdown b/source/_docs/z-wave/query-stage.markdown index ce56787a7521..81f5f1f5b7d1 100644 --- a/source/_docs/z-wave/query-stage.markdown +++ b/source/_docs/z-wave/query-stage.markdown @@ -7,24 +7,24 @@ When the Z-Wave mesh is first started, the controller will go through all the fo Your devices will still function normally while marked as `Initializing`. -| Stage | Description | -|------------------------|--------------------------------------------------------------------| -| None | Query process hasn't started for this node | -| ProtocolInfo | Retrieve protocol information | -| Probe | Ping device to see if alive | -| WakeUp | Start wake up process if a sleeping node | -| ManufacturerSpecific1 | Retrieve manufacturer name and product ids if ProtocolInfo lets us | -| NodeInfo | Retrieve info about supported, controlled command classes | -| NodePlusInfo | Retrieve Z-Wave+ info and update device classes | -| SecurityReport | Retrieve a list of Command Classes that require Security | -| ManufacturerSpecific2 | Retrieve manufacturer name and product ids | -| Versions | Retrieve version information | -| Instances | Retrieve information about multiple command class instances | -| Static | Retrieve static information (doesn't change) | -| CacheLoad | Ping a device upon restarting with cached config for the device | -| Associations | Retrieve information about associations | -| Neighbors | Retrieve node neighbor list | -| Session | Retrieve session information (changes infrequently) | -| Dynamic | Retrieve dynamic information (changes frequently) | -| Configuration | Retrieve configurable parameter information (only done on request) | -| Complete | Query process is completed for this node | +| Stage | Description | +| --------------------- | ---------------------------------------------------------------------- | +| None | Query process hasn't started for this node | +| ProtocolInfo | Retrieve protocol information | +| Probe | Ping device to see if alive | +| WakeUp | Start wake up process if a sleeping node | +| ManufacturerSpecific1 | Retrieve manufacturer name and product ids if ProtocolInfo lets us | +| NodeInfo | Retrieve info about supported, controlled command classes | +| NodePlusInfo | Retrieve Z-Wave+ info and update device classes | +| SecurityReport | Retrieve a list of Command Classes that require Security | +| ManufacturerSpecific2 | Retrieve manufacturer name and product ids | +| Versions | Retrieve version information | +| Instances | Retrieve information about multiple command class instances | +| Static | Retrieve static information (doesn't change) | +| CacheLoad | Ping a device upon restarting with cached configuration for the device | +| Associations | Retrieve information about associations | +| Neighbors | Retrieve node neighbor list | +| Session | Retrieve session information (changes infrequently) | +| Dynamic | Retrieve dynamic information (changes frequently) | +| Configuration | Retrieve configurable parameter information (only done on request) | +| Complete | Query process is completed for this node | diff --git a/source/_docs/z-wave/services.markdown b/source/_docs/z-wave/services.markdown index a6014382cb96..ba6a914e3b64 100644 --- a/source/_docs/z-wave/services.markdown +++ b/source/_docs/z-wave/services.markdown @@ -5,32 +5,32 @@ description: "Services exposed by the Z-Wave component." The `zwave` integration exposes multiple services to help maintain the network. All of these are available through the Z-Wave control panel. -| Service | Description | -| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| add_node | Put the Z-Wave controller in inclusion mode. Allows you to add a new device to the Z-Wave network. | -| add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows you to add a new device with secure communications to the Z-Wave network. | -| cancel_command | Cancels a running Z-Wave command. If you have started an add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. | -| change_association | Add or remove an association in the Z-Wave network | -| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can re-figure out optimal routing. | -| heal_node | Tells the controller to "heal" a specific node on the network. Requires `node_id` field. You can also force return route update with `return_routes` field. -| print_config_parameter | Prints Z-Wave node's config parameter value to the (console) log. | -| print_node | Print all states of Z-Wave node. | -| refresh_entity | Refresh the Z-Wave entity by refreshing dependent values. | -| refresh_node | Refresh the Z-Wave node. | -| refresh_node_value | Refresh the specified value of a Z-Wave node. | -| remove_node | Put the Z-Wave controller in exclusion mode. Allows you to remove a device from the Z-Wave network. | -| rename_node | Sets a node's name. Requires a `node_id` and `name` field. | -| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. | -| remove_failed_node | Remove a failed node from the network. The Node should be on the controller's Failed Node List, otherwise this command will fail. | -| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. | -| reset_node_meters | Reset a node's meter values. Only works if the node supports this. | -| set_config_parameter | Lets the user set a config parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g., `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g., `"value": 1`). | -| set_node_value | Set the specified value of a Z-Wave node. | -| soft_reset | Tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command. | -| start_network | Starts the Z-Wave network. | -| stop_network | Stops the Z-Wave network. | -| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead." | -| test_node | Tells the controller to send no-op command(s) to a specific node. Requires `node_id` field. You can specify amount of test_messages to send by specifying it with `messages` field. In theory, this could bring back nodes marked as "presumed dead" +| Service | Description | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| add_node | Put the Z-Wave controller in inclusion mode. Allows you to add a new device to the Z-Wave network. | +| add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows you to add a new device with secure communications to the Z-Wave network. | +| cancel_command | Cancels a running Z-Wave command. If you have started an add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. | +| change_association | Add or remove an association in the Z-Wave network | +| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can re-figure out optimal routing. | +| heal_node | Tells the controller to "heal" a specific node on the network. Requires `node_id` field. You can also force return route update with `return_routes` field. | +| print_config_parameter | Prints Z-Wave node's configuration parameter value to the (console) log. | +| print_node | Print all states of Z-Wave node. | +| refresh_entity | Refresh the Z-Wave entity by refreshing dependent values. | +| refresh_node | Refresh the Z-Wave node. | +| refresh_node_value | Refresh the specified value of a Z-Wave node. | +| remove_node | Put the Z-Wave controller in exclusion mode. Allows you to remove a device from the Z-Wave network. | +| rename_node | Sets a node's name. Requires a `node_id` and `name` field. | +| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. | +| remove_failed_node | Remove a failed node from the network. The Node should be on the controller's Failed Node List, otherwise this command will fail. | +| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. | +| reset_node_meters | Reset a node's meter values. Only works if the node supports this. | +| set_config_parameter | Lets the user set a configuration parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g., `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g., `"value": 1`). | +| set_node_value | Set the specified value of a Z-Wave node. | +| soft_reset | Tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command. | +| start_network | Starts the Z-Wave network. | +| stop_network | Stops the Z-Wave network. | +| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead." | +| test_node | Tells the controller to send no-op command(s) to a specific node. Requires `node_id` field. You can specify amount of test_messages to send by specifying it with `messages` field. In theory, this could bring back nodes marked as "presumed dead" | The `soft_reset` and `heal_network` commands can be used to help keep a Z-Wave network running reliably. This is a configuration option for the `zwave` component. The option defaults to `false` but can be enabled by setting `autoheal` to true. This, however, is bad practice since it introduces overhead that can be avoided since you only need to do a `heal_network` whenever one of the following actions are done: diff --git a/source/_faq/component.markdown b/source/_faq/component.markdown index 49db9c4525a7..4acaa8163356 100644 --- a/source/_faq/component.markdown +++ b/source/_faq/component.markdown @@ -4,6 +4,6 @@ description: "My integration does not show up" ha_category: Configuration --- -When a integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. +When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. If you have incorrect entries in your configuration files you can use the `check_config` script to assist in identifying them: `hass --script check_config`. diff --git a/source/_faq/ha-vs-hassio.markdown b/source/_faq/ha-vs-hassio.markdown index 6b6a8988c339..1cd8f365421d 100644 --- a/source/_faq/ha-vs-hassio.markdown +++ b/source/_faq/ha-vs-hassio.markdown @@ -1,11 +1,13 @@ --- -title: "Home Assistant vs. Hass.io" -description: "Home Assistant vs. Hass.io" +title: "Home Assistant vs. Home Assistant Core" +description: "Home Assistant vs. Home Assistant Core" ha_category: Installation --- -Home Assistant is a Python program, in simple words. It can be run various operating system and provide the ability to track, control and automate your devices. When people talking about Home Assistant they usually refer to a standalone [installation method](/docs/installation/). +Home Assistant Core is a Python program, in simple words. It can be run on various operating systems and provide the ability to track, control and automate your devices. +When people talking about Home Assistant Core they usually refer to a standalone [installation method](/docs/installation/). -[Hass.io](/hassio/) is a combination of Home Assistant and tools which allows one to run it easily on a Raspberry Pi and other platforms without setting up an operating system first. Hass.io is an all-in one-solution and has a management user interface that can be used from the Home Assistant frontend. This interface is not present in a standalone setup of Home Assistant. +[Home Assistant](/hassio/) is a combination of Home Assistant Core and tools which allows one to run it easily on a Raspberry Pi and other platforms without setting up an operating system first. +Home Assistant is an all-in one-solution and has a management user interface that can be used from the Home Assistant frontend. This interface is not present in a Home Assistant Core setup. -Be aware that add-ons are only available in Hass.io, due to the way Hass.io is installed. +Be aware that add-ons are only available in regular Home Assistant installations. diff --git a/source/_faq/missing-documentation.markdown b/source/_faq/missing-documentation.markdown index b952e61823b7..3c5e89e033f2 100644 --- a/source/_faq/missing-documentation.markdown +++ b/source/_faq/missing-documentation.markdown @@ -1,10 +1,9 @@ --- title: "Missing Documentation" -description: "The docs are missing or outdated" +description: "The documentation is missing or outdated" ha_category: Documentation --- - Home Assistant is a FAST moving open source project. This means occasionally the official documentation will not be 100% current or complete. Since this is an open source volunteer project, we would encourage anyone who finds gaps in the documentation to click the `edit this page on Github` link in the top right and submit any corrections/enhancements they may find useful. -In the absence of information, many users find it beneficial to look at other people's configurations to find examples of what they want to accomplish in their own configurations. The easiest way to find these configurations is through this [Github search](https://github.com/search?q=topic%3Ahome-assistant-config&type=Repositories). +In the absence of information, many users find it beneficial to look at other people's configurations to find examples of what they want to accomplish in their own configurations. The easiest way to find these configurations is through this [GitHub search](https://github.com/search?q=topic%3Ahome-assistant-config&type=Repositories). diff --git a/source/_includes/asides/component_navigation.html b/source/_includes/asides/component_navigation.html index 1ad28740e5c9..853d4bacd338 100644 --- a/source/_includes/asides/component_navigation.html +++ b/source/_includes/asides/component_navigation.html @@ -1,20 +1,18 @@ -{%- assign github_main_repo = 'https://github.com/home-assistant/home-assistant/blob/dev/homeassistant' -%}
- {%- include edit_github.html -%}
{%- if page.logo -%} + {%- else -%} + {%- endif -%}
- {%- assign file_parts = page.url | split: '/' | last | split: '.' -%} - {%- assign imp_name = file_parts | last -%} - {%- assign imp_url = imp_name | prepend: '/components/' | append: '/' -%} - -
- -
+ {%- if page.ha_domain -%} +
+ +
+ {%- endif -%} {%- if page.ha_iot_class -%}
@@ -22,16 +20,16 @@
{%- endif -%} - {%- if page.ha_qa_scale -%} + {%- if page.ha_quality_scale -%} {%- endif -%} -
- Source: {{imp_url}} -
+ {%- if page.ha_domain -%} +
+ Source: View on GitHub +
+ {%- endif -%} {%- if page.ha_category.first -%}
diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 0ce9be273b6b..ae72edaa8dec 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -1,7 +1,7 @@
-
+

Topics

- +
  • + {% active_link /docs/scene/ Scenes %} +
      +
    • {% active_link /docs/scene/editor/ Editor %}
    • +
    +
  • {% active_link /docs/tools/ Tools and Helpers %}
      @@ -102,21 +142,39 @@

      Topics

    • {% active_link /docs/security/ Security %}
        -
      • {% active_link /docs/security/webserver/ Web server fingerprint %}
      • -
      • {% active_link /docs/security/porosity/ Porosity %}
      • +
      • + {% active_link /docs/security/webserver/ Web server fingerprint %} +
    • {% active_link /docs/z-wave/ Z-Wave %}
        -
      • {% active_link /docs/z-wave/installation/ Configuring the Z-Wave component %}
      • +
      • + {% active_link /docs/z-wave/installation/ Configuring the Z-Wave + component %} +
      • {% active_link /docs/z-wave/adding/ Adding devices %}
      • -
      • {% active_link /docs/z-wave/control-panel/ The Z-Wave control panel %}
      • +
      • + {% active_link /docs/z-wave/control-panel/ The Z-Wave control panel + %} +
      • {% active_link /docs/z-wave/controllers/ Controllers %}
      • -
      • {% active_link /docs/z-wave/devices/ Devices %} and {% active_link /docs/z-wave/entities/ Entities %}
      • -
      • {% active_link /docs/z-wave/query-stage/ Query Stages %} for devices
      • -
      • {% active_link /docs/z-wave/device-specific/ Device Specific %} configuration
      • -
      • {% active_link /docs/z-wave/events/ Events %} and {% active_link /docs/z-wave/services/ Services %}
      • +
      • + {% active_link /docs/z-wave/devices/ Devices %} and {% active_link + /docs/z-wave/entities/ Entities %} +
      • +
      • + {% active_link /docs/z-wave/query-stage/ Query Stages %} for devices +
      • +
      • + {% active_link /docs/z-wave/device-specific/ Device Specific %} + configuration +
      • +
      • + {% active_link /docs/z-wave/events/ Events %} and {% active_link + /docs/z-wave/services/ Services %} +
    • @@ -126,7 +184,10 @@

      Topics

    • {% active_link /docs/mqtt/certificate/ Certificate %}
    • {% active_link /docs/mqtt/discovery/ Discovery %}
    • {% active_link /docs/mqtt/service/ Publish service %}
    • -
    • {% active_link /docs/mqtt/birth_will/ Birth and last will messages %}
    • +
    • + {% active_link /docs/mqtt/birth_will/ Birth and last will messages + %} +
    • {% active_link /docs/mqtt/testing/ Testing your setup %}
    • {% active_link /docs/mqtt/logging/ Logging %}
    • {% active_link /docs/mqtt/processing_json/ Processing JSON %}
    • @@ -135,21 +196,52 @@

      Topics

    • {% active_link /docs/ecosystem/ios/ iOS %}
        -
      • {% active_link /docs/ecosystem/ios/notifications/basic/ Basic notifications %}
      • +
      • + {% active_link /docs/ecosystem/ios/notifications/basic/ Basic + notifications %} +
        • -
        • {% active_link /docs/ecosystem/ios/notifications/sounds/ Sounds %}
        • -
        • {% active_link /docs/ecosystem/ios/notifications/architecture/ Architecture %}
        • -
        • {% active_link /docs/ecosystem/ios/notifications/privacy_security_rate_limits/ Privacy, rate limiting and security %}
        • +
        • + {% active_link /docs/ecosystem/ios/notifications/sounds/ Sounds %} +
        • +
        • + {% active_link /docs/ecosystem/ios/notifications/architecture/ + Architecture %} +
        • +
        • + {% active_link + /docs/ecosystem/ios/notifications/privacy_security_rate_limits/ + Privacy, rate limiting and security %} +
      • Advanced notifications
        • -
        • {% active_link /docs/ecosystem/ios/notifications/attachments/ Attachments %}
        • -
        • {% active_link /docs/ecosystem/ios/notifications/content_extensions/ Dynamic content %}
        • -
        • {% active_link /docs/ecosystem/ios/notifications/actions/ Actionable notifications %}
        • -
        • {% active_link /docs/ecosystem/ios/notifications/requesting_location_updates/ Requesting location updates %}
        • +
        • + {% active_link /docs/ecosystem/ios/notifications/attachments/ + Attachments %} +
        • +
        • + {% active_link + /docs/ecosystem/ios/notifications/content_extensions/ Dynamic + content %} +
        • +
        • + {% active_link /docs/ecosystem/ios/notifications/actions/ + Actionable notifications %} +
        • +
        • + {% active_link + /docs/ecosystem/ios/notifications/requesting_location_updates/ + Requesting location updates %} +
        -
      • {% active_link /docs/ecosystem/ios/location/ Location Tracking %}
      • -
      • {% active_link /docs/ecosystem/ios/integration/ Integration with other apps %}
      • +
      • + {% active_link /docs/ecosystem/ios/location/ Location Tracking %} +
      • +
      • + {% active_link /docs/ecosystem/ios/integration/ Integration with + other apps %} +
    • @@ -158,8 +250,12 @@

      Topics

    • {% active_link /docs/autostart/ Autostart %}
        -
      • {% active_link /docs/autostart/systemd/ systemd (Linux) %}
      • -
      • {% active_link /docs/autostart/upstart/ Upstart (Linux) %}
      • +
      • + {% active_link /docs/autostart/systemd/ systemd (Linux) %} +
      • +
      • + {% active_link /docs/autostart/upstart/ Upstart (Linux) %} +
      • {% active_link /docs/autostart/init.d/ init.d (Linux) %}
      • {% active_link /docs/autostart/macos/ macOS %}
      • {% active_link /docs/autostart/synology/ Synology NAS %}
      • @@ -171,17 +267,6 @@

        Topics

      • {% active_link /docs/ecosystem/hadashboard/ HADashboard %}
      • -
      • - {% active_link /docs/ecosystem/notebooks/ Notebooks %} -
          -
        • {% active_link /docs/ecosystem/notebooks/ Introduction %}
        • -
        • {% active_link /docs/ecosystem/notebooks/installation/ Installation %}
        • -
        • {% active_link /docs/ecosystem/notebooks/graph/ Graph %}
        • -
        • {% active_link /docs/ecosystem/notebooks/api/ Home Assistant API %}
        • -
        • {% active_link /docs/ecosystem/notebooks/database/ Database %}
        • -
        • {% active_link /docs/ecosystem/notebooks/stats/ Statistics %}
        • -
        -
      • Remote access
          @@ -189,30 +274,52 @@

          Topics

        • {% active_link /docs/ecosystem/caddy/ Caddy Server %}
        • {% active_link /docs/ecosystem/haproxy/ HAProxy %}
        • {% active_link /docs/ecosystem/nginx/ NGINX %}
        • -
        • {% active_link /docs/ecosystem/nginx_subdomain/ NGINX with subdomain%}
        • +
        • + {% active_link /docs/ecosystem/nginx_subdomain/ NGINX with + subdomain%} +
        • {% active_link /docs/ecosystem/tor/ Tor Onion Service %}
      • {% active_link /docs/ecosystem/certificates/ Certificates %}
          -
        • {% active_link /docs/ecosystem/certificates/tls_self_signed_certificate/ Self-signed certificate %}
        • -
        • {% active_link /docs/ecosystem/certificates/tls_domain_certificate/ Certificate domain owners %}
        • -
        • {% active_link /docs/ecosystem/certificates/lets_encrypt/ Let's Encrypt (detailed) %}
        • +
        • + {% active_link + /docs/ecosystem/certificates/tls_self_signed_certificate/ + Self-signed certificate %} +
        • +
        • + {% active_link + /docs/ecosystem/certificates/tls_domain_certificate/ Certificate + domain owners %} +
        • +
        • + {% active_link /docs/ecosystem/certificates/lets_encrypt/ Let's + Encrypt (detailed) %} +
      • Backup
          -
        • {% active_link /docs/ecosystem/backup/backup_github/ Backup to GitHub %}
        • -
        • {% active_link /docs/ecosystem/backup/backup_dropbox/ Backup to Dropbox %}
        • -
        • {% active_link /docs/ecosystem/backup/backup_usb/ Backup to USB device %}
        • +
        • + {% active_link /docs/ecosystem/backup/backup_github/ Backup to + GitHub %} +
        • +
        • + {% active_link /docs/ecosystem/backup/backup_dropbox/ Backup to + Dropbox %} +
        • +
        • + {% active_link /docs/ecosystem/backup/backup_usb/ Backup to USB + device %} +
      • -
      • {% active_link /docs/ecosystem/scenegen/ scenegen %}
      • {% active_link /docs/ecosystem/synology/ Synology %}
      • -
      • {% active_link /docs/ecosystem/hass-configurator/ HASS Configurator %}
      +
  • diff --git a/source/_includes/asides/hassio_navigation.html b/source/_includes/asides/hassio_navigation.html index ffb99b948b03..c30771e6e650 100644 --- a/source/_includes/asides/hassio_navigation.html +++ b/source/_includes/asides/hassio_navigation.html @@ -3,7 +3,7 @@

    Topics

    diff --git a/source/_includes/custom/grid_item_left.html b/source/_includes/custom/grid_item_left.html index 7a0c0cc563c2..3f8f2644cdfe 100644 --- a/source/_includes/custom/grid_item_left.html +++ b/source/_includes/custom/grid_item_left.html @@ -12,7 +12,7 @@

    Observe

    Philips Hue - Google Cast + Google Cast MQTT @@ -41,9 +41,6 @@

    Observe

    Arduino -

    Browse all »

    diff --git a/source/_includes/edit_github.html b/source/_includes/edit_github.html index b5fa2329b843..3b6c57980eb1 100644 --- a/source/_includes/edit_github.html +++ b/source/_includes/edit_github.html @@ -1,4 +1,4 @@ {% assign url_parts = page.url | split: '/' %} {% if page.hide_github_edit != true %} - + {% endif %} diff --git a/source/_includes/javascripts/scripts.html b/source/_includes/javascripts/scripts.html index 4330401c789b..79868bc88dad 100644 --- a/source/_includes/javascripts/scripts.html +++ b/source/_includes/javascripts/scripts.html @@ -5,7 +5,7 @@ s.parentNode.insertBefore(g,s)}(document,'script')); - + diff --git a/source/_includes/site/footer.html b/source/_includes/site/footer.html index 64f21919d5b7..748f6b583402 100644 --- a/source/_includes/site/footer.html +++ b/source/_includes/site/footer.html @@ -27,8 +27,11 @@
    diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html index 35b140ccf88e..b965a92e3879 100644 --- a/source/_includes/site/head.html +++ b/source/_includes/site/head.html @@ -28,8 +28,8 @@ - - + + diff --git a/source/_includes/site/header.html b/source/_includes/site/header.html index 7dfba15d6f6c..be048105ac8f 100644 --- a/source/_includes/site/header.html +++ b/source/_includes/site/header.html @@ -24,7 +24,7 @@ {% endcomment %}
  • Getting started
  • Integrations
  • -
  • Docs
  • +
  • Documentation
  • Examples
  • Blog
  • Need help?
  • @@ -35,7 +35,7 @@ diff --git a/source/_integrations/abode.markdown b/source/_integrations/abode.markdown index e39cfcbc33b7..fc80f19c497a 100644 --- a/source/_integrations/abode.markdown +++ b/source/_integrations/abode.markdown @@ -1,7 +1,6 @@ --- -title: "Abode Home Security" -description: "Instructions on integrating Abode home security with Home Assistant." -logo: abode.jpg +title: Abode +description: Instructions on integrating Abode home security with Home Assistant. ha_category: - Hub - Alarm @@ -15,6 +14,9 @@ ha_category: ha_release: 0.52 ha_iot_class: Cloud Push ha_config_flow: true +ha_codeowners: + - '@shred86' +ha_domain: abode --- The `abode` integration will allow users to integrate their Abode Home Security systems into Home Assistant and use its alarm system and sensors to automate their homes. @@ -24,12 +26,12 @@ Please visit the [Abode website](https://goabode.com/) for further information a There is currently support for the following device types within Home Assistant: - **Alarm Control Panel**: Reports on the current alarm status and can be used to arm and disarm the system. -- [**Binary Sensor**](/integrations/abode/#binary-sensor): Reports on `Quick Actions`, `Door Contacts`, `Connectivity` sensors (remotes, keypads, and status indicators), `Moisture` sensors, and `Motion` or `Occupancy` sensors. Also lists all Abode `Quick Actions` that are set up. You can trigger these quick actions by passing the `entity_id` of your quick action binary sensor to the [trigger_quick_action service](/integrations/abode/#trigger_quick_action). +- **Binary Sensor**: Reports on `Quick Actions`, `Door Contacts`, `Connectivity` sensors (remotes, keypads, and status indicators), `Moisture` sensors, and `Motion` or `Occupancy` sensors. - **Camera**: Reports on `Camera` devices and will download and show the latest captured still image. - **Cover**: Reports on `Secure Barriers` and can be used to open and close the cover. - **Lock**: Reports on `Door Locks` and can be used to lock and unlock the door. -- [**Light**](/integrations/abode/#light): Reports on `Dimmer` lights and can be used to dim or turn the light on and off. -- [**Switch**](/integrations/abode/#switch): Reports on `Power Switch` devices and can be used to turn the power switch on and off. Also reports on `Automations` set up in the Abode system and allows you to activate or deactivate them (does not work with Abode's CUE automations). +- **Light**: Reports on `Dimmer` lights and can be used to dim or turn the light on and off. +- **Switch**: Reports on `Power Switch` and `Water Valve` devices which can be turned on and off. Also reports on `Automations` set up in the Abode system and allows you to activate or deactivate them. - **Sensor**: Reports on `Temperature`, `Humidity`, and `Light` sensors. ## Configuration @@ -90,7 +92,7 @@ Field | Description `event_type` | The type of the event. `event_utc` | The UTC timestamp of the event. `user_name` | The Abode user that triggered the event, if applicable. -`app_type` | The Abode app that triggered the event (e.g. web app, iOS app, etc.). +`app_type` | The Abode app that triggered the event (e.g., web app, iOS app, etc.). `event_by` | The keypad user that triggered the event. `date` | The date of the event in the format `MM/DD/YYYY`. `time` | The time of the event in the format `HH:MM AM`. @@ -113,16 +115,16 @@ For a full list of settings and valid values, consult the ### Service `capture_image` -Request a new still image from your Abode IR camera. +Request a new still image from your Abode camera. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | No | String or list of strings that point at `entity_id`s of Abode cameras. -### Service `trigger_quick_action` +### Service `trigger_automation` -Trigger a quick action automation on your Abode system. +Trigger an automation on your Abode system. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | No | String or list of strings that point at `entity_id`s of binary_sensors that represent your Abode quick actions. +| `entity_id` | No | String or list of strings that point at `entity_id`s of switches that represent your Abode automations. diff --git a/source/_integrations/acer_projector.markdown b/source/_integrations/acer_projector.markdown index ea66c086330f..8827d5453830 100644 --- a/source/_integrations/acer_projector.markdown +++ b/source/_integrations/acer_projector.markdown @@ -1,11 +1,11 @@ --- -title: "Acer Projector Switch" -description: "Instructions on how to integrate Acer Projector switches into Home Assistant." -logo: acer.png +title: Acer Projector +description: Instructions on how to integrate Acer Projector switches into Home Assistant. ha_category: - Multimedia ha_iot_class: Local Polling ha_release: 0.19 +ha_domain: acer_projector --- The `acer_projector` switch platform allows you to control the state of RS232 connected projectors from [Acer](https://www.acer.com/). diff --git a/source/_integrations/actiontec.markdown b/source/_integrations/actiontec.markdown index 2ec050576216..1cf78c72d1a8 100644 --- a/source/_integrations/actiontec.markdown +++ b/source/_integrations/actiontec.markdown @@ -1,10 +1,11 @@ --- -title: "Actiontec" -description: "Instructions on how to integrate Actiontec routers into Home Assistant." +title: Actiontec +description: Instructions on how to integrate Actiontec routers into Home Assistant. logo: actiontec.png ha_category: - Presence Detection ha_release: 0.7 +ha_domain: actiontec --- This platform allows you to detect presence by looking at connected devices to an [Actiontec](https://www.actiontec.com/) device. diff --git a/source/_integrations/adguard.markdown b/source/_integrations/adguard.markdown index 486ccc30c1b4..4eb15a9a3514 100644 --- a/source/_integrations/adguard.markdown +++ b/source/_integrations/adguard.markdown @@ -1,13 +1,16 @@ --- -title: "AdGuard Home" -description: "Instructions on how to integrate AdGuard Home with Home Assistant." -logo: adguard.png +title: AdGuard Home +description: Instructions on how to integrate AdGuard Home with Home Assistant. ha_category: - Network - Sensor - Switch ha_release: 0.95 ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@frenck' +ha_domain: adguard --- AdGuard Home is a network-wide ad- and tracker-blocking DNS server with parental diff --git a/source/_integrations/ads.markdown b/source/_integrations/ads.markdown index 61742c7b38e7..de369c735ac6 100644 --- a/source/_integrations/ads.markdown +++ b/source/_integrations/ads.markdown @@ -1,5 +1,5 @@ --- -title: "ADS" +title: ADS description: Connect Home Assistant to TwinCAT devices via the ADS interface logo: beckhoff.png ha_category: @@ -9,8 +9,9 @@ ha_category: - Sensor - Switch - Cover -ha_release: "0.60" +ha_release: '0.60' ha_iot_class: Local Push +ha_domain: ads --- The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](https://www.beckhoff.hu/english.asp?twincat/default.htm) and other devices implementing this interface. diff --git a/source/_integrations/aftership.markdown b/source/_integrations/aftership.markdown index 6c320fb48560..7f1a79423560 100644 --- a/source/_integrations/aftership.markdown +++ b/source/_integrations/aftership.markdown @@ -1,11 +1,11 @@ --- -title: AfterShip Sensor -description: "Instructions on how to set up AfterShip sensors within Home Assistant." -logo: aftership.png +title: AfterShip +description: Instructions on how to set up AfterShip sensors within Home Assistant. ha_category: - Postal Service ha_release: 0.85 ha_iot_class: Cloud Polling +ha_domain: aftership --- The `aftership` platform allows one to track deliveries by [AfterShip](https://www.aftership.com), a service that supports 490+ couriers worldwide. It is free to use up to 100 tracked packages per month, after that there is a fee. @@ -14,7 +14,7 @@ The sensor value shows the number of packages that are not in `Delivered` state. ## Setup -To use this sensor, you need an [AfterShip Account](https://accounts.aftership.com/register) and set up an API Key. To set up an API Key go to [AfterShip API](https://secure.aftership.com/#/settings/api) page, and copy existing key or generate a new one. +To use this sensor, you need an [AfterShip Account](https://accounts.aftership.com/register) and set up an API Key. To set up an API Key go to [AfterShip API](https://admin.aftership.com/settings/api-keys) page, and copy existing key or generate a new one.
    AfterShip recently started requiring having a credit card on file even if you are only using the free plan. That does not change the functionality of the platform, just something to be aware of. @@ -44,22 +44,22 @@ api_key: ## Service `add_tracking` - You can use the service `aftership.add_tracking` to add trackings to Aftership. + You can use the service `aftership.add_tracking` to add trackings to AfterShip. | Service data attribute | Required | Type | Description | | ---------------------- | -------- | -------- | ----------- | | `tracking_number` | `True` | string | Tracking number -| `slug` | `False` | string | Carrier e.g. `fedex` +| `slug` | `False` | string | Carrier e.g., `fedex` | `title` | `False` | string | Friendly name of package ## Service `remove_tracking` - You can use the service `aftership.remove_tracking` to remove trackings from Aftership. + You can use the service `aftership.remove_tracking` to remove trackings from AfterShip. | Service data attribute | Required | Type | Description | | ---------------------- | -------- | -------- | ----------- | | `tracking_number` | `True` | string | Tracking number -| `slug` | `True` | string | Carrier e.g. `fedex` +| `slug` | `True` | string | Carrier e.g., `fedex`
    This integration retrieves data from AfterShip public REST API, but the integration is not affiliated with AfterShip. diff --git a/source/_integrations/air_quality.markdown b/source/_integrations/air_quality.markdown index 32c20f81e6c1..b88225b82580 100644 --- a/source/_integrations/air_quality.markdown +++ b/source/_integrations/air_quality.markdown @@ -1,7 +1,8 @@ --- -title: "Air Quality" -description: "Instructions on how to add air quality sensors with Home Assistant" +title: Air Quality +description: Instructions on how to add air quality sensors with Home Assistant ha_release: 0.85 +ha_domain: air_quality --- The `air_quality` gather information about the air quality and pollution details. @@ -19,4 +20,3 @@ The platforms cover the following levels (if they are available): - The N2O (nitrogen oxide) level. - The NO (nitrogen monoxide) level. - The NO2 (nitrogen dioxide) level. - diff --git a/source/_integrations/air_quality.xiaomi_miio.markdown b/source/_integrations/air_quality.xiaomi_miio.markdown index 84ed346c5163..270d0841153d 100644 --- a/source/_integrations/air_quality.xiaomi_miio.markdown +++ b/source/_integrations/air_quality.xiaomi_miio.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Air Quality Monitor" description: "Instructions how to integrate your Xiaomi Mi Air Quality Monitor within Home Assistant." -logo: xiaomi.png ha_category: - Health ha_iot_class: Local Polling ha_release: 0.102 +ha_domain: xiaomi_miio --- The `xiaomi_miio` sensor platform is observing your Xiaomi Mi Air Quality Monitor and reporting the air quality values. @@ -16,6 +16,8 @@ Currently, the supported features are: - Attributes - carbon_dioxide_equivalent - total_volatile_organic_compounds + - temperature + - humidity Please follow the instructions on [Retrieving the Access Token](/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token. diff --git a/source/_integrations/airly.markdown b/source/_integrations/airly.markdown index 433dd6545675..6dee218c8fdc 100644 --- a/source/_integrations/airly.markdown +++ b/source/_integrations/airly.markdown @@ -1,11 +1,14 @@ --- -title: "Airly" -description: "Instructions on how to integrate Airly within Home Assistant." -logo: airly.png +title: Airly +description: Instructions on how to integrate Airly within Home Assistant. ha_category: - Health ha_release: 0.101 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@bieniu' +ha_domain: airly --- The `airly` integration uses the [Airly](https://airly.eu/) web service as a source for air quality data for your location. diff --git a/source/_integrations/airvisual.markdown b/source/_integrations/airvisual.markdown index c95b3562d5ef..11251cc5d58d 100644 --- a/source/_integrations/airvisual.markdown +++ b/source/_integrations/airvisual.markdown @@ -1,22 +1,25 @@ --- -title: "AirVisual" -description: "Instructions on how to use AirVisual data within Home Assistant" -logo: airvisual.jpg +title: AirVisual +description: Instructions on how to use AirVisual data within Home Assistant ha_category: - Health ha_release: 0.53 ha_iot_class: Cloud Polling +ha_codeowners: + - '@bachya' +ha_domain: airvisual +ha_config_flow: true --- -The `airvisual` sensor platform queries the [AirVisual](https://airvisual.com/) API for air quality data. Data can be collected via latitude/longitude or by city/state/country. The resulting information creates sensors for the Air Quality Index (AQI), the human-friendly air quality level, and the main pollutant of that area. Sensors that conform to either/both the [U.S. and Chinese air quality standards](https://www.clm.com/publication.cfm?ID=366) can be created. +The `airvisual` sensor platform queries the [AirVisual](https://airvisual.com/) API for air quality data. Data can be collected via latitude/longitude or by city/state/country. The resulting information creates sensors for the Air Quality Index (AQI), the human-friendly air quality level, and the main pollutant of that area. Sensors that conform to either/both the [U.S. and Chinese air quality standards](https://www.clm.com/publication.cfm?ID=366) are created. This platform requires an AirVisual API key, which can be obtained [here](https://airvisual.com/api). Note that the platform was designed using the "Community" package; the "Startup" and "Enterprise" package keys should continue to function, but actual results may vary (or not work at all). -The Community API key is valid for 12 months after which it will expire. You must then go back to the Airvisual website, delete your old key, create a new one following the same steps and update your configuration with the new key. +The Community API key is valid for 12 months after which it will expire. You must then go back to the AirVisual website, delete your old key, create a new one following the same steps and update your configuration with the new key.
    -The "Community" API key is limited to 10,000 calls per month. In order to leave a buffer, the `airvisual` platform queries the API every 10 minutes (600 seconds) by default. Modification of this (via the `scan_interval` key) to a too-low value may result in your API key being deactivated. +The "Community" API key is limited to 10,000 calls per month. In order to leave a buffer, the `airvisual` platform queries the API every 10 minutes (600 seconds) by default. Note that each item in the `geographies` list will consume an API call with each update.
    @@ -25,8 +28,7 @@ The "Community" API key is limited to 10,000 calls per month. In order to leave To enable the platform and gather data via latitude/longitude, add the following lines to your `configuration.yaml` file: ```yaml -sensor: - - platform: airvisual +airvisual: api_key: YOUR_AIRVISUAL_API_KEY ``` @@ -35,74 +37,73 @@ api_key: description: Your AirVisual API key. required: true type: string -monitored_conditions: - description: "The air quality standard(s) to use (`us` for U.S., `cn` for Chinese)." - required: true - type: list - default: ['us', 'cn'] -show_on_map: - description: "Whether to show a marker on the map at the specified location." - required: false - type: boolean - default: true -scan_interval: - description: "The rate in seconds at which AirVisual should be polled for new data." - required: false - type: integer - default: 600 -latitude: - description: The latitude of the location to monitor. - required: false - type: string - default: "The latitude defined under the `homeassistant` key in `configuration.yaml`." -longitude: - description: The longitude of the location to monitor. - required: false - type: string - default: "The longitude defined under the `homeassistant` key in `configuration.yaml`." -city: - description: The city to monitor. - required: false - type: string -state: - description: The state the city belongs to. +geographies: + description: A list of geographical locations to monitor required: false - type: string -country: - description: The country the state belongs to. - required: false - type: string + type: [list, map] + keys: + latitude: + description: The latitude of the location to monitor. + required: inclusive + type: float + longitude: + description: The longitude of the location to monitor. + required: inclusive + type: float + city: + description: The city to monitor. + required: inclusive + type: string + state: + description: The state the city belongs to. + required: inclusive + type: string + country: + description: The country the state belongs to. + required: inclusive + type: string {% endconfiguration %} ## Example Configurations -Configuration using custom Latitude and Longitude: +No explicit configuration (uses the `latitude` and `longitude` defined within `configuration.yaml`): ```yaml -sensor: - - platform: airvisual +airvisual: api_key: YOUR_AIRVISUAL_API_KEY - monitored_conditions: - - cn - show_on_map: false - scan_interval: 300 - latitude: 42.81212 - longitude: 108.12422 ``` -Configuration using city, state, and country: +Configuration using a single custom latitude and longitude: ```yaml -sensor: - - platform: airvisual +airvisual: api_key: YOUR_AIRVISUAL_API_KEY - monitored_conditions: - - us - show_on_map: false - scan_interval: 300 - city: Los Angeles - state: California - country: USA + geographies: + latitude: 42.81212 + longitude: 108.12422 +``` + +Configuration using multiple custom latitude and longitude pairs: + +```yaml +airvisual: + api_key: YOUR_AIRVISUAL_API_KEY + geographies: + - latitude: 42.81212 + longitude: 108.12422 + - latitude: 32.87336 + longitude: -117.22743 +``` + +Configuration using a single city, state, and country: + +```yaml +airvisual: + api_key: YOUR_AIRVISUAL_API_KEY + geographies: + city: Los Angeles + state: California + country: USA ``` ## Determining the City/State/Country @@ -112,20 +113,17 @@ To easily determine the proper values for a particular location, use the [AirVis For example, Sao Paulo, Brazil shows a breadcrumb title of `Brazil > Sao Paulo > Sao Paulo`. Thus, the proper configuration would look like this: ```yaml -sensor: - - platform: airvisual - api_key: abc123 - monitored_conditions: - - us - - cn - city: sao-paulo - state: sao-paulo - country: brazil +airvisual: + api_key: YOUR_AIRVISUAL_API_KEY + geographies: + city: sao-paulo + state: sao-paulo + country: brazil ``` ## Sensor Types -When configured, the platform will create three sensors for each configured air quality standard: +When configured, the platform will create three sensors for each air quality standard: ### Air Quality Index @@ -158,9 +156,8 @@ AQI | Status | Description Pollutant | Symbol | More Info ------- | :----------------: | ---------- -Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) -Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) +Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) +Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) - diff --git a/source/_integrations/aladdin_connect.markdown b/source/_integrations/aladdin_connect.markdown index ddcf9d3797ac..71735d6b6dc2 100644 --- a/source/_integrations/aladdin_connect.markdown +++ b/source/_integrations/aladdin_connect.markdown @@ -1,11 +1,12 @@ --- -title: "Genie Aladdin Connect Cover" -description: "Instructions how to integrate Genie Aladdin Connect garage door covers into Home Assistant." +title: Aladdin Connect +description: Instructions how to integrate Genie Aladdin Connect garage door covers into Home Assistant. logo: aladdin_connect.png ha_category: - Cover ha_release: 0.75 ha_iot_class: Cloud Polling +ha_domain: aladdin_connect --- The `aladdin_connect` cover platform lets you control Genie Aladdin Connect garage doors through Home Assistant. diff --git a/source/_integrations/alarm_control_panel.ifttt.markdown b/source/_integrations/alarm_control_panel.ifttt.markdown index 68961ca8abbd..9900fbfc711d 100644 --- a/source/_integrations/alarm_control_panel.ifttt.markdown +++ b/source/_integrations/alarm_control_panel.ifttt.markdown @@ -1,10 +1,10 @@ --- title: "IFTTT Alarm Control Panel" description: "Instructions on how to integrate IFTTT-controlled security systems into Home Assistant." -logo: ifttt.png ha_category: - Alarm ha_release: 0.66 +ha_domain: ifttt --- The `ifttt` platform allows you to integrate security systems that have no open API but can be controlled through [IFTTT](https://ifttt.com/discover). @@ -64,7 +64,7 @@ event_disarm: type: string default: alarm_disarm optimistic: - description: Specify if the state will be updated by an ifttt_push_alarm_state call (false) or can be set immediately (true). + description: Specify if the state will be updated by an ifttt.push_alarm_state call (false) or can be set immediately (true). required: false type: boolean default: false @@ -87,7 +87,7 @@ For this system to operate correctly, the following IFTTT applets have to be set * **IF** Webhook event `YOUR_ARM_HOME_EVENT` is called, **THEN** set the alarm system to armed home. * **IF** Webhook event `YOUR_ARM_NIGHT_EVENT` is called, **THEN** set the alarm system to armed away. * **IF** Webhook event `YOUR_DISARM_EVENT` is called, **THEN** set the alarm system to armed night. -* **IF** the alarm system was disarmed, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "disarmed"}`. -* **IF** the alarm system state changed to armed home, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_home"}`. -* **IF** the alarm system state changed to armed away, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_away"}`. -* **IF** the alarm system state changed to armed night, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_night"}`. +* **IF** the alarm system was disarmed, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "disarmed"}`. +* **IF** the alarm system state changed to armed home, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_home"}`. +* **IF** the alarm system state changed to armed away, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_away"}`. +* **IF** the alarm system state changed to armed night, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_night"}`. diff --git a/source/_integrations/alarm_control_panel.markdown b/source/_integrations/alarm_control_panel.markdown index b58bac3819f6..f2d52d2aafd5 100644 --- a/source/_integrations/alarm_control_panel.markdown +++ b/source/_integrations/alarm_control_panel.markdown @@ -1,11 +1,11 @@ --- -title: "Alarm Control Panels" -description: "Instructions on how to integrate Alarm Control Panels into Home Assistant." -logo: home-assistant.png +title: Alarm Control Panel +description: Instructions on how to integrate Alarm Control Panels into Home Assistant. ha_category: - Alarm -ha_qa_scale: internal ha_release: 0.7.3 +ha_quality_scale: internal +ha_domain: alarm_control_panel --- -Home Assistant can give you an interface with is similar to a classic alarm system. +Home Assistant can give you an interface which is similar to a classic alarm system. diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown index 32423b8b6ed2..0f5fee56b7d0 100644 --- a/source/_integrations/alarm_control_panel.mqtt.markdown +++ b/source/_integrations/alarm_control_panel.mqtt.markdown @@ -1,11 +1,11 @@ --- title: "MQTT Alarm Control Panel" description: "Instructions on how to integrate MQTT capable Alarm Panels into Home Assistant." -logo: mqtt.png ha_category: - Alarm ha_release: 0.7.4 ha_iot_class: Configurable +ha_domain: mqtt --- The `mqtt` alarm panel platform enables the possibility to control MQTT capable alarm panels. The Alarm icon will change state after receiving a new state from `state_topic`. If these messages are published with *RETAIN* flag, the MQTT alarm panel will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state will be `unknown`. @@ -34,57 +34,10 @@ alarm_control_panel: ``` {% configuration %} -name: - description: The name of the alarm. - required: false - type: string - default: MQTT Alarm -unique_id: - description: An ID that uniquely identifies this alarm panel. If two alarm panels have the same unique ID, Home Assistant will raise an exception. - required: false - type: string -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: true - type: string -command_topic: - description: The MQTT topic to publish commands to change the alarm state. - required: true - type: string -command_template: - description: "The [template](/docs/configuration/templating/#processing-incoming-data) used for the command payload. Available variables: `action` and `code`." - required: false - type: string - default: action -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." - required: false - type: template -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -payload_disarm: - description: The payload to disarm your Alarm Panel. - required: false - type: string - default: DISARM -payload_arm_home: - description: The payload to set armed-home mode on your Alarm Panel. - required: false - type: string - default: ARM_HOME -payload_arm_away: - description: The payload to set armed-away mode on your Alarm Panel. - required: false - type: string - default: ARM_AWAY -payload_arm_night: - description: The payload to set armed-night mode on your Alarm Panel. +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false type: string - default: ARM_NIGHT code: description: If defined, specifies a code to enable or disable the alarm in the frontend. required: false @@ -99,41 +52,28 @@ code_disarm_required: required: false type: boolean default: true -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. +command_template: + description: "The [template](/docs/configuration/templating/#processing-incoming-data) used for the command payload. Available variables: `action` and `code`." required: false type: string - default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. - required: false + default: action +command_topic: + description: The MQTT topic to publish commands to change the alarm state. + required: true type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." - required: false - type: template device: description: 'Information about the device this alarm panel is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' required: false type: map keys: - identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' - required: false - type: [list, string] connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: [list, string] manufacturer: description: 'The manufacturer of the device.' required: false @@ -150,4 +90,64 @@ device: description: 'The firmware version of the device.' required: false type: string +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." + required: false + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string +name: + description: The name of the alarm. + required: false + type: string + default: MQTT Alarm +payload_arm_away: + description: The payload to set armed-away mode on your Alarm Panel. + required: false + type: string + default: ARM_AWAY +payload_arm_home: + description: The payload to set armed-home mode on your Alarm Panel. + required: false + type: string + default: ARM_HOME +payload_arm_night: + description: The payload to set armed-night mode on your Alarm Panel. + required: false + type: string + default: ARM_NIGHT +payload_available: + description: The payload that represents the available state. + required: false + type: string + default: online +payload_disarm: + description: The payload to disarm your Alarm Panel. + required: false + type: string + default: DISARM +payload_not_available: + description: The payload that represents the unavailable state. + required: false + type: string + default: offline +qos: + description: The maximum QoS level of the state topic. + required: false + type: integer + default: 0 +state_topic: + description: The MQTT topic subscribed to receive state updates. + required: true + type: string +unique_id: + description: An ID that uniquely identifies this alarm panel. If two alarm panels have the same unique ID, Home Assistant will raise an exception. + required: false + type: string +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." + required: false + type: template {% endconfiguration %} diff --git a/source/_integrations/alarm_control_panel.template.markdown b/source/_integrations/alarm_control_panel.template.markdown new file mode 100644 index 000000000000..ebaa5efcad62 --- /dev/null +++ b/source/_integrations/alarm_control_panel.template.markdown @@ -0,0 +1,104 @@ +--- +title: "Template Alarm Control Panel" +description: "Instructions on how to integrate Template Alarm Control Panels into Home Assistant." +ha_category: + - Alarm +ha_release: 0.105 +ha_iot_class: "Local Push" +ha_qa_scale: internal +ha_domain: template +--- + +The `template` integrations creates alarm control panels that combine integrations or adds pre-processing logic to actions. + +There are several powerful ways to use this integration, including grouping existing integrations into a simpler integrations, or adding logic that Home Assistant will execute when accessed. + +For example, if you want to expose a true alarm panel to Google Home, Alexa, or HomeKit - but limit its ability to disarm when there's no one home, you can do that using a template. + +Another use case could be grouping a series of sensors and services together to represent various "armed" and "disarmed" states and actions. + +This can simplify the GUI and make it easier to write automations. + +In optimistic mode, the alarm control panel will immediately change state after every command. Otherwise, the alarm control panel will wait for state confirmation from the template. Try to enable it, if experiencing incorrect operation. + +## Configuration + +To enable a Template Alarm Control Panel in your installation, add the following to your `configuration.yaml` file: + +{% raw %} + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + - platform: template + panels: + safe_alarm_panel: + value_template: "{{ states('alarm_control_panel.real_alarm') }}" + arm_away: + service: alarm_control_panel.alarm_arm_away + data: + entity_id: alarm_control_panel.real_alarm + code: !secret alarm_code + arm_home: + service: alarm_control_panel.alarm_arm_home + data: + entity_id: alarm_control_panel.real_alarm + code: !secret alarm_code + disarm: + - condition: state + entity_id: device_tracker.paulus + state: 'home' + - service: alarm_control_panel.alarm_arm_home + data: + entity_id: alarm_control_panel.real_alarm + code: !secret alarm_code +``` + +{% endraw %} + +{% configuration %} +panels: + description: List of your panels. + required: true + type: map + keys: + alarm_control_panel_name: + description: The slug of the panel. + required: true + type: map + keys: + name: + description: Name to use in the frontend. + required: false + type: string + default: Template Alarm Control Panel + value_template: + description: "Defines a template to set the state of the alarm panel. Only the states `armed_away`, `armed_home`, `armed_night`, `disarmed`, `pending`, `triggered` and `unavailable` are used." + required: false + type: template + disarm: + description: Defines an action to run when the alarm is disarmed. + required: false + type: action + arm_away: + description: Defines an action to run when the alarm is armed to away mode. + required: false + type: action + arm_home: + description: Defines an action to run when the alarm is armed to home mode. + required: false + type: action + arm_night: + description: Defines an action to run when the alarm is armed to night mode. + required: false + type: action +{% endconfiguration %} + + + + +## Considerations + +If you are using the state of a integration that takes extra time to load, the Template Alarm Control Panel may get an `unknown` state during startup. This results in error messages in your log file until that integration has completed loading. If you use `is_state()` function in your template, you can avoid this situation. + +For example, you would replace {% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an unknown result: {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown index a83c15eb8789..2e4902eeb769 100644 --- a/source/_integrations/alarmdecoder.markdown +++ b/source/_integrations/alarmdecoder.markdown @@ -1,6 +1,6 @@ --- -title: "AlarmDecoder Alarm" -description: "Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an AlarmDecoder device." +title: AlarmDecoder +description: Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an AlarmDecoder device. logo: alarmdecoder.png ha_category: - Alarm @@ -8,6 +8,7 @@ ha_category: - Sensor ha_release: 0.43 ha_iot_class: Local Push +ha_domain: alarmdecoder --- The `alarmdecoder` integration will allow Home Assistant users who own either a DSC or Honeywell alarm panel to leverage their alarm system and its sensors to provide Home Assistant with rich information about their homes. Connectivity between Home Assistant and the alarm panel is accomplished through a device produced by Nu Tech Software Solutions, known as the AlarmDecoder. The AlarmDecoder devices provide a serial, TCP/IP socket or USB interface to the alarm panel, where it emulates an alarm keypad. @@ -80,8 +81,18 @@ panel_display: required: false default: false type: boolean +autobypass: + description: "If this is set to `true`, then when arming (home or away), it will automatically bypass all open zones (sending '6#'). This will require your code to be entered even if `code_arm_required` is set to `false`." + required: false + default: false + type: boolean +code_arm_required: + description: "If this is set to `false`, you will not need to enter your code to arm the system." + required: false + default: true + type: boolean zones: - description: "AlarmDecoder has no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information on the available zone types, take a look at the [Binary Sensor](/integrations/alarmdecoder) docs. *Note: If no zones are specified, Home Assistant will not load any binary_sensor integrations.*" + description: "AlarmDecoder has no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information on the available zone types, take a look at the [Binary Sensor](/integrations/alarmdecoder) documentation. *Note: If no zones are specified, Home Assistant will not load any binary_sensor integrations.*" required: false type: list keys: @@ -103,7 +114,7 @@ zones: required: false type: integer relayaddr: - description: "Address of the relay or zone expander board to associate with the zone. (ex: 12, 13, 14, or 15). Typically used in cases where a panel will not send bypassed zones such as motion during an armed home state, the Vista 20P is an example of this. Alarmdecoder can emulate a zone expander board and the panel can be programmed to push zone events to this virtual expander. This allows the bypassed zone binary sensors to be utilized. One example is using bypassed motion sensors at night for motion-based automated lights while the system is armed with the motion sensor bypassed." + description: "Address of the relay or zone expander board to associate with the zone. (ex: 12, 13, 14, or 15). Typically used in cases where a panel will not send bypassed zones such as motion during an armed home state, the Vista 20P is an example of this. AlarmDecoder can emulate a zone expander board and the panel can be programmed to push zone events to this virtual expander. This allows the bypassed zone binary sensors to be utilized. One example is using bypassed motion sensors at night for motion-based automated lights while the system is armed with the motion sensor bypassed." required: inclusive type: integer relaychan: @@ -125,6 +136,7 @@ There are several attributes available on the alarm panel to give you more infor - `programming_mode`: Set to `true` if your system is in programming mode. - `ready`: Set to `true` if your system is ready to be armed. Any faults, including motions sensors, will make this value `false`. - `zone_bypassed`: Set to `true` if your system is currently bypassing a zone. +- `code_arm_required`: Set to the value specified in your configuration. ## Services @@ -135,7 +147,7 @@ The Alarm Decoder integration gives you access to several services for you to co - `alarm_arm_night`: Arms the alarm in instant mode; all faults will trigger the alarm. Additionally, the entry delay is turned off on the doors. - `alarm_disarm`: Disarms the alarm from any state. Also clears a `check_zone` flag after an alarm was triggered. - `alarmdecoder.alarm_keypress`: Sends a string of characters to the alarm, as if you had touched those keys on a keypad. -- `alarmdecoder_alarm_toggle_chime`: Toggles the alarm's chime state. +- `alarmdecoder.alarm_toggle_chime`: Toggles the alarm's chime state.
    @@ -157,11 +169,11 @@ Using a combination of the available services and attributes, you can create swi friendly_name: Chime value_template: "{{ is_state_attr('alarm_control_panel.alarm_panel', 'chime', true) }}" turn_on: - service: alarm_control_panel.alarmdecoder_alarm_toggle_chime + service: alarmdecoder.alarm_toggle_chime data: code: !secret alarm_code turn_off: - service: alarm_control_panel.alarmdecoder_alarm_toggle_chime + service: alarmdecoder.alarm_toggle_chime data: code: !secret alarm_code icon_template: >- diff --git a/source/_integrations/alarmdotcom.markdown b/source/_integrations/alarmdotcom.markdown deleted file mode 100644 index ec12d4556ad4..000000000000 --- a/source/_integrations/alarmdotcom.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "Alarm.com Alarm Control Panel" -description: "Instructions on how to integrate Alarm.com into Home Assistant." -logo: alarmdotcom.png -ha_category: - - Alarm -ha_release: 0.11 ---- - -The `alarmdotcom` platform is consuming the information provided by [Alarm.com](https://www.alarm.com/). - -## Configuration - -To enable this, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - platform: alarmdotcom - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: Username for the Alarm.com account. - required: true - type: string -password: - description: Password for the Alarm.com account. - required: true - type: string -name: - description: The name of the alarm. - required: false - default: Alarm.com - type: string -code: - description: Specifies a code to enable or disable the alarm in the frontend. - required: false - type: integer -{% endconfiguration %} diff --git a/source/_integrations/alert.markdown b/source/_integrations/alert.markdown index 1791e897d331..a8f75b5db612 100644 --- a/source/_integrations/alert.markdown +++ b/source/_integrations/alert.markdown @@ -1,11 +1,11 @@ --- -title: "Alert" -description: "Instructions on how to setup automatic alerts within Home Assistant." -logo: home-assistant.png +title: Alert +description: Instructions on how to setup automatic alerts within Home Assistant. ha_category: - Automation ha_release: 0.38 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: alert --- The `alert` integration is designed to notify you when problematic issues arise. @@ -51,7 +51,7 @@ entity_id: title: description: > A title to be used for the notification if the notifier supports it - with [template][template] support. + with [template](/docs/configuration/templating/) support. required: false type: template state: @@ -80,13 +80,13 @@ skip_first: message: description: > A message to be sent after an alert transitions from `off` to `on` - with [template][template] support. + with [template](/docs/configuration/templating/) support. required: false type: template done_message: description: > - A message sent after an alert transitions from `on` to `off` with - [template][template] support. Is only sent if an alert notification + A message sent after an alert transitions from `on` to `off` with + [template](/docs/configuration/templating/) support. Is only sent if an alert notification was sent for transitioning from `off` to `on`. required: false type: template @@ -205,7 +205,7 @@ sent at 2:15, 2:45, 3:45, 4:45, etc., continuing every 60 minutes. ### Message Templates It may be desirable to have the alert notifications include information -about the state of the entity. [Templates](/docs/configuration/templating/) +about the state of the entity. [Templates][template] can be used in the message or name of the alert to make it more relevant. The following will show for a plant how to include the problem `attribute` of the entity. @@ -247,8 +247,8 @@ alert: - 15 - 30 - 60 - can_acknowledge: True # Optional, default is True - skip_first: True # Optional, false is the default + can_acknowledge: true # Optional, default is true + skip_first: true # Optional, false is the default data: inline_keyboard: - 'Close garage:/close_garage, Acknowledge:/garage_acknowledge' diff --git a/source/_integrations/alexa.flash_briefings.markdown b/source/_integrations/alexa.flash_briefings.markdown index e8fd786621fa..9caa646bb27c 100644 --- a/source/_integrations/alexa.flash_briefings.markdown +++ b/source/_integrations/alexa.flash_briefings.markdown @@ -1,10 +1,10 @@ --- title: "Amazon Alexa Flash Briefing" description: "Instructions on how to create your Flash Briefing skills with Home Assistant." -logo: amazon-alexa.png ha_category: - Voice ha_release: "0.31" +ha_domain: alexa --- ## Flash Briefing Skills @@ -13,7 +13,7 @@ As of version [0.31][zero-three-one] Home Assistant supports the new [Alexa Flas ### Requirements -Amazon requires the endpoint of a skill to be hosted via SSL. Self-signed certificates are OK because our skills will only run in development mode. Read more on [our blog][blog-lets-encrypt] about how to set up encryption for Home Assistant. When running Hass.io, using the [Let's Encrypt](/addons/lets_encrypt/) and [Duck DNS](/addons/duckdns/) add-ons is the easiest method. If you are unable to get HTTPS up and running, consider using [this AWS Lambda proxy for Alexa skills](https://community.home-assistant.io/t/aws-lambda-proxy-custom-alexa-skill-when-you-dont-have-https/5230). +Amazon requires the endpoint of a skill to be hosted via SSL. Self-signed certificates are OK because our skills will only run in development mode. Read more on [our blog][blog-lets-encrypt] about how to set up encryption for Home Assistant. Using the [Let's Encrypt](/addons/lets_encrypt/) and [Duck DNS](/addons/duckdns/) add-ons is the easiest method. If you are unable to get HTTPS up and running, consider using [this AWS Lambda proxy for Alexa skills](https://community.home-assistant.io/t/aws-lambda-proxy-custom-alexa-skill-when-you-dont-have-https/5230). Additionally, note that at the time of this writing, your Alexa skill endpoint *must* accept requests over port 443 (Home Assistant default to 8123). There are two ways you can handle this: diff --git a/source/_integrations/alexa.intent.markdown b/source/_integrations/alexa.intent.markdown index c5f34e5bd087..958dac99412f 100644 --- a/source/_integrations/alexa.intent.markdown +++ b/source/_integrations/alexa.intent.markdown @@ -1,10 +1,10 @@ --- title: "Amazon Alexa Custom Skill" description: "Instructions on how to build your Alexa/Amazon Echo custom commands to connect with Home Assistant." -logo: amazon-alexa.png ha_category: - Voice ha_release: "0.10" +ha_domain: alexa --- ## I want to build custom commands to use with Echo @@ -19,7 +19,7 @@ The built-in Alexa integration allows you to integrate Home Assistant into Alexa - Amazon Developer Account. You can sign on [here](https://developer.amazon.com). - An [AWS account](https://aws.amazon.com/free/) is need if you want to use Alexa Custom Skill API. Part of your Alexa Custom Skill will be hosted on [AWS Lambda](https://aws.amazon.com/lambda/pricing/). However you don't need worry the cost, AWS Lambda allow free to use up to 1 millions requests and 1GB outbound data transfer per month. -- The Alexa Custom Skill API also needs your Home Assistant instance can be accessed from Internet. We strongly suggest you host HTTPS server and use validation certificate. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. +- The Alexa Custom Skill API also needs your Home Assistant instance to be accessible from the internet via HTTPS on port 443 using a certificate signed by [an Amazon approved certificate authority](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport), this is so account linking can take place. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Home Assistant using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. ### Create Your Amazon Alexa Custom Skill @@ -28,7 +28,7 @@ The built-in Alexa integration allows you to integrate Home Assistant into Alexa - Click the yellow "Add a new skill" button in the top right - Skill Type: Custom Interaction Model (default) - Name: Home Assistant - - Invocation name: home assistant (or be creative, up to you) + - Invocation name: `home assistant` (or be creative, up to you) - Version: 1.0 - Endpoint: This will be the ARN for the Lambda Function you will create next. @@ -40,7 +40,7 @@ The Alexa Custom skill will trigger a AWS Lambda function to process the request OK, let's go. You first need sign in your [AWS console](https://console.aws.amazon.com/), if you don't have an AWS account yet, you can create a new user [here](https://aws.amazon.com/free/) with 12-month free tier benefit. You don't need worry the cost if your account has already passed the first 12 months, AWS provides up to 1 million Lambda requests, 1GB of outbound data and unlimited inbound data for free every month for all users. See [Lambda pricing](https://aws.amazon.com/lambda/pricing/) for details. -#### Create an IAM Role for Lambda +#### Create an IAM Role for Lambda The first thing you need to do after you sign in to the [AWS console](https://console.aws.amazon.com/) is to create an IAM Role for Lambda execution. AWS has very strict access control, you have to explicitly define and assign the permissions. @@ -61,23 +61,23 @@ Next you need to create a Lambda function. - Click `Service` in top navigation bar, expand the menu to display all AWS services, click `Lambda` under `Compute` section to navigate to Lambda console. Or you may use this [link](https://console.aws.amazon.com/lambda/home) - **IMPORTANT** Your current region will be displayed on the top right corner, make sure you select right region base on your Amazon account's country: - * **US East (N.Virginia)** region for English (US) or English (CA) skills - * **EU (Ireland)** region for English (UK), English (IN), German (DE), Spanish (ES) or French (FR) skills - * **US West (Oregon)** region for Japanese and English (AU) skills. + - **US East (N.Virginia)** region for English (US) or English (CA) skills + - **EU (Ireland)** region for English (UK), English (IN), German (DE), Spanish (ES) or French (FR) skills + - **US West (Oregon)** region for Japanese and English (AU) skills. - Click `Functions` in the left navigation bar, display list of your Lambda functions. - Click `Create function`, select `Author from scratch`, then input a `Function name`. - Select *Python 3.6* or *Python 3.7* as `Runtime`. - Select *Use an existing role* as `Execution role`, then select the role you just created from the `Existing role` list. -- Click `Create function`, then you can config detail of Lambda function. +- Click `Create function`, then you can configuration detail of Lambda function. - Under `Configuration` tab, expand `Designer`, then click `Alexa Skills Kit` in the left part of the panel to add a Alexa Skills Kit trigger to your Lambda function. - Scroll down little bit, you need to input the `Skill ID` from the skill you created in previous step. (You may need to switch back to the Alexa Developer Console to copy the `Skill ID`.) - Click your Lambda Function icon in the middle of the diagram and scroll down, you will see a `Function code` window. - Clear the example code and copy the Python script from: [https://gist.github.com/lpomfrey/97381cf4316553b03622c665ae3a47da](https://gist.github.com/lpomfrey/97381cf4316553b03622c665ae3a47da) - Scroll down again and you will find `Environment variables`, add the following environment variables as needed: - * BASE_URL *(required)*: your Home Assistant instance's Internet accessible URL with port if needed. *Do not include the trailing `/`*. - * NOT_VERIFY_SSL *(optional)*: set to *True* to ignore the SSL issue, if you don't have a valid SSL certificate or you are using self-signed certificate. - * DEBUG *(optional)*: set to *True* to log debugging messages. - * LONG_LIVED_ACCESS_TOKEN *(optional, not recommended)*: you will connect your Alexa Custom skill with your Home Assistant user account in the later steps, so that you don't need to use long-lived access token here. However, the access token you got from login flow is only valid for 30 minutes. It will be hard for you to test lambda function with the access token in test data. So for your convinces, you can remove the access token from the test data, [generate a long-lived access token][generate-long-lived-access-token] put here, then the function will fall back to reading the token from environment variables. (tips: You did not enable the security storage for your environment variables, so your token saved here is not that safe. You should only use it for debugging and testing purpose. You should remove and delete the long-lived access token after you finish the debugging.) + - BASE_URL *(required)*: your Home Assistant instance's Internet accessible URL with port if needed. *Do not include the trailing `/`*. + - NOT_VERIFY_SSL *(optional)*: set to *True* to ignore the SSL issue, if you don't have a valid SSL certificate or you are using self-signed certificate. + - DEBUG *(optional)*: set to *True* to log debugging messages. + - LONG_LIVED_ACCESS_TOKEN *(optional, not recommended)*: you will connect your Alexa Custom skill with your Home Assistant user account in the later steps, so that you don't need to use long-lived access token here. However, the access token you got from login flow is only valid for 30 minutes. It will be hard for you to test lambda function with the access token in test data. So for your convinces, you can remove the access token from the test data, [generate a long-lived access token][generate-long-lived-access-token] put here, then the function will fall back to reading the token from environment variables. (tips: You did not enable the security storage for your environment variables, so your token saved here is not that safe. You should only use it for debugging and testing purpose. You should remove and delete the long-lived access token after you finish the debugging.)

    Screenshot: Environment variables in Lambda function @@ -93,19 +93,20 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom - Sign in to the [Alexa Developer Console][alexa-dev-console] and go to the `Alexa Skills` page. - Find the skill you just created and click `Edit` in the `Actions` column. - Click `ACCOUNT LINKING` in the left navigation bar of build page -- Input all information required. Assuming your Home Assistant can be accessed by https://[YOUR HOME ASSISTANT URL:PORT] - * `Authorization URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize - * `Access Token URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/token - * `Client ID`: - - https://pitangui.amazon.com/ if you are in US - - https://layla.amazon.com/ if you are in EU - - https://alexa.amazon.co.jp/ if you are in JP or AU - +- Input all information required. Assuming your Home Assistant can be accessed by `https://[YOUR HOME ASSISTANT URL:PORT]` + - `Authorization URI`: `https://[YOUR HOME ASSISTANT URL]/auth/authorize` + - `Access Token URI`: `https://[YOUR HOME ASSISTANT URL]/auth/token` + - Note: you must use a valid/trusted SSL Certificate and port 443 for account linking to work + - `Client ID`: + - `https://pitangui.amazon.com/` if you are in US + - `https://layla.amazon.com/` if you are in EU + - `https://alexa.amazon.co.jp/` if you are in JP or AU + The trailing slash is important here. - * `Client Secret`: input anything you like, Home Assistant does not check this field - * `Client Authentication Scheme`: make sure you selected *Credentials in request body*. Home Assistant does not support *HTTP Basic*. - * `Scope`: input `intent`. Home Assistant doesn't use this yet, we may use it in the future when we allow more fine-grained access control. + - `Client Secret`: input anything you like, Home Assistant does not check this field + - `Client Authentication Scheme`: make sure you selected *Credentials in request body*. Home Assistant does not support *HTTP Basic*. + - `Scope`: input `intent`. Home Assistant doesn't use this yet, we may use it in the future when we allow more fine-grained access control. - You can leave `Domain List` and `Default Access Token Expiration Time` as empty.

    @@ -114,11 +115,11 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom - Click `Save` button in the top right corner. - Next, you will use the Alexa Mobile App or [Alexa web-based app](#alexa-web-based-app) to link your account. - * Open the Alexa app, navigate to `Skills` -> `Your Skills` -> `Dev Skills` - * Click the Custom skill you just created. - * Click `Enable`. - * A new window will open to direct you to your Home Assistant's login screen. - * After you successfully login, you will be redirected back to Alexa app. + - Open the Alexa app, navigate to `Skills` -> `Your Skills` -> `Dev Skills` + - Click the Custom skill you just created. + - Click `Enable`. + - A new window will open to direct you to your Home Assistant's login screen. + - After you successfully login, you will be redirected back to Alexa app. ### Configuring your Amazon Alexa skill @@ -210,7 +211,7 @@ Add a sample utterance: ActivateSceneIntent activate {Scene} ``` -Then add the intent to your intent_script section in your HA config file: +Then add the intent to your `intent_script` section in your HA configuration file: ```yaml intent_script: @@ -258,7 +259,7 @@ Add a sample utterance: RunScriptIntent run {Script} ``` -Then add the intent to your intent_script section in your HA config file: +Then add the intent to your intent_script section in your HA configuration file: ```yaml intent_script: @@ -287,6 +288,7 @@ To start, you need to get the skill id: - Click the "View Skill ID" link and copy the ID The configuration is the same as an intent with the exception being you will use your skill ID instead of the intent name. + ```yaml intent_script: amzn1.ask.skill.08888888-7777-6666-5555-444444444444: @@ -339,7 +341,6 @@ text: !include alexa_confirm.yaml Alexa will now respond with a random phrase each time. You can use the include for as many different intents as you like so you only need to create the list once. - [amazon-dev-console]: https://developer.amazon.com [large-icon]: /images/integrations/alexa/alexa-512x512.png [small-icon]: /images/integrations/alexa/alexa-108x108.png diff --git a/source/_integrations/alexa.markdown b/source/_integrations/alexa.markdown index 7b4d34c6e762..634767b3a31a 100644 --- a/source/_integrations/alexa.markdown +++ b/source/_integrations/alexa.markdown @@ -1,16 +1,19 @@ --- -title: "Amazon Alexa" -description: "Instructions on how to connect Alexa/Amazon Echo to Home Assistant." -logo: amazon-alexa.png +title: Amazon Alexa +description: Instructions on how to connect Alexa/Amazon Echo to Home Assistant. ha_category: - Voice featured: true -ha_release: "0.10" +ha_release: '0.10' +ha_codeowners: + - '@home-assistant/cloud' + - '@ochlocracy' +ha_domain: alexa --- ## Automatic setup via Home Assistant Cloud -With [Home Assistant Cloud](/cloud/), you can connect your Home Assistant instance in a few simple clicks to Amazon Alexa. With Home Assistant Cloud you don't have to deal with dynamic DNS, SSL certificates or opening ports on your router. Just log in via the user interface and a secure connection with the cloud will be established. Home Assistant Cloud requires a paid subscription after a 30-day free trial. +With [Home Assistant Cloud](/cloud/), you can connect your Home Assistant instance in a few simple clicks to Amazon Alexa. With Home Assistant Cloud, you don't have to deal with dynamic DNS, SSL certificates, or opening ports on your router. Just log in via the user interface and a secure connection with the cloud will be established. Home Assistant Cloud requires a paid subscription after a 30-day free trial. For Home Assistant Cloud Users, documentation can be found [here](https://www.nabucasa.com/config/amazon_alexa/). @@ -18,19 +21,22 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na There are a few ways that you can use Amazon Alexa and Home Assistant together. -- [Build custom commands to use](/integrations/alexa.intent/) +- [Create an Alexa Smart Home Skill to control lights, etc.](/integrations/alexa.smart_home/) + - Supports utterances without requiring the skill name, such as "Alexa, turn off the light." + - Support for controlling devices through Alexa routines. + - Support for viewing and controlling devices with the Alexa mobile app. +- [Create a Custom Alexa Skill to build custom commands](/integrations/alexa.intent/) - [Create a new Flash Briefing source](/integrations/alexa.flash_briefings/) -- [Use the Smart Home API to control lights, etc](/integrations/alexa.smart_home/) -- Alternative: use the [Emulated Hue integration][emulated-hue-component] to trick Alexa to thinking Home Assistant is a Philips Hue hub. +- Alternative: use the [Emulated Hue integration][emulated-hue-component] to trick Alexa into thinking Home Assistant is a Philips Hue hub. ### Requirements -Manual setup the integration with Amazon Alexa needs several requirements +Manual setup of the integration with Amazon Alexa has several requirements: - Amazon Developer Account. You can sign up [here][amazon-dev-console]. -- Building custom commands and Flash Briefing requires your Home Assistant instance to be accessible from the Internet with HTTPS on port 443. -- An [AWS account](https://aws.amazon.com/free/) is needed if you want to use the Smart Home Skill API. A part of your Smart Home Skill will be hosted on [AWS Lambda](https://aws.amazon.com/lambda/pricing/). However, you don't need to worry about costs, AWS Lambda allows free to use up to 1 million requests and 1GB outbound data transfer per month. -- Smart Home API also needs your Home Assistant instance accessible from the Internet. +- Building custom commands and Flash Briefing require your Home Assistant instance to be accessible from the Internet with HTTPS on port 443. +- An [AWS account](https://aws.amazon.com/free/) is needed if you want to use the Smart Home Skill API. A part of your Smart Home Skill will be hosted on [AWS Lambda](https://aws.amazon.com/lambda/pricing/). However, you don't need to worry about costs; AWS Lambda is free for up to 1 million requests and 1GB of outbound data transfer per month. +- Smart Home API also needs your Home Assistant instance to be accessible from the Internet. [amazon-dev-console]: https://developer.amazon.com [emulated-hue-component]: /integrations/emulated_hue/ diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 2b72bd1df373..49b756e823bf 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -1,28 +1,24 @@ --- title: "Amazon Alexa Smart Home Skill" description: "Instructions on how to build Smart Home skill to connect Amazon Alexa with Home Assistant." -logo: amazon-alexa.png ha_category: - Voice ha_release: "0.54" +ha_codeowners: + - '@home-assistant/cloud' + - '@ochlocracy' +ha_domain: alexa --- -## Amazon Alexa Smart Home +Amazon Alexa provides a Smart Home API for richer home automation control without requiring the user to say the skill name, such as: -While the Skills API described above allows for arbitrary intents, all -utterances must begin with "Alexa, tell $invocation_name ..." +- _"Alexa, turn off the light."_ +- _"Alexa, set the thermostat to cool."_ +- _"Alexa, is the garage door open?"_ -The [Emulated Hue integration][emulated-hue-component] provides a simpler -interface such as, "Alexa, turn on the kitchen light". However, it has some -limitations since everything looks like a light bulb. +It takes considerable effort to configure. Your Home Assistant instance must be accessible from the Internet, and you need to create an Amazon Developer account and an Amazon Web Services (AWS) account. An easier solution is to use [Home Assistant Cloud](/integrations/cloud/). -Amazon provides a Smart Home API for richer home automation control. It takes -considerable effort to configure. The easy solution is to use -[Home Assistant Cloud](/integrations/cloud/). - -However, config Amazon Alexa Smart Home Skill is not an easy job, you have to allow -your Home Assistant accessible from Internet, and you need to create Amazon Developer -account and an Amazon Web Service account. +The [Emulated Hue integration][emulated-hue-component] provides a simpler alternative to use utterances such as _"Alexa, turn on the kitchen light"_. However, it has some limitations since everything looks like a light bulb.

    @@ -33,13 +29,29 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na
    -### Requirements +Steps to Integrate an Amazon Alexa Smart Home Skill with Home Assistant: + +- [Requirements](#requirements) +- [Create an Amazon Alexa Smart Home Skill](#create-an-amazon-alexa-smart-home-skill) +- [Create an AWS Lambda Function](#create-an-aws-lambda-function) + - [Create an IAM Role for Lambda](#create-an-iam-role-for-lambda) + - [Add Code to the Lambda Function](#add-code-to-the-lambda-function) + - [Test the Lambda Function](#test-the-lambda-function) +- [Configure the Smart Home Service Endpoint](#configure-the-smart-home-service-endpoint) +- [Account Linking](#account-linking) +- [Alexa Smart Home Component Configuration](#alexa-smart-home-component-configuration) +- [Supported Platforms](#supported-platforms) +- [Alexa Web-Based App](#alexa-web-based-app) +- [Troubleshooting](#troubleshooting) +- [Debugging](#debugging) -- Amazon Developer Account. You can sign on [here](https://developer.amazon.com). -- An [AWS account](https://aws.amazon.com/free/) is need if you want to use Smart Home Skill API. Part of your Smart Home Skill will be hosted on [AWS Lambda](https://aws.amazon.com/lambda/pricing/). However you don't need worry the cost, AWS Lambda allow free to use up to 1 millions requests and 1GB outbound data transfer per month. -- Smart Home API also needs your Home Assistant instance can be accessed from Internet. We strongly suggest you host HTTPS server and use validation certificate. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. +## Requirements -### Create Your Amazon Alexa Smart Home Skill +- The Alexa Smart Home API requires your Home Assistant instance to be accessible from the internet via HTTPS on port 443 using an SSL/TLS certificate. A self-signed certificate will work, but a certificate signed by [an Amazon approved certificate authority](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport) is recommended. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Home Assistant using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. +- Amazon Developer Account. Sign up [here](https://developer.amazon.com). +- An [Amazon Web Services (AWS)](https://aws.amazon.com/free/) account is required to host the Lambda function for your Alexa Smart Home Skill. [AWS Lambda](https://aws.amazon.com/lambda/pricing/) is free to use for up to 1-million requests and 1GB outbound data transfer per month. + +## Create an Amazon Alexa Smart Home Skill - Sign in [Alexa Developer Console][alexa-dev-console], you can create your free account on the sign in page. - Go to `Alexa Skills` page if you are not, click `Create Skill` button to start the process. @@ -53,13 +65,13 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na - In next screen, make sure *v3* is selected in `Payload version`. - Now, you have created a skeleton of Smart Home skill. Next step we will do some "real" developer work. You can keep Alex Developer Console opened, we need change the skill configuration later. -### Create Your Lambda Function +## Create an AWS Lambda Function -Alexa Smart Home skill will trigger a AWS Lambda function to process the request, we will write a small piece of code hosted as an Lambda function basically redirect the request to your Home Assistant instance, then Alexa integration integration in Home Assistant will process the request and send back the response. Your Lambda function will delivery the response back to Alexa. +Alexa Smart Home skill will trigger a AWS Lambda function to process the request, we will write a small piece of code hosted as an Lambda function basically redirect the request to your Home Assistant instance, then Alexa integration integration in Home Assistant will process the request and send back the response. Your Lambda function will deliver the response back to Alexa.
    -There already are some great tutorials and solutions in our community to achieve same goal "Create your Alexa Smart Home Skill to connect Home Assistant", for example: [Haaska](https://github.com/mike-grant/haaska/wiki). +There already are some great tutorials and solutions in our community to achieve same goal "Create your Alexa Smart Home Skill to connect Home Assistant", for example: [haaska](https://github.com/mike-grant/haaska/wiki). You can follow this document or others, but you cannot mixed-match different solutions since they may have different design. @@ -69,7 +81,7 @@ Amazon also provided a [step-by-step guide](https://developer.amazon.com/docs/sm OK, let's go. You first need sign in your [AWS console](https://console.aws.amazon.com/), if you don't have an AWS account yet, you can create a new user [here](https://aws.amazon.com/free/) with 12-month free tire benefit. You don't need worry the cost if your account already pass the first 12 months, AWS provides up to 1 million Lambda request, 1GB outbound data and all inbound data for free, every month, all users. See [Lambda pricing](https://aws.amazon.com/lambda/pricing/) for details. -#### Create an IAM Role for Lambda +### Create an IAM Role for Lambda First thing you need to do after sing in [AWS console](https://console.aws.amazon.com/) is to create an IAM Role for Lambda execution. AWS has very strict access control, you have to specific define and assign the permissions. @@ -84,29 +96,29 @@ First thing you need to do after sing in [AWS console](https://console.aws.amazo - You can skip `Add tags` page, click `Next: Review`. - Give your new role a name, such as `AWSLambdaBasicExecutionRole-SmartHome`, then click `Create role` button. You should be able to find your new role in the roles list now. -#### Create a Lambda function and add code +### Add Code to the Lambda Function Next you need create a Lambda function. - Click `Service` in top navigation bar, expand the menu to display all AWS services, click `Lambda` under `Compute` section to navigate to Lambda console. Or you may use this [link](https://console.aws.amazon.com/lambda/home) - **IMPORTANT** Your current region will be displayed on the top right corner, make sure you select right region base on your Amazon account's country: - * **US East (N.Virginia)** region for English (US) or English (CA) skills - * **EU (Ireland)** region for English (UK), English (IN), German (DE), Spanish (ES) or French (FR) skills - * **US West (Oregon)** region for Japanese and English (AU) skills. + - **US East (N.Virginia)** region for English (US) or English (CA) skills + - **EU (Ireland)** region for English (UK), English (IN), German (DE), Spanish (ES) or French (FR) skills + - **US West (Oregon)** region for Japanese and English (AU) skills. - Click `Functions` in the left navigation bar, display list of your Lambda functions. - Click `Create function`, select `Author from scratch`, then input a `Function name`. - Select *Python 3.6* or *Python 3.7* as `Runtime`. - Make sure select *Use an existing role* as `Execution role`, then select the role you just created from `Existing role` list. -- Click `Create function`, then you can config detail of Lambda function. +- Click `Create function`, then you can configuration detail of Lambda function. - Under `Configuration` tab, expand `Designer`, then click `Alexa Smart Home` in the left part of the panel to add a Alexa Smart Home trigger to your Lambda function. - Scroll down little bit, you need input the `Skill ID` from the skill you created in previous step. (tips: you may need switch back to Alexa Developer Console to copy the `Skill ID`. -- Click your Lambda Function icon in the middle of the diagram, scroll down you will see a `Function code` window. +- Click your Lambda function icon in the middle of the diagram, scroll down you will see a `Function code` window. - Clear the example code, copy the Python script from: [https://gist.github.com/matt2005/744b5ef548cc13d88d0569eea65f5e5b](https://gist.github.com/matt2005/744b5ef548cc13d88d0569eea65f5e5b) (modified code to support Alexa's proactive mode, see details below) - Scroll down a little bit, you will find `Environment variables`, you need add 4 environment variables: - * BASE_URL *(required)*: your Home Assistant instance's Internet accessible URL with port if needed. *Do not include the trailing `/`*. - * NOT_VERIFY_SSL *(optional)*: you can set it to *True* to ignore the SSL issue, if you don't have a valid SSL certificate or you are using self-signed certificate. - * DEBUG *(optional)*: set to *True* to log the debug message - * LONG_LIVED_ACCESS_TOKEN *(optional, not recommend)*: you will connect your Alexa Smart Home skill with your Home Assistant user account in the later steps, so that you don't need to use long-lived access token here. However, the access token you got from login flow is only valid for 30 minutes. It will be hard for you to test lambda function with the access token in test data. So for your convinces, you can remove the access token from the test data, [generate a long-lived access token][generate-long-lived-access-token] put here, then the function will fall back to read token from environment variables. (tips: You did not enable the security storage for your environment variables, so your token saved here is not that safe. You should only use it for debugging and testing purpose. You should remove and delete the long-lived access token after you finish the debugging.) + - BASE_URL *(required)*: your Home Assistant instance's Internet accessible URL with port if needed. *Do not include the trailing `/`*. + - NOT_VERIFY_SSL *(optional)*: you can set it to *True* to ignore the SSL issue, if you don't have a valid SSL certificate or you are using self-signed certificate. + - DEBUG *(optional)*: set to *True* to log the debug message + - LONG_LIVED_ACCESS_TOKEN *(optional, not recommend)*: you will connect your Alexa Smart Home skill with your Home Assistant user account in the later steps, so that you don't need to use long-lived access token here. However, the access token you got from login flow is only valid for 30 minutes. It will be hard for you to test lambda function with the access token in test data. So for your convinces, you can remove the access token from the test data, [generate a long-lived access token][generate-long-lived-access-token] put here, then the function will fall back to read token from environment variables. (tips: You did not enable the security storage for your environment variables, so your token saved here is not that safe. You should only use it for debugging and testing purpose. You should remove and delete the long-lived access token after you finish the debugging.)

    Screenshot: Environment variables in Lambda function @@ -115,9 +127,9 @@ Next you need create a Lambda function. - Now scroll up to the top, click `Save` button. - You need copy the ARN displayed in the top of the page, which is the identify of this Lambda function. You will need this ARN to continue Alexa Smart Home skill configuration later. -#### Test the Lambda function +### Test the Lambda Function -Now, you have created the Lambda function, before you can test it, you have to set up your Home Assistant. Put following minimal configuration to your configuration.yaml, it will exposures all of your supported device and automation to Alexa. Check the [configuration section](#alexa-component-configuration) if you want more control of the exposure. +Now, you have created the Lambda function, before you can test it, you have to set up your Home Assistant. Put following minimal configuration to your configuration.yaml, it will exposures all of your supported device and automation to Alexa. Check the [configuration section](#alexa-smart-home-component-configuration) if you want more control of the exposure. ```yaml alexa: @@ -152,9 +164,9 @@ Click `Test` button. If you don't have `LONG_LIVED_ACCESS_TOKEN`, you will get a Now, you can login to your Home Assistant and [generate a long-lived access token][generate-long-lived-access-token]. After you put your long-lived access token to the `Environment variable`, do not forget click `Save` button before you `Test` again. -This time, you will get a list of your devices as the response. 🎉 +This time, you will get a list of your devices in the response. 🎉 -### Config the Smart Home Service Endpoint +## Configure the Smart Home Service Endpoint Now removed the long-lived access token if you want, copied the ARN of your Lambda function, then back to [Alexa Developer Console][alexa-dev-console]. You will finish the configuration of the Smart Home skill. @@ -163,26 +175,27 @@ Now removed the long-lived access token if you want, copied the ARN of your Lamb - Click `SMART HOME` in the left navigation bar of build page. - Fill in `Default endpoint` under `2. Smart Home service endpoint` using the `ARN` you copied from your Lambda function configuration. -### Account Linking +## Account Linking Alexa can link your Amazon account to your Home Assistant account. Therefore Home Assistant can make sure only authenticated Alexa request be able to access your home's devices. In order to link the account, you have to make sure your Home Assistant can be accessed from Internet. - Sign in [Alexa Developer Console][alexa-dev-console], go to `Alexa Skills` page if you are not. - Find the skill you just created, click `Edit` link in the `Actions` column. - Click `ACCOUNT LINKING` in the left navigation bar of build page -- Input all information required. Assuming your Home Assistant can be accessed by https://[YOUR HOME ASSISTANT URL:PORT] - * `Authorization URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize - * `Access Token URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/token - * `Client ID`: - - https://pitangui.amazon.com/ if you are in US - - https://layla.amazon.com/ if you are in EU - - https://alexa.amazon.co.jp/ if you are in JP and AU (not verified yet) - +- Input all information required. Assuming your Home Assistant can be accessed by `https://[YOUR HOME ASSISTANT URL:PORT]` + - `Authorization URI`: `https://[YOUR HOME ASSISTANT URL]/auth/authorize` + - `Access Token URI`: `https://[YOUR HOME ASSISTANT URL]/auth/token` + - Note: you must use a valid/trusted SSL Certificate and port 443 for account linking to work + - `Client ID`: + - `https://pitangui.amazon.com/` if you are in US + - `https://layla.amazon.com/` if you are in EU + - `https://alexa.amazon.co.jp/` if you are in JP and AU (not verified yet) + The trailing slash is important here. - * `Client Secret`: input anything you like, Home Assistant does not check this field - * `Client Authentication Scheme`: make sure you selected *Credentials in request body*. Home Assistant does not support *HTTP Basic*. - * `Scope`: input `smart_home`, Home Assistant is not using it yet, we may use it in the future when we allow more fine-grained access control. + - `Client Secret`: input anything you like, Home Assistant does not check this field + - `Client Authentication Scheme`: make sure you selected *Credentials in request body*. Home Assistant does not support *HTTP Basic*. + - `Scope`: input `smart_home`, Home Assistant is not using it yet, we may use it in the future when we allow more fine-grained access control. - You can leave `Domain List` and `Default Access Token Expiration Time` as empty.

    @@ -191,24 +204,25 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom - Click `Save` button in the top right corner. - Next, you will use Alexa Mobile App or [Alexa web-based app](#alexa-web-based-app) to link your account. - * Open the Alexa app, navigate to `Skills` -> `Your Skills` -> `Dev Skills` - * Click the Smart Home skill you just created. - * Click `Enable`. - * A new window will open to direct you to your Home Assistant's login screen. - * After you success login, you will be redirected back to Alexa app. - * You can discovery your devices now. -- Now, you can ask your Echo or in Alexa App, *turn on bedroom* 🎉 + - Open the Alexa app, navigate to `Skills` -> `Your Skills` -> `Dev Skills` + - Click the Smart Home skill you just created. + - Click `Enable`. + - A new window will open to direct you to your Home Assistant's login screen. + - After you success login, you will be redirected back to Alexa app. + - You can discovery your devices now. +- Now, you can ask your Echo or in Alexa App, _"Alexa, turn on bedroom"_ 🎉 -### Alexa Component Configuration +## Alexa Smart Home Component Configuration Example configuration: ```yaml alexa: smart_home: + locale: en-US endpoint: https://api.amazonalexa.com/v3/events - client_id: !secret alexa_client_id - client_secret: !secret alexa_client_secret + client_id: YOUR_SKILL_CLIENT_ID + client_secret: YOUR_SKILL_CLIENT_SECRET filter: include_entities: - light.kitchen @@ -219,31 +233,754 @@ alexa: - switch.outside entity_config: light.kitchen: - name: Custom Name for Alexa - description: The light in the kitchen + name: "Custom Name for Alexa" + description: "The light in the kitchen" switch.stairs: display_categories: LIGHT ``` -The `endpoint`, `client_id` and `client_secret` are optional, and are only required if you want to enable Alexa's proactive mode (i.e. "Send Alexa Events" enabled). Please note the following if you want to enable proactive mode: +{% configuration %} +alexa: + description: Alexa configuration + required: true + type: map + keys: + smart_home: + description: Alexa Smart Home configuration + required: true + type: map + keys: + locale: + description: The locale of your Alexa devices. Supported locales are `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. See [Alexa Locale](#alexa-locale) for additional information. + required: false + type: string + default: en-US + endpoint: + description: >- + To enable proactive events, you send a message to the Alexa event gateway, send it to the event endpoint that aligns with the geographic availability of your smart home skill. Following is the list of endpoints and the regions they cover. See [Proactive Events](#proactive-events) for more information. + * North America: `https://api.amazonalexa.com/v3/events` + * Europe: `https://api.eu.amazonalexa.com/v3/events` + * Far East: `https://api.fe.amazonalexa.com/v3/events` + required: false + type: string + client_id: + description: See [Proactive Events](#proactive-events) for more information. + required: false + type: string + client_secret: + description: See [Proactive Events](#proactive-events) for more information. + required: false + type: string + filter: + description: Filter domains and entities for Alexa. + required: true + type: map + keys: + include_domains: + description: List of domains to include (e.g., `light`). + required: false + type: list + exclude_domains: + description: List of domains to exclude (e.g., `light`). + required: false + type: list + include_entities: + description: List of entities to include (e.g., `light.attic`). + required: false + type: list + exclude_entities: + description: List of entities to include (e.g., `light.attic`). + required: false + type: list + entity_config: + description: Configuration for specific entities. All subordinate keys are the corresponding entity ids or the domains, e.g., `alarm_control_panel.woowoo`. + required: false + type: map + keys: + '``': + description: Additional options for specific entities. + required: false + type: map + keys: + name: + description: Name of the entity to show in Amazon Alexa App. + required: false + type: string + description: + description: Description of the entity to show in Amazon Alexa App. + required: false + type: string + display_categories: + description: >- + Display category and iconography each entity is shown in the Alexa app. Separate each category with a comma. First category is primary. e.g., `MUSIC_SYSTEM,STREAMING_DEVICE,SPEAKER`. See [Alexa Display Categories](#alexa-display-categories) for a list of available categories. + required: false + type: string +{% endconfiguration %} + +### Alexa Locale + +The `locale` should match the location and language used for your Amazon echo devices. + +The supported locales are: + +- `de-DE` +- `en-AU` +- `en-CA` +- `en-GB` +- `en-IN` +- `en-US` +- `es-ES` +- `es-MX` +- `fr-CA` +- `fr-FR` +- `it-IT` +- `ja-JP` + +See [List of Capability Interfaces and Supported Locales][alexa-supported-locales]. + +### Proactive Events + +The `endpoint`, `client_id` and `client_secret` are optional, and are only required if you want to enable Alexa's proactive mode (i.e., "Send Alexa Events" enabled). Please note the following if you want to enable proactive mode: - There are different endpoint URLs, depending on the region of your skill. Please check the available endpoints at - The `client_id` and `client_secret` are not the ones used by the skill that have been set up using "Login with Amazon" (in the [Alexa Developer Console][amazon-dev-console]: Build > Account Linking), but rather from the "Alexa Skill Messaging" (in the Alexa Developer Console: Build > Permissions > Alexa Skill Messaging). To get them, you need to enable the "Send Alexa Events" permission. - If the "Send Alexa Events" permission was not enabled previously, you need to unlink and relink the skill using the Alexa App, or else Home Assistant will show the following error: "Token invalid and no refresh token available. Also, you need to restart your Home Assistant after each disabling/enabling the skill in Alexa." -### Alexa web-based app +### Configure Filter + +By default, no entity will be excluded. To limit which entities are being exposed to Alexa, you can use the `filter` parameter. Keep in mind that only [supported platforms](#supported-platforms) can be added. + +{% raw %} + +```yaml +# Example filter to include specified domains and exclude specified entities +alexa: + smart_home: + filter: + include_domains: + - alarm_control_panel + - light + exclude_entities: + - light.kitchen_light +``` + +{% endraw %} + +Filters are applied as follows: + +1. No includes or excludes - pass all entities +2. Includes, no excludes - only include specified entities +3. Excludes, no includes - only exclude specified entities +4. Both includes and excludes: + - Include domain specified + - if domain is included, and entity not excluded, pass + - if domain is not included, and entity not included, fail + - Exclude domain specified + - if domain is excluded, and entity not included, fail + - if domain is not excluded, and entity not excluded, pass + - if both include and exclude domains specified, the exclude domains are ignored + - Neither include or exclude domain specified + - if entity is included, pass (as #2 above) + - if entity include and exclude, the entity exclude is ignored + +See the [troubleshooting](#troubleshooting) if for issues setting up the integration. + +### Alexa Display Categories + +Configure a display category to override the display category and iconography each entity is shown in the Alexa app. This makes it easier to find and monitor devices. + +```yaml +light.kitchen_light: + display_categories: LIGHT,SWITCH +``` + +

    +Devices such as cameras, doorbells, garage doors, and alarm control panels require specific display categories to provide all available features from Amazon Alexa. Overriding the default display category will limit features provided by Amazon Alexa. +
    + +See [Alexa Display Categories][alexa-display-categories] for a complete list + +## Supported Platforms + +Home Assistant supports the following integrations through Alexa using a Smart Home Skill. For Home Assistant Cloud Users, documentation can be found [here](https://www.nabucasa.com/config/amazon_alexa/). + +The following integrations are currently supported: + +- [Alarm Control Panel](#alarm-control-panel) +- [Alert](#alert-automation-group-input-boolean) +- [Automation](#alert-automation-group-input-boolean) +- [Binary Sensor](#binary-sensor) + - [Doorbell Announcement](#doorbell-announcement) + - [Presence Detection](#presence-detection-with-binary-sensor) +- [Climate](#climate) +- [Cover](#cover) + - [Garage Doors](#garage-doors) +- [Fan](#fan) + - [Fan Speed](#fan-speed) + - [Fan Direction](#fan-direction) + - [Fan Oscillation](#fan-oscillation) +- [Group](#alert-automation-group-input-boolean) +- [Input Boolean](#alert-automation-group-input-boolean) +- [Input Number](#input-number) +- [Image Processing](#image-processing) +- [Light](#light) + - [Brightness](#brightness) + - [Color Temperature](#color-temperature) + - [Color](#color) +- [Lock](#lock) +- [Media Player](#media-player) + - [Channels](#change-channel) + - [Speakers](#speaker-volume) + - [Sound Mode & Equalizers](#equalizer-mode) + - [Inputs](#inputs) + - [Payback Control](#seek) +- [Scene](#scene) +- [Script](#script) +- [Sensor](#sensor) +- [Switch](#switch) +- [Timer](#timer) +- [Vacuum](#vacuum) + +### Alarm Control Panel + +Arm and disarm Alarm Control Panel entities. Ask Alexa for the state of the Alarm Control Panel entity. + +- _"Alexa, arm my home in away mode."_ +- _"Alexa, arm my home."_ +- _"Alexa, disarm my home."_ +- _"Alexa, is my home armed?"_ + +#### Arming + +The Alarm Control Panel state must be in the `disarmed` state before arming. Alexa does not support switching from an armed state without first disarming, e.g., switching from `armed_home` to `armed_night`. + +The Alarm Control Panel state `armed_custom_bypass` isn't supported by Alexa and is treated as `armed_home`. + +
    + +Alexa does not support arming with voice PIN at this time. Therefore if the Alarm Control Panel requires a `code` for arming or the `code_arm_required` attribute is `true`, the entity will not be exposed during discovery. +The Alarm Control Panel may default the `code_arm_required` attribute to `true` even if the platform does not support or require it. Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override `code_arm_required` to `false` and expose the Alarm Control Panel during discovery. + +
    + +#### Disarming + +Users must opt-in to the disarm by voice feature in the Alexa App. Alexa will require a 4 digit voice personal identification number (PIN) for disarming. Configure a 4 digit PIN in the Alexa app, or use an existing 4 digit PIN code configured for the Alarm Control Panel. + +

    + + Screenshot: Alexa App Security System PIN +

    + +To use the exiting code configured for the Alarm Control Panel the `code` must be 4 digits and the `code_format` attribute must be `FORMAT_NUMBER`. After discovery, the Alexa app will offer the ability to use the existing `code`, or create an additional 4 digit PIN to use with Alexa. + +The existing code is never communicated to Alexa from Home Assistant. During disarming, Alexa will ask for a PIN. The PIN spoken to Alexa is relayed to Home Assistant and passed to the `alarm_control_panel.alarm_disarm` service. If the `alarm_control_panel.alarm_disarm` service fails for any reason, it is assumed the PIN was incorrect and reported to Alexa as an invalid PIN. + +### Alert, Automation, Group, Input Boolean + +Turn on and off Alerts, Automations, Groups, and Input Boolean entities as switches. + +- _"Alexa, turn on the front door alert."_ +- _"Alexa, turn off energy saving automations."_ +- _"Alexa, Downstairs to on."_ + +### Binary Sensor + +Requires [Proactive Events](#proactive-events) enabled. + +Binary Sensors with a [`device_class`](/integrations/binary_sensor/#device-class) attribute of `door` `garage_door` `opening` `window` `motion` `presense` are supported. + +| `device_class` | Alexa Sensor Type | +| :------------: | :---------------: | +| `door` | Contact | +| `garage_door` | Contact | +| `opening` | Contact | +| `window` | Contact | +| `motion` | Motion | +| `presense` | Motion | + +Ask Alexa for the state of a contact sensor. + +- _"Alexa, is the bedroom window open?"_ + +#### Routines + +Requires [Proactive Events](#proactive-events) enabled. + +Alexa Routines can be triggered with Binary Sensors exposed as contact or motion sensors. + +Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to expose a `binary_sensor` to Alexa. + +#### Doorbell Announcement + +Requires [Proactive Events](#proactive-events) enabled. + +Configure a `binary_sensor` with `display_category` of `DOORBELL` in the [`entity_config`](#entity_config) to gain access to the doorbell notification settings in the Alexa App. + +```yaml +alexa: + smart_home: + entity_config: + binary_sensor.alexa_doorbell: + name: "Front Door" + description: "Doorbell Binary Sensor" + display_categories: DOORBELL +``` + +Alexa will announce on all echo devices _"Someone is at the [entity name]"_ when a `binary_sensor` state changes from `off` to `on`. + +
    +Each Amazon Echo device will need the communication and announcements setting enabled, and the Do Not Disturb feature turned off. +
    + +

    + + Screenshot: Alexa App Doorbell Notification +

    + +#### Presence Detection with Binary Sensor + +Requires [Proactive Events](#proactive-events) enabled. + +Configure a `binary_sensor` that has a `device_class` attribute of `motion` or `presence` and configure `display_category` to `CAMERA` in the [`entity_config`](#entity_config) to gain access the presence detected notification settings in the Alexa App. + +```yaml +alexa: + smart_home: + entity_config: + binary_sensor.driveway_presence: + name: "Driveway" + description: "Driveway Presence Sensor" + display_categories: CAMERA +``` + +Alexa will announce on all echo devices _"Person detected at [entity name]"_. + +
    + +Each Echo device will need the communication and Announcements setting enabled, and the Do Not Disturb feature turned off. + +
    + +

    + + Screenshot: Alexa App Person Detection Notification +

    + +[Image Processing](#image-processing) entities also support this notification. + +### Climate + +Single, double, and triple set-point thermostats are supported. The temperature value from the thermostat will also be exposed at a separate [temperature sensor](#sensor). + +#### Set Thermostat Temperature + +- _"Alexa, set thermostat to 20."_ +- _"Alexa, set the AC to 75."_ +- _"Alexa, make it warmer in here."_ +- _"Alexa, make it cooler in here."_ + +#### Thermostat Mode + +- _"Alexa, set living room thermostat to automatic."_ + +- `DRY` is shown in Alexa app as `DEHUMIDIFY` +- `ECO` is handled as a `preset` in Home Assistant, and will not display in the Alexa app. +- `FAN_ONLY` is not supported by the Alexa voice model and is shown as `OFF` in the Alexa App. + +To change the thermostat mode, the exact utterance must be used: + +- _"Alexa, set [entity name] to [mode utterance]."_ + +If the climate entity supports on/off, use _"turn on"_ and _"turn off"_ utterances with the entity name or the mode utterance. + +- _"Alexa, turn on the [mode utterance]."_ +- _"Alexa, turn off the [entity name]."_ + +Alexa supports the following utterances value for climate thermostat mode: + +| HA Climate Mode | Alexa Mode Utterances | +| --------------- | ----------------------- | +| `AUTO` | _"auto"_, _"automatic"_ | +| `COOL` | _"cool"_, _"cooling"_ | +| `HEAT` | _"heat"_, _"heating"_ | +| `ECO` | _"eco"_, _"economical"_ | +| `DRY` | _"dry"_, _"dehumidify"_ | +| `OFF` | _"off"_ | + +### Cover + +Covers should be configured with the appropriate `device_class`. + +Covers with a `device_class` of `blind`, `shade`, `curtin` are shown as an Interior Blind in the Alexa App and Covers with a `window`, `awning`, or `shutter` will show as an Exterior Blind. + +Covers with the `device_class` of `garage` are shown as a [Garage Door](#garage-doors) and support the Open by Voice PIN feature. + +Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to correctly expose a `cover` to Alexa. + +#### Open/Close/Raise/Lower + +Home Assistant configures covers with semantics that provide _"raise"_, _"lower"_, _"open"_, _"close"_ utterances for covers. In addition to semantics _"turn on"_ / _"turn off"_ utterances will also work. + +- _"Alexa, open the garage door."_ +- _"Alexa, close the curtain."_ +- _"Alexa, lower the shades."_ +- _"Alexa, raise the roof!"_ + +Semantics are assigned based on the features supported by the cover. If the cover supports tilt functionality, the semantics _"open"_ and _"close"_ are assigned to the tilt functionality, and the semantics _"raise"_ and _"lower"_ are assigned to the position functionality. + +If the cover does not support tilt, all semantics _"raise"_, _"lower"_, _"open"_, _"close"_ are assigned to the position functionality. + +#### Set Cover Position + +Covers that support a set position can be controlled using percentages. + +- _"Alexa, set the [entity name] position to thirty percent."_ +- _"Alexa, increase [entity name] position by ten percent."_ +- _"Alexa, decrease [entity name] position by twenty percent."_ + +| Locale | Friendly Name Synonyms | +| ------- | ------------------------- | +| `en-US` | _"position"_, _"opening"_ | + +Currently, Alexa only supports friendly name synonyms for the `en-US` locale. + +#### Set Cover Tilt + +Covers that support tilt position can be controlled using percentages. + +- _"Alexa, set the [entity name] tilt to thirty percent."_ +- _"Alexa, increase [entity name] tilt by ten percent."_ +- _"Alexa, decrease [entity name] tilt by twenty percent."_ + +| Locale | Friendly Name Synonyms | +| ------- | ---------------------------------- | +| `en-US` | _"tilt"_, _"angle"_, _"direction"_ | + +Currently, Alexa only supports friendly name synonyms for the `en-US` locale. + +#### Garage Doors + +Covers with a `device_class` of `garage` support the Open by Voice PIN feature in the Alexa app. Configure a 4 digit PIN code to open the garage door in the Alexa app. + +

    + + Screenshot: Alexa App Garage Door Open by voice +

    + +### Fan + +Control fan speed, direction, and oscillation. + +#### Fan Speed + +The fan device must support the `speed` attribute. `speed` can be set using a percentage or a range value determined from the `speed_list` attribute. + +- _"Alexa, set the fan speed to three."_ +- _"Alexa, set the fan speed to fifty percent."_ +- _"Alexa, set the fan power level to fifty percent."_ +- _"Alexa, turn up the speed on the tower fan."_ +- _"Alexa, set the air speed on the tower fan to maximum."_ + +The `speed_list` attribute is used to determine the range value. For example, using a `speed_list` consisting of `[off, low, medium, high]` the range values would be `0:off`, `1:low`, `2:medium`, `3:high`. + +The following table lists the possible friendly name synonyms available for a fan with `speed_list: [off, low, medium, high]`. + +| Fan Range | Friendly Name Synonyms | +| --------- | ------------------------------------------------------------------ | +| 0 | _"zero"_, _"off"_ | +| 1 | _"one"_, _"thirty-three percent"_, _"low"_, _"minimum"_, _"min"_ | +| 2 | _"two"_, _"sixty-six percent"_, _"medium"_ | +| 3 | _"three"_, _"one hundred percent"_, _"high"_, _"maximum"_, _"max"_ | + +The following synonyms can be used for _"fan speed"_ + +| Locale | Friendly Name Synonyms | +| ------- | -------------------------------------------------------------------------------------------------- | +| `en-US` | _"fan speed"_, _"airflow speed"_, _"wind speed"_, _"air speed"_, _"air velocity"_, _"power level"_ | + +Currently, Alexa only supports friendly name synonyms for the `en-US` locale. + +#### Fan Direction + +The fan device must support the `direction` attribute. + +- _"Alexa, set the fan direction to forward."_ +- _"Alexa, set the fan direction to reverse."_ + +#### Fan Oscillation + +The fan device must support the `oscillating` attribute. + +- _"Alexa, is oscillate on for the tower fan?"_ +- _"Alexa, turn on swivel for the tower fan."_ +- _"Alexa, turn on oscillation mode for the table fan."_ + +| Locale | Friendly Name Synonyms | +| ------- | ------------------------------------------------------------------------ | +| `en-US` | _"oscillate"_, _"swivel"_, _"oscillation"_, _"spin"_, _"back and forth"_ | + +Currently, Alexa only supports friendly name synonyms for the `en-US` locale. + +### Image Processing + +Requires [Proactive Events](#proactive-events) enabled. + +#### Presence Detection Notification + +All `image_processing` entities support the presence detected notification settings in the Alexa App. Any state change will trigger the notification. + +Alexa will announce on all echo devices _"Person detected at [entity name]"_. + +

    + + Screenshot: Alexa App Person Detection Notification +

    + +
    + +Display category will default to `CAMERA` to enable presence detected notification settings in the Alexa App. Each Echo device will need the communication and Announcements setting enabled, and the Do Not Disturbed feature turned off. + +
    + +### Input Number + +Control an `input_number` entity with Alexa. Configures Alexa with the `min`, `max`, `step`, and `unit_of_measurement` attributes for the entity. + +- _"Alexa, set [entity name] to forty five [unit of measurement]."_ +- _"Alexa, increase the [entity name] by two."_ +- _"Alexa, set the [entity name] to maximum."_ + +The following table lists the possible friendly name synonyms available for a Input Number with `min: -90, max: 90, step: 45, unit_of_measurement: degrees`. + +| Fan Range | Friendly Name Synonyms | +| --------- | ----------------------------------------- | +| -90 | _"negative ninety"_, _"minimum"_, _"min"_ | +| -45 | _"negative forty five"_ | +| 0 | _"zero"_ | +| 45 | _"forty five"_ | +| 90 | _"ninety"_, _"maximum"_, _"max"_ | + +### Light + +Control lights with _"turn on"_ and _"turn off"_ utterances, adjust brightness, color, and temperature. + +- _"Alexa, turn on the bathroom light."_ +- _"Alexa, turn off the patio light."_ + +#### Brightness + +Lights that support brightness can be adjusted with percentages ranging from 0 to 100 percent. + +- _"Alexa, set the bedroom light to fifty percent."_ +- _"Alexa, living room lights to one hundred percent."_ + +The _"dim"_ utterance will decrease the brightness of a light 25 percentage points. + +- _"Alexa, dim the bathroom light."_ + +#### Color Temperature + +Adjust lights that support color temperature using the following friendly names: + +- _"Alexa, set the dining room softer."_ +- _"Alexa, make the living room warmer."_ +- _"Alexa, set the dining room cooler."_ +- _"Alexa, make the living room light whiter."_ +- _"Alexa, make the living room warm white."_ +- _"Alexa, set the kitchen to daylight."_ + +The following table lists the possible friendly name synonyms available to lights that support color temperature. + +| Color Temperature in Kelvin | Friendly Name Synonyms | +| -----| ---------------------------------------------- | +| 2200 | _"warm"_, _"warm white"_ | +| 2700 | _"incandescent"_, _"soft white"_ | +| 4000 | _"white"_ | +| 5500 | _"daylight"_, _"daylight white"_ | +| 7000 | _"cool"_, _"cool white"_ | + +Use _"warmer"_, _"softer"_, _"cooler_, _"whiter"_ utterances to adjust color temperature by 50 `mired` (approximately 300-500 degree kelvin change). + +- _"Alexa, set the dining room softer."_ +- _"Alexa, make the living room warmer."_ +- _"Alexa, set the dining room cooler."_ +- _"Alexa, make the living room light whiter."_ + +#### Color + +Set the light color using the CSS [basic color keywords](https://drafts.csswg.org/css-color-3/#html4) or [extended color keywords](https://drafts.csswg.org/css-color-3/#svg-color) as the friendly color name. + +- _"Alexa, set the front porch light to blue."_ +- _"Alexa, set the bedroom light to red."_ +- _"Alexa, change the kitchen to the color crimson."_ + +### Lock + +- _"Alexa, lock my front door."_ +- _"Alexa, unlock the dungeon."_ + +#### Unlocking + +To unlock, Alexa will require a 4 digit voice personal identification number (PIN) for unlocking. Configure a 4 digit PIN in the Alexa app to unlock locks. + +### Media Player + +#### Change Channel + +- _"Alexa, change the channel to 200 on the Living Room TV."_ +- _"Alexa, change the channel to PBS on the TV."_ +- _"Alexa, next channel on the Living Room TV."_ +- _"Alexa, channel up on the TV."_ +- _"Alexa, channel down on the TV."_ + +#### Speaker Volume + +- _"Alexa, set the volume of the speakers to 50."_ +- _"Alexa, turn the volume down on the stereo by 20."_ +- _"Alexa, turn the volume down on Living Room TV."_ +- _"Alexa, mute speakers."_ +- _"Alexa, unmute speakers."_ +- _"Alexa, lower the volume on the stereo."_ +- _"Alexa, volume up 20 on the speakers."_ + +#### Equalizer Mode + +Supports changing the Media Player `sound_mode` from the preset `sound_mode_list`. + +- _"Alexa, set mode to movie on the TV."_ + +Alexa only supports the following modes: `movie`, `music`, `night`, `sport`, `tv`. + +#### Inputs + +Supports changing the Media Player `source` from the preset `source_list`. + +- _"Alexa, change the input to DVD on the Living Room TV."_ + +Home Assistant will attempt to translate the the `media_player` `source_list` into a valid `source` name for Alexa. Alexa only supports the following input names: + +`AUX 1`, `AUX 2`, `AUX 3`, `AUX 4`, `AUX 5`, `AUX 6`, `AUX 7`, `BLURAY`, `CABLE`, `CD`, `COAX 1`, `COAX 2`, `COMPOSITE 1`, `DVD`, `GAME`, `HD RADIO`, `HDMI 1`, `HDMI 2`, `HDMI 3`, `HDMI 4`, `HDMI 5`, `HDMI 6`, `HDMI 7`, `HDMI 8`, `HDMI 9`, `HDMI 10`, `HDMI ARC`, `INPUT 1`, `INPUT 2`, `INPUT 3`, `INPUT 4`, `INPUT 5`, `INPUT 6`, `INPUT 7`, `INPUT 8`, `INPUT 9`, `INPUT 10`, `IPOD`, `LINE 1`, `LINE 2`, `LINE 3`, `LINE 4`, `LINE 5`, `LINE 6`, `LINE 7`, `MEDIA PLAYER`, `OPTICAL 1`, `OPTICAL 2`, `PHONO`, `PLAYSTATION`, `PLAYSTATION 3`, `PLAYSTATION 4`, `SATELLITE`, `SMARTCAST`, `TUNER`, `TV`, `USB DAC`, `VIDEO 1`, `VIDEO 2`, `VIDEO 3`, `XBOX` + +#### Playback State + +Requires [Proactive Events](#proactive-events) enabled. + +#### Seek + +- _"Alexa, skip 30 seconds on device."_ +- _"Alexa, go back 10 seconds on device."_ + +### Scene + +Activate scenes with scene name, or _"turn on"_ utterance. Home Assistant does not support deactivate or _"turn off"_ for scenes at this time. + +- _"Alexa, Party Time."_ +- _"Alexa, turn on Party Time."_ + +### Script + +Run script with script name, or _"turn on"_ utterance. Deactivate a running script with _"turn off"_ utterance. + +- _"Alexa, Party Time."_ +- _"Alexa, turn on Party Time."_ +- _"Alexa, turn off Party Time."_ + +### Sensor + +Requires [Proactive Events](#proactive-events) enabled. + +Only temperature sensors are configured at this time. + +- _"Alexa, what's the temperature in the kitchen?"_ +- _"Alexa, what's the upstairs temperature?"_ +- _"Alexa, what's the temperature of my ex-girlfriend's heart?"_ + +### Switch + +Support _"turn on"_ and _"turn off"_ utterances. + +- _"Alexa, turn on the vacuum."_ +- _"Alexa, turn off the lights."_ + +### Timer + +Start a timer with using the _"turn on"_ utterance. + +- _"Alexa, turn on the laundry."_ + +Cancel a timer using the _"turn off"_ utterance. + +- _"Alexa, turn off the laundry."_ + +Pause and Restart Timer entities in Home Assistant. + +- _"Alexa, pause the microwave."_ +- _"Alexa, hold the sous vide."_ +- _"Alexa, restart the microwave."_ + +
    +To avoid issues with Alexa built in timer functionality. The timer entity can not include the word "timer" in the friendly name. +
    + +### Vacuum + +Support _"turn on"_ and _"turn off"_ utterances. Pause and Resume + +- _"Alexa, turn on the vacuum."_ +- _"Alexa, pause the vacuum."_ +- _"Alexa, restart the vacuum."_ + +## Alexa Web-Based App The following is a list of regions and the corresponding URL for the web-based Alexa app: -* United States: -* United Kingdom: -* Germany: -* Japan: -* Canada: -* Australia: -* India: -* Spain: +- United States: `https://alexa.amazon.com` +- United Kingdom: `https://alexa.amazon.co.uk` +- Germany: `https://alexa.amazon.de` +- Japan: `https://alexa.amazon.co.jp` +- Canada: `https://alexa.amazon.ca` +- Australia: `https://alexa.amazon.com.au` +- India: `https://alexa.amazon.in` +- Spain: `https://alexa.amazon.es` + +## Troubleshooting + +### Binary Sensor not available in Routine Trigger + +Binary Sensors with a [`device_class`](/integrations/binary_sensor/#device-class) attribute of `door` `garage_door` `opening` `window` `motion` `presense` are supported. + +Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to expose a `binary_sensor` to Alexa. + +### Token Invalid and no Refresh Token Available + +Disable and re-enable the skill using the Alexa App; then restart Home Assistant. + +## Debugging + +The Alexa integration will log additional information about state updates and other messages when the log level is set to `debug`. Add the relevant line below to the `configuration.yaml`: + +If using Alexa with an Alexa Smart Home Skill and Lambda function such as haaska: + +```yaml +logger: + default: info + logs: + homeassistant.components.alexa: debug +``` + +If using Home Assistant Cloud you also need to debug `hass_nubucasa.iot`: + +```yaml +logger: + default: info + logs: + homeassistant.components.alexa: debug + hass_nabucasa.iot: debug +``` [alexa-dev-console]: https://developer.amazon.com/alexa/console/ask [emulated-hue-component]: /integrations/emulated_hue/ [generate-long-lived-access-token]: https://developers.home-assistant.io/docs/en/auth_api.html#long-lived-access-token +[alexa-display-categories]: https://developer.amazon.com/docs/alexa/device-apis/alexa-discovery.html#display-categories +[alexa-supported-locales]: https://developer.amazon.com/docs/alexa/device-apis/list-of-interfaces.html diff --git a/source/_integrations/almond.markdown b/source/_integrations/almond.markdown new file mode 100644 index 000000000000..041b13d0a77a --- /dev/null +++ b/source/_integrations/almond.markdown @@ -0,0 +1,74 @@ +--- +title: Almond +description: Instructions on how to setup Almond within Home Assistant. +ha_category: + - Voice +ha_iot_class: Local Polling +ha_release: '0.102' +ha_config_flow: true +ha_codeowners: + - '@gcampax' + - '@balloob' +ha_domain: almond +--- + +[Almond](https://almond.stanford.edu/) is an open, privacy-preserving virtual assistant by [Stanford Open Virtual Assistant Lab](https://oval.cs.stanford.edu/). It allows you, among other things, to control Home Assistant using natural language. Once installed, it will be available on Lovelace via the microphone icon in the top right. + +Almond consists of three parts: + +- Almond Server: Knows about Home Assistant and your data. Executes your sentences. +- LUInet: Neural network that converts your sentences into Thingtalk programs. +- Thingpedia: Skills that provide the building blocks for Thingtalk programs. + +Architectural overview of how all pieces fit together. + +## Installation + +### Home Assistant add-on installation + +To install Almond Server, go to the Home Assistant add-on store, search for Almond and click on Install. Once started, it will initiate a configuration flow to finish set up in Home Assistant. You can find it on the integrations page in the configuration panel. + +### Manual installation + +You can install Almond Server by following [the instructions in their README](https://github.com/stanford-oval/almond-server#running-almond-server). + +Before linking it to Home Assistant, you will need to visit the Almond UI once to create a password. It is by default available on port 3000. + +Once installed, configure Almond like this: + +```yaml +# Example configuration.yaml entry +almond: + type: local + host: http://127.0.0.1:3000 +``` + +The Almond integration does not update configuration entries yet. If you make a change to configuration.yaml, you will need to remove the configuration entry and then restart Home Assistant. + +### Almond Web + +Stanford offers a hosted version of Almond Server called Almond Web. To use this, go to the integrations page and add Almond using the add integration flow. + +Your Home Assistant installation needs to be externally accessible if you want Almond Web to be able to control Home Assistant. + +### Almond Web - Manual installation + +It is possible to set up Almond Web manually. You will need to create your own client ID and secret in the web interface. + +```yaml +# Example configuration.yaml entry +almond: + type: oauth2 + client_id: AAAAAAAAAAAAA + client_secret: BBBBBBBBBBBBBBBBB +``` + +You can now go to the integrations page and start the configuration flow. + +## Language Support + +Almond is currently limited to the English language. This is not a technical limitation but requires specialized engineering effort. Almond has currently no public timeline for adding other languages. + +## Device Support + +Almond is constantly improving. It does not currently support all devices, but we're working with Almond on improving this. diff --git a/source/_integrations/alpha_vantage.markdown b/source/_integrations/alpha_vantage.markdown index 5a6a919ef0f3..f79d83adb9bf 100644 --- a/source/_integrations/alpha_vantage.markdown +++ b/source/_integrations/alpha_vantage.markdown @@ -1,11 +1,14 @@ --- -title: "Alpha Vantage" -description: "Instructions on how to setup Alpha Vantage within Home Assistant." +title: Alpha Vantage +description: Instructions on how to setup Alpha Vantage within Home Assistant. logo: alpha_vantage.png ha_category: - Finance ha_iot_class: Cloud Polling -ha_release: "0.60" +ha_release: '0.60' +ha_codeowners: + - '@fabaff' +ha_domain: alpha_vantage --- The `alpha_vantage` sensor platform uses [Alpha Vantage](https://www.alphavantage.co) to monitor the stock market. This platform also provides detail about exchange rates. @@ -89,4 +92,3 @@ sensor: to: USD name: Bitcoin ``` - diff --git a/source/_integrations/amazon_polly.markdown b/source/_integrations/amazon_polly.markdown index 7a63388dfbaa..60c3cbc83736 100644 --- a/source/_integrations/amazon_polly.markdown +++ b/source/_integrations/amazon_polly.markdown @@ -1,10 +1,12 @@ --- -title: "Amazon Polly" -description: "Instructions on how to setup Amazon Polly with Home Assistant." -logo: polly.png +title: Amazon Polly +description: Instructions on how to setup Amazon Polly with Home Assistant. ha_category: - Text-to-speech ha_release: 0.37 +ha_codeowners: + - '@robbiet480' +ha_domain: amazon_polly --- The `amazon_polly` text-to-speech platform that works with [Amazon Polly](https://aws.amazon.com/polly/) to create the spoken output. diff --git a/source/_integrations/ambiclimate.markdown b/source/_integrations/ambiclimate.markdown index a5e64074fd3e..e83cfe321d4c 100644 --- a/source/_integrations/ambiclimate.markdown +++ b/source/_integrations/ambiclimate.markdown @@ -1,16 +1,20 @@ --- -title: "Ambiclimate A/C controller" -description: "Instructions on how to integrate Ambiclimate A/C controller into Home Assistant." +title: Ambiclimate +description: Instructions on how to integrate Ambiclimate A/C controller into Home Assistant. logo: ambiclimate.png ha_category: Climate ha_release: 0.93 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@danielhiversen' +ha_domain: ambiclimate --- Integrates [Ambiclimate](https://ambiclimate.com/) Air Conditioning controller into Home Assistant. You must create an application [here](https://api.ambiclimate.com/clients) to obtain a `client_id` and `client_secret`. -The `callback url` should be configured as your Home Assistant `base_url` + `/api/ambiclimate`, e.g. `https://example.com/api/ambiclimate`. +The `callback url` should be configured as your Home Assistant `base_url` + `/api/ambiclimate`, e.g., `https://example.com/api/ambiclimate`. To enable this platform, add the following lines to your `configuration.yaml` file: diff --git a/source/_integrations/ambient_station.markdown b/source/_integrations/ambient_station.markdown index d39490018cae..ba949e6f627a 100644 --- a/source/_integrations/ambient_station.markdown +++ b/source/_integrations/ambient_station.markdown @@ -1,11 +1,15 @@ --- -title: "Ambient Weather Station Sensor" -description: "How to integrate Ambient Weather station within Home Assistant." +title: Ambient Weather Station +description: How to integrate Ambient Weather station within Home Assistant. logo: ambient_weather.png ha_category: - Weather ha_release: 0.85 ha_iot_class: Cloud Push +ha_config_flow: true +ha_codeowners: + - '@bachya' +ha_domain: ambient_station --- The `Ambient Weather Station` integration retrieves local weather information diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index d5f9047eb76c..b74cc6a8cfbd 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -1,25 +1,26 @@ --- -title: "Amcrest IP Camera" -description: "Instructions on how to integrate Amcrest IP cameras within Home Assistant." +title: Amcrest +description: Instructions on how to integrate Amcrest (or Dahua) IP cameras within Home Assistant. logo: amcrest.png ha_category: - Hub - Binary Sensor - Camera - Sensor - - Switch ha_iot_class: Local Polling ha_release: 0.49 +ha_codeowners: + - '@pnbruckner' +ha_domain: amcrest --- -The `amcrest` camera platform allows you to integrate your [Amcrest](https://amcrest.com/) IP camera in Home Assistant. +The `amcrest` camera platform allows you to integrate your [Amcrest](https://amcrest.com/) or Dahua IP camera in Home Assistant. There is currently support for the following device types within Home Assistant: - Binary Sensor - Camera - Sensor -- Switch (deprecated) ## Configuration @@ -87,8 +88,8 @@ ffmpeg_arguments: default: -pred 1 authentication: description: > - Defines which authentication method to use only when **stream_source** - is **mjpeg**. Currently, *aiohttp* only support *basic*. + Defines which authentication method to use only when `stream_source` + is `mjpeg`. Currently, `aiohttp` only support `basic`. required: false type: string default: basic @@ -117,34 +118,12 @@ sensors: type: list default: None keys: - motion_detector: - description: > - Return `true`/`false` when motion is detected. - - **Note:** The motion_detector sensor is deprecated and will be removed in a future release. - Use **binary_sensors** option **motion_detected** instead. sdcard: description: Return the SD card usage by reporting the total and used space. ptz_preset: description: > Return the number of PTZ preset positions configured for the given camera. -switches: - description: > - Switches to display in the frontend. - - **Note:** Switches are deprecated and will be removed in a future release. - Use services and attributes instead. - - The following switches can be monitored: - required: false - type: list - default: None - keys: - motion_detection: - description: Enable/disable motion detection setting. - motion_recording: - description: Enable/disable recording on motion detection setting. control_light: description: > Automatically control the camera's indicator light, turning it on if the audio or video streams are enabled, and turning it off if both streams are disabled. @@ -157,12 +136,12 @@ control_light: stream `high` definition video with MJPEG encoding. You may need to use `low` resolution stream or the `snapshot` stream source instead. If the quality seems too poor, lower the `Frame Rate (FPS)` and max out the `Bit Rate` settings in -your camera's configuration manager. If you defined the *stream_source* to -**mjpeg**, make sure your camera supports *Basic* HTTP authentication. -Newer Amcrest firmware may not work, then **rtsp** is recommended instead. +your camera's configuration manager. If you defined the `stream_source` to +`mjpeg`, make sure your camera supports `Basic` HTTP authentication. +Newer Amcrest firmware may not work, then `rtsp` is recommended instead. **Note:** If you set the `stream_source` option to `rtsp`, -make sure to follow the steps mentioned at [FFMPEG](/integrations/ffmpeg/) +make sure to follow the steps mentioned at [FFmpeg](/integrations/ffmpeg/) documentation to install the `ffmpeg`. ## Services @@ -174,7 +153,8 @@ Available services: `enable_motion_recording`, `disable_motion_recording`, `enable_recording`, `disable_recording`, `goto_preset`, `set_color_bw`, -`start_tour` and `stop_tour` +`start_tour`, `stop_tour`, and +`ptz_control` #### Service `enable_audio`/`disable_audio` @@ -182,7 +162,7 @@ These services enable or disable the camera's audio stream. Service data attribute | Optional | Description -|-|- -`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`. +`entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. #### Service `enable_motion_recording`/`disable_motion_recording` @@ -190,7 +170,7 @@ These services enable or disable the camera to record a clip to its configured s Service data attribute | Optional | Description -|-|- -`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`. +`entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. #### Service `enable_recording`/`disable_recording` @@ -198,7 +178,7 @@ These services enable or disable the camera to continuously record to its config Service data attribute | Optional | Description -|-|- -`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`. +`entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. #### Service `goto_preset` @@ -206,7 +186,7 @@ This service will cause the camera to move to one of the PTZ locations configure Service data attribute | Optional | Description -|-|- -`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`. +`entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. `preset` | no | Preset number, starting from 1. #### Service `set_color_bw` @@ -215,7 +195,7 @@ This service will set the color mode of the camera. Service data attribute | Optional | Description -|-|- -`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`. +`entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. `color_bw` | no | One of `auto`, `bw` or `color`. #### Service `start_tour`/`stop_tour` @@ -224,7 +204,153 @@ These services start or stop the camera's PTZ tour function. Service data attribute | Optional | Description -|-|- -`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`. +`entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. + +#### Service `ptz_control` + +If your Amcrest or Dahua camera supports PTZ, you will be able to pan, tilt or zoom your camera. + +Service data attribute | Optional | Description +-|-|- + `entity_id` | no| The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. + `movement` | no | Direction of the movement. Allowed values: `zoom_in`, `zoom_out`, `up`, `down`, `left`, `right`, `right_up`, `right_down`, `left_up`, `left_down` + `travel_time` | yes |Travel time in fractional seconds. Allowed values: `0` to `1`. Default: `0.2`. + +#### Notes + +- PTZ zoom capability does not control VariFocal lens adjustments. +- There can be several seconds of lag before the video (snapshot or live) reflects the camera movement. + +### Example card with controls + +

    + Screenshot using a picture-elements with PTZ controls. + Example showing an Amcrest IP2M-841 PT camera with controls for Pan and Tilt. +

    + +Using the following picture-elements card code, you can display a live video feed from an Amcrest camera with controls for moving or zooming the camera. + +```yaml +type: picture-elements +entity: camera.lakehouse +camera_image: camera.lakehouse +camera_view: live # or auto for snapshot view +elements: + - type: icon + icon: 'mdi:arrow-up' + style: + background: 'rgba(255, 255, 255, 0.25)' + right: 25px + bottom: 50px + tap_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: up + - type: icon + icon: 'mdi:arrow-down' + style: + background: 'rgba(255, 255, 255, 0.25)' + right: 25px + bottom: 0px + tap_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: down + - type: icon + icon: 'mdi:arrow-left' + style: + background: 'rgba(255, 255, 255, 0.25)' + right: 50px + bottom: 25px + tap_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: left + - type: icon + icon: 'mdi:arrow-right' + style: + background: 'rgba(255, 255, 255, 0.25)' + right: 0px + bottom: 25px + tap_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: right + - type: icon + icon: 'mdi:arrow-top-left' + style: + background: 'rgba(255, 255, 255, 0.25)' + right: 50px + bottom: 50px + tap_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: left_up + - type: icon + icon: 'mdi:arrow-top-right' + style: + background: 'rgba(255, 255, 255, 0.25)' + right: 0px + bottom: 50px + tap_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: right_up + - type: icon + icon: 'mdi:arrow-bottom-left' + style: + background: 'rgba(255, 255, 255, 0.25)' + right: 50px + bottom: 0px + tap_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: left_down + - type: icon + icon: 'mdi:arrow-bottom-right' + style: + background: 'rgba(255, 255, 255, 0.25)' + right: 0px + bottom: 0px + tap_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: right_down + - type: icon + icon: 'mdi:magnify' + style: + background: 'rgba(255, 255, 255, 0.25)' + bottom: 25px + right: 25px + tap_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: zoom_in + hold_action: + action: call-service + service: amcrest.ptz_control + service_data: + entity_id: camera.lakehouse + movement: zoom_out +``` ## Advanced Configuration @@ -254,7 +380,3 @@ amcrest: ``` To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. - -
    -In previous versions, switch devices in setups with multiple cameras, would not have specific entity ID causing them to change randomly after each Home Assistant restart. The current version adds the name of the camera at the end of the switch entity ID, making it more specific and consistent and causes the name option to be required in a multi-camera system. This behavior matches the sensor behavior of the Amcrest component. Because of this, older automations may require updates to the entity ID. -
    diff --git a/source/_integrations/ampio.markdown b/source/_integrations/ampio.markdown index 22386b8baa42..b0400fa639fe 100644 --- a/source/_integrations/ampio.markdown +++ b/source/_integrations/ampio.markdown @@ -1,12 +1,13 @@ --- -title: "Ampio Smog" -description: "Instructions on how to setup Ampio Smog sensors in Home Assistant." +title: Ampio Smart Smog System +description: Instructions on how to setup Ampio Smog sensors in Home Assistant. logo: ampio_smog.png ha_category: - Health - Sensor ha_release: 0.92 -ha_iot_class: "Cloud Polling" +ha_iot_class: Cloud Polling +ha_domain: ampio --- The `ampio` air quality platform will query the open data API of [ampio.pl](http://smog1.ampio.pl:3050/) to monitor air quality sensor station. @@ -37,4 +38,3 @@ name: default: Station name type: string {% endconfiguration %} - diff --git a/source/_integrations/android_ip_webcam.markdown b/source/_integrations/android_ip_webcam.markdown index 3d13b52a815e..4350bb8db79b 100644 --- a/source/_integrations/android_ip_webcam.markdown +++ b/source/_integrations/android_ip_webcam.markdown @@ -1,15 +1,15 @@ --- -title: "Android IP Webcam" -description: "Connect Android devices as an IP webcam to Home Assistant" -logo: android_ip_webcam.png +title: Android IP Webcam +description: Connect Android devices as an IP webcam to Home Assistant ha_category: - Hub - Binary Sensor - Camera - Sensor - Switch -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Local Polling +ha_domain: android_ip_webcam --- The `android_ip_webcam` integration turns any Android phone or tablet into a network camera with multiple viewing options. @@ -164,7 +164,7 @@ android_ip_webcam: ## Binary Sensor -The `android_ip_webcam` binary sensor platform lets you observe the motion state of [Android IP webcam](https://play.google.com/store/apps/details?id=com.pas.webcam) sensors through Home Assistant. Devices will be configured automatically. +The `android_ip_webcam` binary sensor platform lets you observe the motion state of [Android IP Webcam](https://play.google.com/store/apps/details?id=com.pas.webcam) sensors through Home Assistant. Devices will be configured automatically. ## Examples @@ -200,6 +200,6 @@ camera: ## Sensor -The `android_ip_webcam` sensor platform lets you observe states of [Android IP webcam](https://play.google.com/store/apps/details?id=com.pas.webcam) sensors through Home Assistant. Devices will be configured automatically. +The `android_ip_webcam` sensor platform lets you observe states of [Android IP Webcam](https://play.google.com/store/apps/details?id=com.pas.webcam) sensors through Home Assistant. Devices will be configured automatically. You can setup your own sensors by examining the JSON file from the webcam server: `http://IP:8080/sensors.json` diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index 6dff3b129b8b..7dd2e5171106 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -1,11 +1,13 @@ --- -title: "Android TV" -description: "Instructions on how to integrate Android TV and Fire TV devices into Home Assistant." -logo: androidtv.png +title: Android TV +description: Instructions on how to integrate Android TV and Fire TV devices into Home Assistant. ha_category: - Media Player ha_release: 0.7.6 ha_iot_class: Local Polling +ha_codeowners: + - '@JeffLIrion' +ha_domain: androidtv --- The `androidtv` platform allows you to control an Android TV device or [Amazon Fire TV](https://www.amazon.com/b/?node=8521791011) device. @@ -61,7 +63,7 @@ adbkey: required: false type: string adb_server_ip: - description: The IP address of the ADB server. If this is provided, the integration will utilize an [ADB server](#1-adb-server) to communicate with the device. + description: The IP address of the ADB server. If this is provided, the integration will utilize an [ADB server](#2-adb-server) to communicate with the device. required: false type: string adb_server_port: @@ -70,15 +72,20 @@ adb_server_port: default: 5037 type: integer get_sources: - description: Whether or not to retrieve the running apps as the list of sources for Fire TV devices; not used for Android TV devices. + description: Whether or not to retrieve the running apps as the list of sources. required: false default: true type: boolean apps: - description: A dictionary where the keys are app IDs and the values are app names that will be displayed in the UI; see example below. + description: A dictionary where the keys are app IDs and the values are app names that will be displayed in the UI; see example below. If a name is not provided, the app will never be shown in the sources list. ([These app names](https://github.com/JeffLIrion/python-androidtv/blob/5c39196ade3f88ab453b205fd15b32472d3e0482/androidtv/constants.py#L267-L283) are configured in the backend package and do not need to be included in your configuration.) required: false default: {} type: map +exclude_unnamed_apps: + description: If this is true, then only the apps you specify in the `apps` configuration parameter and [those specified in the backend library](https://github.com/JeffLIrion/python-androidtv/blob/5c39196ade3f88ab453b205fd15b32472d3e0482/androidtv/constants.py#L267-L283) will be shown in the sources list. + required: false + default: false + type: boolean device_class: description: "The type of device: `auto` (detect whether it is an Android TV or Fire TV device), `androidtv`, or `firetv`." required: false @@ -105,15 +112,19 @@ turn_off_command: # Example configuration.yaml entry media_player: # Use the Python ADB implementation with a user-provided key to setup an - # Android TV device. Provide an app name, override the default turn on/off - # commands, and provide custom state detection rules. + # Android TV device. Provide some app names and don't display other apps + # in the sources menu. Override the default turn on/off commands, and + # provide custom state detection rules. - platform: androidtv name: Android TV device_class: androidtv host: 192.168.0.222 adbkey: "/config/android/adbkey" + exclude_unnamed_apps: true apps: com.amazon.tv.launcher: "Fire TV" + some.background.app: # this will never show up in the sources list + another.background.app: "" # this will also never show up in the sources list turn_on_command: "input keyevent 3" turn_off_command: "input keyevent 223" state_detection_rules: @@ -159,17 +170,17 @@ This integration works by sending ADB commands to your Android TV / Fire TV devi When connecting to your device for the first time, a dialog will appear on your Android TV / Fire TV asking you to approve the connection. Check the box that says "always allow connections from this device" and hit OK.
    -### 1. ADB Server +### 1. Python ADB Implementation -You can use an ADB server to connect to your Android TV and Fire TV devices. +The default approach is to connect to your device using the `adb-shell` Python package. As of Home Assistant 0.101, if a key is needed for authentication and it is not provided by the `adbkey` configuration option, then Home Assistant will generate a key for you. -For Hass.io users, you can install the [Android Debug Bridge](https://github.com/hassio-addons/addon-adb/blob/master/README.md) addon. Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android TV / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value. +Prior to Home Assistant 0.101, this approach did not work well for newer devices. Efforts have been made to resolve these issues, but if you experience problems then you should use the ADB server option. -### 2. Python ADB Implementation +### 2. ADB Server -The second option is to connect to your device using the `adb-shell` Python package. As of Home Assistant 0.101, if a key is needed for authentication and it is not provided by the `adbkey` configuration option, then Home Assistant will generate a key for you. +The second option is to use an ADB server to connect to your Android TV and Fire TV devices. -Prior to Home Assistant 0.101, this approach did not work well for newer devices. Efforts have been made to resolve these issues, but if you experience problems then you should use the ADB server option. +For Home Assistant users, you can install the [Android Debug Bridge](https://github.com/hassio-addons/addon-adb/blob/master/README.md) add-on. Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android TV / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value. ## ADB Troubleshooting @@ -183,15 +194,17 @@ If the setup for your Android TV or Fire TV device fails, then there is probably 4. You need to approve the ADB connection; see the note in the [ADB Setup](#adb-setup) section above. -5. Some Android TV devices (e.g., Philips TVs running Android TV) only accept the initial ADB connection request over their Wi-Fi interface. If you have the TV wired, you need to connect it to WiFi and try the initial connection again. Once the authentication has been granted via Wi-Fi, you can connect to the TV over the wired interface as well. +5. Some Android TV devices (e.g., Philips TVs running Android TV) only accept the initial ADB connection request over their Wi-Fi interface. If you have the TV wired, you need to connect it to Wi-Fi and try the initial connection again. Once the authentication has been granted via Wi-Fi, you can connect to the TV over the wired interface as well. -6. If you are using the [Python ADB implementation](#2-python-adb-implementation) approach, as mentioned above, there may be some issues with newer devices. In this case, you should use the [ADB server](#1-adb-server) approach instead. +6. If your device drops off WiFi, breaking the ADB connection and causing the entity to become unavailable in Home Assistant, you could install a wake lock utility (such as [Wakelock](https://github.com/d4rken/wakelock-revamp)) to prevent this from happening. Some users have reported this problem with Xiaomi Mi Box devices. + +7. If you are using the [Python ADB implementation](#1-python-adb-implementation) approach, as mentioned above, there may be some issues with newer devices. In this case, you should use the [ADB server](#2-adb-server) approach instead. ## Services -### (Fire TV devices only) `media_player.select_source` +### `media_player.select_source` -For Fire TV devices, you can launch an app using the `media_player.select_source` command. Simply provide the app ID as the `source`. You can also stop an app by prefixing the app ID with a `!`. For example, you could define [scripts](/docs/scripts) to start and stop Netflix as follows: +You can launch an app on your device using the `media_player.select_source` command. Simply provide the app ID as the `source`. You can also stop an app by prefixing the app ID with a `!`. For example, you could define [scripts](/docs/scripts) to start and stop Netflix as follows: ```yaml start_netflix: @@ -247,9 +260,29 @@ You can also use the command `GET_PROPERTIES` to retrieve the properties used by A list of various intents can be found [here](https://gist.github.com/mcfrojd/9e6875e1db5c089b1e3ddeb7dba0f304). +### `androidtv.download` and `androidtv.upload` + +You can use the `androidtv.download` service to download a file from your Android TV / Fire TV device to your Home Assistant instance. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name of Android TV / Fire TV entity. +| `device_path` | no | The filepath on the Android TV / Fire TV device. +| `local_path` | no | The filepath on your Home Assistant instance. + +Similarly, you can use the `androidtv.upload` service to upload a file from Home Assistant instance to Android TV / Fire TV devices. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name(s) of Android TV / Fire TV entities. +| `device_path` | no | The filepath on the Android TV / Fire TV device. +| `local_path` | no | The filepath on your Home Assistant instance. + ## Custom State Detection -The `state_detection_rules` configuration parameter allows you to provide your own rules for state detection. The keys are app IDs, and the values are lists of rules that are evaluated in order. Valid rules are: +The Android TV integration works by polling the Android TV / Fire TV device at a regular interval and collecting a handful of properties. Unfortunately, there is no standard API for determining the state of the device to which all apps adhere. Instead, the backend `androidtv` package uses three of the properties that it collects to determine the state: `audio_state`, `media_session_state`, and `wake_lock_size`. The correct logic for determining the state differs depending on the current app, and the backend `androidtv` package implements app-specific state detection logic for a handful of apps. Of course, it is not feasible to implement custom logic for each and every app in the `androidtv` package. Moreover, the correct state detection logic may differ across devices and device configurations. + +The solution to this problem is the `state_detection_rules` configuration parameter, which allows you to provide your own rules for state detection. The keys are app IDs, and the values are lists of rules that are evaluated in order. Valid rules are: * `'standby'`, `'playing'`, `'paused'`, `'idle'`, or `'off'` * If this is not a map, then this state will always be reported when this app is the current app diff --git a/source/_integrations/anel_pwrctrl.markdown b/source/_integrations/anel_pwrctrl.markdown index e146f69fb6e5..91d2022aa869 100644 --- a/source/_integrations/anel_pwrctrl.markdown +++ b/source/_integrations/anel_pwrctrl.markdown @@ -1,11 +1,12 @@ --- -title: "ANEL PwrCtrl Switch" -description: "Instructions on how to integrate ANEL PwrCtrl switches within Home Assistant." +title: Anel NET-PwrCtrl +description: Instructions on how to integrate ANEL PwrCtrl switches within Home Assistant. logo: anel.png ha_category: - Switch ha_iot_class: Local Polling -ha_release: "0.30" +ha_release: '0.30' +ha_domain: anel_pwrctrl --- The `anel_pwrctrl` switch platform allows you to control [ANEL PwrCtrl](https://anel-elektronik.de/SITE/produkte/produkte.htm) devices. diff --git a/source/_integrations/anthemav.markdown b/source/_integrations/anthemav.markdown index 7994f1334f44..aa3a533984e9 100644 --- a/source/_integrations/anthemav.markdown +++ b/source/_integrations/anthemav.markdown @@ -1,11 +1,12 @@ --- -title: "Anthem A/V Receivers" -description: "Instructions on how to integrate Anthem A/V Receivers into Home Assistant." +title: Anthem A/V Receivers +description: Instructions on how to integrate Anthem A/V Receivers into Home Assistant. logo: anthemav.png ha_category: - Media Player ha_iot_class: Local Push ha_release: 0.37 +ha_domain: anthemav --- Both [Anthem]'s current and last generation of A/V Receivers and Processors support IP-based, network control. This Home Assistant platform adds proper "local push" support for any of these receivers on your network. diff --git a/source/_integrations/apache_kafka.markdown b/source/_integrations/apache_kafka.markdown index 9442b8613df2..9258d1b28027 100644 --- a/source/_integrations/apache_kafka.markdown +++ b/source/_integrations/apache_kafka.markdown @@ -1,10 +1,12 @@ --- -title: "Apache Kafka" -description: "Send data and events to Apache Kafka." -logo: apache_kafka.png +title: Apache Kafka +description: Send data and events to Apache Kafka. ha_category: - History ha_release: 0.97 +ha_codeowners: + - '@bachya' +ha_domain: apache_kafka --- The `apache_kafka` integration sends all state changes to a diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown index 93649d924b7e..d431750be82f 100644 --- a/source/_integrations/apcupsd.markdown +++ b/source/_integrations/apcupsd.markdown @@ -1,6 +1,6 @@ --- -title: "APCUPSd" -description: "Instructions on how to integrate APCUPSd status with Home Assistant." +title: apcupsd +description: Instructions on how to integrate apcupsd status with Home Assistant. logo: apcupsd.png ha_category: - System Monitor @@ -8,20 +8,21 @@ ha_category: - Sensor ha_release: 0.13 ha_iot_class: Local Polling +ha_domain: apcupsd --- -[APCUPSd](http://www.apcupsd.org/) status information can be integrated into Home Assistant when the Network Information Server (NIS) [is configured](http://www.apcupsd.org/manual/manual.html#nis-server-client-configuration-using-the-net-driver) is enabled on the APC device. +[Apcupsd](http://www.apcupsd.org/) status information can be integrated into Home Assistant when the Network Information Server (NIS) [is configured](http://www.apcupsd.org/manual/manual.html#nis-server-client-configuration-using-the-net-driver) on the APC device. There is currently support for the following device types within Home Assistant: - [Binary Sensor](#binary-sensor) - [Sensor](#sensor) -## Hass.io Installation +## Home Assistant add-on installation -Install this [unofficial add-on](https://github.com/korylprince/hassio-apcupsd/) to use this integration with Hass.io. Keep in mind that we can't give you support for this add-on. +Install this [unofficial add-on](https://github.com/korylprince/hassio-apcupsd/) to use this integration with Home Assistant. Keep in mind that we can't give you support for this add-on. -After installation, follow the instructions on the Github page to configure the plugin. Then continue to follow the integration configurations below. +After installation, follow the instructions on the GitHub page to configure the plugin. Then continue to follow the integration configurations below. ## Configuration @@ -34,12 +35,12 @@ apcupsd: {% configuration %} host: - description: The hostname/IP address on which the APCUPSd NIS is being served. + description: The hostname/IP address on which the apcupsd NIS is being served. required: false type: string default: localhost port: - description: The port on which the APCUPSd NIS is listening. + description: The port on which the apcupsd NIS is listening. required: false type: integer default: 3551 @@ -47,13 +48,13 @@ port:
    -If you get `ConnectionRefusedError: Connection refused` errors in the Home assistant logs, ensure the [APCUPSd](http://www.apcupsd.org/) configuration directives used by its Network Information Server is set to permit connections from all addresses [NISIP 0.0.0.0](http://www.apcupsd.org/manual/manual.html#configuration-directives-used-by-the-network-information-server), else non-local addesses will not connect. This includes Hass.io running in Docker, even when hosted on the same machine or a virtual machine. +If you get `ConnectionRefusedError: Connection refused` errors in the Home Assistant logs, ensure the [Apcupsd](http://www.apcupsd.org/) configuration directives used by its Network Information Server is set to permit connections from all addresses [NISIP 0.0.0.0](http://www.apcupsd.org/manual/manual.html#configuration-directives-used-by-the-network-information-server), else non-local addresses will not connect.
    ## Binary sensor -In addition to the [APCUPSd Sensor](#sensor) devices, you may also create a device which is simply "on" when the UPS status is online and "off" at all other times. +In addition to the [Apcupsd Sensor](#sensor) devices, you may also create a device which is simply "on" when the UPS status is online and "off" at all other times. ### Configuration @@ -97,7 +98,7 @@ resources: type: list {% endconfiguration %} -### Example +### Example Given the following output from `apcaccess`: diff --git a/source/_integrations/api.markdown b/source/_integrations/api.markdown index 2bf01bb8b895..a2ac0becc0c2 100644 --- a/source/_integrations/api.markdown +++ b/source/_integrations/api.markdown @@ -1,21 +1,17 @@ --- -title: "API" -description: "Instructions on how to setup the RESTful API within Home Assistant." -logo: home-assistant.png +title: Home Assistant API +description: Instructions on how to setup the RESTful API within Home Assistant. ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: api --- The `api` integration exposes a RESTful API and allows one to interact with a Home Assistant instance that is running headless. This integration depends on the [`http` integration](/integrations/http/). -
    - -It is HIGHLY recommended that you set the `api_password`, especially if you are planning to expose your installation to the internet. - -
    - ```yaml # Example configuration.yaml entry api: diff --git a/source/_integrations/apns.markdown b/source/_integrations/apns.markdown index 973bbb17f00b..d32bcca86a4a 100644 --- a/source/_integrations/apns.markdown +++ b/source/_integrations/apns.markdown @@ -1,10 +1,10 @@ --- -title: "APNS" -description: "Instructions on how to add APNS notifications to Home Assistant." -logo: apple.png +title: Apple Push Notification Service (APNS) +description: Instructions on how to add APNS notifications to Home Assistant. ha_category: - Notifications ha_release: 0.31 +ha_domain: apns --- The `apns` platform uses the Apple Push Notification service (APNS) to deliver notifications from Home Assistant. @@ -46,9 +46,9 @@ sandbox: type: boolean {% endconfiguration %} -The APNS platform will register two services, `notify.NOTIFIER_NAME` and `notify.apns_NOTIFIER_NAME`. +The APNS platform will register two services, `notify.NOTIFIER_NAME` and `apns.apns_NOTIFIER_NAME`. -### notify.apns_NOTIFIER_NAME +### apns.apns_NOTIFIER_NAME This service will register device IDs with Home Assistant. In order to receive a notification a device must be registered. The app on the device can use this service to send an ID to Home Assistant during startup, the ID will be stored in `[NOTIFIER_NAME]_apns.yaml`. diff --git a/source/_integrations/apple_tv.markdown b/source/_integrations/apple_tv.markdown index eeec08c3d4a8..881314f5aac9 100644 --- a/source/_integrations/apple_tv.markdown +++ b/source/_integrations/apple_tv.markdown @@ -1,13 +1,13 @@ --- -title: "Apple TV" -description: "Instructions on how to integrate Apple TV devices into Home Assistant." -logo: apple.png +title: Apple TV +description: Instructions on how to integrate Apple TV devices into Home Assistant. ha_category: - Multimedia - Media Player - Remote ha_iot_class: Local Push ha_release: 0.49 +ha_domain: apple_tv --- The `apple_tv` platform allows you to control an Apple TV (3rd and 4th generation). See the [remote platform](/integrations/apple_tv#remote) if you want to send remote control buttons, e.g., arrow keys. @@ -26,7 +26,7 @@ Currently, you must have Home Sharing enabled for this to work. Support for pair To use this component, you must first install some system libraries and a compiler. For Debian or a similar system, this should be enough: ```shell -$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev +sudo apt-get install build-essential libssl-dev libffi-dev python-dev ``` If you want to discover new devices automatically, just make sure you have `discovery:` in your `configuration.yaml` file. To manually add one or more Apple TVs to your installation, add the following to your `configuration.yaml` file: @@ -78,7 +78,7 @@ In order to connect to the device, you need a *login id*. The easiest way to obt Make sure Home Sharing is enabled on the Apple TV. -To scan for devices and determine the `login_id`, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**. +To scan for devices and determine the `login_id`, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**. @@ -100,15 +100,15 @@ Found Apple TVs: Note: You must use 'pair' with devices that have home sharing disabled ``` -Just copy and paste the `login_id` from the device you want to add. For more details about `atvremote`, see: [this page](https://pyatv.readthedocs.io/en/master/atvremote.html). +Just copy and paste the `login_id` from the device you want to add. For more details about `atvremote`, see: [this page](https://postlund.github.io/pyatv). ### Setting up device authentication If you, when playing media with `play_url`, get the following error message: -*“This AirPlay connection requires iOS 7.1 or later, OS X 10.10 or later, or iTunes 11.2 or later.”* +“This AirPlay connection requires iOS 7.1 or later, macOS 10.10 or later, or iTunes 11.2 or later.” -then device authentication is required, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**. +then device authentication is required, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**. @@ -134,12 +134,12 @@ Restart Home Assistant, and you should now be able to use `play_url` as before. ### My Apple TV turns on when I restart Home Assistant -The Apple TV will automatically turn on if a request is sent to it, e.g., if a button is pressed, something is streamed to it via AirPlay or if current state (currently playing) is accessed. This is how Apple has designed it, and it will cause problems if you are using HDMI CEC. Every time Home Assistant is started, a new request is sent to the device to figure out what is currently playing. When using CEC, this will wake up your TV and other devices you have configured. +The Apple TV will automatically turn on if a request is sent to it, e.g., if a button is pressed, something is streamed to it via AirPlay or if current state (currently playing) is accessed. This is how Apple has designed it, and it will cause problems if you are using HDMI-CEC. Every time Home Assistant is started, a new request is sent to the device to figure out what is currently playing. When using CEC, this will wake up your TV and other devices you have configured. So, if your TV is randomly turning on, this is probably the reason. As stated, this is by design, and there is no real fix for it. There's also no known way to turn off the Apple TV via the protocol used for communication. You have the following options: - Do not use this platform -- Disable HDMI CEC on your Apple TV +- Disable HDMI-CEC on your Apple TV - Use "fake standby" The first two points are quite obvious. Fake standby is a concept implemented in this platform that disables all requests to the device and makes it appear as being "off" in the web interface. This will make sure that the device is not woken up, but it will of course not show any information or allow you to control it. It is however easy to turn it on (or off) in the web interface or to use an automation with `turn_on`. To make it more useful, you can write automations that turn it on or off depending on some other device, like the input source on your receiver. @@ -156,9 +156,9 @@ Turning the device on/off in the user interface will *not* turn the physical dev To play media on an Apple TV with device authentication enabled (e.g., ATV4 with tvOS 10.2+), Home Assistant must be properly authenticated. This method starts the process and presents the credentials needed for playback as a persistent notification. Please see guide above for usage. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of Apple TVs. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------ | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of Apple TVs. | ### Service `apple_tv_scan` diff --git a/source/_integrations/apprise.markdown b/source/_integrations/apprise.markdown index b2759586a5d0..0a1b2cad284e 100644 --- a/source/_integrations/apprise.markdown +++ b/source/_integrations/apprise.markdown @@ -1,10 +1,12 @@ --- -title: "Apprise" -description: "Instructions on how to add Apprise notifications to Home Assistant." -logo: apprise.png +title: Apprise +description: Instructions on how to add Apprise notifications to Home Assistant. ha_category: - Notifications ha_release: 0.101 +ha_codeowners: + - '@caronc' +ha_domain: apprise --- The [Apprise service](https://github.com/caronc/apprise/) is an all-in-one solution to open up Home Assistant to _just about_ every Notification platform (such as Amazon SNS, Discord, Telegram, Slack, MSTeams, Twilio, etc.) diff --git a/source/_integrations/aprs.markdown b/source/_integrations/aprs.markdown index 6e6e1993ab24..f2f84e44547e 100644 --- a/source/_integrations/aprs.markdown +++ b/source/_integrations/aprs.markdown @@ -1,10 +1,12 @@ --- -title: "APRS" -description: "Instructions on how to use APRS to track devices in Home Assistant." -logo: aprs.png +title: APRS +description: Instructions on how to use APRS to track devices in Home Assistant. ha_release: 0.95 ha_category: Presence Detection ha_iot_class: Cloud Push +ha_codeowners: + - '@PhilRW' +ha_domain: aprs --- The `aprs` [(Automatic Packet Reporting System)](https://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System) device tracker integration connects to the [APRS-IS](http://aprs-is.net/) network for tracking amateur radio devices. diff --git a/source/_integrations/aqualogic.markdown b/source/_integrations/aqualogic.markdown index 0ec4b70a17b6..6cb57dbd9ba8 100644 --- a/source/_integrations/aqualogic.markdown +++ b/source/_integrations/aqualogic.markdown @@ -1,13 +1,13 @@ --- -title: "AquaLogic" -description: "Instructions on how to integrate an AquaLogic controller within Home Assistant." -logo: hayward.png +title: AquaLogic +description: Instructions on how to integrate an AquaLogic controller within Home Assistant. ha_category: - Hub - Sensor - Switch -ha_release: "0.80" +ha_release: '0.80' ha_iot_class: Local Push +ha_domain: aqualogic --- The AquaLogic integration provides connectivity to a Hayward/Goldline AquaLogic/ProLogic pool controller. Note that an RS-485 to Ethernet adapter connected to the pool controller is required. diff --git a/source/_integrations/aquostv.markdown b/source/_integrations/aquostv.markdown index 2ac9d50ab565..32cbba65f334 100644 --- a/source/_integrations/aquostv.markdown +++ b/source/_integrations/aquostv.markdown @@ -1,11 +1,12 @@ --- -title: "Sharp Aquos TV" -description: "Instructions on how to integrate a Sharp Aquos TV into Home Assistant." +title: Sharp Aquos TV +description: Instructions on how to integrate a Sharp Aquos TV into Home Assistant. logo: sharp_aquos.png ha_category: - Media Player ha_release: 0.35 ha_iot_class: Local Polling +ha_domain: aquostv --- The `aquostv` platform allows you to control a [Sharp Aquos TV](http://www.sharp-world.com/aquos/en/index.html). diff --git a/source/_integrations/arcam_fmj.markdown b/source/_integrations/arcam_fmj.markdown index 4071981ddadf..91a8bb06f9cf 100644 --- a/source/_integrations/arcam_fmj.markdown +++ b/source/_integrations/arcam_fmj.markdown @@ -1,10 +1,12 @@ --- -title: "Arcam FMJ Receivers" -description: "Instructions on how to integrate Arcam FMJ Receivers into Home Assistant." -logo: arcam.svg +title: Arcam FMJ Receivers +description: Instructions on how to integrate Arcam FMJ Receivers into Home Assistant. ha_category: Media Player ha_release: 0.96 ha_iot_class: Local Polling +ha_codeowners: + - '@elupus' +ha_domain: arcam_fmj --- The `arcam_fmj` integration allows you to control [Arcam FMJ Receveivers](https://www.arcam.co.uk/range/fmj.htm) from Home Assistant. diff --git a/source/_integrations/arduino.markdown b/source/_integrations/arduino.markdown index 875b4bd0e23f..a72b10425272 100644 --- a/source/_integrations/arduino.markdown +++ b/source/_integrations/arduino.markdown @@ -1,14 +1,15 @@ --- -title: "Arduino" -description: "Instructions on how to setup an Arduino boards within Home Assistant." -logo: arduino.png +title: Arduino +description: Instructions on how to setup an Arduino boards within Home Assistant. ha_category: - DIY - Sensor - Switch -featured: true ha_release: pre 0.7 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' +ha_domain: arduino --- The [Arduino](https://www.arduino.cc/) device family are microcontroller boards that are often based on the ATmega328 chip. They come with digital input/output pins (some can be used as PWM outputs), analog inputs, and a USB connection. diff --git a/source/_integrations/arest.markdown b/source/_integrations/arest.markdown index 88ee59847488..e1467fc0fa4f 100644 --- a/source/_integrations/arest.markdown +++ b/source/_integrations/arest.markdown @@ -1,6 +1,6 @@ --- -title: "aREST" -description: "Instructions on how to integrate aREST within Home Assistant." +title: aREST +description: Instructions on how to integrate aREST within Home Assistant. logo: arest.png ha_category: - DIY @@ -9,6 +9,9 @@ ha_category: - Switch ha_iot_class: Local Polling ha_release: 0.9 +ha_codeowners: + - '@fabaff' +ha_domain: arest --- There is currently support for the following device types within Home Assistant: @@ -19,7 +22,7 @@ There is currently support for the following device types within Home Assistant: ## Binary Sensor -The `arest` binary sensor platform allows you to get all data from your devices (like Arduinos with an ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](https://arest.io/) RESTful framework. +The `arest` binary sensor platform allows you to get all data from your devices (like Arduinos with an ethernet/Wi-Fi connection, the ESP8266, and the Raspberry Pi) running the [aREST](https://arest.io/) RESTful framework. To use your aREST binary sensor in your installation, add the following to your `configuration.yaml` file: @@ -70,7 +73,7 @@ This sensor is not suitable for fast state changes because there is a high possi ## Sensor -The `arest` sensor platform allows you to get all data from your devices (like Arduinos with a Ethernet/Wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](https://arest.io/) RESTful framework. +The `arest` sensor platform allows you to get all data from your devices (like Arduinos with a Ethernet/Wi-Fi connection, the ESP8266, and the Raspberry Pi) running the [aREST](https://arest.io/) RESTful framework. To use your aREST enabled device in your installation, add the following to your `configuration.yaml` file: @@ -173,7 +176,7 @@ The root will give you a JSON response that contains all variables and their cur ## Switch -The `arest` switch platform allows you to toggle pins of your devices (like Arduino boards with an Ethernet/Wifi connection, ESP8266 based devices, and the Raspberry Pi) running the [aREST](https://arest.io/) RESTful framework. +The `arest` switch platform allows you to toggle pins of your devices (like Arduino boards with an Ethernet/Wi-Fi connection, ESP8266 based devices, and the Raspberry Pi) running the [aREST](https://arest.io/) RESTful framework. To use your aREST enabled device with pins in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/arlo.markdown b/source/_integrations/arlo.markdown index 8afce16d6da4..2cbc1cf9206c 100644 --- a/source/_integrations/arlo.markdown +++ b/source/_integrations/arlo.markdown @@ -1,6 +1,6 @@ --- -title: "Arlo" -description: "Instructions on how to integrate your Netgear Arlo cameras within Home Assistant." +title: Arlo +description: Instructions on how to integrate your Netgear Arlo cameras within Home Assistant. logo: arlo.png ha_category: - Hub @@ -9,6 +9,7 @@ ha_category: - Sensor ha_release: 0.46 ha_iot_class: Cloud Polling +ha_domain: arlo --- The `arlo` implementation allows you to integrate your [Arlo](https://arlo.netgear.com/) devices in Home Assistant. @@ -152,7 +153,7 @@ ffmpeg_arguments: type: string {% endconfiguration %} -**Note:** To be able to playback the last capture, it is required to install the `ffmpeg` component. Make sure to follow the steps mentioned at [FFMPEG](/integrations/ffmpeg/) documentation. +**Note:** To be able to playback the last capture, it is required to install the `ffmpeg` component. Make sure to follow the steps mentioned at [FFmpeg](/integrations/ffmpeg/) documentation. ## Sensor diff --git a/source/_integrations/aruba.markdown b/source/_integrations/aruba.markdown index 723ae4765a7c..2a8c20e3fbfa 100644 --- a/source/_integrations/aruba.markdown +++ b/source/_integrations/aruba.markdown @@ -1,18 +1,18 @@ --- -title: "Aruba" -description: "Instructions on how to integrate Aruba routers into Home Assistant." +title: Aruba +description: Instructions on how to integrate Aruba routers into Home Assistant. logo: aruba.png ha_category: - Presence Detection ha_release: 0.7 +ha_domain: aruba --- - This platform allows you to detect presence by looking at connected devices to an [Aruba Instant](https://www.arubanetworks.com/products/networking/aruba-instant/) device. Supported devices (tested): -- ARUBA AP-105 +- Aruba AP-105
    This device tracker needs telnet to be enabled on the router. diff --git a/source/_integrations/arwn.markdown b/source/_integrations/arwn.markdown index b1eb557a99f1..dabc41a205d8 100644 --- a/source/_integrations/arwn.markdown +++ b/source/_integrations/arwn.markdown @@ -1,10 +1,11 @@ --- -title: "ARWN Sensor" -description: "Instructions on how to integrate ARWN within Home Assistant." +title: Ambient Radio Weather Network +description: Instructions on how to integrate ARWN within Home Assistant. ha_category: - Sensor ha_release: 0.31 ha_iot_class: Local Polling +ha_domain: arwn --- The `arwn` sensor platform is a client for the [Ambient Radio Weather Network](https://github.com/sdague/arwn) project. This collects weather station data and makes it available in an MQTT subtree. diff --git a/source/_integrations/asterisk_cdr.markdown b/source/_integrations/asterisk_cdr.markdown index c3b8483b85b0..38a946896d04 100644 --- a/source/_integrations/asterisk_cdr.markdown +++ b/source/_integrations/asterisk_cdr.markdown @@ -1,10 +1,11 @@ --- -title: "Asterisk Call Data Recorder" -description: "Instructions on how to integrate an Asterisk CDR within Home Assistant." +title: Asterisk Call Detail Records +description: Instructions on how to integrate an Asterisk CDR within Home Assistant. logo: asterisk.png ha_category: - Mailbox ha_release: 0.79 +ha_domain: asterisk_cdr --- The Asterisk Call Data Recorder provides access to Asterisk call logs on the Asterisk PBX server. This mailbox is enabled automatically through the [Asterisk Voicemail integration](/integrations/asterisk_mbox/) configuration if the `asterisk_mbox_server` is configured to provide CDR data. More information on configuring the server can be found in the [Asterisk PBX configuration guide](/docs/asterisk_mbox/). diff --git a/source/_integrations/asterisk_mbox.markdown b/source/_integrations/asterisk_mbox.markdown index 7c702b3a58fd..4bed55d8d02c 100644 --- a/source/_integrations/asterisk_mbox.markdown +++ b/source/_integrations/asterisk_mbox.markdown @@ -1,11 +1,12 @@ --- -title: "Asterisk Voicemail" -description: "Instructions on how to integrate your existing Asterisk voicemail within Home Assistant." +title: Asterisk Voicemail +description: Instructions on how to integrate your existing Asterisk voicemail within Home Assistant. logo: asterisk.png ha_category: - Mailbox ha_iot_class: Local Push ha_release: 0.51 +ha_domain: asterisk_mbox --- The `asterisk_mbox` Asterisk Voicemail integration for Home Assistant allows you to view, listen to, and delete voicemails from an Asterisk voicemail mailbox. The integration includes a panel on the frontend that provides caller-id and speech-to-text transcription (using Google's API) of messages in addition to playback and message deletion. There is also an included sensor that indicates of the number of available messages. There is no requirement that the Asterisk PBX and Home Assistant are running on the same machine. diff --git a/source/_integrations/asuswrt.markdown b/source/_integrations/asuswrt.markdown index 82aa97b7ef1c..78ee129a359f 100644 --- a/source/_integrations/asuswrt.markdown +++ b/source/_integrations/asuswrt.markdown @@ -1,6 +1,6 @@ --- -title: "Asuswrt" -description: "Instructions on how to integrate Asuswrt into Home Assistant." +title: ASUSWRT +description: Instructions on how to integrate ASUSWRT into Home Assistant. logo: asus.png ha_category: - Hub @@ -8,14 +8,17 @@ ha_category: - Sensor ha_release: 0.83 ha_iot_class: Local Polling +ha_codeowners: + - '@kennedyshead' +ha_domain: asuswrt --- The `asuswrt` integration is the main integration to connect to a [ASUSWRT](https://event.asus.com/2013/nw/ASUSWRT/) based router. There is currently support for the following device types within Home Assistant: -- **Presence Detection** - The asuswrt platform offers presence detection by looking at connected devices to a ASUSWRT based router. -- **Sensor** - The asuswrt sensor platform allows you to get upload and download data from your ASUSWRT within Home Assistant. +- **Presence Detection** - The ASUSWRT platform offers presence detection by looking at connected devices to a ASUSWRT based router. +- **Sensor** - The ASUSWRT sensor platform allows you to get upload and download data from your ASUSWRT within Home Assistant. ## Configuration @@ -65,6 +68,16 @@ require_ip: required: false type: boolean default: true +interface: + description: "The interface of the router that you want statistics from (e.g. eth0,eth1 etc)" + required: false + type: string + default: eth0 +dnsmasq: + description: "The location of the dnsmasq.leases files" + required: false + type: string + default: /var/lib/misc sensors: description: List of enabled sensors required: false @@ -113,33 +126,5 @@ The example above, creates the following sensors: ## Padavan custom firmware (The rt-n56u project) -The [rt-n56u project](https://bitbucket.org/padavan/rt-n56u) does not store `dnsmasq.leases` which is used to track devices at `/var/lib/misc/` as `asuswrt` do. However this integration can still be used for the rt-n56u project by linking `dnsmasq.leases` during the boot process of the router. - -Follow these steps to setup the link. - -1. SSH or Telnet into the router. (default ssh admin@my.router) -2. Run the following command to find the file: - -```bash -$ find / -name "dnsmasq.leases" -``` -3. Copy or remember the full path of, example: `/tmp/dnsmasq.leases` -4. Create the folder if it does not exist: - -```bash -$ mkdir -p /var/lib/misc -``` -5. Add the linking process to the routers started script (one line): - -```bash -$ echo "/bin/ln -s /tmp/dnsmasq.leases /var/lib/misc/dnsmasq.leases" >> /etc/storage/started_script.sh -``` - -6. Reboot the router or link the file: - -```bash -$ /bin/ln -s /tmp/dnsmasq.leases /var/lib/misc/dnsmasq.leases -``` - -The started script is also accessible and editable in the Router's web interface. `Advanced Settings -> Customization -> Scripts -> Custom User Script -> Run After Router Started` - +The [rt-n56u project](https://bitbucket.org/padavan/rt-n56u) does not store `dnsmasq.leases` which is used to track devices at `/var/lib/misc/` as `asuswrt` do. However this integration can still be used for the rt-n56u project by changing the dnsmasq location using the `dnsmasq` variable to `dnsmasq: '/tmp'` +Also, to get the statistics for the `WAN` port, specify `interface: 'eth3'` as this is the interface used in the rt-n56u project diff --git a/source/_integrations/aten_pe.markdown b/source/_integrations/aten_pe.markdown new file mode 100644 index 000000000000..e05ae4b2476a --- /dev/null +++ b/source/_integrations/aten_pe.markdown @@ -0,0 +1,56 @@ +--- +title: ATEN Rack PDU +description: Instructions on how to integrate ATEN Rack PDUs into Home Assistant. +logo: aten.png +ha_category: + - Switch +ha_release: 0.103 +ha_codeowners: + - '@mtdcr' +ha_domain: aten_pe +--- + +The `aten_pe` integration lets you control [ATEN Rack PDUs](https://www.aten.com/eu/en/products/energy-intelligence-pduupsracks/rack-pdu/) from Home Assistant. + +In order to use it, SNMP must be enabled on your PDU. It is recommended to use SNMPv3 to protect your credentials from eavesdropping. + +Tested devices: + * [PE8324G](https://www.aten.com/eu/en/products/energy-intelligence-pduupsracks/rack-pdu/pe8324/) + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +switch: + - platform: aten_pe + host: 192.168.0.60 +``` + +{% configuration %} +host: + description: The IP/host which to control. + required: true + type: string +port: + description: The port on which to communicate. + required: false + type: string + default: 161 +community: + description: community string to use for authentication (SNMP v1 and v2c). + required: false + type: string + default: private +username: + description: Username to use for authentication. + required: false + type: string + default: administrator +auth_key: + description: Authentication key to use for SNMP v3. + required: false + type: string +priv_key: + description: Privacy key to use for SNMP v3. + required: false + type: string +{% endconfiguration %} diff --git a/source/_integrations/atome.markdown b/source/_integrations/atome.markdown index f0f71f152e58..2968a2ec223f 100644 --- a/source/_integrations/atome.markdown +++ b/source/_integrations/atome.markdown @@ -1,12 +1,15 @@ --- -title: "Atome Linky Sensor" -description: "Integrate Atome Linky consumption data within Home Assistant." +title: Atome Linky +description: Integrate Atome Linky consumption data within Home Assistant. logo: total_direct_energie.png ha_release: 0.99 ha_category: - Energy - Sensor ha_iot_class: Cloud Polling +ha_codeowners: + - '@baqs' +ha_domain: atome --- The `atome` sensor platform is retrieving the consumption of your home from the [Direct Energy Atome electric meter](https://total.direct-energie.com/particuliers/electricite/compteur-linky/atome). diff --git a/source/_integrations/august.markdown b/source/_integrations/august.markdown index a4c956714c2c..7de24bb8888b 100644 --- a/source/_integrations/august.markdown +++ b/source/_integrations/august.markdown @@ -1,14 +1,19 @@ --- -title: "August" -description: "Instructions on how to integrate your August devices into Home Assistant." +title: August +description: Instructions on how to integrate your August devices into Home Assistant. logo: august.png ha_category: - Doorbell - Binary Sensor + - Sensor - Camera - Lock ha_release: 0.64 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@bdraco' +ha_domain: august --- The `august` integration allows you to integrate your [August](https://august.com/) devices in Home Assistant. @@ -17,6 +22,7 @@ There is currently support for the following device types within Home Assistant: - Doorbell - Binary Sensor +- Sensor - Camera - Lock @@ -28,7 +34,9 @@ August Lock 2nd Gen will need either August Connect or Doorbell to connect to Ho You will need your August login information (username (either phone# or email), and password) to use this module. -To set it up, add the following to your `configuration.yaml` file: +To add `August` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **August**. + +Alternatively, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -62,16 +70,56 @@ Once Home Assistant is started, a configurator will pop up asking you to enter v ### Binary Sensor -If you have August Doorbell, once you have enabled the August component, you should see following sensors: +If you have an August Doorbell, once you have enabled the August component, you should see following sensors: - Doorbell ding sensor - Doorbell motion sensor - Doorbell online sensor -If you have August Smart Lock with DoorSense, once you have enabled the August component, you should see the following sensors: +If you have an August Smart Lock with DoorSense, once you have enabled the August component, you should see the following sensors: - Door sensor ### Camera The `august` camera platform allows you to view the latest camera image (triggered by motion) by your [August](https://august.com/) device in Home Assistant. + +### Sensor + +If you have an August Doorbell with a battery, once you have enabled the August component, you should see the following sensors: + +- Doorbell Battery + +If you have an August Smart Lock, once you have enabled the August component, you should see the following sensors: + +- Lock Battery +- Lock Operation + +If you have an August Keypad, once you have enabled the August component, you should see the following sensors: + +- Keypad Battery + +### Presence Detection with Lock Operation + +Using the lock operation sensors, you can detect when a user operates a lock and is physically present (not remote). The below example will trigger when the user named “John Doe” in August locks or unlocks the door from the keypad (if present), via Bluetooth from their phone, or by auto-unlock. The state of the sensor will be the name of the party operating the lock as returned by August. + +{% raw %} + +```yaml +- id: '1583706446906' + alias: joe_doe_front_door_operate + description: John Doe locks or unlocks the Front Door + trigger: + - entity_id: sensor.front_door_operator + platform: state + to: John Doe + condition: + - condition: template + value_template: "{{ not state_attr('sensor.front_door_operator', 'remote') }}" + action: + - data: {} + entity_id: camera.inside + service: camera.turn_off +``` + +{% endraw %} diff --git a/source/_integrations/aurora.markdown b/source/_integrations/aurora.markdown index b4d12cacc29e..b3e783303528 100644 --- a/source/_integrations/aurora.markdown +++ b/source/_integrations/aurora.markdown @@ -1,13 +1,13 @@ --- -title: "Aurora sensor" -description: "Know when auroras might be visible at your location" +title: Aurora +description: Know when auroras might be visible at your location ha_category: - Environment ha_release: 0.39 -logo: noaa.png +ha_domain: aurora --- -The `aurora` platform uses the [NOAA aurora forecast](https://www.swpc.noaa.gov/products/aurora-30-minute-forecast) service to let you know if an aurora might be visible at your home location in the next 30 minutes, based off of current solar flare activity. +The `aurora` platform uses the [NOAA Aurora Forecast](https://www.swpc.noaa.gov/products/aurora-30-minute-forecast) service to let you know if an aurora might be visible at your home location in the next 30 minutes, based off of current solar flare activity. This service gives a number 0-100 representing the current likelihood of visible auroras at your latitude/longitude. By default this sensor is set up to trigger when the reported likelihood for your location is > 75. It updates every 5 minutes. diff --git a/source/_integrations/aurora_abb_powerone.markdown b/source/_integrations/aurora_abb_powerone.markdown index 2ae6e0370b6d..ca56e1f3098a 100644 --- a/source/_integrations/aurora_abb_powerone.markdown +++ b/source/_integrations/aurora_abb_powerone.markdown @@ -1,12 +1,15 @@ --- -title: "Aurora ABB Powerone PV Inverter Sensor" -description: "Instructions on how to integrate an Aurora ABB Powerone solar inverter within Home Assistant." +title: Aurora ABB Solar PV +description: Instructions on how to integrate an Aurora ABB Powerone solar inverter within Home Assistant. logo: powerone.png ha_category: - Sensor - Energy ha_release: 0.96 ha_iot_class: Local Polling +ha_codeowners: + - '@davet2001' +ha_domain: aurora_abb_powerone --- This implements a direct RS485 connection to a solar inverter in the diff --git a/source/_integrations/auth.markdown b/source/_integrations/auth.markdown index 9e9f413a18a4..2d3f7e9bf7ca 100644 --- a/source/_integrations/auth.markdown +++ b/source/_integrations/auth.markdown @@ -1,11 +1,13 @@ --- -title: "Auth" -description: "This integration is responsible for providing the authentication endpoints." -logo: home-assistant.png +title: Auth +description: This integration is responsible for providing the authentication endpoints. ha_category: - Other ha_release: 0.73 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: auth --- This integration creates the endpoints for the [authentication system](/docs/authentication/) that is built into Home Assistant. diff --git a/source/_integrations/automatic.markdown b/source/_integrations/automatic.markdown index fb9db70b934b..03b8259ab2a5 100644 --- a/source/_integrations/automatic.markdown +++ b/source/_integrations/automatic.markdown @@ -1,21 +1,23 @@ --- -title: "Automatic" -description: "Instructions for how to integrate Automatic ODB readers into Home Assistant." +title: Automatic +description: Instructions for how to integrate Automatic ODB readers into Home Assistant. logo: automatic.png ha_category: - Car ha_release: 0.28 ha_iot_class: Cloud Push +ha_codeowners: + - '@armills' +ha_domain: automatic --- - The `automatic` device tracker platform offers presence detection by retrieving your car's information from the [Automatic](https://automatic.com/) cloud service. ## Setup -To use Automatic with Home Assistant, first you must [create a free development account](https://developer.automatic.com/). Automatic will generate a Client ID and Secret for you to use in your Home Assistant configuration. You will need to update your Event Delivery preferences to ensure Home Assistant can receive updates. On the developer page, under App Settings / Event Delivery, select "Websocket" for Event Delivery Preference. Next, specify the OAuth Redirect URL in the developer page. This should be configured to `/api/automatic/callback`. (Example: `http://hassio.local:8123/api/automatic/callback`) Note that this URL only needs to be accessible from the browser you use to perform the authentication. +To use Automatic with Home Assistant, first you must [create a free development account](https://developer.automatic.com/). Automatic will generate a Client ID and Secret for you to use in your Home Assistant configuration. You will need to update your Event Delivery preferences to ensure Home Assistant can receive updates. On the developer page, under App Settings / Event Delivery, select "Websocket" for Event Delivery Preference. Next, specify the OAuth Redirect URL in the developer page. This should be configured to `/api/automatic/callback`. (Example: `http://homeassistant.local:8123/api/automatic/callback`) Note that this URL only needs to be accessible from the browser you use to perform the authentication. -Home Assistant can also take advantage of `scope:current_location` if available. This will allow Home Assistant to receive periodic location updates during a trip. In order to use this functionality, you must request the scope for your application from Automatic. Once `scope:current_location` is available, change `current_location` to `true` in your configuration.yaml. +Home Assistant can also take advantage of `scope:current_location` if available. This will allow Home Assistant to receive periodic location updates during a trip. In order to use this functionality, you must request the scope for your application from Automatic. Once `scope:current_location` is available, change `current_location` to `true` in your `configuration.yaml`. ## Configuration @@ -52,6 +54,12 @@ devices: type: list {% endconfiguration %} +
    + +The device name must be the name given by Automatic automatically. This is typically the model year, make and model. This is *not* the nickname you have to give the vehicle in the `vehicles` section of the app's settings. + +
    + Home Assistant will also fire events when an update is received from Automatic. These can be used to trigger automations, as shown in the example below. A list of available event types can be found in the [Automatic Real-Time Events documentation](https://developer.automatic.com/api-reference/#real-time-events). ```yaml diff --git a/source/_integrations/automation.markdown b/source/_integrations/automation.markdown index 33e487071e11..8cfee19b4f8d 100644 --- a/source/_integrations/automation.markdown +++ b/source/_integrations/automation.markdown @@ -1,31 +1,28 @@ --- -title: "Automation" -description: "Instructions on how to setup automation within Home Assistant." -logo: home-assistant.png +title: Automation +description: Instructions on how to setup automation within Home Assistant. ha_category: - Automation -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: automation --- -Please see the [docs section](/docs/automation/) for in-depth -documentation on how to use the automation component. +Please see the [automation section](/docs/automation/) for in-depth +documentation on how to use the automation integration.

    -This allows one to reload the automation without restarting Home Assistant -itself. If you don't want to see the automation rule in your frontend use -`hide_entity: true` to hide it. - You can also use `initial_state: 'false'` so that the automation is not automatically turned on after a Home Assistant reboot. ```yaml automation: - alias: Door alarm - hide_entity: true initial_state: true trigger: - platform: state diff --git a/source/_integrations/avea.markdown b/source/_integrations/avea.markdown index 44588bdcbcd2..807f78f7512a 100644 --- a/source/_integrations/avea.markdown +++ b/source/_integrations/avea.markdown @@ -1,11 +1,14 @@ --- -title: "Elgato Avea" -description: "Instructions on how to integrate Elgato Avea with Home Assistant." +title: Elgato Avea +description: Instructions on how to integrate Elgato Avea with Home Assistant. logo: avea.png ha_category: - Light ha_release: 0.97 ha_iot_class: Local Polling +ha_codeowners: + - '@pattyland' +ha_domain: avea --- [Elgato Avea](https://www.elgato.com/en/news/elgato-avea-transform-your-home) is a Bluetooth light bulb that is no longer supported by the manufacturer. The `avea` integration allows you to control all your Avea bulbs with Home Assistant. diff --git a/source/_integrations/avion.markdown b/source/_integrations/avion.markdown index 5313cfc4effd..cce0ef0b77fa 100644 --- a/source/_integrations/avion.markdown +++ b/source/_integrations/avion.markdown @@ -1,14 +1,15 @@ --- -title: "Avi-on" -description: "Instructions on how to setup GE Avi-on Bluetooth dimmers within Home Assistant." +title: Avi-on +description: Instructions on how to setup GE Avi-on Bluetooth dimmers within Home Assistant. ha_category: - Light ha_iot_class: Assumed State logo: avi-on.png ha_release: 0.37 +ha_domain: avion --- -Support for the Avi-on Bluetooth dimmer switch [Avi-On](https://avi-on.com/). +Support for the Avi-on Bluetooth dimmer switch [Avi-on](https://avi-on.com/). ## Setup @@ -76,7 +77,7 @@ light: api_key: YOUR_API_KEY ``` -For independent control of multiple devices, you must specify each device's ID (integer starting with 1). Each switch's ID can be guessed or detected from the Avi-On API. +For independent control of multiple devices, you must specify each device's ID (integer starting with 1). Each switch's ID can be guessed or detected from the Avi-on API. ```yaml # Manual device configuration.yaml entry diff --git a/source/_integrations/avri.markdown b/source/_integrations/avri.markdown new file mode 100644 index 000000000000..b91e2b067255 --- /dev/null +++ b/source/_integrations/avri.markdown @@ -0,0 +1,52 @@ +--- +title: Avri +description: Instructions on how to set up Avri Waste sensor within Home Assistant. +logo: avri.jpeg +ha_category: + - Sensor +ha_iot_class: Cloud Polling +ha_release: 0.107 +ha_codeowners: + - '@timvancann' +ha_domain: avri +--- + +The `Avri Waste` platform allows you to track the next scheduled waste pickup and the type of waste from [Avri](https://www.avri.nl/). + +## Configuration + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: avri + zip_code: YOUR_ZIP_CODE + house_number: YOUR_HOUSE_NUMBER +``` + +{% configuration %} +zip_code: + description: Your zip code + required: true + type: string +house_number: + description: Your house number + required: true + type: integer +house_number_extension: + description: Your house number extension + required: false + type: string +county_code: + description: Your country code + required: false + type: string + default: NL +{% endconfiguration %} + +The default frequency for pulling data from the Avri API is once every 4 hours. If the Avri API does not return any pickup days the state of the sensor is set to `unknown`. + +

    +The Avri sensor uses an unofficial API to obtain data. Use it at your own risk. +

    diff --git a/source/_integrations/awair.markdown b/source/_integrations/awair.markdown index 8754ae6e752b..4c448eddce20 100644 --- a/source/_integrations/awair.markdown +++ b/source/_integrations/awair.markdown @@ -1,11 +1,13 @@ --- -title: "Awair Air Quality Monitor" -description: "Instructions on how to setup Awair devices in Home Assistant." -logo: awair.jpg +title: Awair +description: Instructions on how to setup Awair devices in Home Assistant. ha_category: - Health ha_release: 0.84 ha_iot_class: Cloud Polling +ha_codeowners: + - '@danielsjf' +ha_domain: awair --- The `awair` sensor platform will fetch data from your [Awair device(s)](https://getawair.com). diff --git a/source/_integrations/aws.markdown b/source/_integrations/aws.markdown index 0c501748ceaa..598d1424e994 100644 --- a/source/_integrations/aws.markdown +++ b/source/_integrations/aws.markdown @@ -1,10 +1,13 @@ --- -title: "Amazon Web Services" -description: "Instructions on how to integrate Amazon Web Services with Home Assistant." -logo: aws.png +title: Amazon Web Services (AWS) +description: Instructions on how to integrate Amazon Web Services with Home Assistant. ha_category: - Notifications -ha_release: "0.91" +ha_release: '0.91' +ha_codeowners: + - '@awarecan' + - '@robbiet480' +ha_domain: aws --- The `aws` integration provides a single place to interact with [Amazon Web Services](https://aws.amazon.com/). Currently it provides a notification platform that can send a message to [AWS SQS](https://aws.amazon.com/sqs/), [AWS SNS](https://aws.amazon.com/sns/), or invoke [AWS Lambda](https://aws.amazon.com/lambda/) functions. @@ -100,7 +103,7 @@ context: ## Lambda Notify Usage -AWS Lambda is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)) or a partial ARN. For more information, please see the [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke). +AWS Lambda is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)) or a partial ARN. For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke). The Lambda event payload will contain everything passed in the service call payload. Here is an example payload that would be sent to Lambda: @@ -128,7 +131,7 @@ The context will look like this: ## SNS Notify Usage -AWS SNS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)). For more information, please see the [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish). +AWS SNS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)). For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish). If one exists, the SNS Subject will be set to the title. All attributes from the payload, except the message, will be sent as stringified message attributes. @@ -154,14 +157,14 @@ If you do not download them, you will lose them and will have to recreate a new ## SQS Notify Usage -AWS SQS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS docs](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html) and [bototcore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html#SQS.Client.send_message) +AWS SQS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS documentation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html) and [bototcore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html#SQS.Client.send_message) The SQS event payload will contain everything passed in the service call payload. SQS payloads will be published as stringified JSON. All attributes from the payload, except message, will also be sent as stringified message attributes. Here is an example message that would be published to the SQS queue: ```json { "title": "Test message!", - "target": "https://sqs.us-east-1.amazonaws.com/123456789012/queue2%22, + "target": "https://sqs.us-east-1.amazonaws.com/123456789012/queue2%22", "data": { "test": "okay" }, diff --git a/source/_integrations/axis.markdown b/source/_integrations/axis.markdown index 29d14a0a4e15..4e296522c150 100644 --- a/source/_integrations/axis.markdown +++ b/source/_integrations/axis.markdown @@ -1,6 +1,6 @@ --- -title: "Axis" -description: "Integration between network devices from Axis Communications with Home Assistant." +title: Axis +description: Integration between network devices from Axis Communications with Home Assistant. logo: axis.png ha_category: - Camera @@ -9,6 +9,9 @@ ha_category: ha_config_flow: true ha_release: 0.45 ha_iot_class: Local Push +ha_codeowners: + - '@kane610' +ha_domain: axis --- [Axis Communications](https://www.axis.com/) devices are surveillance cameras, speakers, access control and other security-related network connected hardware. Event API works with firmware 5.50 and newer. @@ -25,7 +28,7 @@ For configuration go to the `Integrations pane` on your Home Assistant instance. ## Troubleshooting discovery -If your device is not discovered. On your camera, go to **System Options** -> **Advanced** -> **Plain Config**. Change the drop-down box to `network` and click `Select Group`. If `Network Interface I0 ZeroConf` contains the `169.x.x.x` IP address, unchecked the box next to `Enabled` for this section and click `Save`. +If your device is not discovered. On your camera, go to **System Options** -> **Advanced** -> **Plain Configuration**. Change the drop-down box to `network` and click `Select Group`. If `Network Interface I0 ZeroConf` contains the `169.x.x.x` IP address, unchecked the box next to `Enabled` for this section and click `Save`. ## Binary Sensor diff --git a/source/_integrations/azure_event_hub.markdown b/source/_integrations/azure_event_hub.markdown index c7ed04efc3fa..958be7981e9d 100644 --- a/source/_integrations/azure_event_hub.markdown +++ b/source/_integrations/azure_event_hub.markdown @@ -1,10 +1,12 @@ --- -title: "Azure Event Hub" -description: "Setup for Azure Event Hub integration" -logo: azure_event_hub.svg +title: Azure Event Hub +description: Setup for Azure Event Hub integration ha_category: - History ha_release: 0.94 +ha_codeowners: + - '@eavanvalkenburg' +ha_domain: azure_event_hub --- The `Azure Event Hub` integration allows you to hook into the Home Assistant event bus and send events to [Azure Event Hub](https://azure.microsoft.com/en-us/services/event-hubs/) or to a [Azure IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-read-builtin). diff --git a/source/_integrations/azure_service_bus.markdown b/source/_integrations/azure_service_bus.markdown index 55e8467bdd5b..0509c735a210 100644 --- a/source/_integrations/azure_service_bus.markdown +++ b/source/_integrations/azure_service_bus.markdown @@ -1,10 +1,12 @@ --- -title: "Azure Service Bus" -description: "Setup for Azure Service Bus integration" -logo: azure_service_bus.svg +title: Azure Service Bus +description: Setup for Azure Service Bus integration ha_category: - - Notification + - Notifications ha_release: 0.102 +ha_codeowners: + - '@hfurubotten' +ha_domain: azure_service_bus --- The `Azure Service Bus` integration allows you to send messages to [Azure Service Bus](https://azure.microsoft.com/en-us/services/service-bus/) from within Home Assistant. diff --git a/source/_integrations/baidu.markdown b/source/_integrations/baidu.markdown index e1b13e4c9bfb..cfec3e92b2ec 100644 --- a/source/_integrations/baidu.markdown +++ b/source/_integrations/baidu.markdown @@ -1,10 +1,11 @@ --- -title: "Baidu Text-to-Speech" -description: "Instructions on how to setup Baidu TTS with Home Assistant." +title: Baidu +description: Instructions on how to setup Baidu TTS with Home Assistant. logo: baiducloud.png ha_category: - Text-to-speech ha_release: 0.59 +ha_domain: baidu --- The `baidu` text-to-speech platform uses [Baidu TTS engine](https://cloud.baidu.com/product/speech/tts) to read a text with natural sounding voices. diff --git a/source/_integrations/bayesian.markdown b/source/_integrations/bayesian.markdown index e6077902d1fc..89403363fd5c 100644 --- a/source/_integrations/bayesian.markdown +++ b/source/_integrations/bayesian.markdown @@ -1,12 +1,12 @@ --- -title: "Bayesian Binary Sensor" -description: "Instructions on how to integrate threshold Bayesian sensors into Home Assistant." -logo: home-assistant.png +title: Bayesian +description: Instructions on how to integrate threshold Bayesian sensors into Home Assistant. ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.53 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: bayesian --- The `bayesian` binary sensor platform observes the state from multiple sensors and uses [Bayes' rule](https://en.wikipedia.org/wiki/Bayes%27_theorem) to estimate the probability that an event has occurred given the state of the observed sensors. If the estimated posterior probability is above the `probability_threshold`, the sensor is `on` otherwise it is `off`. diff --git a/source/_integrations/bbb_gpio.markdown b/source/_integrations/bbb_gpio.markdown index 389315e7f500..eb2e89df87ce 100644 --- a/source/_integrations/bbb_gpio.markdown +++ b/source/_integrations/bbb_gpio.markdown @@ -1,13 +1,13 @@ --- -title: "BeagleBone Black GPIO" -description: "Instructions on how to integrate the GPIO capability of a BeagleBone Black into Home Assistant." -logo: beaglebone-black.png +title: BeagleBone Black GPIO +description: Instructions on how to integrate the GPIO capability of a BeagleBone Black into Home Assistant. ha_category: - DIY - Binary Sensor - Switch ha_release: 0.36 ha_iot_class: Local Push +ha_domain: bbb_gpio --- The `bbb_gpio` integration is the base for all [BeagleBone Black](https://beagleboard.org/black) related GPIO platforms in Home Assistant. diff --git a/source/_integrations/bbox.markdown b/source/_integrations/bbox.markdown index 715b80a2ba69..6cd532d0dcc3 100644 --- a/source/_integrations/bbox.markdown +++ b/source/_integrations/bbox.markdown @@ -1,6 +1,6 @@ --- -title: "Bbox" -description: "Instructions on how to integrate Bouygues Bbox routers into Home Assistant." +title: Bbox +description: Instructions on how to integrate Bouygues Bbox routers into Home Assistant. logo: bbox.png ha_category: - Network @@ -8,6 +8,7 @@ ha_category: - Presence Detection ha_release: 0.31 ha_iot_class: Local Polling +ha_domain: bbox --- The `bbox` platform uses the [Bbox Modem Router](https://www.bouyguestelecom.fr/offres-internet/bbox-fit) from the French Internet provider Bouygues Telecom. Sensors are mainly bandwidth measures. @@ -66,6 +67,8 @@ sensor: - up_max_bandwidth - current_down_bandwidth - current_up_bandwidth + - uptime + - number_of_reboots ``` {% configuration %} @@ -87,4 +90,8 @@ monitored_variables: description: Instant measure of the current used bandwidth for download. current_up_bandwidth: description: Instant measure of the current used bandwidth for upload. + uptime: + description: Uptime since the last boot. + number_of_reboots: + description: Number of reboot since the initial configuration of the router. {% endconfiguration %} diff --git a/source/_integrations/beewi_smartclim.markdown b/source/_integrations/beewi_smartclim.markdown index 7a49cf788fad..6136b733834d 100644 --- a/source/_integrations/beewi_smartclim.markdown +++ b/source/_integrations/beewi_smartclim.markdown @@ -1,11 +1,13 @@ --- -title: "BeeWi SmartClim BLE" -description: "Instructions on how to integrate MBeeWi SmartClim BLE sensor with Home Assistant." -logo: beewi_by_otio.png +title: BeeWi SmartClim BLE sensor +description: Instructions on how to integrate MBeeWi SmartClim BLE sensor with Home Assistant. ha_category: - Sensor ha_release: 0.99 ha_iot_class: Local Polling +ha_codeowners: + - '@alemuro' +ha_domain: beewi_smartclim --- The `beewi_smartclim` sensor platform allows one to monitor room or external temperature and humidity. The [BeeWi SmartClim BLE](http://www.bee-wi.com/produits/capteurs/capteur-de-temperature/) is a Bluetooth Low Energy sensor device that monitors temperature from a room or a garden from your smartphone by using an APP. Use this integration to track these metrics from any location thanks to Home Assistant, as well as to create some automation scripts based on your room's temperature. @@ -14,12 +16,12 @@ The `beewi_smartclim` sensor platform allows one to monitor room or external tem Depending on the operating system you're running, you have to configure the proper Bluetooth backend on your system: -- On [Hass.io](/hassio/installation/): `beewi_smartclim` will work out of the box as long as the host supports Bluetooth (like the Raspberry Pi does). -- On a [generic Docker installation](/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. -- On other Linux systems: +- `beewi_smartclim` will work out of the box as long as the host supports Bluetooth (like the Raspberry Pi does). +- Using [Home Assistant Core on Docker installation](/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. +- On other Home Assistant Core systems: - Preferred solution: Install the `bluepy` and `btlewrap` library (via pip). When using a virtual environment, make sure to use install the library in the right one. - Fallback solution: Install `btlewrap` library (via pip) and `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth` or `bluez-deprecated`. -- Windows and MacOS are currently not supported by the `btlewrap` library. +- Windows and macOS are currently not supported by the `btlewrap` library. ## Configuration diff --git a/source/_integrations/bh1750.markdown b/source/_integrations/bh1750.markdown index f270c27d31c9..bd8b56e819cf 100644 --- a/source/_integrations/bh1750.markdown +++ b/source/_integrations/bh1750.markdown @@ -1,11 +1,11 @@ --- -title: "BH1750 Light sensor" -description: "Instructions on how to integrate a BH1750 light sensor into Home Assistant." -logo: raspberry-pi.png +title: BH1750 +description: Instructions on how to integrate a BH1750 light sensor into Home Assistant. ha_category: - DIY ha_release: 0.48 ha_iot_class: Local Push +ha_domain: bh1750 --- The `bh1750` sensor platform allows you to read the ambient light level in Lux from a [BH1750FVI sensor](https://www.mouser.com/ds/2/348/bh1750fvi-e-186247.pdf) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the resolution modes of the sensor described in its datasheet. @@ -91,7 +91,7 @@ $ sudo raspi-config Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. -Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: +Install dependencies for use the `smbus-cffi` module and enable your `homeassistant` user to join the _i2c_ group: ```bash # pi user environment: Install i2c dependencies and utilities diff --git a/source/_integrations/binary_sensor.knx.markdown b/source/_integrations/binary_sensor.knx.markdown index 2818ad36a1b9..89ceea46cb07 100644 --- a/source/_integrations/binary_sensor.knx.markdown +++ b/source/_integrations/binary_sensor.knx.markdown @@ -1,11 +1,11 @@ --- title: "KNX Binary Sensor" description: "Instructions on how to setup the KNX binary sensors within Home Assistant." -logo: knx.png ha_category: - Binary Sensor ha_release: 0.24 ha_iot_class: Local Push +ha_domain: knx ---
    diff --git a/source/_integrations/binary_sensor.markdown b/source/_integrations/binary_sensor.markdown index 4d91c3d6fb1c..c312c542114c 100644 --- a/source/_integrations/binary_sensor.markdown +++ b/source/_integrations/binary_sensor.markdown @@ -1,11 +1,11 @@ --- -title: "Binary Sensor" -description: "Instructions on how-to setup binary sensors with Home Assistant." -logo: home-assistant.png +title: Binary Sensor +description: Instructions on how-to setup binary sensors with Home Assistant. ha_category: - Binary Sensor -ha_qa_scale: internal ha_release: 0.9 +ha_quality_scale: internal +ha_domain: binary_sensor --- Binary sensors gather information about the state of devices which have a "digital" return value (either 1 or 0). These can be switches, contacts, pins, etc. These sensors only have two states: **0/off/low/closed/false** and **1/on/high/open/true**. Knowing that there are only two states allows Home Assistant to represent these sensors in a better way in the frontend according to their functionality. @@ -15,33 +15,33 @@ Binary sensors gather information about the state of devices which have a "digit The way these sensors are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: - **None**: Generic on/off. This is the default and doesn't need to be set. -- **battery**: `On` means low, `Off` means normal -- **cold**: `On` means cold, `Off` means normal -- **connectivity**: `On` means connected, `Off` means disconnected -- **door**: `On` means open, `Off` means closed -- **garage_door**: `On` means open, `Off` means closed -- **gas**: `On` means gas detected, `Off` means no gas (clear) -- **heat**: `On` means hot, `Off` means normal -- **light**: `On` means light detected, `Off` means no light -- **lock**: `On` means open (unlocked), `Off` means closed (locked) -- **moisture**: `On` means moisture detected (wet), `Off` means no moisture (dry) -- **motion**: `On` means motion detected, `Off` means no motion (clear) -- **moving**: `On` means moving, `Off` means not moving (stopped) -- **occupancy**: `On` means occupied, `Off` means not occupied (clear) -- **opening**: `On` means open, `Off` means closed -- **plug**: `On` means device is plugged in, `Off` means device is unplugged -- **power**: `On` means power detected, `Off` means no power -- **presence**: `On` means home, `Off` means away -- **problem**: `On` means problem detected, `Off` means no problem (OK) -- **safety**: `On` means unsafe, `Off` means safe -- **smoke**: `On` means smoke detected, `Off` means no smoke (clear) -- **sound**: `On` means sound detected, `Off` means no sound (clear) -- **vibration**: `On` means vibration detected, `Off` means no vibration (clear) -- **window**: `On` means open, `Off` means closed +- **battery**: `on` means low, `off` means normal +- **cold**: `on` means cold, `off` means normal +- **connectivity**: `on` means connected, `off` means disconnected +- **door**: `on` means open, `off` means closed +- **garage_door**: `on` means open, `off` means closed +- **gas**: `on` means gas detected, `off` means no gas (clear) +- **heat**: `on` means hot, `off` means normal +- **light**: `on` means light detected, `off` means no light +- **lock**: `on` means open (unlocked), `off` means closed (locked) +- **moisture**: `on` means moisture detected (wet), `off` means no moisture (dry) +- **motion**: `on` means motion detected, `off` means no motion (clear) +- **moving**: `on` means moving, `off` means not moving (stopped) +- **occupancy**: `on` means occupied, `off` means not occupied (clear) +- **opening**: `on` means open, `off` means closed +- **plug**: `on` means device is plugged in, `off` means device is unplugged +- **power**: `on` means power detected, `off` means no power +- **presence**: `on` means home, `off` means away +- **problem**: `on` means problem detected, `off` means no problem (OK) +- **safety**: `on` means unsafe, `off` means safe +- **smoke**: `on` means smoke detected, `off` means no smoke (clear) +- **sound**: `on` means sound detected, `off` means no sound (clear) +- **vibration**: `on` means vibration detected, `off` means no vibration (clear) +- **window**: `on` means open, `off` means closed For analog sensors please check the [integration overview](/integrations/#sensor).

    -Example of various device classes icons in `On` and `Off` state. +Example of various device classes icons in `on` and `off` state. The on image in this example has `state_color: true` specified in the Entities card configuration to receive the icon coloring.

    diff --git a/source/_integrations/binary_sensor.modbus.markdown b/source/_integrations/binary_sensor.modbus.markdown index 042a2c8355f4..429c33517efa 100644 --- a/source/_integrations/binary_sensor.modbus.markdown +++ b/source/_integrations/binary_sensor.modbus.markdown @@ -1,11 +1,11 @@ --- title: "Modbus Binary Sensor" description: "Instructions on how to set up Modbus binary sensors within Home Assistant." -logo: modbus.png ha_category: - Binary Sensor ha_release: 0.28 ha_iot_class: Local Push +ha_domain: modbus --- The `modbus` binary sensor allows you to gather data from [Modbus](http://www.modbus.org/) coils. @@ -18,20 +18,21 @@ To use your Modbus binary sensors in your installation, add the following to you # Example configuration.yaml entry binary_sensor: - platform: modbus - coils: + inputs: - name: Sensor1 hub: hub1 slave: 1 - coil: 100 + address: 100 - name: Sensor2 hub: hub1 slave: 1 - coil: 110 + address: 110 + input_type: discrete_input ``` {% configuration %} -coils: - description: The array contains a list of coils to read from. +inputs: + description: The array contains a list of coils and discrete inputs to read from. required: true type: [map, list] keys: @@ -48,10 +49,19 @@ coils: description: The number of the slave (Optional for TCP and UDP Modbus). required: true type: integer - coil: - description: Coil number. + address: + description: Coil or discrete input Modbus address. required: true type: integer + input_type: + description: Modbus input type (coil, discrete_input), default coil. + required: false + type: string + device_class: + description: The [type/class](/integrations/binary_sensor/#device-class) of the binary sensor to set the icon in the frontend. + required: false + type: device_class + default: None {% endconfiguration %} It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index ddfc675a21d4..6154fd3c5507 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -1,23 +1,25 @@ --- title: "MQTT Binary Sensor" description: "Instructions on how to integrate MQTT binary sensors within Home Assistant." -logo: mqtt.png ha_category: - Binary Sensor ha_release: 0.9 ha_iot_class: Configurable +ha_domain: mqtt --- -The `mqtt` binary sensor platform uses an MQTT message payload to set the binary sensor to one of two states: `on` or `off`. +The `mqtt` binary sensor platform uses an MQTT message received to set the binary sensor's state to `on` or `off`. -The binary sensor state will be updated only after a new message is published on `state_topic` matching `payload_on` or `payload_off`. If these messages are published with the `retain` flag set, +The state will be updated only after a new message is published on `state_topic` matching `payload_on` or `payload_off`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant state update after subscription and Home Assistant will display the correct state on startup. Otherwise, the initial state displayed in Home Assistant will be `unknown`. +Stateless devices such as buttons, remote controls etc are better represented by [MQTT device triggers](/integrations/device_trigger.mqtt/) than by binary sensors. + ## Configuration The `mqtt` binary sensor platform optionally supports an `availability_topic` to receive online and offline messages (birth and LWT messages) from the MQTT device. During normal operation, if the MQTT sensor device goes offline (i.e., publishes `payload_not_available` to `availability_topic`), Home Assistant will display the binary sensor as `unavailable`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant update after subscription and Home Assistant will display the correct availability state of the binary sensor when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the binary sensor as `unavailable` when Home Assistant starts up. If no `availability_topic` -is defined, Home Assistant will consider the MQTT device to be available. +is defined, Home Assistant will consider the MQTT device to be `available` and will display its state. To use an MQTT binary sensor in your installation, add the following to your `configuration.yaml` file: @@ -30,106 +32,106 @@ binary_sensor: ``` {% configuration %} -state_topic: - description: The MQTT topic subscribed to receive sensor values. - required: true - type: string -name: - description: The name of the binary sensor. +availability_topic: + description: "The MQTT topic subscribed to receive birth and LWT messages from the MQTT device. If `availability_topic` is not defined, the binary sensor will always be considered `available` and its state will be `on`, `off` or `unknown`. If `availability_topic` is defined, the binary sensor will be considered as `unavailable` by default and the sensor's state will be `unavailable`." required: false type: string - default: MQTT Binary Sensor -payload_on: - description: The payload that represents the on state. +device: + description: "Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." + required: false + type: map + keys: + connections: + description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." + required: false + type: [list, map] + identifiers: + description: A list of IDs that uniquely identify the device. For example a serial number. + required: false + type: [list, string] + manufacturer: + description: The manufacturer of the device. + required: false + type: string + model: + description: The model of the device. + required: false + type: string + name: + description: The name of the device. + required: false + type: string + sw_version: + description: The firmware version of the device. + required: false + type: string +device_class: + 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 - default: "ON" -payload_off: - description: The payload that represents the off state. +expire_after: + description: "Defines the number of seconds after the sensor's state expires if it's not updated. After expiry, the sensor's state becomes `unavailable` if `availability_topic` is defined and `unknown` otherwise." + required: false + type: integer +force_update: + description: Sends update events (which results in update of [state object](/docs/configuration/state_object/)'s `last_changed`) even if the sensor's state hasn't changed. Useful if you want to have meaningful value graphs in history or want to create an automation that triggers on *every* incoming state message (not only when the sensor's new state is different to the current one). + required: false + type: boolean + default: false +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." + required: false + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. required: false type: string - default: "OFF" -availability_topic: - description: "The MQTT topic subscribed to receive birth and LWT messages from the MQTT device. If `availability_topic` is not defined, the binary sensor availability state will always be `available`. If `availability_topic` is defined, the binary sensor availability state will be `unavailable` by default." +name: + description: The name of the binary sensor. required: false type: string + default: MQTT Binary Sensor +off_delay: + description: "For sensors that only send `on` state updates (like PIRs), this variable sets a delay in seconds after which the sensor's state will be updated back to `off`." + required: false + type: integer payload_available: - description: The payload that represents the online state. + description: The string that represents the `online` state. required: false type: string default: online payload_not_available: - description: The payload that represents the offline state. + description: The string that represents the `offline` state. required: false type: string default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. +payload_off: + description: The string that represents the `off` state. It will be compared to the message in the `state_topic` (see `value_template` for details) required: false type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." + default: "OFF" +payload_on: + description: The string that represents the `on` state. It will be compared to the message in the `state_topic` (see `value_template` for details) required: false - type: template + type: string + default: "ON" qos: description: The maximum QoS level to be used when receiving messages. required: false type: integer default: 0 +state_topic: + description: The MQTT topic subscribed to receive sensor's state. + required: true + type: string unique_id: description: An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception. required: false type: string -device_class: - 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 -expire_after: - description: "Defines the number of seconds after the value expires if it's not updated. After expiry, the value is cleared, and the availability is set to false" - required: false - type: integer value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. Available variables: `entity_id`. Remove this option when 'payload_on' and 'payload_off' are sufficient to match your payloads." + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) that returns a string to be compared to `payload_on`/`payload_off`. Available variables: `entity_id`. Remove this option when 'payload_on' and 'payload_off' are sufficient to match your payloads (i.e no pre-processing of original message is required)." required: false type: string -force_update: - description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. - required: false - type: boolean - default: false -off_delay: - description: "For sensors that only sends `On` state updates, this variable sets a delay in seconds after which the sensor state will be updated back to `Off`." - required: false - type: integer -device: - description: "Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." - required: false - type: map - keys: - identifiers: - description: A list of IDs that uniquely identify the device. For example a serial number. - required: false - type: [list, string] - connections: - description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." - required: false - type: [list, map] - manufacturer: - description: The manufacturer of the device. - required: false - type: string - model: - description: The model of the device. - required: false - type: string - name: - description: The name of the device. - required: false - type: string - sw_version: - description: The firmware version of the device. - required: false - type: string {% endconfiguration %} ## Examples diff --git a/source/_integrations/binary_sensor.mysensors.markdown b/source/_integrations/binary_sensor.mysensors.markdown index 8b42a3c55048..1c0188f9bb4d 100644 --- a/source/_integrations/binary_sensor.mysensors.markdown +++ b/source/_integrations/binary_sensor.mysensors.markdown @@ -1,39 +1,39 @@ --- title: "MySensors Binary Sensor" description: "Instructions on how to integrate MySensors binary sensors into Home Assistant." -logo: mysensors.png ha_category: - DIY - Binary Sensor ha_release: 0.14 ha_iot_class: Local Push +ha_domain: mysensors --- -Integrates MySensors binary sensors into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors binary sensors into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following sensor types are supported: -#### MySensors version 1.4 and higher +## MySensors version 1.4 and higher -S_TYPE | V_TYPE --------------------|--------------------------------------- -S_DOOR | V_TRIPPED -S_MOTION | V_TRIPPED -S_SMOKE | V_TRIPPED +| S_TYPE | V_TYPE | +| -------- | --------- | +| S_DOOR | V_TRIPPED | +| S_MOTION | V_TRIPPED | +| S_SMOKE | V_TRIPPED | -#### MySensors version 1.5 and higher +## MySensors version 1.5 and higher -S_TYPE | V_TYPE ----------------|---------------------------------- -S_SPRINKLER | V_TRIPPED -S_WATER_LEAK | V_TRIPPED -S_SOUND | V_TRIPPED -S_VIBRATION | V_TRIPPED -S_MOISTURE | V_TRIPPED +| S_TYPE | V_TYPE | +| ------------ | --------- | +| S_SPRINKLER | V_TRIPPED | +| S_WATER_LEAK | V_TRIPPED | +| S_SOUND | V_TRIPPED | +| S_VIBRATION | V_TRIPPED | +| S_MOISTURE | V_TRIPPED | -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. -### Example sketch +## Example sketch ```cpp /** @@ -80,6 +80,3 @@ void loop() } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/binary_sensor.rest.markdown b/source/_integrations/binary_sensor.rest.markdown index 92413461faae..f3a433442b43 100644 --- a/source/_integrations/binary_sensor.rest.markdown +++ b/source/_integrations/binary_sensor.rest.markdown @@ -1,11 +1,11 @@ --- title: "RESTful Binary Sensor" description: "Instructions on how to integrate REST binary sensors into Home Assistant." -logo: restful.png ha_category: - Binary Sensor ha_release: "0.10" ha_iot_class: Local Polling +ha_domain: rest --- The `rest` binary sensor platform is consuming a given endpoint which is exposed @@ -108,10 +108,6 @@ headers: type: [list, string] {% endconfiguration %} -
    -Make sure that the URL exactly matches your endpoint or resource. -
    - ## Examples In this section you find some real-life examples of how to use this sensor. diff --git a/source/_integrations/binary_sensor.rflink.markdown b/source/_integrations/binary_sensor.rflink.markdown index f84c4cf7a447..6f62de603077 100644 --- a/source/_integrations/binary_sensor.rflink.markdown +++ b/source/_integrations/binary_sensor.rflink.markdown @@ -6,6 +6,7 @@ ha_category: - Binary Sensor ha_iot_class: Local Push ha_release: 0.81 +ha_domain: rflink --- The `rflink` integration supports devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). diff --git a/source/_integrations/binary_sensor.rfxtrx.markdown b/source/_integrations/binary_sensor.rfxtrx.markdown index 670c8fef901a..0f5a49c5a912 100644 --- a/source/_integrations/binary_sensor.rfxtrx.markdown +++ b/source/_integrations/binary_sensor.rfxtrx.markdown @@ -1,25 +1,25 @@ --- title: "RFXtrx Binary Sensor" description: "Instructions on how to integrate RFXtrx binary sensors into Home Assistant." -logo: rfxtrx.png ha_category: - Binary Sensor ha_release: 0.48 +ha_domain: rfxtrx --- The `rfxtrx` platform support binary sensors that communicate in the frequency range of 433.92 MHz. -The rfxtrx binary sensor integration provides support for them. +The RFXtrx binary sensor integration provides support for them. Many cheap sensors available on the web today are based on a particular RF chip called *PT-2262*. Depending on the running firmware on the RFXcom box, some of them may be recognized under the X10 protocol but most of them are recognized -under the *Lighting4* protocol. The rfxtrx binary sensor integration provides -some special options for them, while other rfxtrx protocols should work too. +under the *Lighting4* protocol. The RFXtrx binary sensor integration provides +some special options for them, while other RFXtrx protocols should work too. ## Setting up your devices -Once you have set up your [rfxtrx hub](/integrations/rfxtrx/), the easiest way +Once you have set up your [RFXtrx hub](/integrations/rfxtrx/), the easiest way to find your binary sensors is to add this to your `configuration.yaml`: ```yaml @@ -90,7 +90,7 @@ automatic_add:
    -This integration and the [rfxtrx switch](/integrations/switch.rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. +This integration and the [RFXtrx switch](/integrations/switch.rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `false`.
    @@ -186,7 +186,7 @@ devices: command_off: 0x7 ``` -The *automatic_add* option makes the rfxtrx binary sensor integration calculate +The *automatic_add* option makes the RFXtrx binary sensor integration calculate and display the configuration options for you in the Home Assistant logs: ```text @@ -203,7 +203,7 @@ want to configure your new devices and leave it off otherwise. ### Known working devices -The following devices are known to work with the rfxtrx binary sensor component. +The following devices are known to work with the RFXtrx binary sensor component. There are too many other to list. - Motion detectors: diff --git a/source/_integrations/binary_sensor.template.markdown b/source/_integrations/binary_sensor.template.markdown index b8fa12ad0bb3..37ad46f32b9a 100644 --- a/source/_integrations/binary_sensor.template.markdown +++ b/source/_integrations/binary_sensor.template.markdown @@ -5,8 +5,8 @@ ha_category: - Binary Sensor ha_release: 0.12 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: template --- The `template` platform supports binary sensors which get their values from @@ -214,7 +214,7 @@ binary_sensor: This example is determining if anyone is home based on the combination of device tracking and motion sensors. It's extremely useful if you have kids/baby sitter/ grand parents who might still be in your house that aren't represented by a -trackable device in Home Assistant. This is providing a composite of WiFi based +trackable device in Home Assistant. This is providing a composite of Wi-Fi based device tracking and Z-Wave multisensor presence sensors. {% raw %} @@ -238,7 +238,7 @@ binary_sensor: ### Device Tracker sensor with Latitude and Longitude Attributes -This example shows how to combine a non-GPS (e.g. NMAP) and GPS device tracker while still including latitude and longitude attributes +This example shows how to combine a non-GPS (e.g., NMAP) and GPS device tracker while still including latitude and longitude attributes {% raw %} ```yaml diff --git a/source/_integrations/binary_sensor.xiaomi_aqara.markdown b/source/_integrations/binary_sensor.xiaomi_aqara.markdown index b25eb39897e5..f5e72c23ba0c 100644 --- a/source/_integrations/binary_sensor.xiaomi_aqara.markdown +++ b/source/_integrations/binary_sensor.xiaomi_aqara.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Binary Sensor" description: "Instructions on how to setup the Xiaomi binary sensors within Home Assistant." -logo: xiaomi.png ha_category: - Binary Sensor ha_release: "0.50" ha_iot_class: Local Push +ha_domain: xiaomi_aqara --- The `xiaomi aqara` binary sensor platform allows you to get data from your [Xiaomi](https://www.mi.com/en/) binary sensors. diff --git a/source/_integrations/bitcoin.markdown b/source/_integrations/bitcoin.markdown index 372fa394799a..d07edfaf6130 100644 --- a/source/_integrations/bitcoin.markdown +++ b/source/_integrations/bitcoin.markdown @@ -1,14 +1,16 @@ --- -title: "Bitcoin" -description: "Instructions on how to integrate Bitcoin data within Home Assistant." +title: Bitcoin +description: Instructions on how to integrate Bitcoin data within Home Assistant. logo: bitcoin.png ha_category: - Finance ha_release: pre 0.7 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' +ha_domain: bitcoin --- - The `bitcoin` sensor platform displays various details about the [Bitcoin](https://bitcoin.org) network. To add the Bitcoin sensor to your installation, add a selection of the available display options to your `configuration.yaml` file: @@ -76,4 +78,3 @@ display_options: market_price_usd: description: Market price in USD {% endconfiguration %} - diff --git a/source/_integrations/bizkaibus.markdown b/source/_integrations/bizkaibus.markdown index c2fa349ffe0b..9532d293f97b 100644 --- a/source/_integrations/bizkaibus.markdown +++ b/source/_integrations/bizkaibus.markdown @@ -1,12 +1,15 @@ --- -title: "Bizkaibus next bus tracking sensor" -description: "Instructions on how to integrate timetable data for traveling on Bizkaibus within Home Assistant." +title: Bizkaibus +description: Instructions on how to integrate timetable data for traveling on Bizkaibus within Home Assistant. logo: bizkaibus.png -ha_category: +ha_category: - Transport - Sensor ha_iot_class: Cloud Polling ha_release: 0.93 +ha_codeowners: + - '@UgaitzEtxebarria' +ha_domain: bizkaibus --- The `bizkaibus` sensor will give you the time until the next bus in the selected stop. diff --git a/source/_integrations/blackbird.markdown b/source/_integrations/blackbird.markdown index 6d206fd3cde3..194f6643a1b8 100644 --- a/source/_integrations/blackbird.markdown +++ b/source/_integrations/blackbird.markdown @@ -1,11 +1,11 @@ --- -title: "Blackbird 8x8 HDMI Matrix Switch" -description: "Instructions on how to integrate Monoprice Blackbird 4k 8x8 HDBaseT Matrix Switch into Home Assistant." -logo: monoprice.svg +title: Monoprice Blackbird Matrix Switch +description: Instructions on how to integrate Monoprice Blackbird 4k 8x8 HDBaseT Matrix Switch into Home Assistant. ha_category: - Media Player ha_release: 0.68 ha_iot_class: Local Polling +ha_domain: blackbird --- The `blackbird` platform allows you to control [Monoprice Blackbird Matrix Switch](https://www.monoprice.com/product?p_id=21819) using a serial connection. @@ -52,7 +52,7 @@ sources: type: string {% endconfiguration %} -### Service `media_player.blackbird_set_all_zones` +### Service `blackbird.set_all_zones` Set all zones to the same input source. This service allows you to immediately synchronize all the TVs in your home. Regardless of `entity_id` provided, all zones will be updated. diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown index 0639b502f630..ddeb12925ff1 100644 --- a/source/_integrations/blink.markdown +++ b/source/_integrations/blink.markdown @@ -1,15 +1,17 @@ --- -title: "Blink" -description: "Instructions for how to integrate Blink camera/security system within Home Assistant." -logo: blink.png +title: Blink +description: Instructions for how to integrate Blink camera/security system within Home Assistant. ha_category: - Hub - Alarm - Binary Sensor - Camera - Sensor -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Cloud Polling +ha_codeowners: + - '@fronzbot' +ha_domain: blink --- The `blink` integration lets you view camera images and motion events from [Blink](https://blinkforhome.com/) camera and security systems. @@ -117,17 +119,17 @@ Force a refresh of the Blink system. Trigger a camera to take a new still image. | Service Data Attribute | Optional | Description | -|------------------------|----------|----------------------------------------| -| `name` | no | Name of camera to take new image with. | +| ---------------------- | -------- | -------------------------------------- | +| `name` | no | Name of camera to take new image with. | ### `blink.save_video` Save the last recorded video of a camera to a local file. Note that in most cases, Home Assistant will need to know that the directory is writable via the `whitelist_external_dirs` in your `configuration.yaml` file (see example below). | Service Data Attribute | Optional | Description | -|------------------------|----------|------------------------------------------| -| `name` | no | Name of camera containing video to save. | -| `filename` | no | Location of save file. | +| ---------------------- | -------- | ---------------------------------------- | +| `name` | no | Name of camera containing video to save. | +| `filename` | no | Location of save file. | ```yaml @@ -167,7 +169,7 @@ sequence: ### Arm Blink When Away -This example automation will arm your blink sync module to detect motion on any of your blink cameras that have motion detection enabled. By default, Blink enables motion detection on all cameras so, unless you've changed anything in your app, you're all set. If you want to manually enable motion detection for individual cameras, you can utilize the [appropriate camera service](/integrations/camera#service-enable_motion_detection) but pelase note that motion will only be captured if the sync module is armed. +This example automation will arm your blink sync module to detect motion on any of your blink cameras that have motion detection enabled. By default, Blink enables motion detection on all cameras so, unless you've changed anything in your app, you're all set. If you want to manually enable motion detection for individual cameras, you can utilize the [appropriate camera service](/integrations/camera#service-enable_motion_detection) but please note that motion will only be captured if the sync module is armed. Here, this example assumes your blink module is named `My Sync Module` and that you have [device trackers](/integrations/device_tracker) set up for presence detection. @@ -176,7 +178,7 @@ Here, this example assumes your blink module is named `My Sync Module` and that alias: Arm Blink When Away trigger: platform: state - entity_id: group.all_devices + entity_id: all to: 'not_home' action: service: alarm_control_panel.alarm_arm_away @@ -192,7 +194,7 @@ Similar to the previous example, this automation will disarm blink when arriving alias: Disarm Blink When Home trigger: platform: state - entity_id: group.all_devices + entity_id: all to: 'home' action: service: alarm_control_panel.alarm_disarm @@ -201,7 +203,7 @@ Similar to the previous example, this automation will disarm blink when arriving ### Save Video Locally When Motion Detected -When motion is detected, you can use the Blink Home-Assistant integration to save the last recorded video locally, rather than relying on Blink's servers to save your data. +When motion is detected, you can use the Blink Home Assistant integration to save the last recorded video locally, rather than relying on Blink's servers to save your data. Again, this example assumes your camera's name (in the blink app) is `My Camera` and your sync module name is `My Sync Module`. The file will be saved to `/tmp/videos/blink_video_{YYYMMDD_HHmmSS}.mp4` where `{YYYYMMDD_HHmmSS}` will be a timestamp create via the use of [templating](/docs/configuration/templating/). diff --git a/source/_integrations/blinksticklight.markdown b/source/_integrations/blinksticklight.markdown index deea66c49eec..99ddc3582174 100644 --- a/source/_integrations/blinksticklight.markdown +++ b/source/_integrations/blinksticklight.markdown @@ -1,14 +1,14 @@ --- -title: "Blinkstick Light" -description: "Instructions on how to setup Blinkstick lights within Home Assistant." +title: BlinkStick +description: Instructions on how to setup Blinkstick lights within Home Assistant. logo: blinkstick.png ha_category: - DIY ha_release: 0.7.5 ha_iot_class: Local Polling +ha_domain: blinksticklight --- - The `blinkstick` platform lets you control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant. ## Setup @@ -42,4 +42,3 @@ name: type: string default: Blinkstick {% endconfiguration %} - diff --git a/source/_integrations/blinkt.markdown b/source/_integrations/blinkt.markdown index 41de596aa48b..d6576e7e1749 100644 --- a/source/_integrations/blinkt.markdown +++ b/source/_integrations/blinkt.markdown @@ -1,11 +1,11 @@ --- -title: "Blinkt! Light" -description: "Instructions on how to setup Blinkt! RGB LED lights within Home Assistant." -logo: raspberry-pi.png +title: Blinkt! +description: Instructions on how to setup Blinkt! RGB LED lights within Home Assistant. ha_category: - DIY ha_iot_class: Local Push ha_release: 0.44 +ha_domain: blinkt --- The `blinkt` light platform lets you control the [Blinkt!](https://shop.pimoroni.com/products/blinkt) board, featuring eight super-bright RGB LEDs. @@ -19,4 +19,3 @@ To enable `blinkt` in your installation, add the following to your `configuratio light: - platform: blinkt ``` - diff --git a/source/_integrations/blockchain.markdown b/source/_integrations/blockchain.markdown index 564747c1d08c..55d3638d342f 100644 --- a/source/_integrations/blockchain.markdown +++ b/source/_integrations/blockchain.markdown @@ -1,15 +1,15 @@ --- -title: "Blockchain.info" -description: "Instructions on how to integrate Blockchain.info data within Home Assistant." +title: Blockchain.com +description: Instructions on how to integrate Blockchain.com data within Home Assistant. logo: blockchain.png ha_category: - Finance ha_release: 0.47 ha_iot_class: Cloud Polling +ha_domain: blockchain --- - -The `Blockchain` sensor platform displays Bitcoin wallet balances from [blockchain.info](https://blockchain.info). +The `Blockchain` sensor platform displays Bitcoin wallet balances from [blockchain.com](https://blockchain.com). To add the Blockchain sensor to your installation, specify a list of bitcoin addresses to watch in the `configuration.yaml` file. The sensor state will be the sum of the balances of all addresses listed. @@ -28,4 +28,3 @@ addresses: required: true type: [string, list] {% endconfiguration %} - diff --git a/source/_integrations/bloomsky.markdown b/source/_integrations/bloomsky.markdown index 9aa5661b1d42..871d50b0ff2a 100644 --- a/source/_integrations/bloomsky.markdown +++ b/source/_integrations/bloomsky.markdown @@ -1,6 +1,6 @@ --- -title: "BloomSky" -description: "Instructions on how to integrate the BloomSky within Home Assistant." +title: BloomSky +description: Instructions on how to integrate the BloomSky within Home Assistant. logo: bloomsky.png ha_category: - Environment @@ -9,6 +9,7 @@ ha_category: - Sensor ha_release: 0.14 ha_iot_class: Cloud Polling +ha_domain: bloomsky --- The `bloomsky` integration allows you to access your [BloomSky](https://www.bloomsky.com/) weather station's. diff --git a/source/_integrations/bluesound.markdown b/source/_integrations/bluesound.markdown index 3deaec8ce099..c992a2736d8a 100644 --- a/source/_integrations/bluesound.markdown +++ b/source/_integrations/bluesound.markdown @@ -1,17 +1,17 @@ --- -title: "Bluesound" -description: "Instructions on how to integrate Bluesound devices into Home Assistant." +title: Bluesound +description: Instructions on how to integrate Bluesound devices into Home Assistant. logo: bluesound.png ha_category: - Media Player ha_release: 0.51 ha_iot_class: Local Polling +ha_domain: bluesound --- The `bluesound` platform allows you to control your [Bluesound](https://www.bluesound.com/) HiFi wireless speakers and audio integrations from Home Assistant. -If you want to automatically discover new devices, just make sure you have discovery: in your configuration.yaml file. To manually add a Bluesound device to your installation, add the following to your configuration.yaml file: - +If you want to automatically discover new devices, just make sure you have discovery: in your `configuration.yaml` file. To manually add a Bluesound device to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml @@ -55,7 +55,7 @@ media_player: - host: 192.168.1.131 ``` -### Service `bluesound_join` +### Service `bluesound.join` Group players together under a single master speaker. That will make a new group or join an existing group. @@ -64,7 +64,7 @@ Group players together under a single master speaker. That will make a new group | `master` | no | A single `entity_id` that will become/hold the master speaker. | `entity_id` | no | String or list of a single `entity_id` that will group to master speaker. -### Service `bluesound_unjoin` +### Service `bluesound.unjoin` Remove one or more speakers from a group of speakers. If no `entity_id` is provided, all speakers are unjoined. @@ -72,7 +72,7 @@ Remove one or more speakers from a group of speakers. If no `entity_id` is provi | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of `entity_id`s that will be separated from their master speaker. -### Service `bluesound_set_sleep_timer` +### Service `bluesound.set_sleep_timer` Sets a timer that will turn off the speaker. For each time you call this it will increase the time by one step. The steps are (in minutes): 15, 30, 45, 60, 90, 0. If you increase an ongoing timer of for example 13 minutes, it will increase it to 15. If the timer is set to 90, it will remove the time (hence the 0). @@ -81,7 +81,7 @@ If you increase an ongoing timer of for example 13 minutes, it will increase it | ---------------------- | -------- | ----------- | | `entity_id` | no | String or list of `entity_id`s that will have their timers set. -### Service `bluesound_clear_sleep_timer` +### Service `bluesound.clear_sleep_timer` Clear the sleep timer on a speaker, if one is set. diff --git a/source/_integrations/bluetooth_le_tracker.markdown b/source/_integrations/bluetooth_le_tracker.markdown index 3154c973979d..32745562156a 100644 --- a/source/_integrations/bluetooth_le_tracker.markdown +++ b/source/_integrations/bluetooth_le_tracker.markdown @@ -1,11 +1,12 @@ --- -title: "Bluetooth LE Tracker" -description: "Instructions for integrating bluetooth low-energy tracking within Home Assistant." +title: Bluetooth LE Tracker +description: Instructions for integrating bluetooth low-energy tracking within Home Assistant. logo: bluetooth.png ha_category: - Presence Detection ha_iot_class: Local Polling ha_release: 0.27 +ha_domain: bluetooth_le_tracker --- This tracker discovers new devices on boot and in regular intervals and tracks Bluetooth low-energy devices periodically based on interval_seconds value. It is not required to pair the devices with each other. @@ -21,7 +22,7 @@ sudo apt install bluetooth Before you get started with this platform, please note that: - This platform is incompatible with Windows - - This platform requires access to the bluetooth stack, see [Rootless Setup section](#rootless-setup) for further information + - This platform requires access to the Bluetooth stack, see [Rootless Setup section](#rootless-setup) for further information To use the Bluetooth tracker in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/bluetooth_tracker.markdown b/source/_integrations/bluetooth_tracker.markdown index a520b9b9d778..6294fa732d5c 100644 --- a/source/_integrations/bluetooth_tracker.markdown +++ b/source/_integrations/bluetooth_tracker.markdown @@ -1,11 +1,12 @@ --- -title: "Bluetooth Tracker" -description: "Instructions for integrating Bluetooth tracking within Home Assistant." +title: Bluetooth Tracker +description: Instructions for integrating Bluetooth tracking within Home Assistant. logo: bluetooth.png ha_category: - Presence Detection ha_iot_class: Local Polling ha_release: 0.18 +ha_domain: bluetooth_tracker --- This tracker discovers new devices on boot and tracks Bluetooth devices periodically based on `interval_seconds` value. It is not required to pair the devices with each other! Devices discovered are stored with 'bt_' as the prefix for device MAC addresses in `known_devices.yaml`. @@ -31,10 +32,10 @@ request_rssi: type: boolean default: false device_id: - description: The ID of the bluetooth adapter to be used by the tracker, e.g., use `0` for `hci0`, `1` for `hci1`, and so on. + description: The ID of the Bluetooth adapter to be used by the tracker, e.g., use `0` for `hci0`, `1` for `hci1`, and so on. required: false type: integer - default: "`-1` (The first available bluetooth adapter)" + default: "`-1` (The first available Bluetooth adapter)" {% endconfiguration %} In some cases it can be that your device is not discovered. In that case let your phone scan for Bluetooth devices while you restart Home Assistant. Just hit `Scan` on your phone all the time until Home Assistant is fully restarted and the device should appear in `known_devices.yaml`. diff --git a/source/_integrations/bme280.markdown b/source/_integrations/bme280.markdown index 341716da1cef..bb4fb69dd6b2 100644 --- a/source/_integrations/bme280.markdown +++ b/source/_integrations/bme280.markdown @@ -1,11 +1,11 @@ --- -title: "BME280 Sensor" -description: "Instructions on how to integrate a BME280 sensor into Home Assistant." -logo: raspberry-pi.png +title: Bosch BME280 Environmental Sensor +description: Instructions on how to integrate a BME280 sensor into Home Assistant. ha_category: - DIY ha_release: 0.48 ha_iot_class: Local Push +ha_domain: bme280 --- The `bme280` sensor platform allows you to read temperature, humidity and pressure values of a [Bosch BME280 Environmental sensor](https://cdn-shop.adafruit.com/datasheets/BST-BME280_DS001-10.pdf) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the operation modes of the sensor described in its datasheet. @@ -149,7 +149,7 @@ $ sudo raspi-config Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. -Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: +Install dependencies for use the `smbus-cffi` module and enable your `homeassistant` user to join the _i2c_ group: ```bash # pi user environment: Install i2c dependencies and utilities diff --git a/source/_integrations/bme680.markdown b/source/_integrations/bme680.markdown index 6ede66e3e8cc..90b9fd3c78f2 100644 --- a/source/_integrations/bme680.markdown +++ b/source/_integrations/bme680.markdown @@ -1,11 +1,11 @@ --- -title: "BME680 Sensor" -description: "Instructions on how to integrate a BME680 sensor into Home Assistant." -logo: raspberry-pi.png +title: Bosch BME680 Environmental Sensor +description: Instructions on how to integrate a BME680 sensor into Home Assistant. ha_category: - DIY ha_release: 0.62 ha_iot_class: Local Push +ha_domain: bme680 --- The `bme680` sensor platform allows you to read temperature, humidity, pressure and gas resistance values of a [Bosch BME680 Environmental sensor](https://cdn-shop.adafruit.com/product-files/3660/BME680.pdf) connected via an [I2C](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the operation modes of the sensor described in its datasheet. In addition, it includes a basic air quality calculation that uses gas resistance and humidity measurements to calculate a percentage based air quality measurement. @@ -180,9 +180,9 @@ group: - sensor.bme680_sensor_air_quality ``` -## Directions for enabling I2C interface on Hass.io +## Directions for enabling I2C interface on the Home Assistant Operating System -Follow the instructions here to [enable I2C on Hass.io.](/hassio/enable_i2c/). +Follow the instructions here to [enable I2C here.](/hassio/enable_i2c/). ## Directions for installing SMBus support on Raspberry Pi @@ -190,22 +190,22 @@ Enable I2C interface with the Raspberry Pi configuration utility: ```bash # pi user environment: Enable I2C interface -$ sudo raspi-config +sudo raspi-config ``` Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. -Install dependencies to use the `smbus-cffi` module and add your _homeassistant_ user to the _i2c_ group: +Install dependencies to use the `smbus-cffi` module and add your `homeassistant` user to the _i2c_ group: ```bash # pi user environment: Install I2C dependencies and utilities -$ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev +sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev # pi user environment: Add homeassistant user to the I2C group -$ sudo addgroup homeassistant i2c +sudo addgroup homeassistant i2c # pi user environment: Reboot Raspberry Pi to apply changes -$ sudo reboot +sudo reboot ``` ### Check the I2C address of the sensor @@ -213,10 +213,11 @@ $ sudo reboot After installing `i2c-tools`, a new utility is available to scan the addresses of the connected sensors: ```bash -$ /usr/sbin/i2cdetect -y 1 +/usr/sbin/i2cdetect -y 1 ``` It will output a table like this: + ```text 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- diff --git a/source/_integrations/bmp280.markdown b/source/_integrations/bmp280.markdown new file mode 100644 index 000000000000..6007b19c613a --- /dev/null +++ b/source/_integrations/bmp280.markdown @@ -0,0 +1,48 @@ +--- +title: Bosch BMP280 Environmental Sensor +description: Instructions on how to integrate a BMP280 sensor into Home Assistant. +ha_release: 0.108 +logo: raspberry-pi.png +ha_category: + - DIY +ha_iot_class: Local Polling +ha_quality_scale: silver +ha_code_owners: + - '@belidzs' +--- + +The `bmp280` sensor platform allows you to read temperature and pressure values of a [Bosch BMP280 Environmental sensor](https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/pressure-sensors-bmp280-1.html) connected via [I2C](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). + +This integration has been tested on a Raspberry Pi 4B, but it should work on any device which is supported by [CircuitPython](https://circuitpython.org/). + +## Configuration + +To use a BMP280 sensor in your installation, you have to enable I2C on your host device then configure the integration using the following example: + +```yaml +sensor: + - platform: bmp280 + - i2c_address: 0x77 +``` + +{% configuration %} +name: + description: The name of the sensor. + required: false + default: BMP280 + type: string +i2c_address: + description: I2C address of the sensor. It is either 0x76 or 0x77, depending on your actual wiring configuration. + required: true + type: integer +{% endconfiguration %} + +## Setting up the I2C interface on the host device + +To get more information on how to set up the I2C interface on your Raspberry Pi, please refer to the [BME680 sensor integration](/integrations/bme680/#directions-for-installing-smbus-support-on-raspberry-pi). + +## Choosing the appropriate I2C address + +Please note that the I2C address of this device depends on the state of the `SDO` pin. If it is pulled down (to the `GND` rail) it will be `0x76`, if it's pulled up (to the `VCC` rail) it will be `0x77`. + +If you leave it floating then the address will be unpredictable or even worse, it can change over time. So it is recommended to hook up this pin to either the positive or the negative rail of your host device. diff --git a/source/_integrations/bmw_connected_drive.markdown b/source/_integrations/bmw_connected_drive.markdown index 68c02352d4f3..c256c7641fa4 100644 --- a/source/_integrations/bmw_connected_drive.markdown +++ b/source/_integrations/bmw_connected_drive.markdown @@ -1,7 +1,6 @@ --- -title: "BMW Connected Drive" -description: "Instructions on how to setup your BMW Connected Drive account with Home Assistant." -logo: bmw.png +title: BMW Connected Drive +description: Instructions on how to setup your BMW Connected Drive account with Home Assistant. ha_category: - Car - Binary Sensor @@ -10,6 +9,9 @@ ha_category: - Sensor ha_release: 0.64 ha_iot_class: Cloud Polling +ha_codeowners: + - '@gerard33' +ha_domain: bmw_connected_drive --- The `bmw_connected_drive` integration lets you retrieve data of your BMW vehicle from the BMW Connected Drive portal. You need to have a working BMW Connected Drive account, and a Connected Drive enabled vehicle for this to work. diff --git a/source/_integrations/bom.markdown b/source/_integrations/bom.markdown index ba8d67100743..12cc48d91dcd 100644 --- a/source/_integrations/bom.markdown +++ b/source/_integrations/bom.markdown @@ -1,6 +1,6 @@ --- -title: "BOM Australia" -description: "Instructions on how to integrate Bureau of Meteorology Australia weather conditions into Home Assistant." +title: Australian Bureau of Meteorology (BOM) +description: Instructions on how to integrate Bureau of Meteorology Australia weather conditions into Home Assistant. logo: bom.png ha_category: - Weather @@ -8,6 +8,9 @@ ha_category: - Camera ha_release: 0.36 ha_iot_class: Cloud Polling +ha_domain: bom +ha_codeowners: + - '@maddenp' --- The `bom` weather platform uses the [Australian Bureau of Meteorology (BOM)](http://www.bom.gov.au) as a source for current (half-hourly) meteorological data. @@ -33,7 +36,7 @@ name: required: false type: string station: - description: "The station ID string. See the [`sensor.bom` docs](#sensor) for details on how to find the ID of a station." + description: "The station ID string. See the [`sensor.bom` documentation](#sensor) for details on how to find the ID of a station." required: false type: string default: The closest station @@ -122,7 +125,7 @@ camera: In the event BOM creates a new radar, or a radar's ID changes, you may define a custom `id` along with corresponding `delta` and `frames` values. You may also specify custom `delta` and `frames` values, along with a valid `location`, to override the default values for an existing radar. You may not define `location` and `id` in the same entity; you must specify one or the other. If `id` is specified, then `delta` and `frames` values _must_ be provided. If `location` is specified, `delta` and `frames` _may_ be provided to override the default values. -To find a live radar ID (e.g. for the `Townsville` radar), visit the [BOM website's radars page](http://www.bom.gov.au/australia/radar/), click the link for the radar you are interested in, and note the URL, for example: `http://www.bom.gov.au/products/IDR733.loop.shtml`. The ID is the number following `IDR` (i.e. `733`) in the URL. You can also see, at the bottom of the radar image, a rotating set of times corresponding to the frames of the BOM's JavaScript-driven animation. The number of minutes (in seconds) between these times corresponds to the camera's `delta` value, and the number of frames corresponds to the `frames` value. At the time of this writing, the `Townsville` radar loop is composed of 4 frames at 10-minute (600 second) intervals. Since these are also the default values, this configuration block +To find a live radar ID (e.g., for the `Townsville` radar), visit the [BOM website's radars page](http://www.bom.gov.au/australia/radar/), click the link for the radar you are interested in, and note the URL, for example: `http://www.bom.gov.au/products/IDR733.loop.shtml`. The ID is the number following `IDR` (i.e., `733`) in the URL. You can also see, at the bottom of the radar image, a rotating set of times corresponding to the frames of the BOM's JavaScript-driven animation. The number of minutes (in seconds) between these times corresponds to the camera's `delta` value, and the number of frames corresponds to the `frames` value. At the time of this writing, the `Townsville` radar loop is composed of 4 frames at 10-minute (600 second) intervals. Since these are also the default values, this configuration block ```yaml camera: diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown index 0708f5314a78..5a5de181d0a4 100644 --- a/source/_integrations/braviatv.markdown +++ b/source/_integrations/braviatv.markdown @@ -1,11 +1,14 @@ --- -title: "Sony Bravia TV" -description: "Instructions on how to integrate a Sony Bravia TV into Home Assistant." +title: Sony Bravia TV +description: Instructions on how to integrate a Sony Bravia TV into Home Assistant. logo: bravia.png ha_category: - Media Player ha_release: 0.23 ha_iot_class: Local Polling +ha_codeowners: + - '@robbiet480' +ha_domain: braviatv --- The `braviatv` platform allows you to control a [Sony Bravia TV](https://www.sony.com/). diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index 6f7a47c04f96..57adc81784d4 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -1,19 +1,180 @@ --- -title: "Broadlink" -description: "Instructions on how to integrate Broadlink within Home Assistant." +title: Broadlink +description: Instructions on how to integrate Broadlink within Home Assistant. logo: broadlink.png ha_category: + - Remote - Switch - Sensor ha_release: 0.35 ha_iot_class: Local Polling +ha_codeowners: + - '@danielhiversen' + - '@felipediel' +ha_domain: broadlink --- There is currently support for the following device types within Home Assistant: +- [Remote](#remote) - [Sensor](#sensor) - [Switch](#switch) +## Remote + +The `broadlink` remote platform allows you to interact with Broadlink remote control devices. + +### Configuration + +To enable it, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +remote: + - platform: broadlink + host: IP_ADDRESS + mac: MAC_ADDRESS +``` + +{% configuration %} +host: + description: The hostname/IP address to connect to. + required: true + type: string +mac: + description: Device MAC address. + required: true + type: string +timeout: + description: Timeout in seconds for the connection to the device. + required: false + default: 5 + type: integer +name: + description: Name of the device. + required: false + default: Broadlink + type: string +{% endconfiguration %} + +### Learn command + +Use the `remote.learn_command` service to learn new commands. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------- | +| `entity_id` | no | ID of the remote. | +| `device` | no | Name of the device to control. | +| `command` | no | Names of the commands to learn. | +| `alternative` | yes | Toggle commands? | +| `timeout` | yes | Timeout in seconds to learn each command. | + +Example 1: Learn a single command + +```yaml +script: + learn_mute_tv: + sequence: + - service: remote.learn_command + data: + entity_id: remote.bedroom + device: television + command: mute +``` + +Example 2: Learn a sequence of commands + +```yaml +script: + learn_tv_commands: + sequence: + - service: remote.learn_command + data: + entity_id: remote.bedroom + device: television + command: + - turn on + - turn off + - volume up + - volume down +``` + +Example 3: Learn a toggle command + +The `alternative` flag is useful for capturing commands where the same button is used for more than one purpose, such as the power button, which can turn the television on and off. + +```yaml +script: + learn_tv_power_button: + sequence: + - service: remote.learn_command + data: + entity_id: remote.bedroom + device: television + command: power + alternative: True +``` + +In the above example, two codes will be captured for the power command, and will be sent alternately each time the command is called. + +#### Learned codes storage location + +The learned commands are stored in folder `\configuration\.storage` in a file called `broadlink_remote_xxxxxxxxxxx_codes.json`. From here, you can copy the codes for use in e.g., a Broadlink switch. Warning: files in the .storage folder should never be edited manually, so just view the file. + +### Send command + +Use the `remote.send_command` service to send commands. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------- | +| `entity_id` | no | ID of the remote. | +| `device` | no | Name of the device to control. | +| `command` | no | Names of the commands to send. | +| `num_repeats` | yes | Number of times to repeat the commands. | +| `delay_secs` | yes | Interval in seconds between one command and another. | + +Example 1: Send a single command + +```yaml +script: + mute_tv: + sequence: + - service: remote.send_command + data: + entity_id: remote.bedroom + device: television + command: mute +``` + +Example 2: Send a command repeatedly + +```yaml +script: + turn_up_tv_volume_20: + sequence: + - service: remote.send_command + data: + entity_id: remote.bedroom + device: television + command: volume up + num_repeats: 20 +``` + +Example 3: Send a sequence of commands + +```yaml +script: + turn_on_ac: + sequence: + - service: remote.send_command + data: + entity_id: remote.bedroom + device: air conditioner + command: + - turn on + - turn off display +``` + ## Sensor The `broadlink` sensor platform let you monitor data from an RM2 and A1 E-air. There is currently no support for the cloud API. @@ -206,11 +367,11 @@ slots: Information about how to install on Windows can be found [here](/integrations/broadlink#sensor#microsoft-windows-installation). -### How to obtain IR/RF packets? +### How to obtain IR/RF packets Choose Call Service from the Developer Tools. Choose the service `broadlink.learn` from the list of **Available services:**, write in "Service Data" JSON with 1 field "host":"your_broadlink_IP" and hit **CALL SERVICE**. Press the button on your remote with in 20 seconds. The packet will be printed as a persistent notification in the States page of the web interface. -Example config for `rm`, `rm2`, `rm_mini`, `rm_pro_phicomm`, `rm2_home_plus`, `rm2_home_plus_gdt`, `rm2_pro_plus`, `rm2_pro_plus2`, `rm2_pro_plus_bl` and `rm_mini_shate` devices: +Example configuration for `rm`, `rm2`, `rm_mini`, `rm_pro_phicomm`, `rm2_home_plus`, `rm2_home_plus_gdt`, `rm2_pro_plus`, `rm2_pro_plus2`, `rm2_pro_plus_bl` and `rm_mini_shate` devices: ```yaml switch: @@ -253,7 +414,7 @@ switch: command_off: 'JgAaABweOR4bHhwdHB4dHRw6HhsdHR0dOTocAA0FAAAAAAAAAAAAAAAAAAA=' ``` -Example config for `sp1`, `sp2`, `honeywell_sp2`, `sp3`, `spmini2` and `spminiplus` devices: +Example configuration for `sp1`, `sp2`, `honeywell_sp2`, `sp3`, `spmini2` and `spminiplus` devices: ```yaml switch: @@ -270,7 +431,7 @@ switch: friendly_name: 'Humidifier' ``` -Example config for `mp1` device: +Example configuration for `mp1` device: ```yaml switch: @@ -292,10 +453,10 @@ switch: You can use the service `broadlink.send` to directly send IR packets without the need to assign a switch entity for each command. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `host` | no | IP address to send command to. -| `packet` | no | String or list of strings that contain the packet data. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------- | +| `host` | no | IP address to send command to. | +| `packet` | no | String or list of strings that contain the packet data. | Example: @@ -335,7 +496,7 @@ First get or learn all the remotes you want to add to Home Assistant in E-Contro 4. Install Requirements - Run `pip install simplejson`. You must install simplejson in the same python version you will use to run the scripts. You can ensure that the current version is installed by attempting to install again and confirming that you see "Requirement already satisfied". + Run `pip install simplejson`. You must install `simplejson` in the same Python version you will use to run the scripts. You can ensure that the current version is installed by attempting to install again and confirming that you see "Requirement already satisfied". 5. Get the data from the device @@ -366,15 +527,15 @@ First get or learn all the remotes you want to add to Home Assistant in E-Contro 2. Install Requirements - Download and install Python 2.7 on your windows PC. - - Run `pip install simplejson`. You must install simplejson in the same python version you will use to run the scripts. You can ensure that the current version is installed by attempting to install again and confirming that you see "Requirement already satisfied". + - Run `pip install simplejson`. You must install `simplejson` in the same Python version you will use to run the scripts. You can ensure that the current version is installed by attempting to install again and confirming that you see "Requirement already satisfied". - Download and install [iBackup Viewer](https://www.imactools.com/iphonebackupviewer/). - - Download [these](https://github.com/NightRang3r/Broadlink-e-control-db-dump) github files. Make sure you place them in the \Python27 path in Windows. Be sure that the getBroadlinkSharedData.py from the download is in this directory. + - Download [these](https://github.com/NightRang3r/Broadlink-e-control-db-dump) GitHub files. Make sure you place them in the \Python27 path in Windows. Be sure that the getBroadlinkSharedData.py from the download is in this directory. -3. Plug your iphone into your windows PC, open iTunes and create a non-encrypted backup of your device. +3. Plug your iPhone into your Windows PC, open iTunes and create a non-encrypted backup of your device. 4. Open iBackup viewer then select the iOS backup that you created. Navigate to the App icon and then scroll until you find e-control.app, select this. Select and extract the files jsonButton, jsonIrCode and jsonSublr; they will be located in the Documents/SharedData section. Put these in the same location as the getBroadlinkSharedData.py. -5. Now open a Command Prompt and navigate to the directory where the aforementioned files are located e.g. C:\Python27. Now run the command python getBroadlinkSharedData.py, you should see something like this: +5. Now open a Command Prompt and navigate to the directory where the aforementioned files are located e.g., `C:\Python27`. Now run the command `python getBroadlinkSharedData.py`, you should see something like this: ```bash C:\Python27>python getBroadlinkSharedData.py @@ -405,7 +566,7 @@ First get or learn all the remotes you want to add to Home Assistant in E-Contro [+] Dumping codes to TV.txt ``` -6. Now there should be a file with the name of the remote you chose in the same directory ending in `.txt`. Open that up and it will contain the Base64 code required for Home Assistant. To ensure these codes work correctly you may need to add `==` to the end of the code in your config.yaml file (or wherever you have your switches). +6. Now there should be a file with the name of the remote you chose in the same directory ending in `.txt`. Open that up and it will contain the Base64 code required for Home Assistant. To ensure these codes work correctly you may need to add `==` to the end of the code in your `configuration.yaml` file (or wherever you have your switches). ### Using Windows to obtain codes with Broadlink Manager @@ -414,12 +575,12 @@ First get or learn all the remotes you want to add to Home Assistant in E-Contro 3. Hit "Learn New Command" and follow instructions on screen. 4. The "OnRawData Base64" is the value to be used with Home Assistant. - ### Using Node-RED to obtain codes 1. Install the Broadlink Control palette in Node-RED (click the Hamburger menu at top right corner> Settings> Palette> Install and type Broadlink. Click install on the node-red-contrib-broadlink-control. 2. Once installed, verify that the new palette titled broadlink is available in the nodes menu. 3. Drag the RM node to an empty flow and double click to configure the node. + ```bash a. give your RM device a name for easy identification b. click on the pencil to edit the device information @@ -427,29 +588,36 @@ First get or learn all the remotes you want to add to Home Assistant in E-Contro d. enter the IP address of the Broadlink RM PRO or RM mini e. leave the Catalog field empty. ``` + 4. Click Update, and the device field should show the MAC address of the newly added device. If not, just select it. 5. In the Action field, select Learn, then click Done. 6. Drag an Inject node to the left of the RM node and link them. The type of inject doesn't matter. Leave it to the defaults. 7. Drag a Template node on the Flow to the right of the RM node and link it to the RM node. 8. Double click the Template node to edit it, select: + ```bash Property: msg.payload Format: Mustache template Template field: enter '{% raw %}{{payload.data}}{% endraw %}'. Output as: Plain text ``` + 9. Drag a Debug node to the right of the Template node and link them. 10. Show the debug messages, deploy the flow and click on the inject button. 11. A message will show in the debug window: + ```bash 3/23/2019, 9:56:53 AMnode: RM_Mini1 msg : string[47] "Please tap the remote button within 30 seconds." ``` + 12. Point the IR remote control at the RM device and click the desired button for about 2 seconds. An array of numbers will show in the debug window. For example: + ```bash '38,0,132,3,19,18,19,18,19,18,19,17,20,54,20,54,20,54,19,18,19,18,19,18,19,17,20,17,20,17,20,54,20,17,19,18,19,18,19,18,19,17,20,17,20,54,20,17,20,54,19,55,19,54,20,54,20,54,19,55,19,0,6,6,150,146,20,54,20,54,20,54,19,18,19,18,19,18,19,17,20,17,20,54,20,54,19,55,19,18,19,17,20,17,20,17,20,17,20,17,20,54,19,18,19,18,19,18,19,17,20,17,20,17,20,54,19,18,19,55,19,54,20,54,20,54,20,54,19,55,19,0,6,6,150,146,20,54,20,54,19,55,19,18,19,17,20,17,20,17,20,17,20,54,19,55,19,54,20,17,20,17,20,17,20,17,20,17,19,18,19,55,19,17,20,17,20,17,20,17,20,17,19,18,19,55,19,18,19,54,20,54,20,54,19,55,19,54,20,54,20,0,6,5,150,146,20,54,20,54,20,54,19,18,19,18,19,18,19,17,20,17,20,54,20,54,19,55,19,18,19,17,20,17,20,17,20,17,20,17,20,54,19,18,19,18,19,18,19,17,20,17,20,17,20,54,19,18,19,55,19,54,20,54,20,54,19,55,19,54,20,0,6,6,149,147,20,54,19,55,19,54,20,17,20,17,20,17,20,17,20,17,19,55,19,54,20,54,20,17,20,17,20,17,19,18,19,18,19,18,19,54,20,17,20,17,20,17,20,17,19,18,19,18,19,54,20,17,20,54,20,54,20,54,19,...' ``` + This is the code we need to transmit again to replicate the same remote function. ### Using Node red to Transmit Codes @@ -458,6 +626,7 @@ This is the code we need to transmit again to replicate the same remote function 2. In the Action field, select - Set from msg.payload -. 3. Drag an Inject node and give it a meaningful name relevant to the remote control button function, like "TV On" or "TV Source". 4. Drag a template node and double click it to configure: + ```bash Property: msg.payload Format: Mustache template @@ -468,13 +637,16 @@ This is the code we need to transmit again to replicate the same remote function }' In the Output as field, "select Parsed JSON". ``` + 5. Click Done. 6. Drag a debug node and connect it to the output of the RM node. 7. Connect the Inject node to the Template node, and the template node to the RM node. 8. Click Deploy to activate the flow, and then click the inject button. The debug window should show a debug message. For example: + ```bash {"action":"send","data": [38,0,152,0,0,1,39,148,19,18,18,19,18,55,19,18,18,19,18,19,18,19,18,55,18,56,18,19,18,55,18,19,18,56,18,18,19,55,18,19,18,19,18,18,18,56,18,19,18,18,19,55,18,56,18,18,19,18,18,19,18,19,18,55,19,18,18,19,18,19,18,19,18,18,18,19,18,19,18,55,19,55,18,19,18,19,18,18,19,18,18,56,18,19,18,18,19,55,18,56,18,18,19,18,18,19,18,19,18,19,18,18,19,18,18,56,18,55,18,19,18,19,18,19,18,18,19,55,18,19,18,55,19,18,18,56,18,19,18,18,19,18,18,19,18,19,18,19,18,18,18,56,18,0,13,5],"status":"OK"} ``` + The "status" : "OK" at the end is a feedback that the Broadlink RM device is connected and has transmitted the payload. Now you can add as many template nodes, each having a specific code, and add any type of input nodes to activate the template and transmit the code. @@ -482,6 +654,32 @@ Now you can add as many template nodes, each having a specific code, and add any ### Using broadlink_cli to obtain codes It is also possible to obtain codes using `broadlink_cli` from [python-broadlink](https://github.com/mjg59/python-broadlink) project. +First use discovery to find your Broadlink device: + +```bash +$ ./broadlink_discovery +Discovering... +########################################### +RM2 +# broadlink_cli --type 0x2737 --host 192.168.1.137 --mac 36668342f7c8 +Device file data (to be used with --device @filename in broadlink_cli) : +0x2737 192.168.1.137 36668342nnnn +temperature = 0.0 +``` + +Then use this info in a cli-command: + +```bash +./broadlink_cli --learn --device "0x2737 192.168.1.137 36668342nnnn" +Learning... +``` + +Press a button on the remote and you get a code: + +```txt +260058000001219512131114113910141114111411141114103911391114103911391139103911391039113911141039111411391015103911141114113910141139111410391114110005250001274b11000c520001274b11000d05 +Base64: b'JgBYAAABIZUSExEUETkQFBEUERQRFBEUEDkROREUEDkRORE5EDkRORA5ETkRFBA5ERQRORAVEDkRFBEUETkQFBE5ERQQOREUEQAFJQABJ0sRAAxSAAEnSxEADQU=' +``` ### Conversion of codes from other projects @@ -489,7 +687,7 @@ For old/awkward devices another possibility is to try to get codes by using data Assuming that your (or similar) device is in one of these databases: -- https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/ -- https://github.com/probonopd/irdb/tree/master/ +- +- You can grab `irdb2broadlinkha.sh` from [irdb2broadlinkha](https://github.com/molexx/irdb2broadlinkha) project and try to convert codes to format suitable for Home Assistant. diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown new file mode 100644 index 000000000000..7c3e62c8345f --- /dev/null +++ b/source/_integrations/brother.markdown @@ -0,0 +1,29 @@ +--- +title: Brother Printer +description: Instructions on how to integrate a Brother printer into Home Assistant. +logo: brother.png +ha_category: + - System Monitor +ha_release: 0.104 +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@bieniu' +ha_domain: brother +ha_quality_scale: platinum +--- + +The `Brother Printer` integration allows you to read current data from your local Brother printer. + +It usually provides information about the device's state, the left amount of ink or toner and the remaining life of the drum or other parts of the printer. +The integration monitors every supported part. + +## Configuration + +To add `Brother Printer` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Brother Printer**. + +
    + +Some very old Brother printers use different data format and these models are not supported. The integration will show information about that during configuration. + +
    diff --git a/source/_integrations/brottsplatskartan.markdown b/source/_integrations/brottsplatskartan.markdown index d696ff0a7b51..9289db32d46a 100644 --- a/source/_integrations/brottsplatskartan.markdown +++ b/source/_integrations/brottsplatskartan.markdown @@ -1,11 +1,12 @@ --- -title: "Brottsplatskartan" -description: "Instructions on how to integrate brottsplatskartan.se into Home Assistant." +title: Brottsplatskartan +description: Instructions on how to integrate brottsplatskartan.se into Home Assistant. ha_category: - Social logo: brottsplatskartan.png ha_release: 0.85 ha_iot_class: Cloud Polling +ha_domain: brottsplatskartan --- The `brottsplatskartan` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Brottsplatskartan](https://brottsplatskartan.se). The sensor only counts incidents from the current day. diff --git a/source/_integrations/browser.markdown b/source/_integrations/browser.markdown index ba23cbeba4f5..9c95044764fe 100644 --- a/source/_integrations/browser.markdown +++ b/source/_integrations/browser.markdown @@ -1,11 +1,11 @@ --- -title: "Browser" -description: "Instructions on how to setup the browser integration with Home Assistant." -logo: home-assistant.png +title: Browser +description: Instructions on how to setup the browser integration with Home Assistant. ha_category: - Utility -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal +ha_domain: browser --- The `browser` integration provides a service to open URLs in the default browser on the host machine. diff --git a/source/_integrations/brunt.markdown b/source/_integrations/brunt.markdown index 73efc8bfed0d..513dbea37ac8 100644 --- a/source/_integrations/brunt.markdown +++ b/source/_integrations/brunt.markdown @@ -1,11 +1,13 @@ --- -title: Brunt Cover -description: "Instructions on how to set up Brunt Blind Engine within Home Assistant." -logo: brunt.png +title: Brunt Blind Engine +description: Instructions on how to set up Brunt Blind Engine within Home Assistant. ha_category: - Cover ha_release: 0.75 ha_iot_class: Cloud Polling +ha_codeowners: + - '@eavanvalkenburg' +ha_domain: brunt --- The `brunt` platform allows one to control Blind Engines by [Brunt](https://www.brunt.co). To use this sensor, you need a Brunt App Account. All Brunt Blind devices registered to your account are automatically added to your Home Assistant with the names given them through the Brunt app. diff --git a/source/_integrations/bt_home_hub_5.markdown b/source/_integrations/bt_home_hub_5.markdown index ae1b4f37f47d..1fd7c477691b 100644 --- a/source/_integrations/bt_home_hub_5.markdown +++ b/source/_integrations/bt_home_hub_5.markdown @@ -1,10 +1,11 @@ --- -title: "BT Home Hub 5" -description: "Instructions on how to integrate BT Home Hub 5 router into Home Assistant." +title: BT Home Hub 5 +description: Instructions on how to integrate BT Home Hub 5 router into Home Assistant. logo: bt.png ha_category: - Presence Detection ha_release: 0.22 +ha_domain: bt_home_hub_5 --- This platform offers presence detection by looking at connected devices to a [BT Home Hub 5](https://en.wikipedia.org/wiki/BT_Home_Hub) based router. diff --git a/source/_integrations/bt_smarthub.markdown b/source/_integrations/bt_smarthub.markdown index cbe52ccd66e6..8290c088476d 100644 --- a/source/_integrations/bt_smarthub.markdown +++ b/source/_integrations/bt_smarthub.markdown @@ -1,11 +1,14 @@ --- -title: "BT Smart Hub" -description: "Instructions on how to integrate BT Smart Hub router into Home Assistant." +title: BT Smart Hub +description: Instructions on how to integrate BT Smart Hub router into Home Assistant. logo: bt.png ha_category: - Presence Detection ha_release: 0.82 ha_iot_class: Local Polling +ha_codeowners: + - '@jxwolstenholme' +ha_domain: bt_smarthub --- This platform offers presence detection by looking at connected devices to a [BT Smart Hub](https://en.wikipedia.org/wiki/BT_Smart_Hub) based router. diff --git a/source/_integrations/buienradar.markdown b/source/_integrations/buienradar.markdown index 35ce1f630e84..d141dade0c63 100644 --- a/source/_integrations/buienradar.markdown +++ b/source/_integrations/buienradar.markdown @@ -1,12 +1,16 @@ --- -title: "Buienradar" -description: "Instructions on how to integrate buienradar.nl weather within Home Assistant." +title: Buienradar +description: Instructions on how to integrate buienradar.nl weather within Home Assistant. logo: buienradar.png ha_category: - Camera - Weather ha_release: 0.47 ha_iot_class: Cloud Polling +ha_codeowners: + - '@mjj4791' + - '@ties' +ha_domain: buienradar --- The `buienradar` platform uses [buienradar.nl](https://buienradar.nl/) as a source for current meteorological data for your location. The weather forecast is delivered by Buienradar, who provides a web service that provides detailed weather information for users in The Netherlands. @@ -103,6 +107,12 @@ delta: required: false default: 600 type: integer +country_code: + description: You can (optionally) specify the country code (NL or BE) of the + country to display on the camera. + required: false + default: NL + type: string {% endconfiguration %} ### The `name` Variable diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown index 7222b17f02a2..e15962d2029e 100644 --- a/source/_integrations/caldav.markdown +++ b/source/_integrations/caldav.markdown @@ -1,28 +1,20 @@ --- -title: "CalDav" -description: "Instructions on how to integrate a WebDav calendar into Home Assistant." +title: CalDAV +description: Instructions on how to integrate a WebDav calendar into Home Assistant. ha_category: - Calendar ha_iot_class: Cloud Polling -ha_release: "0.60" +ha_release: '0.60' +ha_domain: caldav --- -The `caldav` platform allows you to connect to your WebDav calendar and generate -binary sensors. A different sensor will be created for each individual calendar, -or you can specify custom calendars which match a criteria you define (more on -that below). These sensors will be `on` if you have an on going event in that -calendar or `off` if the event is later in time, or if there is no event at all. -The WebDav calendar get updated roughly every 15 minutes. +The `caldav` platform allows you to connect to your WebDAV calendar and generate binary sensors. A different sensor will be created for each individual calendar, or you can specify custom calendars which match a criteria you define (more on that below). These sensors will be `on` if you have an on going event in that calendar or `off` if the event is later in time, or if there is no event at all. The WebDAV calendar get updated roughly every 15 minutes. ### Prerequisites -You need to have a CalDav server and credentials for it. This integration was -tested against [Baikal](http://sabre.io/baikal/) but any integration complying -with the RFC4791 should work. [Nextcloud](https://nextcloud.com/) -and [Owncloud](https://owncloud.org/) work fine. +You need to have a CalDAV server and credentials for it. This integration was tested against [Baikal](http://sabre.io/baikal/) but any integration complying with the RFC4791 should work. [Nextcloud](https://nextcloud.com/) and [Owncloud](https://owncloud.org/) work fine. -You might need some additional system packages to compile the -Python caldav library. On a Debian based system, install them by: +You might need some additional system packages to compile the Python CalDAV library. On a Debian based system, install them by: ```bash $ sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev @@ -30,8 +22,7 @@ $ sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev ### Basic Setup -To integrate a WebDav calendar in Home Assistant, -add the following section to your `configuration.yaml` file: +To integrate a WebDAV calendar in Home Assistant, add the following section to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry for baikal @@ -51,16 +42,11 @@ calendar: url: https://nextcloud.example.com/remote.php/dav ``` -This example will generate default binary sensors for each calendar you have in -your account. Those calendars will be `on` when there is an ongoing event and -`off` if not. Events that last a whole day are ignored in those calendars. -You have to setup custom calendars in order to take them into account or for -advanced event filtering. +This example will generate default binary sensors for each calendar you have in your account. Those calendars will be `on` when there is an ongoing event and `off` if not. Events that last a whole day are ignored in those calendars. You have to setup custom calendars in order to take them into account or for advanced event filtering. ### Custom calendars -You have the possibility to create multiple binary -sensors for events that match certain conditions. +You have the possibility to create multiple binary sensors for events that match certain conditions. ```yaml # Example configuration.yaml entry @@ -78,13 +64,9 @@ calendar: search: 'Warmup' ``` -This will create two binary sensors for the calendar name Agenda: "HomeOffice" -and "WarmupFlat". Those sensors will be `on` if there is an ongoing event -matching the regular expression specified in `search`. -In custom calendars, events that last a whole day are taken into account. +This will create two binary sensors for the calendar name Agenda: "HomeOffice" and "WarmupFlat". Those sensors will be `on` if there is an ongoing event matching the regular expression specified in `search`. In custom calendars, events that last a whole day are taken into account. -Please note that when you configure custom calendars, -the default ones are not created anymore. +Please note that if you use the `custom_calendars` option, only those calendars will be loaded. You cannot use `calendars` and `custom_calendars` in the same configuration. {% configuration %} url: @@ -101,13 +83,11 @@ password: type: string calendars: required: false - description: > - List of the calendars to filter. - Empty or absent means no filtering, i.e. all calendars will be added. + description: List of the calendars to filter. Empty or absent means no filtering, i.e., all calendars will be added. It cannot be used if `custom_calender` option is used. type: list custom_calendars: required: false - description: Details on any custom binary sensor calendars you want to create. + description: Details on any custom binary sensor calendars you want to create. Using this will only load the custom calendars supplied. No other calendars will load. type: list keys: name: @@ -120,9 +100,7 @@ custom_calendars: type: string search: required: true - description: > - Regular expression for filtering the events based on - the content of their summary, description or location. + description: Regular expression for filtering the events based on the content of their summary, description or location. type: string {% endconfiguration %} @@ -139,6 +117,7 @@ custom_calendars: ### Examples All events of the calendars "private" and "holidays". Note that all day events are not included. + ```yaml # Example configuration.yaml entry for nextcloud calendar: @@ -151,12 +130,9 @@ calendar: - holidays ``` -Full example with automation to wake up to music if not holiday. -Prerequisite: you have a calendar named "work" where -you create calendar entries containing "Holiday". +Full example with automation to wake up to music if not holiday. Prerequisite: you have a calendar named "work" where you create calendar entries containing "Holiday". -Custom calendar names are built from the -main calendar + name of the custom calendar. +Custom calendar names are built from the main calendar + name of the custom calendar. Using the option of `'.*'` will load all calendar events. ```yaml # configuration.yaml @@ -169,6 +145,9 @@ calendar: - name: holiday calendar: work search: 'Holiday' + - name: vacation + calendar: vacation + search: '.*' # automations.yaml - id: wakeup diff --git a/source/_integrations/calendar.google.markdown b/source/_integrations/calendar.google.markdown index 1dfa11481fed..ffc93a0f3eba 100644 --- a/source/_integrations/calendar.google.markdown +++ b/source/_integrations/calendar.google.markdown @@ -1,18 +1,18 @@ --- title: "Google Calendar Event" description: "Instructions on how to use Google Calendars in Home Assistant." -logo: google_calendar.png ha_category: - Calendar ha_iot_class: Cloud Polling ha_release: 0.33 +ha_domain: google --- The `google` calendar platform allows you to connect to your [Google Calendars](https://calendar.google.com) and generate binary sensors. The sensors created can trigger based on any event on the calendar or only for matching events. When you first setup this integration it will generate a new -configuration file `google_calendars.yaml` that will contain information about +configuration file `google_calendars.yaml` in your configuration directory that will contain information about all of the calendars you can see. It also exposes a service to add an event to one of your Google Calendars. @@ -23,15 +23,15 @@ Generate a Client ID and Client Secret on 1. Follow the wizard using the following information. 1. When it gets to the point of asking _Which API are you using?_ just click cancel. -1. Under APIs & Services (left sidebar) > Credentials, click on the tab 'OAuth consent screen'. +1. Under APIs & Services (left sidebar) > Credentials, click on the menu item, 'OAuth consent screen'. 1. Set the 'Application Name' (the name of the application asking for consent) to anything you want. We suggest "Home-Assistant". -1. Save this page. You don't have to fill out anything else there. -1. Under APIs & Services > Credentials, click 'Create credentials' > OAuth client ID. -1. Set the Application type to 'Other' and give this credential set a name then click 'Create'. -1. Copy the client ID and secret to a text editor temporarily as you will need to put these in your `configuration.yaml` file. -1. Under APIs and Services > Library, search for "Google Calendar API" and enable it if it isn't already enabled automatically through this process. +1. Save this page. You don't have to fill out anything else here. +1. Click on the menu item, Credentials, then click 'Create credentials' > OAuth client ID. +1. Set the Application type to 'Other' (if not present, choose 'TV and Limited Input') and give this credential set a name (like "Home Assistant Credentials") then click 'Create'. +1. Copy the client ID and client secret from the page that follows into a text editor temporarily as you will need to put these in your `configuration.yaml` file. +1. Click on the menu item, Library, then search for "Google Calendar API" and enable it (if it isn't already enabled automatically through this process). -If you will be adding more scopes than just the "Google Calendar API" to the OAuth for this application, you will need to delete your token file. You will lose your refresh token due to the re-authenticating to add more API access. It's recommended to use different authorizations for different pieces of Google. +If you will later be adding more scopes than just the "Google Calendar API" to the OAuth for this application, you will need to delete your token file under your Home Assistant Profile. You will lose your refresh token due to the re-authenticating to add more API access. It's recommended to use different authorizations for different pieces of Google. ## Configuration @@ -47,11 +47,11 @@ google: {% configuration %} client_id: - description: Use the value you generated in the Prerequisites stage. + description: Use the client ID you generated in the Prerequisites stage. required: true type: string client_secret: - description: Use the value you generated in the Prerequisites stage. + description: Use the client secret you generated in the Prerequisites stage. required: true type: string track_new_calendar: @@ -63,13 +63,8 @@ track_new_calendar: default: true {% endconfiguration %} -The next steps will require you to have Home Assistant running. - -After you have it running complete the Google authentication that pops up in notification (the little bell icon in the lower left corner). - -It will give you a URL and a code to enter. This will grant your Home Assistant -service access to all the Google Calendars that the account you -authenticate with can read. This is a Read-Only view of these calendars. +The next time you run or restart Home Assistant, you should find a new notification (the little bell icon in the lower left corner). Click on that notification it will give you a link and an authentication code. Click on that link to open a Google website where you should enter the code found in the notification. This will grant your Home Assistant service read-only access to all the Google Calendars that the account you +authenticate with can read. ## Calendar Configuration diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown index b26bd510275f..3af6368dcd9f 100644 --- a/source/_integrations/calendar.markdown +++ b/source/_integrations/calendar.markdown @@ -1,7 +1,8 @@ --- -title: "Calendar" -description: "Instructions on how to integrate calendars within Home Assistant." +title: Calendar +description: Instructions on how to integrate calendars within Home Assistant. ha_release: 0.33 +ha_domain: calendar --- The calendar integration allows you to integrate your calendars into Home Assistant. diff --git a/source/_integrations/camera.ffmpeg.markdown b/source/_integrations/camera.ffmpeg.markdown index b8f497cc3b2d..603ee64b893b 100644 --- a/source/_integrations/camera.ffmpeg.markdown +++ b/source/_integrations/camera.ffmpeg.markdown @@ -1,18 +1,18 @@ --- title: "FFmpeg Camera" description: "Instructions on how to integrate a video feed via FFmpeg as a camera within Home Assistant." -logo: ffmpeg.png ha_category: - Camera ha_release: 0.26 ha_iot_class: Local Polling +ha_domain: ffmpeg --- The `ffmpeg` platform allows you to use any video feed as a camera in Home Assistant via [FFmpeg](https://www.ffmpeg.org/). This video source must support multiple simultaneous reads, because for every concurrent Home Assistant user, a connection will be made to the source every 10 seconds. Normally this should not be a problem. ## Configuration -To enable your FFmpeg feed in your installation you must first configure the [ffmpeg integration](/integrations/ffmpeg/), then add the following to your `configuration.yaml` file: +To enable your FFmpeg feed in your installation you must first configure the [FFmpeg integration](/integrations/ffmpeg/), then add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/camera.markdown b/source/_integrations/camera.markdown index 04848b97c3c1..2a6ea0b9884f 100644 --- a/source/_integrations/camera.markdown +++ b/source/_integrations/camera.markdown @@ -1,11 +1,11 @@ --- -title: "Camera" -description: "Instructions on how to integrate cameras within Home Assistant." -logo: home-assistant.png +title: Camera +description: Instructions on how to integrate cameras within Home Assistant. ha_category: - Camera -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_domain: camera --- The camera integration allows you to use IP cameras with Home Assistant. diff --git a/source/_integrations/camera.mqtt.markdown b/source/_integrations/camera.mqtt.markdown index 76d520293499..ef8082632dd4 100644 --- a/source/_integrations/camera.mqtt.markdown +++ b/source/_integrations/camera.mqtt.markdown @@ -1,11 +1,11 @@ --- title: "MQTT Camera" description: "Instructions on how to use an MQTT image message as a Camera within Home Assistant." -logo: mqtt.png ha_category: - Camera ha_release: 0.43 ha_iot_class: Configurable +ha_domain: mqtt --- The `mqtt` camera platform allows you to integrate the content of an image file sent through MQTT into Home Assistant as a camera. Every time a message under the `topic` in the configuration is received, the image displayed in Home Assistant will also be updated. @@ -24,16 +24,8 @@ camera: ``` {% configuration %} -topic: - description: The MQTT topic to subscribe to. - required: true - type: string -name: - description: The name of the camera. - required: false - type: string -unique_id: - description: An ID that uniquely identifies this camera. If two cameras have the same unique ID Home Assistant will raise an exception. +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false type: string device: @@ -41,14 +33,14 @@ device: required: false type: map keys: - identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' - required: false - type: [list, string] connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' required: false type: list + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: [list, string] manufacturer: description: The manufacturer of the device. required: false @@ -65,4 +57,24 @@ device: description: The firmware version of the device. required: false type: string +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`." + required: false + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Implies `force_update` of the current sensor state when a message is received on this topic. + required: false + type: string +name: + description: The name of the camera. + required: false + type: string +topic: + description: The MQTT topic to subscribe to. + required: true + type: string +unique_id: + description: An ID that uniquely identifies this camera. If two cameras have the same unique ID Home Assistant will raise an exception. + required: false + type: string {% endconfiguration %} diff --git a/source/_integrations/canary.markdown b/source/_integrations/canary.markdown index eec47dd37030..1559c522efbd 100644 --- a/source/_integrations/canary.markdown +++ b/source/_integrations/canary.markdown @@ -1,13 +1,14 @@ --- -title: "Canary" -description: "Instructions on how to integrate your Canary devices into Home Assistant." +title: Canary +description: Instructions on how to integrate your Canary devices into Home Assistant. logo: canary.png ha_category: - Alarm - Camera - Sensor -ha_release: "0.60" +ha_release: '0.60' ha_iot_class: Cloud Polling +ha_domain: canary --- The `canary` integration allows you to integrate your [Canary](https://canary.is) devices in Home Assistant. diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown index eff0317b1ac3..8a326f576acb 100644 --- a/source/_integrations/cast.markdown +++ b/source/_integrations/cast.markdown @@ -1,19 +1,20 @@ --- -title: "Google Cast" -description: "Instructions on how to integrate Google Cast into Home Assistant." -logo: google_cast.png +title: Google Cast +description: Instructions on how to integrate Google Cast into Home Assistant. ha_category: - Media Player featured: true ha_release: pre 0.7 ha_iot_class: Local Polling +ha_config_flow: true +ha_domain: cast --- -You can enable the Cast integration by going to the Integrations page inside the config panel. +You can enable the Cast integration by going to the Integrations page inside the configuration panel. ## Home Assistant Cast -Home Assistant has its own Cast application to show the Home Assistant UI on any Chromecast device. You can use it by adding the [Cast entity row](/lovelace/entities/#cast) to your Lovelace UI, or by calling the `cast.show_lovelace_view` service. The service takes the path of a Lovelace view and an entity ID of a Cast device to show the view on. +Home Assistant has its own Cast application to show the Home Assistant UI on any Chromecast device. You can use it by adding the [Cast entity row](/lovelace/entities/#cast) to your Lovelace UI, or by calling the `cast.show_lovelace_view` service. The service takes the path of a Lovelace view and an entity ID of a Cast device to show the view on. A `path` has to be defined in your Lovelace YAML for each view, as outlined in the [views documentation](/lovelace/views/#path). ```json { diff --git a/source/_integrations/cert_expiry.markdown b/source/_integrations/cert_expiry.markdown index 2d3d82f851b9..3f378dcf03dc 100644 --- a/source/_integrations/cert_expiry.markdown +++ b/source/_integrations/cert_expiry.markdown @@ -1,11 +1,15 @@ --- -title: "Certificate Expiry" -description: "Instructions on how to set up HTTPS (SSL) certificate expiry sensors within Home Assistant." -logo: home-assistant.png +title: Certificate Expiry +description: Instructions on how to set up HTTPS (SSL) certificate expiry sensors within Home Assistant. ha_category: - Network ha_release: 0.44 ha_iot_class: Configurable +ha_config_flow: true +ha_codeowners: + - '@Cereal2nd' + - '@jjlawren' +ha_domain: cert_expiry --- The `cert_expiry` sensor fetches information from a configured URL and displays the certificate expiry in days. @@ -14,8 +18,8 @@ The `cert_expiry` sensor fetches information from a configured URL and displays There are 2 options in configuring the `cert_expiry` sensor: -- Via the Home Assistant user interface where it will let you enter a name, host and port for the certificate to check. -- Via the Home Assistant configuration.yaml file. +- Via the Home Assistant user interface where it will let you enter a host and port for the certificate to check. +- Via the Home Assistant `configuration.yaml` file. ```yaml @@ -35,13 +39,13 @@ port: required: false default: 443 type: integer -name: - description: The friendly name for the certificate. - required: false - default: SSL Certificate Expiry - type: string {% endconfiguration %} -
    -Make sure that the URL exactly matches your endpoint or resource. -
    +## Attributes + +The Certificate Expiry entities provide extra attributes to represent the state of the certificate. + +| Name | Description | +| ---- | ----------- | +| `is_valid` | If the certificate is able to be validated: `True` / `False`. +| `error` | A human-readable error description if the certificate is considered invalid, "None" otherwise. diff --git a/source/_integrations/channels.markdown b/source/_integrations/channels.markdown index 449471874e4a..0ffdaf671d42 100644 --- a/source/_integrations/channels.markdown +++ b/source/_integrations/channels.markdown @@ -1,14 +1,14 @@ --- -title: "Channels" -description: "Instructions on how to integrate Channels into Home Assistant." +title: Channels +description: Instructions on how to integrate Channels into Home Assistant. logo: channels.png ha_category: - Media Player ha_release: 0.65 ha_iot_class: Local Polling +ha_domain: channels --- - The Channels platform allows you to control [Channels](https://getchannels.com/) from Home Assistant. Play, pause, seek, or skip commercials on an instance of Channels that is running on your network. Your favorite channels will appear as sources in the Source List in Home Assistant. @@ -40,7 +40,7 @@ name: type: string {% endconfiguration %} -### Service `channels_seek_forward` +### Service `seek_forward` Seek forward by the number of seconds currently set in settings on the instance of Channels. @@ -49,7 +49,7 @@ Seek forward by the number of seconds currently set in settings on the instance | `entity_id` | no | String that points at `entity_id` of Channels app. -### Service `channels_seek_backward` +### Service `seek_backward` Seek backward by the number of seconds currently set in settings on the instance of Channels. @@ -57,7 +57,7 @@ Seek backward by the number of seconds currently set in settings on the instance | ---------------------- | -------- | ----------- | | `entity_id` | no | String that points at `entity_id` of Channels app. -### Service `channels_seek_by` +### Service `seek_by` Seek forward or backward by a provided number of seconds. diff --git a/source/_integrations/cisco_ios.markdown b/source/_integrations/cisco_ios.markdown index 4b6fad849353..8e5f8d802590 100644 --- a/source/_integrations/cisco_ios.markdown +++ b/source/_integrations/cisco_ios.markdown @@ -1,13 +1,16 @@ --- -title: "Cisco IOS" -description: "Instructions on how to integrate Cisco IOS routers into Home Assistant." +title: Cisco IOS +description: Instructions on how to integrate Cisco IOS routers into Home Assistant. logo: cisco.png ha_category: - Presence Detection ha_release: 0.33 +ha_codeowners: + - '@fbradyirl' +ha_domain: cisco_ios --- -This is a presence detection scanner for [Cisco](https://www.cisco.com/) IOS devices. +This is a presence detection scanner for [Cisco IOS](https://www.cisco.com/) devices.
    This device tracker needs SSH to be enabled on the router. diff --git a/source/_integrations/cisco_mobility_express.markdown b/source/_integrations/cisco_mobility_express.markdown index b76ae10d9497..13047b645a56 100644 --- a/source/_integrations/cisco_mobility_express.markdown +++ b/source/_integrations/cisco_mobility_express.markdown @@ -1,10 +1,13 @@ --- -title: "Cisco Mobility Express" -description: "Instructions on how to integrate Cisco Mobility Express wireless controllers into Home Assistant." +title: Cisco Mobility Express +description: Instructions on how to integrate Cisco Mobility Express wireless controllers into Home Assistant. logo: cisco.png ha_category: - Presence Detection -ha_release: "0.90" +ha_release: '0.90' +ha_codeowners: + - '@fbradyirl' +ha_domain: cisco_mobility_express --- This is a presence detection scanner for [Cisco](https://www.cisco.com) Mobility Express wireless controllers. diff --git a/source/_integrations/cisco_webex_teams.markdown b/source/_integrations/cisco_webex_teams.markdown index 82a84047ddc8..6d137842a8d6 100644 --- a/source/_integrations/cisco_webex_teams.markdown +++ b/source/_integrations/cisco_webex_teams.markdown @@ -1,10 +1,12 @@ --- -title: "Cisco Webex Teams" -description: "Instructions on how to add Cisco Webex Teams notifications to Home Assistant." -logo: cisco_webex_teams.png +title: Cisco Webex Teams +description: Instructions on how to add Cisco Webex Teams notifications to Home Assistant. ha_category: - Notifications -ha_release: "0.40" +ha_release: '0.40' +ha_codeowners: + - '@fbradyirl' +ha_domain: cisco_webex_teams --- The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex Teams](https://www.webex.com/team-collaboration.html) (formerly known as Cisco Spark). diff --git a/source/_integrations/ciscospark.markdown b/source/_integrations/ciscospark.markdown deleted file mode 100644 index 55a188005341..000000000000 --- a/source/_integrations/ciscospark.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Cisco Spark" -description: "Instructions on how to add CiscoSpark notifications to Home Assistant." -logo: ciscospark.png -ha_category: - - Notifications -ha_release: "0.40" ---- - -The `ciscospark` notification platform allows you to deliver notifications from Home Assistant to [Cisco Spark](https://ciscospark.com/). - -To use this notification platform you need to get a developer token. To obtain a token visit [Spark for Developers](https://developer.ciscospark.com/index.html) - -At this time you also need to specify the `Cisco Spark` `roomid`. The `roomid` can also be found at [Spark for Developers](https://developer.ciscospark.com/index.html). Just look in the Documentation under Rooms. - -In order to get notified for all new messages in the room you will need to create a bot. This will post the messages from the bot and mark them as new for you which will alert you. If you use your own personal token the messages are added to the room but no notification is triggered. -Once you have created the bot through the new App menu you will need to add the bot to the room that you are a member of as well. Now use the bot access token in your configuration below. - -To enable the Cisco Spark notification in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: ciscospark - token: YOUR_DEVELOPER_TOKEN - roomid: CISCO_SPARK_ROOMID -``` - -{% configuration %} -name: - description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. - required: false - default: notify - type: string -token: - description: Your development token. - required: true - type: string -roomid: - description: The Room ID. - required: true - type: string -{% endconfiguration %} - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_integrations/citybikes.markdown b/source/_integrations/citybikes.markdown index 3d5ac138e1f0..380a8a9836b6 100644 --- a/source/_integrations/citybikes.markdown +++ b/source/_integrations/citybikes.markdown @@ -1,13 +1,12 @@ --- -title: "CityBikes Sensor" -description: "Instructions on how to integrate data from the CityBikes API into Home Assistant." -logo: citybikes.png +title: CityBikes +description: Instructions on how to integrate data from the CityBikes API into Home Assistant. ha_category: - Transport ha_release: 0.49 +ha_domain: citybikes --- - The `citybikes` sensor platform monitors bike availability at bike sharing stations in a chosen area. The data is provided by [CityBikes](https://citybik.es/#about), which supports bike sharing systems all around the world. ## Configuration diff --git a/source/_integrations/clementine.markdown b/source/_integrations/clementine.markdown index 173f292a319b..052e18cbf0c2 100644 --- a/source/_integrations/clementine.markdown +++ b/source/_integrations/clementine.markdown @@ -1,11 +1,11 @@ --- -title: "Clementine Music Player" -description: "Instructions on how to integrate Clementine Music Player within Home Assistant." -logo: clementine.png +title: Clementine Music Player +description: Instructions on how to integrate Clementine Music Player within Home Assistant. ha_category: - Media Player ha_release: 0.39 ha_iot_class: Local Polling +ha_domain: clementine --- The `clementine` platform allows you to control a [Clementine Music Player](https://www.clementine-player.org). diff --git a/source/_integrations/clickatell.markdown b/source/_integrations/clickatell.markdown index 45959da48374..aecfd822ad6e 100644 --- a/source/_integrations/clickatell.markdown +++ b/source/_integrations/clickatell.markdown @@ -1,10 +1,11 @@ --- -title: "Clickatell SMS" -description: "Instructions on how to add Clickatell notifications to Home Assistant." +title: Clickatell +description: Instructions on how to add Clickatell notifications to Home Assistant. logo: clickatell.png ha_category: - Notifications ha_release: 0.56 +ha_domain: clickatell --- The `clickatell` platform uses [Clickatell](https://clickatell.com) to deliver SMS notifications from Home Assistant. diff --git a/source/_integrations/clicksend.markdown b/source/_integrations/clicksend.markdown index cbe5dbd8ab69..fe4e6b8290b8 100644 --- a/source/_integrations/clicksend.markdown +++ b/source/_integrations/clicksend.markdown @@ -1,10 +1,10 @@ --- -title: "ClickSend SMS" -description: "Instructions on how to add ClickSend notifications to Home Assistant." -logo: clicksend.png +title: ClickSend SMS +description: Instructions on how to add ClickSend notifications to Home Assistant. ha_category: - Notifications ha_release: 0.48 +ha_domain: clicksend --- The `clicksend` platform uses [ClickSend](https://clicksend.com) to deliver notifications from Home Assistant. diff --git a/source/_integrations/clicksend_tts.markdown b/source/_integrations/clicksend_tts.markdown index c82e7e8d3a73..c41db4bd76a9 100644 --- a/source/_integrations/clicksend_tts.markdown +++ b/source/_integrations/clicksend_tts.markdown @@ -1,10 +1,10 @@ --- -title: "ClickSend text-to-speech" -description: "Instructions on how to add ClickSend text-to-speech (TTS) notifications to Home Assistant." -logo: clicksend.png +title: ClickSend TTS +description: Instructions on how to add ClickSend text-to-speech (TTS) notifications to Home Assistant. ha_category: - Notifications ha_release: 0.55 +ha_domain: clicksend_tts --- The `clicksend_tts` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant. diff --git a/source/_integrations/climate.knx.markdown b/source/_integrations/climate.knx.markdown index 2fd5dc2cf484..1c4eb77c5964 100644 --- a/source/_integrations/climate.knx.markdown +++ b/source/_integrations/climate.knx.markdown @@ -1,11 +1,11 @@ --- title: "KNX Climate" description: "Instructions on how to integrate KNX thermostats with Home Assistant." -logo: knx.png ha_category: - Climate ha_release: 0.25 ha_iot_class: Local Push +ha_domain: knx ---
    @@ -48,9 +48,9 @@ climate: operation_mode_state_address: '5/1/8' ``` -If your device doesn't support setpoint_shift calculations (i.e. if you don't provide a `setpoint_shift_address` value) please set the `min_temp` and `max_temp` +If your device doesn't support setpoint_shift calculations (i.e., if you don't provide a `setpoint_shift_address` value) please set the `min_temp` and `max_temp` attributes of the climate device to avoid issues with exceeding valid temperature values in the frontend. Please do also make sure to add the `target_temperature_address` -to the config in this case.: +to the configuration in this case.: ```yaml # Example configuration.yaml entry @@ -69,7 +69,7 @@ climate: ``` `operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` are not necessary if `operation_mode_address` is specified. -If the actor doesn't support explicit state communication objects the *_state_address can be configured with the same group address as the writeable *_address. The Read-Flag for the *_state_address communication object has to be set in ETS to support initial reading eg. when starting home-assistant. +If the actor doesn't support explicit state communication objects the *_state_address can be configured with the same group address as the writeable *_address. The Read-Flag for the *_state_address communication object has to be set in ETS to support initial reading e.g., when starting Home Assistant. The following values are valid for the `hvac_mode` attribute: diff --git a/source/_integrations/climate.markdown b/source/_integrations/climate.markdown index de691fce92cc..5956c1b6c3ff 100644 --- a/source/_integrations/climate.markdown +++ b/source/_integrations/climate.markdown @@ -1,11 +1,11 @@ --- -title: "Climate" -description: "Instructions on how to setup climate control devices within Home Assistant." -logo: home-assistant.png +title: Climate +description: Instructions on how to setup climate control devices within Home Assistant. ha_category: - Climate -ha_qa_scale: internal ha_release: 0.19 +ha_quality_scale: internal +ha_domain: climate --- The Climate integration allows you to control and monitor HVAC (heating, ventilating, and air conditioning) devices and thermostats. @@ -28,7 +28,7 @@ Turn auxiliary heater on/off for climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `aux_heat` | no | New value of auxiliary heater. #### Automation example @@ -53,7 +53,7 @@ reflecting a situation where the climate device is set to save energy. For examp | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `preset_mode` | no | New value of preset mode. #### Automation example @@ -76,7 +76,7 @@ Set target temperature of climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `temperature` | no | New target temperature for climate device (commonly referred to as a *setpoint*). Do not use if `hvac_mode` is `heat_cool`. | `target_temp_high` | yes | The highest temperature that the climate device will allow. Required if `hvac_mode` is `heat_cool`. | `target_temp_low` | yes | The lowest temperature that the climate device will allow. Required if `hvac_mode` is `heat_cool`. @@ -119,7 +119,7 @@ Set target humidity of climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `humidity` | no | New target humidity for climate device #### Automation example @@ -142,7 +142,7 @@ Set fan operation for climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `fan_mode` | no | New value of fan mode #### Automation example @@ -165,7 +165,7 @@ Set climate device's HVAC mode | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `hvac_mode` | no | New value of HVAC mode #### Automation example @@ -188,7 +188,7 @@ Set swing operation mode for climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `swing_mode` | no | New value of swing mode #### Automation example @@ -211,12 +211,12 @@ Turn climate device on. This is only supported if the climate device supports be | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. ### Service `climate.turn_off` -Turn climate device off. This is only supported if the climate device has the hvac mode `off`. +Turn climate device off. This is only supported if the climate device has the HVAC mode `off`. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. diff --git a/source/_integrations/climate.modbus.markdown b/source/_integrations/climate.modbus.markdown index 204683b578c8..ab74ffeac3fd 100644 --- a/source/_integrations/climate.modbus.markdown +++ b/source/_integrations/climate.modbus.markdown @@ -1,11 +1,11 @@ --- title: "Modbus Climate" description: "Instructions how to integrate a Modbus thermostat within Home Assistant." -logo: modbus.png ha_category: - Climate ha_release: 0.68 ha_iot_class: Local Polling +ha_domain: modbus --- @@ -22,6 +22,14 @@ climate: name: Watlow F4T hub: hub1 slave: 1 + data_type: uint + data_count: 1 + scale: 0.1 + offset: 0 + precision: 1 + max_temp: 30 + min_temp: 15 + temp_step: 1 target_temp_register: 2782 current_temp_register: 27586 ``` @@ -48,20 +56,56 @@ current_temp_register: description: Register number for current temperature (Process value). required: true type: integer +current_temp_register_type: + description: Modbus register type (holding, input) for current temperature, default holding. + required: false + type: string + default: holding data_type: description: Response representation (int, uint, float, custom). If float selected, value will converted to IEEE 754 floating point format. required: false type: string default: float -count: +data_count: description: Number of registers to read. required: false type: integer + default: 2 precision: description: Number of valid decimals. required: false type: integer + default: 1 +scale: + description: Scale factor (output = scale * value + offset). + required: false + type: float + default: 1 +offset: + description: Final offset (output = scale * value + offset). + required: false + type: float default: 0 +max_temp: + description: Maximum setpoint temperature. + required: false + type: integer + default: 35 +min_temp: + description: Maximum setpoint temperature. + required: false + type: integer + default: 5 +temp_step: + description: The supported step size a target temperature can be increased/decreased. + required: false + type: float + default: 0.5 +temperature_unit: + description: Temperature unit reported by the current_temp_register. C or F + required: false + type: string + default: C {% endconfiguration %} diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown index 4242674bfc27..fa9b95d703c8 100644 --- a/source/_integrations/climate.mqtt.markdown +++ b/source/_integrations/climate.mqtt.markdown @@ -1,19 +1,15 @@ --- title: "MQTT HVAC" description: "Instructions on how to integrate MQTT HVAC into Home Assistant." -logo: mqtt.png ha_category: - Climate ha_release: 0.55 ha_iot_class: Local Polling +ha_domain: mqtt --- The `mqtt` climate platform lets you control your MQTT enabled HVAC devices. -The platform currently works in optimistic mode, which means it does not obtain states from MQTT topics, but it sends and remembers control commands. - -It uses a sensor under the hood to obtain the current temperature. - ## Configuration To enable this climate platform in your installation, first add the following to your `configuration.yaml` file: @@ -25,275 +21,267 @@ climate: ``` {% configuration %} -name: - description: The name of the HVAC. - required: false - type: string - default: MQTT HVAC -unique_id: - description: An ID that uniquely identifies this HVAC device. If two HVAC devices have the same unique ID, Home Assistant will raise an exception. - required: false - type: string -qos: - description: The maximum QoS level to be used when receiving and publishing messages. - required: false - type: integer - default: 0 -retain: - description: Defines if published messages should have the retain flag set. - required: false - type: boolean - default: false -send_if_off: - description: "Set to `false` to suppress sending of all MQTT messages when the current mode is `Off`." +action_template: + description: A template to render the value received on the `action_topic` with. required: false - type: boolean - default: true -initial: - description: Set the initial target temperature. + type: template +action_topic: + description: >- + The MQTT topic to subscribe for changes of the current action. If this is set, the climate graph uses the value received as data source. + Valid values: `off`, `heating`, `cooling`, `drying`, `idle`, `fan`. required: false - type: integer - default: 21 -payload_on: - description: The payload that represents enabled state. + type: string +aux_command_topic: + description: The MQTT topic to publish commands to switch auxiliary heat. required: false type: string - default: "ON" -payload_off: - description: The payload that represents disabled state. +aux_state_template: + description: A template to render the value received on the `aux_state_topic` with. + required: false + type: template +aux_state_topic: + description: The MQTT topic to subscribe for changes of the auxiliary heat mode. If this is not set, the auxiliary heat mode works in optimistic mode (see below). required: false type: string - default: "OFF" availability_topic: description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false type: string -payload_available: - description: The payload that represents the available state. +away_mode_command_topic: + description: The MQTT topic to publish commands to change the away mode. required: false type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. +away_mode_state_template: + description: A template to render the value received on the `away_mode_state_topic` with. required: false - type: string - default: offline -value_template: - description: Default template to render the payloads on *all* `*_state_topic`s with. type: template - required: false -current_temperature_topic: - description: The MQTT topic on which to listen for the current temperature. +away_mode_state_topic: + description: The MQTT topic to subscribe for changes of the HVAC away mode. If this is not set, the away mode works in optimistic mode (see below). required: false type: string current_temperature_template: description: A template with which the value received on `current_temperature_topic` will be rendered. required: false type: template -power_command_topic: - description: The MQTT topic to publish commands to change the power state. This is useful if your device has a separate power toggle in addition to mode. +current_temperature_topic: + description: The MQTT topic on which to listen for the current temperature. required: false type: string -action_topic: - description: >- - The MQTT topic to subscribe for changes of the current action. If this is set, the climate graph uses the value received as data source. - Valid values: `off`, `heating`, `cooling`, `drying`, `idle`, `fan`. +device: + description: 'Information about the device this HVAC device is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: [list, string] + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string +fan_mode_command_topic: + description: The MQTT topic to publish commands to change the fan mode. required: false type: string -action_template: - description: A template to render the value received on the `action_topic` with. +fan_mode_state_template: + description: A template to render the value received on the `fan_mode_state_topic` with. required: false type: template -mode_command_topic: - description: The MQTT topic to publish commands to change the HVAC operation mode. +fan_mode_state_topic: + description: The MQTT topic to subscribe for changes of the HVAC fan mode. If this is not set, the fan mode works in optimistic mode (see below). required: false type: string -mode_state_topic: - description: The MQTT topic to subscribe for changes of the HVAC operation mode. If this is not set, the operation mode works in optimistic mode (see below). +fan_modes: + description: A list of supported fan modes. + required: false + default: ['auto', 'low', 'medium', 'high'] + type: list +hold_command_topic: + description: The MQTT topic to publish commands to change the hold mode. required: false type: string -mode_state_template: - description: A template to render the value received on the `mode_state_topic` with. +hold_state_template: + description: A template to render the value received on the `hold_state_topic` with. required: false type: template -modes: - description: A list of supported modes. Needs to be a subset of the default values. +hold_state_topic: + description: The MQTT topic to subscribe for changes of the HVAC hold mode. If this is not set, the hold mode works in optimistic mode (see below). + required: false + type: string +hold_modes: + description: A list of available hold modes. required: false - default: ['auto', 'off', 'cool', 'heat', 'dry', 'fan_only'] type: list -action_topic: - description: The MQTT topic on which to listen for the current action state of the HVAC. Expects `idle`, `cooling`, `heating`, `drying`, or `off`. +initial: + description: Set the initial target temperature. + required: false + type: integer + default: 21 +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." required: false - type: string -action_template: - description: A template to render the value received on the `action_topic` with. - requred: false type: template -temperature_command_topic: - description: The MQTT topic to publish commands to change the target temperature. +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. required: false type: string -temperature_state_topic: - description: The MQTT topic to subscribe for changes in the target temperature. If this is not set, the target temperature works in optimistic mode (see below). +max_temp: + description: Maximum set point available. + type: float + required: false +min_temp: + description: Minimum set point available. + type: float + required: false +mode_command_topic: + description: The MQTT topic to publish commands to change the HVAC operation mode. required: false type: string -temperature_state_template: - description: A template to render the value received on the `temperature_state_topic` with. +mode_state_template: + description: A template to render the value received on the `mode_state_topic` with. required: false type: template -temperature_low_command_topic: - description: The MQTT topic to publish commands to change the target low temperature. +mode_state_topic: + description: The MQTT topic to subscribe for changes of the HVAC operation mode. If this is not set, the operation mode works in optimistic mode (see below). required: false type: string -temperature_low_state_topic: - description: The MQTT topic to subscribe for changes in the target low temperature. If this is not set, the target low temperature works in optimistic mode (see below). +modes: + description: A list of supported modes. Needs to be a subset of the default values. + required: false + default: ['auto', 'off', 'cool', 'heat', 'dry', 'fan_only'] + type: list +name: + description: The name of the HVAC. required: false type: string -temperature_low_state_template: - description: A template to render the value received on the `temperature_low_state_topic` with. + default: MQTT HVAC +payload_available: + description: The payload that represents the available state. required: false - type: template -temperature_high_command_topic: - description: The MQTT topic to publish commands to change the high target temperature. + type: string + default: online +payload_not_available: + description: The payload that represents the unavailable state. required: false type: string -temperature_high_state_topic: - description: The MQTT topic to subscribe for changes in the target high temperature. If this is not set, the target high temperature works in optimistic mode (see below). + default: offline +payload_off: + description: The payload that represents disabled state. required: false type: string -temperature_high_state_template: - description: A template to render the value received on the `temperature_high_state_topic` with. + default: "OFF" +payload_on: + description: The payload that represents enabled state. required: false - type: template + type: string + default: "ON" +power_command_topic: + description: The MQTT topic to publish commands to change the power state. This is useful if your device has a separate power toggle in addition to mode. + required: false + type: string precision: description: The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are `0.1`, `0.5` and `1.0`. required: false type: float default: 0.1 for Celsius and 1.0 for Fahrenheit. -fan_mode_command_topic: - description: The MQTT topic to publish commands to change the fan mode. - required: false - type: string -fan_mode_state_topic: - description: The MQTT topic to subscribe for changes of the HVAC fan mode. If this is not set, the fan mode works in optimistic mode (see below). +qos: + description: The maximum QoS level to be used when receiving and publishing messages. required: false - type: string -fan_mode_state_template: - description: A template to render the value received on the `fan_mode_state_topic` with. + type: integer + default: 0 +retain: + description: Defines if published messages should have the retain flag set. required: false - type: template -fan_modes: - description: A list of supported fan modes. + type: boolean + default: false +send_if_off: + description: "Set to `false` to suppress sending of all MQTT messages when the current mode is `Off`." required: false - default: ['auto', 'low', 'medium', 'high'] - type: list + type: boolean + default: true swing_mode_command_topic: description: The MQTT topic to publish commands to change the swing mode. required: false type: string -swing_mode_state_topic: - description: The MQTT topic to subscribe for changes of the HVAC swing mode. If this is not set, the swing mode works in optimistic mode (see below). - required: false - type: string swing_mode_state_template: description: A template to render the value received on the `swing_mode_state_topic` with. required: false type: template +swing_mode_state_topic: + description: The MQTT topic to subscribe for changes of the HVAC swing mode. If this is not set, the swing mode works in optimistic mode (see below). + required: false + type: string swing_modes: description: A list of supported swing modes. required: false default: ['on', 'off'] type: list -away_mode_command_topic: - description: The MQTT topic to publish commands to change the away mode. +temperature_command_topic: + description: The MQTT topic to publish commands to change the target temperature. required: false type: string -away_mode_state_topic: - description: The MQTT topic to subscribe for changes of the HVAC away mode. If this is not set, the away mode works in optimistic mode (see below). +temperature_high_command_topic: + description: The MQTT topic to publish commands to change the high target temperature. required: false type: string -away_mode_state_template: - description: A template to render the value received on the `away_mode_state_topic` with. +temperature_high_state_template: + description: A template to render the value received on the `temperature_high_state_topic` with. required: false type: template -hold_command_topic: - description: The MQTT topic to publish commands to change the hold mode. +temperature_high_state_topic: + description: The MQTT topic to subscribe for changes in the target high temperature. If this is not set, the target high temperature works in optimistic mode (see below). required: false type: string -hold_state_topic: - description: The MQTT topic to subscribe for changes of the HVAC hold mode. If this is not set, the hold mode works in optimistic mode (see below). +temperature_low_command_topic: + description: The MQTT topic to publish commands to change the target low temperature. required: false type: string -hold_state_template: - description: A template to render the value received on the `hold_state_topic` with. +temperature_low_state_template: + description: A template to render the value received on the `temperature_low_state_topic` with. required: false type: template -hold_modes: - description: A list of available hold modes. - required: false - type: list -aux_command_topic: - description: The MQTT topic to publish commands to switch auxiliary heat. - required: false - type: string -aux_state_topic: - description: The MQTT topic to subscribe for changes of the auxiliary heat mode. If this is not set, the auxiliary heat mode works in optimistic mode (see below). +temperature_low_state_topic: + description: The MQTT topic to subscribe for changes in the target low temperature. If this is not set, the target low temperature works in optimistic mode (see below). required: false type: string -aux_state_template: - description: A template to render the value received on the `aux_state_topic` with. +temperature_state_template: + description: A template to render the value received on the `temperature_state_topic` with. required: false type: template -min_temp: - description: Minimum set point available. - type: float - required: false -max_temp: - description: Maximum set point available. - type: float +temperature_state_topic: + description: The MQTT topic to subscribe for changes in the target temperature. If this is not set, the target temperature works in optimistic mode (see below). required: false + type: string temp_step: description: Step size for temperature set point. type: float required: false default: 1 -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. - required: false - type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." - required: false +unique_id: + description: An ID that uniquely identifies this HVAC device. If two HVAC devices have the same unique ID, Home Assistant will raise an exception. + required: false + type: string +value_template: + description: Default template to render the payloads on *all* `*_state_topic`s with. type: template -device: - description: 'Information about the device this HVAC device is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' required: false - type: map - keys: - identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' - required: false - type: [list, string] - connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' - required: false - type: list - manufacturer: - description: 'The manufacturer of the device.' - required: false - type: string - model: - description: 'The model of the device.' - required: false - type: string - name: - description: 'The name of the device.' - required: false - type: string - sw_version: - description: 'The firmware version of the device.' - required: false - type: string {% endconfiguration %} #### Optimistic mode diff --git a/source/_integrations/climate.mysensors.markdown b/source/_integrations/climate.mysensors.markdown index 542e21a4d562..587c0f06491f 100644 --- a/source/_integrations/climate.mysensors.markdown +++ b/source/_integrations/climate.mysensors.markdown @@ -1,32 +1,32 @@ --- title: "MySensors HVAC" description: "Instructions on how to integrate MySensors climate into Home Assistant." -logo: mysensors.png ha_category: - DIY - Climate ha_release: 0.29 ha_iot_class: Local Push +ha_domain: mysensors --- -Integrates MySensors HVAC into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors HVAC into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following actuator types are supported: -##### MySensors version 1.5 and higher +## MySensors version 1.5 and higher -S_TYPE | V_TYPE --------|----------------------------------------------------------------------------- -S_HVAC | V_HVAC_FLOW_STATE*, V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COOL, V_HVAC_SPEED, V_TEMP +| S_TYPE | V_TYPE | +| ------ | ------------------------------------------------------------------------------------ | +| S_HVAC | V_HVAC_FLOW_STATE*, V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COOL, V_HVAC_SPEED, V_TEMP | V_HVAC_FLOW_STATE is mapped to the state of the Climate integration in Home Assistant as follows: -Home Assistant State | MySensors State ----------------------|---------------- -HVAC_MODE_COOL | CoolOn -HVAC_MODE_HEAT | HeatOn -HVAC_MODE_AUTO | AutoChangeOver -HVAC_MODE_OFF | Off +| Home Assistant State | MySensors State | +| -------------------- | --------------- | +| HVAC_MODE_COOL | CoolOn | +| HVAC_MODE_HEAT | HeatOn | +| HVAC_MODE_AUTO | AutoChangeOver | +| HVAC_MODE_OFF | Off | Currently humidity, away_mode, aux_heat, swing_mode is not supported. This will be included in later versions as feasible. @@ -36,9 +36,9 @@ You can use V_HVAC_SPEED to control the Speed setting of the Fan in the HVAC. You can use V_TEMP to send the current temperature from the node to Home Assistant. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. -### Example sketch for MySensors 2.x +## Example sketch for MySensors 2.x ```cpp /* @@ -183,7 +183,7 @@ void sendHeatpumpCommand() { } ``` -### Example sketch for MySensors 1.x +## Example sketch for MySensors 1.x ```cpp /* @@ -255,6 +255,3 @@ void incomingMessage(const MyMessage &message) { } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/cloud.markdown b/source/_integrations/cloud.markdown index e643ee603b1f..ffe34c8cbe95 100644 --- a/source/_integrations/cloud.markdown +++ b/source/_integrations/cloud.markdown @@ -1,11 +1,13 @@ --- -title: "Home Assistant Cloud" -description: "Enable the Home Assistant Cloud integration." -logo: nabu-casa.svg -ha_release: "0.60" +title: Home Assistant Cloud +description: Enable the Home Assistant Cloud integration. +ha_release: '0.60' ha_category: - Voice ha_iot_class: Cloud Push +ha_codeowners: + - '@home-assistant/cloud' +ha_domain: cloud --- The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services like Amazon Alexa and Google Assistant. [Learn more.](/cloud) diff --git a/source/_integrations/cloudflare.markdown b/source/_integrations/cloudflare.markdown index b501faed0944..ad44a482d260 100644 --- a/source/_integrations/cloudflare.markdown +++ b/source/_integrations/cloudflare.markdown @@ -1,19 +1,21 @@ --- -title: "Cloudflare" -description: "Automatically update your Cloudflare DNS records." -logo: cloudflare.png +title: Cloudflare +description: Automatically update your Cloudflare DNS records. ha_category: - Network ha_release: 0.74 +ha_codeowners: + - '@ludeeus' +ha_domain: cloudflare --- -With the `cloudflare` integration you can keep your Cloudflare records up to date. +With the `cloudflare` integration, you can keep your Cloudflare records up to date. -The integration will run every hour, but can also be started manually by using the service `cloudflare.update_records` under services. +The integration runs every hour, but can also be started manually by using the service `cloudflare.update_records` under services. ## Setup -You will find your global API key in your Cloudflare account settings. +You can find your global API key in your Cloudflare account settings. ## Configuration @@ -26,7 +28,7 @@ cloudflare: api_key: YOUR_GLOBAL_API_KEY zone: EXAMPLE.COM records: - - bin + - ha - www ``` @@ -40,13 +42,79 @@ api_key: required: true type: string zone: - description: The DNS zone you want to update. + description: The DNS zone (domain) you want to update. required: true type: string records: - description: A list of records you want to update. + description: A list of records (subdomains) you want to update. required: true type: list {% endconfiguration %} +## Additional information + +### Usage of external service + This platform uses the API from [ipify.org](https://www.ipify.org/) to set the public IP address. + +### API Key + +Please note that the `api_key` is the [global API key](https://support.cloudflare.com/hc/en-us/articles/200167836-Managing-API-Tokens-and-Keys#12345682) of your Cloudflare account (not the API Token). + +### Home Assistant Companion App + +If you would like to use [iOS App](https://companion.home-assistant.io/) via Cloudflare set **Minimum TLS version as 1.2**, in order to do that, do the following: +1. Login to your [Cloudflare](https://dash.cloudflare.com/) account. +2. Choose your domain. +3. Click on the `SSL/TLS` icon. +4. Go to tab `Edge Certificates`. +5. Find `Minimum TLS Version` and set it to **1.2**. + +Other settings should not cause any issues. + +### SSH over Cloudflare + +For SSH usage (according to [this](https://blog.cloudflare.com/cloudflare-now-supporting-more-ports/) source), you need to connect directly to your server (bypassing Cloudflare). To do that, create a `CNAME` DNS record, e.g., `ssh.example.com`, with proxy status as "DNS only" (to do that click on orange icon, it will change color to gray) and then connect to `ssh.example.com` using your server SSH port. + +### Using Cloudflare domain only for Home Assistant + +If you want to update just a main domain, place in the records list only your domain, e.g., `example.com`. It will update your `A` DNS record with your IP every hour. + +```yaml +# Example configuration.yaml entry for one domain +cloudflare: + email: YOUR_EMAIL_ADDRESS + api_key: YOUR_GLOBAL_API_KEY + zone: EXAMPLE.COM + records: + - EXAMPLE.COM +``` + +#### The minimum DNS record settings (if you have set up HTTPS already) + +To redirect from your domain to the IP address of your Home Assistant server set this DNS record: + +```text +Type: A +Name: @ +IPv4 Address: your.ip.address +``` + +You can find your current IP address using [this](https://api.ipify.org/) page. + +In order to redirect from `https://www` to `https://` you need to set this DNS record: + +```text +Type: CNAME +Name: @ +Target: example.com (your actual domain) +``` + +And also create Page Rule: + +```text +If the URL matches: www.example.com* +Then the settings are: Forwarding URL +Status: 302 - Temporary redirect +Destination URL: https://example.com/$1 +``` diff --git a/source/_integrations/cmus.markdown b/source/_integrations/cmus.markdown index 8ac0a5b48c6b..f2fc588361ce 100644 --- a/source/_integrations/cmus.markdown +++ b/source/_integrations/cmus.markdown @@ -1,14 +1,13 @@ --- -title: "cmus" -description: "Instructions on how to integrate cmus Music Player into Home -Assistant." +title: cmus +description: Instructions on how to integrate cmus Music Player into Home Assistant. ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.23 +ha_domain: cmus --- - The `cmus` platform allows you to control a [cmus](https://cmus.github.io/) music player on a remote or local machine from Home Assistant. To add cmus to your installation, add the following to your `configuration.yaml` file if running locally it will look like: diff --git a/source/_integrations/co2signal.markdown b/source/_integrations/co2signal.markdown index 48808af9f26f..718fa0199571 100644 --- a/source/_integrations/co2signal.markdown +++ b/source/_integrations/co2signal.markdown @@ -1,11 +1,12 @@ --- -title: "CO2Signal" -description: "Instructions on how to use CO2Signal data within Home Assistant" +title: CO2 Signal +description: Instructions on how to use CO2Signal data within Home Assistant logo: co2signal.png ha_category: - Environment ha_release: 0.87 ha_iot_class: Cloud Polling +ha_domain: co2signal --- The `co2signal` sensor platform queries the [CO2Signal](https://www.co2signal.com/) API for the CO2 intensity of a specific region. Data can be collected via latitude/longitude or by country code. This API uses the same data as Not all countries/regions in the world are supported so please consult this website to check local availability. @@ -94,4 +95,3 @@ sensor: ## Sensor Types When configured, the platform will create one sensor for each configured location. - diff --git a/source/_integrations/coinbase.markdown b/source/_integrations/coinbase.markdown index ba75ab338c7c..7a9400b074b4 100644 --- a/source/_integrations/coinbase.markdown +++ b/source/_integrations/coinbase.markdown @@ -1,12 +1,13 @@ --- -title: "Coinbase" -description: "Instructions for how to add Coinbase sensors to Home Assistant." +title: Coinbase +description: Instructions for how to add Coinbase sensors to Home Assistant. logo: coinbase.png ha_category: - Finance - Sensor ha_release: 0.61 ha_iot_class: Cloud Polling +ha_domain: coinbase --- The `coinbase` integration lets you access account balances and exchange rates from [coinbase](https://coinbase.com). @@ -44,7 +45,7 @@ exchange_rate_currencies: type: list {% endconfiguration %} -Possible currencies are codes that conform to the ISO 4217 standard where possible. Currencies which have or had no representation in ISO 4217 may use a custom code (e.g. BTC). A list of values can be obtained via https://api.coinbase.com/v2/currencies, for more information visit [the Coinbase API documentation](https://developers.coinbase.com/api/v2#get-currencies). +Possible currencies are codes that conform to the ISO 4217 standard where possible. Currencies which have or had no representation in ISO 4217 may use a custom code (e.g., BTC). A list of values can be obtained via https://api.coinbase.com/v2/currencies, for more information visit [the Coinbase API documentation](https://developers.coinbase.com/api/v2#get-currencies). ## Full configuration example diff --git a/source/_integrations/coinmarketcap.markdown b/source/_integrations/coinmarketcap.markdown index a5d8d3d2e6ac..62e0e833a195 100644 --- a/source/_integrations/coinmarketcap.markdown +++ b/source/_integrations/coinmarketcap.markdown @@ -1,14 +1,13 @@ --- -title: "CoinMarketCap" -description: "Instructions on how to integrate CoinMarketCap data within Home Assistant." -logo: coinmarketcap.png +title: CoinMarketCap +description: Instructions on how to integrate CoinMarketCap data within Home Assistant. ha_category: - Finance ha_release: 0.28 ha_iot_class: Cloud Polling +ha_domain: coinmarketcap --- - The `coinmarketcap` sensor platform displays various details about a cryptocurrency provided by [CoinMarketCap](https://coinmarketcap.com/). To add the CoinMarketCap sensor to your installation, add the following lines to your `configuration.yaml`: @@ -37,5 +36,4 @@ display_currency_decimals: default: 2 {% endconfiguration %} -All supported currencies can be found [here](https://coinmarketcap.com/api/), a list of currency IDs can be found [here](https://api.coinmarketcap.com/v2/ticker/). - +All supported currencies can be found [here](https://coinmarketcap.com/api/documentation/v1/#section/Standards-and-Conventions), a list of currency IDs can be found [here](https://api.coinmarketcap.com/v2/ticker/). diff --git a/source/_integrations/comed_hourly_pricing.markdown b/source/_integrations/comed_hourly_pricing.markdown index 8bb97c4cda21..1c112c28f8b6 100644 --- a/source/_integrations/comed_hourly_pricing.markdown +++ b/source/_integrations/comed_hourly_pricing.markdown @@ -1,11 +1,12 @@ --- -title: "ComEd Hourly Pricing" -description: "Instructions on how to set up the ComEd Hourly Pricing sensor in Home Assistant." +title: ComEd Hourly Pricing +description: Instructions on how to set up the ComEd Hourly Pricing sensor in Home Assistant. logo: comed.png ha_category: - Energy -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Cloud Polling +ha_domain: comed_hourly_pricing --- The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published [here](https://hourlypricing.comed.com/live-prices/) and also via an [API](https://hourlypricing.comed.com/hp-api/) which we can integrate as a sensor in Home Assistant. diff --git a/source/_integrations/comfoconnect.markdown b/source/_integrations/comfoconnect.markdown index 476d13a786d4..db447944fe94 100644 --- a/source/_integrations/comfoconnect.markdown +++ b/source/_integrations/comfoconnect.markdown @@ -1,11 +1,15 @@ --- -title: "Zehnder ComfoAir Q Ventilation" -description: "Instructions on how to integrate Zehnder ComfoAir Q350/450/600 ventilation systems into Home Assistant." +title: Zehnder ComfoAir Q +description: Instructions on how to integrate Zehnder ComfoAir Q350/450/600 ventilation systems into Home Assistant. logo: zehnder.png ha_category: - Fan - Sensor ha_release: 0.48 +ha_iot_class: Local Push +ha_codeowners: + - '@michaelarnauts' +ha_domain: comfoconnect --- The `comfoconnect` integration lets you control Zehnder ComfoAir [Q350](https://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q350-tr)/[Q450](https://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q450-tr)/[Q600](https://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q600-st) @@ -57,14 +61,27 @@ To register the sensors, add the following to your `configuration.yaml` file: sensor: - platform: comfoconnect resources: - - current_temperature + - air_flow_exhaust + - air_flow_supply + - bypass_state - current_humidity - - outside_temperature + - current_temperature + - days_to_replace_filter + - exhaust_fan_duty + - exhaust_fan_speed + - exhaust_humidity + - exhaust_temperature - outside_humidity - - air_flow_supply - - air_flow_exhaust + - outside_temperature + - power_usage + - supply_fan_duty + - supply_fan_speed + - supply_humidity + - supply_temperature ``` +The list above indicates all supported sensors. It is recommended to only include the ones you need. +
    Note that it's not possible to have multiple connection to the bridge at the same time. This integration will keep the connection open, and if you open the app, it will ask you to disconnect Home Assistant. If you close the app again, Home Assistant will reconnect automatically.
    diff --git a/source/_integrations/command_line.markdown b/source/_integrations/command_line.markdown index 988422d584cb..79984ea78f33 100644 --- a/source/_integrations/command_line.markdown +++ b/source/_integrations/command_line.markdown @@ -1,11 +1,12 @@ --- -title: "Command line Binary Sensor" -description: "Instructions on how to integrate Command binary sensors within Home Assistant." -logo: command_line.png +title: Command Line +description: Instructions on how to integrate Command binary sensors within Home Assistant. ha_category: - Utility + - Binary Sensor ha_release: 0.12 ha_iot_class: Local Polling +ha_domain: command_line --- The `command_line` binary sensor platform issues specific commands to get data. diff --git a/source/_integrations/concord232.markdown b/source/_integrations/concord232.markdown index d785bbdea6dd..34ad9f193abc 100644 --- a/source/_integrations/concord232.markdown +++ b/source/_integrations/concord232.markdown @@ -1,11 +1,12 @@ --- -title: "Concord232" -description: "Instructions on how to integrate Interlogix/GE Concord4 into Home Assistant." +title: Concord232 +description: Instructions on how to integrate Interlogix/GE Concord4 into Home Assistant. logo: interlogix.png ha_category: - Alarm - Binary Sensor ha_release: 0.31 +ha_domain: concord232 --- The `concord232` platform provides integration with GE, Interlogix (and other brands) alarm panels that support the RS-232 Automation Control Panel interface module (or have it built in). Supported panels include Concord 4. diff --git a/source/_integrations/config.markdown b/source/_integrations/config.markdown index 4b7942af2267..8f24cfdd54b1 100644 --- a/source/_integrations/config.markdown +++ b/source/_integrations/config.markdown @@ -1,11 +1,13 @@ --- -title: "Config" -description: "Instructions on how to setup the configuration panel for Home Assistant." -logo: home-assistant.png +title: Configuration +description: Instructions on how to setup the configuration panel for Home Assistant. ha_category: - Front End ha_release: 0.39 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: config --- The `config` integration is designed to display panels in the frontend to configure and manage parts of Home Assistant. @@ -51,11 +53,11 @@ This section enables you to organize entities to physical areas of your home. ### Automation -This section enables you to create and modify automations from within Home Assistant, without needing to write out the yaml code. +This section enables you to create and modify automations from within Home Assistant, without needing to write out the YAML code. ### Script -Similar to the automation editor, this section enables you to create and modify scripts from within Home Assistant, without needing to write out the yaml code. +Similar to the automation editor, this section enables you to create and modify scripts from within Home Assistant, without needing to write out the YAML code. ### Z-Wave @@ -64,4 +66,3 @@ This section enables you to control your Z-Wave network and devices from within ### Customization This section enables you to customize entities within Home Assistant. Use this to set friendly names, change icons, hide entities, and modify other attributes. - diff --git a/source/_integrations/configurator.markdown b/source/_integrations/configurator.markdown index 763a7e493d6b..679a8bc13ac6 100644 --- a/source/_integrations/configurator.markdown +++ b/source/_integrations/configurator.markdown @@ -1,11 +1,13 @@ --- -title: "Configurator" -description: "Instructions on how to integrate the configurator in your components." -logo: home-assistant.png +title: Configurator +description: Instructions on how to integrate the configurator in your components. ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: configurator ---
    diff --git a/source/_integrations/conversation.markdown b/source/_integrations/conversation.markdown index 819f58c5737a..696dd114ab67 100644 --- a/source/_integrations/conversation.markdown +++ b/source/_integrations/conversation.markdown @@ -1,11 +1,13 @@ --- -title: "Conversation" -description: "Instructions on how to have conversations with your Home Assistant." -logo: home-assistant.png +title: Conversation +description: Instructions on how to have conversations with your Home Assistant. ha_category: - - "Voice" -ha_qa_scale: internal + - Voice ha_release: 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: conversation --- The conversation integration allows you to converse with Home Assistant. You can either converse by pressing the microphone in the frontend (supported browsers only (no iOS)) or by calling the `conversation/process` service with the transcribed text. diff --git a/source/_integrations/coolmaster.markdown b/source/_integrations/coolmaster.markdown index 51335b919f71..f8b54c59fa35 100644 --- a/source/_integrations/coolmaster.markdown +++ b/source/_integrations/coolmaster.markdown @@ -1,14 +1,17 @@ --- -title: "CoolMasterNet Climate" -description: "Instructions on how to integrate CoolMasterNet within Home Assistant." +title: CoolMasterNet +description: Instructions on how to integrate CoolMasterNet within Home Assistant. logo: coolautomation.png ha_category: - Climate ha_release: 0.88 ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@OnFreund' +ha_domain: coolmaster --- - The `coolmaster` climate platform lets you control HVAC through [CoolMasterNet](https://coolautomation.com/products/coolmasternet/). ## Configuration via the frontend diff --git a/source/_integrations/coronavirus.markdown b/source/_integrations/coronavirus.markdown new file mode 100644 index 000000000000..52568b0a9c81 --- /dev/null +++ b/source/_integrations/coronavirus.markdown @@ -0,0 +1,48 @@ +--- +title: Coronavirus (COVID-19) +description: Instructions on how to integrate the Coronavirus sensors within Home Assistant. +ha_category: + - Health +ha_release: 0.106 +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@home_assistant/core' +ha_domain: coronavirus +--- + +In December 2019, an outbreak of a novel Coronavirus, also called severe acute +respiratory syndrome coronavirus-2 (SARS-CoV-2), began in the Wuhan region of +China. This virus can cause the COVID-19 disease. + +This novel Coronavirus is spreading globally at a disturbing rate, which keeps +everybody on top of the news. The media worldwide is covering the spread of +the virus constantly, and a lot of people are tracking the number of cases +in their country. + +The Coronavirus integration tracks the number of people that are confirmed with, +recovered from, and deceased caused by the virus in your country, or worldwide. + +The data is sourced from the [Johns Hopkins University](https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6). + +## Configuration + +This integration can be configured via the Home Assistant frontend. + +- Go to **Configuration** -> **Integrations**. +- Click on the `+` in the bottom right corner to add a new integration. +- Search and select the **Coronavirus** integration form the list. +- Follow the instruction on screen to add the sensors. Either choose for adding + world-wide sensors, or a specific set of sensors for your country. + +If you want to track both world-wide and one or more countries at the same time, +you can repeat the configuration process described above to add multiple +instances of the integration. + +
    +This integration is released in a special release of Home Assistant Core: +0.106.3. + +While this integration is marked as released in 0.106, it is only available +on Home Assistant Core 0.106.3 or newer. +
    diff --git a/source/_integrations/counter.markdown b/source/_integrations/counter.markdown index 45b9b3a1ce33..026151eaed43 100644 --- a/source/_integrations/counter.markdown +++ b/source/_integrations/counter.markdown @@ -1,11 +1,13 @@ --- -title: "Counter" -description: "Instructions on how to integrate counters into Home Assistant." -logo: home-assistant.png +title: Counter +description: Instructions on how to integrate counters into Home Assistant. ha_category: - Automation ha_release: 0.53 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: counter --- The `counter` integration allows one to count occurrences fired by automations. diff --git a/source/_integrations/cover.command_line.markdown b/source/_integrations/cover.command_line.markdown index b0053579b546..45103848d00f 100644 --- a/source/_integrations/cover.command_line.markdown +++ b/source/_integrations/cover.command_line.markdown @@ -1,11 +1,11 @@ --- title: "Command Line Cover" description: "How to control a cover with the command line." -logo: command_line.png ha_category: - Cover ha_release: 0.14 ha_iot_class: Local Polling +ha_domain: command_line --- A `command_line`cover platform that issues specific commands when it is moved up, down and stopped. It allows anyone to integrate any type of cover into Home Assistant that can be controlled from the command line. @@ -54,7 +54,7 @@ covers: required: false type: string value_template: - description: if specified, `command_state` will ignore the result code of the command but the template evaluating will indicate the position of the cover. For example, if your `command_state` returns a string "open", using `value_template` as in the example config above will allow you to translate that into the valid state `100`. + description: if specified, `command_state` will ignore the result code of the command but the template evaluating will indicate the position of the cover. For example, if your `command_state` returns a string "open", using `value_template` as in the example configuration above will allow you to translate that into the valid state `100`. required: false default: "'{% raw %}{{ value }}{% endraw%}'" type: template diff --git a/source/_integrations/cover.group.markdown b/source/_integrations/cover.group.markdown index 999daeee25bc..6bd0f652b86e 100644 --- a/source/_integrations/cover.group.markdown +++ b/source/_integrations/cover.group.markdown @@ -5,8 +5,8 @@ ha_category: - Cover ha_release: 0.66 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: group --- The `group` platform can create a cover that combines several cover entities into one. diff --git a/source/_integrations/cover.knx.markdown b/source/_integrations/cover.knx.markdown index f2f7df6800a7..a3d38d4b2793 100644 --- a/source/_integrations/cover.knx.markdown +++ b/source/_integrations/cover.knx.markdown @@ -1,11 +1,11 @@ --- title: "KNX Cover" description: "Instructions on how to integrate KNX covers with Home Assistant." -logo: knx.png ha_category: - Cover ha_release: 0.48 ha_iot_class: Local Push +ha_domain: knx ---
    diff --git a/source/_integrations/cover.markdown b/source/_integrations/cover.markdown index bcda65e85e68..d3e9901c3f78 100644 --- a/source/_integrations/cover.markdown +++ b/source/_integrations/cover.markdown @@ -1,11 +1,13 @@ --- -title: "Covers" -description: "Instructions on how to integrate covers into Home Assistant." -logo: home-assistant.png +title: Cover +description: Instructions on how to integrate covers into Home Assistant. ha_category: - Cover -ha_qa_scale: internal ha_release: 0.27 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: cover --- Home Assistant can give you an interface to control covers such as rollershutters, blinds, and garage doors. @@ -33,7 +35,7 @@ Available services: `cover.open_cover`, `cover.close_cover`, `cover.stop_cover`, | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Else targets all. +| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. ### Service `cover.set_cover_position` @@ -41,7 +43,7 @@ Set cover position of one or multiple covers. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Else targets all. +| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. | `position` | no | Integer between 0 and 100. #### Automation example @@ -64,7 +66,7 @@ Set cover tilt position of one or multiple covers. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Else targets all. +| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. | `tilt_position` | no | Integer between 0 and 100. #### Automation example diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown index 8f2b661dbbff..1c65d259d7a7 100644 --- a/source/_integrations/cover.mqtt.markdown +++ b/source/_integrations/cover.mqtt.markdown @@ -1,31 +1,31 @@ --- title: "MQTT Cover" description: "Instructions on how to integrate MQTT covers into Home Assistant." -logo: mqtt.png ha_category: - Cover ha_iot_class: Configurable ha_release: 0.18 +ha_domain: mqtt --- The `mqtt` cover platform allows you to control an MQTT cover (such as blinds, a rollershutter or a garage door). ## Configuration -The device state (`open` or `closed`) will be updated only after a new message is published on `state_topic` matching `state_open` or `state_closed`. If these messages are published with the `retain` flag set, the cover will receive an instant state update after subscription and Home Assistant will display the correct state on startup. Otherwise, the initial state displayed in Home Assistant will be `unknown`. -`state_topic` can only manage `state_open` and `state_closed`. No percentage positions etc. +The device state (`open`, `opening`, `closed` or `closing`) will be updated only after a new message is published on `state_topic` matching `state_open`, `state_opening`, `state_closed` or `state_closing`. If these messages are published with the `retain` flag set, the cover will receive an instant state update after subscription and Home Assistant will display the correct state on startup. Otherwise, the initial state displayed in Home Assistant will be `unknown`. +`state_topic` can only manage `state_open`, `state_opening`, `state_closed` and `state_closing`. No percentage positions etc. For this purpose is `position_topic` which can set state of the cover and position. Default setting are 0 means the device is `closed` and all other intermediate positions means the device is `open`. `position_topic` is managed by `position_open` and `position_closed` -You can set it up in opossite way as well. +You can set it up in opposite way as well. If position topic is defined than state topic is ignored. If a state topic and position topic are not defined, the cover will work in optimistic mode. In this mode, the cover will immediately change state (`open` or `closed`) after every command sent by Home Assistant. If a state topic/position topic is defined, the cover will wait for a message on `state_topic` or `position_topic`. Optimistic mode can be forced, even if a `state_topic` / `position_topic` is defined. Try to enable it if experiencing incorrect cover operation (Google Assistant gauge may need optimistic mode as it often send request to your Home Assistant immediately after send set_cover_position in which case MQTT could be too slow). -The `mqtt` cover platform optionally supports an `availability_topic` to receive online and offline messages (birth and LWT messages) from the MQTT cover device. During normal operation, if the MQTT cover device goes offline (i.e. publishes `payload_not_available` to `availability_topic`), Home Assistant will display the cover as "unavailable". If these messages are published with the `retain` flag set, the cover will receive an instant update after subscription and Home Assistant will display correct availability state of the cover when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the cover as "unavailable" when Home Assistant starts up. +The `mqtt` cover platform optionally supports an `availability_topic` to receive online and offline messages (birth and LWT messages) from the MQTT cover device. During normal operation, if the MQTT cover device goes offline (i.e., publishes `payload_not_available` to `availability_topic`), Home Assistant will display the cover as "unavailable". If these messages are published with the `retain` flag set, the cover will receive an instant update after subscription and Home Assistant will display correct availability state of the cover when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the cover as "unavailable" when Home Assistant starts up. To use your MQTT cover in your installation, add the following to your `configuration.yaml` file: @@ -37,77 +37,104 @@ cover: ``` {% configuration %} +availability_topic: + description: "The MQTT topic subscribed to to receive birth and LWT messages from the MQTT cover device. If `availability_topic` is not defined, the cover availability state will always be `available`. If `availability_topic` is defined, the cover availability state will be `unavailable` by default." + required: false + type: string command_topic: description: The MQTT topic to publish commands to control the cover. required: false type: string +device: + description: "Information about the device this cover is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." + required: false + type: map + keys: + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' + required: false + type: list + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: [list, string] + manufacturer: + description: The manufacturer of the device. + required: false + type: string + model: + description: The model of the device. + required: false + type: string + name: + description: The name of the device. + required: false + type: string + sw_version: + description: The firmware version of the device. + required: false + type: string +device_class: + description: Sets the [class of the device](/integrations/cover/), changing the device state and icon that is displayed on the frontend. + required: false + type: string +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." + required: false + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string name: description: The name of the cover. required: false type: string default: MQTT Cover -payload_open: - description: The command payload that opens the cover. +optimistic: + description: Flag that defines if switch works in optimistic mode. required: false type: string - default: OPEN + default: "`true` if no state topic defined, else `false`." +payload_available: + description: The payload that represents the online state. + required: false + type: string + default: online payload_close: description: The command payload that closes the cover. required: false type: string default: CLOSE -payload_stop: - description: The command payload that stops the cover. - required: false - type: string - default: STOP -state_topic: - description: The MQTT topic subscribed to receive cover state messages. Use only if not using `position_topic`. State topic can only read open/close state. Cannot read position state. If `position_topic` is set `state_topic` is ignored. - required: false - type: string -state_open: - description: The payload that represents the open state. +payload_not_available: + description: The payload that represents the offline state. required: false type: string - default: open -state_closed: - description: The payload that represents the closed state. + default: offline +payload_open: + description: The command payload that opens the cover. required: false type: string - default: closed -position_topic: - description: The MQTT topic subscribed to receive cover position messages. If `position_topic` is set `state_topic` is ignored. + default: OPEN +payload_stop: + description: The command payload that stops the cover. required: false type: string -position_open: - description: Number which represents open position. - required: false - type: integer - default: 100 + default: STOP position_closed: description: Number which represents closed position. required: false type: integer default: 0 -availability_topic: - description: "The MQTT topic subscribed to to receive birth and LWT messages from the MQTT cover device. If `availability_topic` is not defined, the cover availability state will always be `available`. If `availability_topic` is defined, the cover availability state will be `unavailable` by default." - required: false - type: string -payload_available: - description: The payload that represents the online state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the offline state. +position_open: + description: Number which represents open position. required: false - type: string - default: offline -optimistic: - description: Flag that defines if switch works in optimistic mode. + type: integer + default: 100 +position_topic: + description: The MQTT topic subscribed to receive cover position messages. If `position_topic` is set `state_topic` is ignored. required: false type: string - default: "`true` if no state topic defined, else `false`." qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -118,42 +145,59 @@ retain: required: false type: boolean default: false -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." +set_position_template: + description: "Defines a [template](/topics/templating/) to define the position to be sent to the `set_position_topic` topic. Incoming position value is available for use in the template `{{position}}`. If no template is defined, the position (0-100) will be calculated according to `position_open` and `position_closed` values." required: false type: string set_position_topic: description: "The MQTT topic to publish position commands to. You need to set position_topic as well if you want to use position topic. Use template if position topic wants different values than within range `position_closed` - `position_open`. If template is not defined and `position_closed != 100` and `position_open != 0` then proper position value is calculated from percentage position." required: false type: string -set_position_template: - description: "Defines a [template](/topics/templating/) to define the position to be sent to the `set_position_topic` topic. Incoming position value is available for use in the template `{{position}}`. If no template is defined, the position (0-100) will be calculated according to `position_open` and `position_closed` values." +state_closed: + description: The payload that represents the closed state. required: false type: string -tilt_command_topic: - description: The MQTT topic to publish commands to control the cover tilt. + default: closed +state_closing: + description: The payload that represents the closing state. required: false type: string -tilt_status_topic: - description: The MQTT topic subscribed to receive tilt status update values. + default: closing +state_open: + description: The payload that represents the open state. required: false type: string -tilt_status_template: - description: "Defines a [template](/topics/templating/) that can be used to extract the payload for the `tilt_status_topic` topic. " + default: open +state_opening: + description: The payload that represents the opening state. required: false type: string -tilt_min: - description: The minimum tilt value. + default: opening +state_topic: + description: The MQTT topic subscribed to receive cover state messages. Use only if not using `position_topic`. State topic can only read open/close state. Cannot read position state. If `position_topic` is set `state_topic` is ignored. + required: false + type: string +tilt_closed_value: + description: The value that will be sent on a `close_cover_tilt` command. required: false type: integer default: 0 +tilt_command_topic: + description: The MQTT topic to publish commands to control the cover tilt. + required: false + type: string +tilt_invert_state: + description: Flag that determines if open/close are flipped; higher values toward closed and lower values toward open. + required: false + type: boolean + default: false tilt_max: description: The maximum tilt value required: false type: integer default: 100 -tilt_closed_value: - description: The value that will be sent on a `close_cover_tilt` command. +tilt_min: + description: The minimum tilt value. required: false type: integer default: 0 @@ -167,56 +211,22 @@ tilt_optimistic: required: false type: boolean default: "`true` if `tilt_status_topic` is not defined, else `false`" -tilt_invert_state: - description: Flag that determines if open/close are flipped; higher values toward closed and lower values toward open. - required: false - type: boolean - default: false -device_class: - description: Sets the [class of the device](/integrations/cover/), changing the device state and icon that is displayed on the frontend. +tilt_status_template: + description: "Defines a [template](/topics/templating/) that can be used to extract the payload for the `tilt_status_topic` topic. " required: false type: string -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. +tilt_status_topic: + description: The MQTT topic subscribed to receive tilt status update values. required: false type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." - required: false - type: template unique_id: description: An ID that uniquely identifies this cover. If two covers have the same unique ID, Home Assistant will raise an exception. required: false type: string -device: - description: "Information about the device this cover is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." required: false - type: map - keys: - identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' - required: false - type: [list, string] - connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' - required: false - type: list - manufacturer: - description: The manufacturer of the device. - required: false - type: string - model: - description: The model of the device. - required: false - type: string - name: - description: The name of the device. - required: false - type: string - sw_version: - description: The firmware version of the device. - required: false - type: string + type: string {% endconfiguration %} ## Examples @@ -242,7 +252,9 @@ cover: payload_close: "CLOSE" payload_stop: "STOP" state_open: "open" + state_opening: "opening" state_closed: "closed" + state_closing: "closing" payload_available: "online" payload_not_available: "offline" optimistic: false @@ -297,7 +309,9 @@ cover: payload_close: "CLOSE" payload_stop: "STOP" state_open: "open" + state_opening: "opening" state_closed: "closed" + state_closing: "closing" payload_available: "online" payload_not_available: "offline" optimistic: false diff --git a/source/_integrations/cover.mysensors.markdown b/source/_integrations/cover.mysensors.markdown index 075f99a2e108..48130cbd7965 100644 --- a/source/_integrations/cover.mysensors.markdown +++ b/source/_integrations/cover.mysensors.markdown @@ -1,35 +1,35 @@ --- title: "MySensors Cover" description: "Instructions on how to integrate MySensors covers into Home Assistant." -logo: mysensors.png ha_category: - DIY - Cover ha_release: "0.30" ha_iot_class: Local Push +ha_domain: mysensors --- -Integrates MySensors covers into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors covers into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following actuator types are supported: -##### MySensors version 1.4 +## MySensors version 1.4 -S_TYPE | V_TYPE ---------|-------------------------------------------- -S_COVER | V_UP, V_DOWN, V_STOP, [V_DIMMER or V_LIGHT] +| S_TYPE | V_TYPE | +| ------- | ------------------------------------------- | +| S_COVER | V_UP, V_DOWN, V_STOP, [V_DIMMER or V_LIGHT] | -##### MySensors version 1.5 and higher +## MySensors version 1.5 and higher -S_TYPE | V_TYPE ---------|------------------------------------------------- -S_COVER | V_UP, V_DOWN, V_STOP, [V_PERCENTAGE or V_STATUS] +| S_TYPE | V_TYPE | +| ------- | ------------------------------------------------ | +| S_COVER | V_UP, V_DOWN, V_STOP, [V_PERCENTAGE or V_STATUS] | All V_TYPES above are required. Use V_PERCENTAGE (or V_DIMMER) if you know the exact position of the cover in percent, use V_STATUS (or V_LIGHT) if you don't. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download/serial_api_20) of MySensors. -### Example sketch +## Example sketch ```cpp /* @@ -149,6 +149,3 @@ void receive(const MyMessage &message) { } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download/serial_api_20 diff --git a/source/_integrations/cover.rflink.markdown b/source/_integrations/cover.rflink.markdown index 1352a5266fb5..d1892f9f857c 100644 --- a/source/_integrations/cover.rflink.markdown +++ b/source/_integrations/cover.rflink.markdown @@ -5,6 +5,7 @@ logo: rflink.png ha_category: - Cover ha_release: 0.55 +ha_domain: rflink --- The `rflink` integration supports devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). diff --git a/source/_integrations/cover.rfxtrx.markdown b/source/_integrations/cover.rfxtrx.markdown index 21da46532d5b..9e054b35906c 100644 --- a/source/_integrations/cover.rfxtrx.markdown +++ b/source/_integrations/cover.rfxtrx.markdown @@ -1,15 +1,15 @@ --- title: "RFXtrx Cover" description: "Instructions on how to integrate RFXtrx covers into Home Assistant." -logo: rfxtrx.png ha_category: - Cover ha_release: 0.27 +ha_domain: rfxtrx --- The `rfxtrx` platform supports Siemens/LightwaveRF and RFY roller shutters that communicate in the frequency range of 433.92 MHz. -First you have to set up your [rfxtrx hub](/integrations/rfxtrx/). +First you have to set up your [RFXtrx hub](/integrations/rfxtrx/). ### Configuration @@ -23,7 +23,7 @@ cover: automatic_add: true ``` -Launch your homeassistant and go the website (e.g `http://localhost:8123`). Push your remote and your device should be added. +Launch your Home Assistant and go the website (e.g., `http://localhost:8123`). Push your remote and your device should be added. Once added it will show an ID (e.g `0b11000102ef9f210010f70`) and you can verify that it works from the frontend. Then you should update your configuration to: @@ -48,7 +48,7 @@ Example configuration: cover: - platform: rfxtrx automatic_add: false - signal_repetitions: 2 + signal_repetitions: 2 # signal_repetitions: 1 for the Somfy covers (avoid to stop the motion after start) devices: 0b1100ce3213c7f210010f70: # Siemens/LightwaveRF name: Bedroom Shutter diff --git a/source/_integrations/cover.template.markdown b/source/_integrations/cover.template.markdown index 81b2d8f5b78e..0cb4936a288c 100644 --- a/source/_integrations/cover.template.markdown +++ b/source/_integrations/cover.template.markdown @@ -5,8 +5,8 @@ ha_category: - Cover ha_release: 0.48 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: template --- The `template` platform can create covers that combine integrations and provides diff --git a/source/_integrations/cover.xiaomi_aqara.markdown b/source/_integrations/cover.xiaomi_aqara.markdown index d7808d039556..d0d4b65528f3 100644 --- a/source/_integrations/cover.xiaomi_aqara.markdown +++ b/source/_integrations/cover.xiaomi_aqara.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Cover" description: "Instructions on how to setup the Xiaomi cover within Home Assistant." -logo: xiaomi.png ha_category: - Cover ha_release: "0.50" ha_iot_class: Local Push +ha_domain: xiaomi_aqara --- diff --git a/source/_integrations/cppm_tracker.markdown b/source/_integrations/cppm_tracker.markdown index b5a67440ae68..0acc267dc77e 100644 --- a/source/_integrations/cppm_tracker.markdown +++ b/source/_integrations/cppm_tracker.markdown @@ -1,11 +1,12 @@ --- -title: "Aruba ClearPass" -description: "Instructions on how to integrate Aruba ClearPass into Home Assistant." +title: Aruba ClearPass +description: Instructions on how to integrate Aruba ClearPass into Home Assistant. logo: aruba.png ha_category: - Presence Detection -ha_release: "0.90" +ha_release: '0.90' ha_iot_class: Local Polling +ha_domain: cppm_tracker --- This platform allows you to detect presence by looking at connected devices to [Aruba Clearpass](https://www.arubanetworks.com/products/security/network-access-control/). diff --git a/source/_integrations/cpuspeed.markdown b/source/_integrations/cpuspeed.markdown index be4aa1045822..49dcd427d254 100644 --- a/source/_integrations/cpuspeed.markdown +++ b/source/_integrations/cpuspeed.markdown @@ -1,11 +1,14 @@ --- -title: "CPU speed" -description: "Instructions on how to integrate CPU speed within Home Assistant." +title: CPU Speed +description: Instructions on how to integrate CPU speed within Home Assistant. logo: cpu.png ha_category: - System Monitor ha_release: pre 0.7 ha_iot_class: Local Push +ha_codeowners: + - '@fabaff' +ha_domain: cpuspeed --- The `cpuspeed` sensor platform to allow you to monitor the current CPU speed. diff --git a/source/_integrations/crimereports.markdown b/source/_integrations/crimereports.markdown index 54fe180d3623..006965860fea 100644 --- a/source/_integrations/crimereports.markdown +++ b/source/_integrations/crimereports.markdown @@ -1,11 +1,12 @@ --- -title: "Crime Reports" -description: "Instructions on how to integrate CrimeReports.com into Home Assistant." +title: Crime Reports +description: Instructions on how to integrate CrimeReports.com into Home Assistant. ha_category: - Social logo: crimereports.png ha_release: 0.42 ha_iot_class: Cloud Polling +ha_domain: crimereports --- The `crimereports` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Crime Reports](https://www.crimereports.com). Your regional emergency services may or may not report data. The sensor only counts incidents from the current day. diff --git a/source/_integrations/cups.markdown b/source/_integrations/cups.markdown index c89545213565..0023de15fadc 100644 --- a/source/_integrations/cups.markdown +++ b/source/_integrations/cups.markdown @@ -1,14 +1,15 @@ --- -title: "CUPS Sensor" -description: "Instructions on how to integrate CUPS sensors into Home Assistant." -logo: cups.png +title: CUPS +description: Instructions on how to integrate CUPS sensors into Home Assistant. ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.32 +ha_codeowners: + - '@fabaff' +ha_domain: cups --- - The `cups` sensor platform is using the open source printing system [CUPS](https://www.cups.org/) to show details about your printers, including the ink levels. It can obtain the informations using a CUPS server or communicating directly with the printer with the Internet Printing Protocol. ## Setup diff --git a/source/_integrations/currencylayer.markdown b/source/_integrations/currencylayer.markdown index 0dbe85504a28..d1b8509d2575 100644 --- a/source/_integrations/currencylayer.markdown +++ b/source/_integrations/currencylayer.markdown @@ -1,14 +1,14 @@ --- -title: "Currencylayer" -description: "Instructions on integrating exchange rates from https://currencylayer.com/ within Home Assistant." +title: currencylayer +description: Instructions on integrating exchange rates from https://currencylayer.com/ within Home Assistant. ha_category: - Finance logo: currencylayer.png ha_iot_class: Cloud Polling ha_release: 0.32 +ha_domain: currencylayer --- - The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides real-time exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 1000 requests per month, and updates every hour. Obtain your API key [here](https://currencylayer.com/product) diff --git a/source/_integrations/daikin.markdown b/source/_integrations/daikin.markdown index 3af3ec3ce100..3424f3df3c4e 100644 --- a/source/_integrations/daikin.markdown +++ b/source/_integrations/daikin.markdown @@ -1,6 +1,6 @@ --- -title: "Daikin AC" -description: "Instructions on how to integrate Daikin AC devices with Home Assistant." +title: Daikin AC +description: Instructions on how to integrate Daikin AC devices with Home Assistant. logo: daikin.png ha_category: - Climate @@ -8,7 +8,12 @@ ha_category: - Switch ha_release: 0.59 ha_iot_class: Local Polling -ha_qa_scale: platinum +ha_config_flow: true +ha_quality_scale: platinum +ha_codeowners: + - '@fredrike' + - '@rofrantz' +ha_domain: daikin --- The `daikin` integration integrates Daikin air conditioning systems into Home Assistant. @@ -22,7 +27,7 @@ There is currently support for the following device types within Home Assistant: ## Supported hardware - The European versions of the Wifi Controller Unit (BRP069A41, 42, 43, 45), which is powered by the [Daikin Online Controller](https://play.google.com/store/apps/details?id=eu.daikin.remoapp) application. The new versions of WiFi Controller Unit (BRP069Bxx) also should work but it have to be confirmed by users. Tested and working device is BRP069B45. -- The Australian version of the Daikin Wifi Controller Unit BRP072A42. Confirmed working on a Daikin Cora Series Reverse Cycle Split System Air Conditioner 2.5kW Cooling FTXM25QVMA with operation mode, temp, fan swing (3d, horizontal, vertical) which is powered by the [DAIKIN Mobile Controller](https://itunes.apple.com/au/app/daikin-mobile-controller/id917168708?mt=8) ([Android version](https://play.google.com/store/apps/details?id=eu.daikin.remoapp)) application. +- The Australian version of the Daikin Wifi Controller Unit BRP072A42. Confirmed working on a Daikin Cora Series Reverse Cycle Split System Air Conditioner 2.5kW Cooling FTXM25QVMA with operation mode, temp, fan swing (3d, horizontal, vertical) which is powered by the [Daikin Mobile Controller](https://itunes.apple.com/au/app/daikin-mobile-controller/id917168708?mt=8) ([Android version](https://play.google.com/store/apps/details?id=eu.daikin.remoapp)) application. - The Australian version of the Daikin Wifi Controller for **AirBase** units (BRP15B61), which is powered by the [Daikin Airbase](https://play.google.com/store/apps/details?id=au.com.daikin.airbase) application. ## Configuration @@ -52,12 +57,12 @@ hosts: The `daikin` climate platform integrates Daikin air conditioning systems into Home Assistant, enabling control of setting the following parameters: -- [**set_hvac_mode**](/integrations/climate/#service-climateset_hvac_mode) (off, heat, cool, auto, or fan only) -- [**target temperature**](https://www.home-assistant.io/integrations/climate#service-climateset_temperature) -- [**turn on/off**](https://www.home-assistant.io/integrations/climate#service-climateturn_on) -- [**fan mode**](https://www.home-assistant.io/integrations/climate#service-climateset_fan_mode) (speed) -- [**swing mode**](https://www.home-assistant.io/integrations/climate#service-climateset_swing_mode) -- [**set_preset_mode**](https://www.home-assistant.io/integrations/climate#service-climateset_preset_mode) (away, none) +- [**set_hvac_mode**](/integrations/climate/#service-climateset_hvac_mode) (`off`, `heat`, `cool`, `heat_cool`, or `fan_only`) +- [**target temperature**](/integrations/climate#service-climateset_temperature) +- [**turn on/off**](/integrations/climate#service-climateturn_on) +- [**fan mode**](/integrations/climate#service-climateset_fan_mode) (speed) +- [**swing mode**](/integrations/climate#service-climateset_swing_mode) +- [**set_preset_mode**](/integrations/climate#service-climateset_preset_mode) (away, none) Current inside temperature is displayed. diff --git a/source/_integrations/danfoss_air.markdown b/source/_integrations/danfoss_air.markdown index 95baa5ec0bd9..d76eb443c2a2 100644 --- a/source/_integrations/danfoss_air.markdown +++ b/source/_integrations/danfoss_air.markdown @@ -1,14 +1,14 @@ --- -title: "Danfoss Air" -description: "How to integrate Danfoss Air HRV in Home Assistant." +title: Danfoss Air +description: How to integrate Danfoss Air HRV in Home Assistant. ha_category: - Climate - Binary Sensor - Sensor - Switch ha_release: 0.87 -logo: danfoss_air.png ha_iot_class: Local Polling +ha_domain: danfoss_air --- The `danfoss_air` integration allows you to access information from your Danfoss Air HRV unit. @@ -49,6 +49,11 @@ The following sensors are supported. - **Extract temperature:** Air temperature of the air extracted from the house. - **Exhaust temperature:** Exhausted air temperature. - **Remaining filter lifetime:** Remaining filter lifetime measured in percent. +- **Humidity:** Relative humidity in percent. +- **Fan step:** Fan step. +- **Exhaust fan speed:** Exhausted fan speed. +- **Supply fan speed:** Supply fan speed. +- **Dial battery:** Dial bettery level in percent. ## Switch diff --git a/source/_integrations/darksky.markdown b/source/_integrations/darksky.markdown index cea4581810b8..2dc3ea938731 100644 --- a/source/_integrations/darksky.markdown +++ b/source/_integrations/darksky.markdown @@ -1,11 +1,13 @@ --- -title: "Dark Sky Sensor" -description: "How to integrate Dark Sky within Home Assistant." -logo: dark_sky.png +title: Dark Sky +description: How to integrate Dark Sky within Home Assistant. ha_category: - Weather -ha_release: "0.30" +ha_release: '0.30' ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' +ha_domain: darksky --- The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location. The location is based on the `longitude` and `latitude` coordinates configured in your `configuration.yaml` file. The coordinates are auto-detected but to take advantage of the hyper-local weather reported by Dark Sky, you can refine them down to your exact home address. GPS coordinates can be found by using [Google Maps](https://www.google.com/maps) and clicking on your home or [Openstreetmap](https://www.openstreetmap.org/). @@ -66,12 +68,12 @@ language: latitude: description: Latitude coordinate to monitor weather of (required if **longitude** is specified). required: false - default: coordinates defined in your `configuration.yaml` + default: coordinates from the Home Assistant configuration type: float longitude: description: Longitude coordinate to monitor weather of (required if **latitude** is specified). required: false - default: coordinates defined in your `configuration.yaml` + default: coordinates from the Home Assistant configuration type: float monitored_conditions: description: Conditions to display in the frontend. @@ -174,7 +176,7 @@ scan_interval: #### Language options -All language options are described in this table that you can use for the dark sky sensor. +All language options are described in this table that you can use for the Dark Sky sensor. |Language|Variable Code| |---|---| diff --git a/source/_integrations/datadog.markdown b/source/_integrations/datadog.markdown index 7a0152f82c6c..634a5d8038fb 100644 --- a/source/_integrations/datadog.markdown +++ b/source/_integrations/datadog.markdown @@ -1,10 +1,10 @@ --- -title: "Datadog" -description: "Send data and events to Datadog." -logo: datadog.png +title: Datadog +description: Send data and events to Datadog. ha_category: - History ha_release: 0.45 +ha_domain: datadog --- The `datadog` integration sends all state changes to [Datadog](https://www.datadoghq.com/) using a [Datadog Agent](https://docs.datadoghq.com/guides/basic_agent_usage/). diff --git a/source/_integrations/ddwrt.markdown b/source/_integrations/ddwrt.markdown index 41210db2eb64..6dd520fe2fb7 100644 --- a/source/_integrations/ddwrt.markdown +++ b/source/_integrations/ddwrt.markdown @@ -1,10 +1,11 @@ --- -title: "DD-WRT" -description: "Instructions on how to integrate DD-WRT based routers into Home Assistant." +title: DD-WRT +description: Instructions on how to integrate DD-WRT based routers into Home Assistant. logo: ddwrt.png ha_category: - Presence Detection ha_release: pre 0.7 +ha_domain: ddwrt --- This platform offers presence detection by looking at connected devices to a [DD-WRT](https://dd-wrt.com/) based router. @@ -44,7 +45,7 @@ verify_ssl: type: boolean default: true wireless_only: - description: Whether to only list devices that are connected directly to the router via WiFi or include those connected via Ethernet or other networked access points as well. + description: Whether to only list devices that are connected directly to the router via Wi-Fi or include those connected via Ethernet or other networked access points as well. required: false type: boolean default: true diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 2fb4a435c8dd..e35dcbdd4b25 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -1,7 +1,6 @@ --- -title: "deCONZ" -description: "Instructions on how to setup Conbee/Raspbee devices with deCONZ from Dresden Elektronik within Home Assistant." -logo: deconz.jpeg +title: deCONZ +description: Instructions on how to setup ConBee/RaspBee devices with deCONZ from dresden elektronik within Home Assistant. ha_category: - Hub - Binary Sensor @@ -12,11 +11,14 @@ ha_category: - Switch ha_release: 0.61 ha_iot_class: Local Push -ha_qa_scale: platinum ha_config_flow: true +ha_quality_scale: platinum +ha_codeowners: + - '@kane610' +ha_domain: deconz --- -[deCONZ](https://www.dresden-elektronik.de/funktechnik/products/software/pc/deconz/) by [Dresden Elektronik](https://www.dresden-elektronik.de) is a software that communicates with Conbee/Raspbee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. +[deCONZ](https://www.dresden-elektronik.de/funk/software/deconz.html) by [dresden elektronik](https://www.dresden-elektronik.de) is a software that communicates with ConBee/RaspBee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. [deCONZ REST API](https://dresden-elektronik.github.io/deconz-rest-doc/). @@ -32,7 +34,7 @@ There is currently support for the following device types within Home Assistant: ## Recommended way of running deCONZ -If you are running Hass.io, an official add-on for Deconz is available in the add-on store. +An official add-on for deCONZ is available in the Home Assistant add-on store. Otherwise, use [community container](https://hub.docker.com/r/marthoc/deconz/) by Marthoc for your deCONZ needs. ### Supported devices @@ -43,7 +45,7 @@ See [deCONZ wiki](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/ Home Assistant will automatically discover deCONZ presence on your network, if `discovery:` is present in your `configuration.yaml` file. -If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Settings** -> **Gateway** -> **Advanced** -> **Authenticate app** in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you're done setting up deCONZ it will be stored as a config entry. +If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Settings** → **Gateway** → **Advanced** → **Authenticate app** in the Phoscon App and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you're done setting up deCONZ it will be stored as a configuration entry. You can manually add deCONZ by going to the integrations page. @@ -61,7 +63,7 @@ logger: ## Troubleshooting -If you are having issues and want to report a problem, always start with making sure that you're on the latest [deCONZ software version](https://github.com/dresden-elektronik/deconz-rest-plugin/releases) and [latest firmware for hardware](https://www.dresden-elektronik.de/rpi/deconz-firmware/?C=M;O=D). +If you are having issues and want to report a problem, always start with making sure that you're on the latest [deCONZ software version](https://github.com/dresden-elektronik/deconz-rest-plugin/releases) and [latest firmware for hardware](http://deconz.dresden-elektronik.de/deconz-firmware/?C=M;O=D). ## Device services @@ -69,13 +71,13 @@ Available services: `configure` and `deconz.device_refresh`. ### Service `deconz.configure` -Set attribute of device in deCONZ using [Rest API](https://dresden-elektronik.github.io/deconz-rest-doc/rest/). +Set attribute of device in deCONZ using [REST-API](https://dresden-elektronik.github.io/deconz-rest-doc/rest/). -| Service data attribute | Optional | Description | -|-----------|----------|-------------| -| `field` | No | String representing a specific device in deCONZ. | -| `entity` | No | String representing a specific Home Assistant entity of a device in deCONZ. | -| `data` | No | Data is a JSON object with what data you want to alter. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------- | +| `field` | No | String representing a specific device in deCONZ. | +| `entity` | No | String representing a specific Home Assistant entity of a device in deCONZ. | +| `data` | No | Data is a JSON object with what data you want to alter. | Either `entity` or `field` must be provided. If both are present, `field` will be interpreted as a subpath under the device path corresponding to the specified `entity`: @@ -103,21 +105,35 @@ Note: deCONZ automatically signals Home Assistant when new sensors are added, bu ## Remote control devices -Remote controls (ZHASwitch category) will not be exposed as regular entities, but as events named `deconz_event` with a payload of `id` and `event`. Id will be the device name from deCONZ and Event will be the momentary state of the switch. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level. +Remote controls (ZHASwitch category) will not be exposed as regular entities, but as events named `deconz_event` with a payload of `id` and `event` and in case of the Aqara Magic Cube also `gesture`. Id will be the device name from deCONZ and Event will be the momentary state of the switch. Gesture is used for some Aqara Magic Cube specific events like: flip 90 degrees, flip 180 degrees, clockwise and counter clockwise rotation. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level. Typical values for switches, the event codes are 4 numbers where the first and last number are of interest here. -| Switch code | Description | -|-------------|-------------| -| 1XXX | Button #1 up to #8 | -| XXX1 | Button hold | -| XXX2 | Button short release | -| XXX3 | Button long release | +| Switch code | Description | +| ----------- | -------------------- | +| 1XXX | Button #1 up to #8 | +| XXX1 | Button hold | +| XXX2 | Button short release | +| XXX3 | Button long release | Where for example on a Philips Hue Dimmer, 2001 would be holding the dim up button. For the IKEA Tradfri remote the first digit equals, 1 for the middle button, 2 for up, 3 for down, 4 for left, and 5 for right (e.g., "event: 1002" for middle button short release). +Specific gestures for the Aqara Magic Cube are: + +| Gesture | Description | +| ------- | ---------------------- | +| 0 | Awake | +| 1 | Shake | +| 2 | Free fall | +| 3 | Flip 90 | +| 4 | Flip 180 | +| 5 | Move on any side | +| 6 | Double tap on any side | +| 7 | Turn clockwise | +| 8 | Turn counter clockwise | + ### Finding your events Navigate to **Developer tools->Events**. In the section **Listen to events** add `deconz_event` and press **START LISTENING**. All events from deCONZ will now be shown and by pushing your remote button while monitoring the log it should be fairly easy to find the events you are looking for. @@ -139,6 +155,7 @@ Currently supported devices as device triggers: - Aqara Mini Switch - Aqara Round Switch - Aqara Square Switch +- Aqara Magic Cube #### Requesting support for new device trigger @@ -197,13 +214,25 @@ automation: brightness: > {% set bri = state_attr('light.lamp', 'brightness') | int %} {{ [bri-30, 0] | max }} + + - alias: 'Turn lamp on when turning cube clockwise' + initial_state: 'on' + trigger: + platform: event + event_type: deconz_event + event_data: + id: remote_control_1 + gesture: 7 + action: + service: light.turn_on + entity_id: light.lamp ``` {% endraw %} -### Appdaemon +### AppDaemon -#### Appdaemon event helper +#### AppDaemon event helper Helper app that creates a sensor `sensor.deconz_event` with a state that represents the id from the last event and an attribute to show the event data. @@ -223,6 +252,7 @@ import appdaemon.plugins.hass.hassapi as hass import datetime from datetime import datetime + class DeconzHelper(hass.Hass): def initialize(self) -> None: self.listen_event(self.event_received, "deconz_event") @@ -232,15 +262,22 @@ class DeconzHelper(hass.Hass): event_id = data["id"] event_received = datetime.now() - self.log("Deconz event received from {}. Event was: {}".format(event_id, event_data)) - self.set_state("sensor.deconz_event", state = event_id, attributes = {"event_data": event_data, "event_received": str(event_received)}) + self.log(f"Deconz event received from {event_id}. Event was: {event_data}") + self.set_state( + "sensor.deconz_event", + state=event_id, + attributes={ + "event_data": event_data, + "event_received": str(event_received), + }, + ) ``` {% endraw %} Note: the event will not be visible before one event gets sent. -#### Appdaemon remote template +#### AppDaemon remote template {% raw %} @@ -255,30 +292,30 @@ remote_control: ```python import appdaemon.plugins.hass.hassapi as hass -class RemoteControl(hass.Hass): +class RemoteControl(hass.Hass): def initialize(self): - if 'event' in self.args: - self.listen_event(self.handle_event, self.args['event']) + if "event" in self.args: + self.listen_event(self.handle_event, self.args["event"]) def handle_event(self, event_name, data, kwargs): - if data['id'] == self.args['id']: - self.log(data['event']) - if data['event'] == 1002: - self.log('Button on') - elif data['event'] == 2002: - self.log('Button dim up') - elif data['event'] == 3002: - self.log('Button dim down') - elif data['event'] == 4002: - self.log('Button off') + if data["id"] == self.args["id"]: + self.log(data["event"]) + if data["event"] == 1002: + self.log("Button on") + elif data["event"] == 2002: + self.log("Button dim up") + elif data["event"] == 3002: + self.log("Button dim down") + elif data["event"] == 4002: + self.log("Button off") ``` {% endraw %} -#### Appdaemon remote template +#### AppDaemon IKEA Tradfri remote template -Community app from [Teachingbirds](https://community.home-assistant.io/u/teachingbirds/summary). This app uses an Ikea Tradfri remote to control Sonos speakers with play/pause, volume up and down, next and previous track. +Community app from [Teachingbirds](https://community.home-assistant.io/u/teachingbirds/summary). This app uses an IKEA Tradfri remote to control Sonos speakers with play/pause, volume up and down, next and previous track. {% raw %} @@ -298,34 +335,36 @@ sonos_remote_control: ```python import appdaemon.plugins.hass.hassapi as hass -class SonosRemote(hass.Hass): +class SonosRemote(hass.Hass): def initialize(self): - self.sonos = self.args['sonos'] - if 'event' in self.args: - self.listen_event(self.handle_event, self.args['event']) + self.sonos = self.args["sonos"] + if "event" in self.args: + self.listen_event(self.handle_event, self.args["event"]) def handle_event(self, event_name, data, kwargs): - if data['id'] == self.args['id']: - if data['event'] == 1002: - self.log('Button toggle') - self.call_service("media_player/media_play_pause", entity_id = self.sonos) - - elif data['event'] == 2002: - self.log('Button volume up') - self.call_service("media_player/volume_up", entity_id = self.sonos) - - elif data['event'] == 3002: - self.log('Button volume down') - self.call_service("media_player/volume_down", entity_id = self.sonos) - - elif data['event'] == 4002: - self.log('Button previous') - self.call_service("media_player/media_previous_track", entity_id = self.sonos) - - elif data['event'] == 5002: - self.log('Button next') - self.call_service("media_player/media_next_track", entity_id = self.sonos) + if data["id"] == self.args["id"]: + if data["event"] == 1002: + self.log("Button toggle") + self.call_service("media_player/media_play_pause", entity_id=self.sonos) + + elif data["event"] == 2002: + self.log("Button volume up") + self.call_service("media_player/volume_up", entity_id=self.sonos) + + elif data["event"] == 3002: + self.log("Button volume down") + self.call_service("media_player/volume_down", entity_id=self.sonos) + + elif data["event"] == 4002: + self.log("Button previous") + self.call_service( + "media_player/media_previous_track", entity_id=self.sonos + ) + + elif data["event"] == 5002: + self.log("Button next") + self.call_service("media_player/media_next_track", entity_id=self.sonos) ``` {% endraw %} @@ -363,7 +402,7 @@ Note that devices in the climate platform identify as sensors, so there is a man The `entity_id` name will be `climate.device_name`, where `device_name` is defined in deCONZ. -#### Verified supported climate devices +### Verified supported climate devices - Bitron Thermostat 902010/32 - Eurotronic SPZB0001 @@ -372,12 +411,14 @@ The `entity_id` name will be `climate.device_name`, where `device_name` is defin Covers are devices like ventilation dampers or smart window covers. -Note that devices in the cover platform identify as lights, so there is a manually curated list that defines which "lights" are covers. You therefore add a cover device as a light device in deCONZ (phoscon app). +Note that devices in the cover platform identify as lights, so there is a manually curated list that defines which "lights" are covers. You therefore add a cover device as a light device in deCONZ (Phoscon App). The `entity_id` name will be `cover.device_name`, where `device_name` is defined in deCONZ. ### Verified supported covers +- IKEA Fyrtur +- IKEA Kadrilj - Keen vents - Xiaomi Aqara Curtain controller @@ -388,19 +429,24 @@ The `entity_id` names will be `light.device_name`, where `device_name` is define ### Verified supported lights - IKEA Trådfri bulb E14 WS Opal 400lm -- IKEA Trådfri Bulb E27 WS Opal 980lm -- IKEA Trådfri Bulb E27 WS Opal 1000lm -- IKEA Trådfri Bulb E27 WS & RGB Opal 600lm -- IKEA Trådfri Bulb GU10 W 400lm +- IKEA Trådfri bulb E14 WS Opal 600lm +- IKEA Trådfri bulb E27 WS clear 806lm +- IKEA Trådfri bulb E27 WS clear 950lm +- IKEA Trådfri bulb E27 WS Opal 980lm +- IKEA Trådfri bulb E27 WS Opal 1000lm +- IKEA Trådfri bulb E27 WS & RGB Opal 600lm +- IKEA Trådfri bulb GU10 W 400lm - IKEA Trådfri FLOALT LED light panel +- Innr BY-265, BY-245 +- OSRAM Classic A60 W clear - LIGHTIFY - OSRAM Flex RGBW - OSRAM Gardenpole RGBW - Philips Hue White A19 - Philips Hue White Ambiance A19 - Philips Hue Hue White ambiance Milliskin (recessed spotlight) LTW013 - Philips Hue LightStrip Plus -- Busch Jaeger ZigBee Light Link univ. relai (6711 U) with ZigBee Light Link control element 6735-84 -- Xiaomi Aqara Smart Led Bulb (white) E27 ZNLDP12LM +- Busch Jaeger Zigbee Light Link univ. relai (6711 U) with Zigbee Light Link control element 6735-84 +- Xiaomi Aqara Smart LED Bulb (white) E27 ZNLDP12LM ## Scene @@ -430,33 +476,34 @@ The `entity_id` name will be `sensor.device_name`, where `device_name` is define - Philips Hue Motion Sensor - IKEA Trådfri Remote - Philips Hue Dimmer Switch - - Xiaomi Cube - Xiaomi Aqara Smart Light Switch - Xiaomi Aqara Smart Wireless Switch - Xiaomi Smart Home Wireless Switch - Temperature Sensor - Xiaomi Temperature/Humidity Sensor +- OpenClose Sensor + - Xiaomi Window / Door Sensor with Temperature ### deCONZ Daylight Sensor -The deCONZ Daylight sensor is a special sensor built into the deCONZ software since version 2.05.12. It is represented in Home Assistant as a sensor called sensor.daylight. The sensor's state value is a string corresponding to the phase of daylight (descriptions below taken from https://github.com/mourner/suncalc, on which the deCONZ implementation is based): - -| Sensor State | Description | -|--------------|-------------| -| sunrise_start | sunrise (top edge of the sun appears on the horizon) | -| sunrise_end | sunrise ends (bottom edge of the sun touches the horizon) | -| golden_hour_1 | morning golden hour (soft light, the best time for photography) | -| solar_noon | solar noon (sun is in the highest position) | -| golden_hour_2 | evening golden hour | -| sunset_start | sunset starts (bottom edge of the sun touches the horizon) | -| sunset_end | sunset (sun disappears below the horizon, evening civil twilight starts) | -| dusk | dusk (evening nautical twilight starts) | -| nautical_dusk | nautical dusk (evening astronomical twilight starts) | -| night_start | night starts (dark enough for astronomical observations) | -| nadir | nadir (darkest moment of the night, the sun is in the lowest position) | -| night_end | night ends (morning astronomical twilight starts) | -| nautical_dawn | nautical dawn (morning nautical twilight starts) | -| dawn | dawn (morning nautical twilight ends, morning civil twilight starts) | +The deCONZ Daylight sensor is a special sensor built into the deCONZ software since version 2.05.12. It is represented in Home Assistant as a sensor called sensor.daylight. The sensor's state value is a string corresponding to the phase of daylight (descriptions below taken from , on which the deCONZ implementation is based): + +| Sensor State | Description | +| ------------- | ------------------------------------------------------------------------ | +| sunrise_start | sunrise (top edge of the sun appears on the horizon) | +| sunrise_end | sunrise ends (bottom edge of the sun touches the horizon) | +| golden_hour_1 | morning golden hour (soft light, the best time for photography) | +| solar_noon | solar noon (sun is in the highest position) | +| golden_hour_2 | evening golden hour | +| sunset_start | sunset starts (bottom edge of the sun touches the horizon) | +| sunset_end | sunset (sun disappears below the horizon, evening civil twilight starts) | +| dusk | dusk (evening nautical twilight starts) | +| nautical_dusk | nautical dusk (evening astronomical twilight starts) | +| night_start | night starts (dark enough for astronomical observations) | +| nadir | nadir (darkest moment of the night, the sun is in the lowest position) | +| night_end | night ends (morning astronomical twilight starts) | +| nautical_dawn | nautical dawn (morning nautical twilight starts) | +| dawn | dawn (morning nautical twilight ends, morning civil twilight starts) | The sensor also has an attribute called "daylight" that has the value `true` when the sensor's state is `golden_hour_1`, `solar_noon`, or `golden_hour_2`, and `false` otherwise. @@ -473,6 +520,7 @@ The `entity_id` name will be `switch.device_name`, where `device_name` is define ### Verified supported switches - Innr SP120 +- Innr ZB-ONOFFPlug-D0005/SmartThings Smart Plug (2019) (without power measurements) - Osram Lightify plug - Osram Outdoor plug - Heiman siren diff --git a/source/_integrations/decora.markdown b/source/_integrations/decora.markdown index 5357de2a2c4f..7071a770d6f3 100644 --- a/source/_integrations/decora.markdown +++ b/source/_integrations/decora.markdown @@ -1,11 +1,12 @@ --- -title: "Leviton Decora" -description: "Instructions on how to setup Leviton Decora Bluetooth dimmers within Home Assistant." +title: Leviton Decora +description: Instructions on how to setup Leviton Decora Bluetooth dimmers within Home Assistant. ha_category: - Light ha_iot_class: Local Polling logo: leviton.png ha_release: 0.37 +ha_domain: decora --- Support for the Decora Bluetooth dimmer switch [Leviton](https://www.leviton.com/en/products/residential/dimmers/automation-smart-home/decora-digital-with-bluetooth-dimmers#t=Products&sort=%40wcs_site_tree_rank%20ascending&layout=card). @@ -31,7 +32,7 @@ devices: keys: mac_address: required: true - description: The bluetooth address of the switch. + description: The Bluetooth address of the switch. type: list keys: name: diff --git a/source/_integrations/decora_wifi.markdown b/source/_integrations/decora_wifi.markdown index 9566535d2d34..0fc326b3ae69 100644 --- a/source/_integrations/decora_wifi.markdown +++ b/source/_integrations/decora_wifi.markdown @@ -1,11 +1,12 @@ --- -title: "Leviton Decora Wi-Fi" -description: "Instructions on how to setup Leviton Decora Smart Wi-Fi switches/dimmers within Home Assistant." +title: Leviton Decora Wi-Fi +description: Instructions on how to setup Leviton Decora Smart Wi-Fi switches/dimmers within Home Assistant. ha_category: - Light ha_iot_class: Cloud Polling logo: leviton.png ha_release: 0.51 +ha_domain: decora_wifi --- Support for [Leviton Decora Wi-Fi](https://www.leviton.com/en/products/lighting-controls/decora-smart-with-wifi) dimmers/switches via the MyLeviton API. @@ -35,4 +36,3 @@ password: required: true type: string {% endconfiguration %} - diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown index bb768586a89d..546e3186420c 100644 --- a/source/_integrations/default_config.markdown +++ b/source/_integrations/default_config.markdown @@ -1,29 +1,30 @@ --- -title: "Default Config" -description: "The default config integration will initate a default configuration for Home Assistant." -logo: home-assistant.png +title: Default Config +description: The default configuration integration will initiate a default configuration for Home Assistant. ha_category: - Other ha_release: 0.88 +ha_domain: default_config --- This integration is a meta-component and configures a default set of integrations for Home Assistant to load. The integrations that will be loaded are: -- [automation](/integrations/automation/) -- [cloud](/integrations/cloud/) -- [config](/integrations/config/) -- [frontend](/integrations/frontend/) -- [history](/integrations/history/) -- [logbook](/integrations/logbook/) -- [map](/integrations/map/) -- [mobile_app](/integrations/mobile_app/) -- [person](/integrations/person/) -- [script](/integrations/script/) -- [ssdp](/integrations/ssdp/) -- [sun](/integrations/sun/) -- [system_health](/integrations/system_health/) -- [updater](/integrations/updater/) -- [zeroconf](/integrations/zeroconf/) +- [Automation](/integrations/automation/) +- [Home Assistant Cloud](/integrations/cloud/) +- [Configuration](/integrations/config/) +- [Frontend](/integrations/frontend/) +- [History](/integrations/history/) +- [Logbook](/integrations/logbook/) +- [Map](/integrations/map/) +- [Mobile App Support](/integrations/mobile_app/) +- [Person](/integrations/person/) +- [Scripts](/integrations/script/) +- [Simple Service Discovery Protocol (SSDP)](/integrations/ssdp/) +- [Sun](/integrations/sun/) +- [System Health](/integrations/system_health/) +- [Updater](/integrations/updater/) +- [Zero-configuration networking (zeroconf)](/integrations/zeroconf/) +- [Zone](/integrations/zone) ## Configuration diff --git a/source/_integrations/delijn.markdown b/source/_integrations/delijn.markdown index bb4ae3c759ca..dcfb3f99f041 100644 --- a/source/_integrations/delijn.markdown +++ b/source/_integrations/delijn.markdown @@ -1,12 +1,14 @@ --- -title: "De Lijn" -description: "Instructions on how to integrate De Lijn (Flemish public transport company) departure times into Home Assistant." +title: De Lijn +description: Instructions on how to integrate De Lijn (Flemish public transport company) departure times into Home Assistant. ha_release: 0.97 -ha_category: +ha_category: - Transport - Sensor ha_iot_class: Cloud Polling -logo: delijn.svg +ha_codeowners: + - '@bollewolle' +ha_domain: delijn --- The `delijn` sensor will give you the departure time of the next bus, tram or subway at a specific stop of the De Lijn public transport network in Flanders (Belgium). @@ -40,7 +42,7 @@ next_departure: type: list keys: stop_id: - description: "ID of the stop, e.g. `200552`." + description: "ID of the stop, e.g., `200552`." required: true type: string number_of_departures: diff --git a/source/_integrations/deluge.markdown b/source/_integrations/deluge.markdown index 14993ca1416c..a63b73380af4 100644 --- a/source/_integrations/deluge.markdown +++ b/source/_integrations/deluge.markdown @@ -1,13 +1,13 @@ --- -title: "Deluge" -description: "Instructions on how to integrate Deluge within Home Assistant." -logo: deluge.png +title: Deluge +description: Instructions on how to integrate Deluge within Home Assistant. ha_category: - Downloading - Sensor - Switch ha_release: 0.57 ha_iot_class: Local Polling +ha_domain: deluge --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/demo.markdown b/source/_integrations/demo.markdown index ecd79f57f4df..86c86f09cd99 100644 --- a/source/_integrations/demo.markdown +++ b/source/_integrations/demo.markdown @@ -1,15 +1,16 @@ --- -title: "Demo platforms" -description: "Instructions on how to use the Platform demos with Home Assistant." -logo: home-assistant.png +title: Demo +description: Instructions on how to use the Platform demos with Home Assistant. ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: demo --- - -The `demo` platform allows you to use integrations which are providing a demo of their implementation. The demo entities are dummies but show you how the actual platform looks like. This way you can run own demonstration instance like the online [Home Assistant demo](/demo/) or `hass --demo-mode` but combined with your own real/functional platforms. +The `demo` platform allows you to use integrations which are providing a demo of their implementation. The demo entities are dummies but show you how the actual platform looks like. This way you can run own demonstration instance like the online [Home Assistant demo](/demo/)but combined with your own real/functional platforms. Available demo platforms: @@ -38,7 +39,12 @@ To integrate a demo platform in Home Assistant, add the following section to you ```yaml # Example configuration.yaml entry -[component]: + +# To load all: +demo: + +# To load for a specific integration: +light: - platform: demo ``` diff --git a/source/_integrations/denon.markdown b/source/_integrations/denon.markdown index 30af1e719db8..ffb1dca5c121 100644 --- a/source/_integrations/denon.markdown +++ b/source/_integrations/denon.markdown @@ -1,11 +1,12 @@ --- -title: "Denon Network Receivers" -description: "Instructions on how to integrate Denon Network Receivers into Home Assistant." +title: Denon Network Receivers +description: Instructions on how to integrate Denon Network Receivers into Home Assistant. logo: denon.png ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.7.2 +ha_domain: denon --- The `denon` platform allows you to control a [Denon Network Receivers](https://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon AVR] platform. diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index d2cc4a62955c..871a3459d4b1 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -1,11 +1,12 @@ --- -title: "Denon AVR Network Receivers" -description: "Instructions on how to integrate Denon AVR Network Receivers into Home Assistant." +title: Denon AVR Network Receivers +description: Instructions on how to integrate Denon AVR Network Receivers into Home Assistant. logo: denon.png ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.7.2 +ha_domain: denonavr --- The `denonavr` platform allows you to control a [Denon Network Receivers](https://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon] platform. @@ -94,4 +95,14 @@ A few notes: - To remotely power on Marantz receivers with Home Assistant, the Auto-Standby feature must be enabled in the receiver's settings. - Sound mode: The command to set a specific sound mode is different from the value of the current sound mode reported by the receiver (sound_mode_raw). There is a key-value structure (sound_mode_dict) that matches the raw sound mode to one of the possible commands to set a sound mode (for instance {'MUSIC':['PLII MUSIC']}. If you get a "Not able to match sound mode" warning, please open an issue on the [denonavr library](https://github.com/scarface-4711/denonavr), stating which raw sound mode could not be matched so it can be added to the matching dictionary. You can find the current raw sound mode under "Development Tools/States" in the front panel. + +#### Service `denonavr.get_command` + +Generic commands are supported, in particular, any command supported by the telnet protocol can be sent to `/goform/formiPhoneAppDirect.xml`, e.g., `/goform/formiPhoneAppDirect.xml?VSMONI2` to switch HDMI outputs on supported receivers. IR remote codes can also be sent to this endpoint, e.g., "/goform/formiPhoneAppDirect.xml?RCKSK0410370" as a mute toggle. A comprehensive list of telnet protocol commands is available at and a full list of IR codes at + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------- | +| `entity_id` | no | Name of entity to send command to. For example `media_player.marantz`| +| `command` | no | Command to send to device, e.g., `/goform/formiPhoneAppDirect.xml?VSMONI2`| + [Denon]: /integrations/denon diff --git a/source/_integrations/derivative.markdown b/source/_integrations/derivative.markdown new file mode 100644 index 000000000000..95415ec65d15 --- /dev/null +++ b/source/_integrations/derivative.markdown @@ -0,0 +1,82 @@ +--- +title: Derivative +description: Instructions on how to integrate Derivative Sensor into Home Assistant. +ha_category: + - Utility + - Energy +ha_release: 0.105 +ha_iot_class: Local Push +logo: derivative.png +ha_qa_scale: internal +ha_codeowners: + - '@afaucogney' +ha_domain: derivative +--- + +The `derivative` platform creates a sensor that estimates the derivative of the values provided by a source sensor. +Derivative sensors are updated upon changes of the **source**. + +## Configuration + +To enable Derivative Sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: derivative + source: sensor.current_speed +``` + +{% configuration %} +source: + description: The entity ID of the sensor providing numeric readings + required: true + type: string +name: + description: Name to use in the frontend. + required: false + default: source entity ID meter + type: string +round: + description: Round the calculated derivative value to at most N decimal places. + required: false + default: 3 + type: integer +unit_prefix: + description: Metric unit to prefix the derivative result ([Wikipedia](https://en.wikipedia.org/wiki/Unit_prefix)]). Available symbols are "n" (1e-9), "µ" (1e-6), "m" (1e-3), "k" (1e3), "M" (1e6), "G" (1e9), "T" (1e12). + required: false + default: None + type: string +unit_time: + description: SI unit of time to integrate over. Available units are s, min, h, d. + required: false + default: h + type: string +unit: + description: Unit of Measurement to be used for the derivative. + required: false + type: string +time_window: + description: The time window in which to calculate the derivative. This is useful for sensor that output discrete values. By default the derivative is calculated between two consecutive updates. + default: 0 + required: false + type: time +{% endconfiguration %} + +## Temperature example + +For example, you have a temperature sensor `sensor.temperature` that outputs a value every few seconds, but rounds to the nearest half number. +That means that two consecutive output values might be the same (so the derivative is `Δy/Δx=0` because `Δy=0` !) +However, the temperature might actually be changing over time. +In order to capture this, you should use a `time_window`, such that immediate jumps don't result in high derivatives and that after the next sensor update, the derivatives doesn't vanish to zero. +An example configuration that uses `time_window` is + +```yaml +sensor: + - platform: derivative + source: sensor.temperature + name: Temperature change per hour + round: 1 + unit_time: h + time_window: "00:30:00" # we look at the change over the last half hour +``` diff --git a/source/_integrations/deutsche_bahn.markdown b/source/_integrations/deutsche_bahn.markdown index 1ce069e50b16..6ecb09bfbcfb 100644 --- a/source/_integrations/deutsche_bahn.markdown +++ b/source/_integrations/deutsche_bahn.markdown @@ -1,14 +1,13 @@ --- -title: "Deutsche Bahn" -description: "Instructions on how to integrate timetable data for traveling in Germany within Home Assistant." +title: Deutsche Bahn +description: Instructions on how to integrate timetable data for traveling in Germany within Home Assistant. ha_category: - Transport -logo: db.png ha_iot_class: Cloud Polling ha_release: 0.14 +ha_domain: deutsche_bahn --- - The `deutsche_bahn` sensor will give you the departure time of the next train for the given connection. In case of a delay, the delay is also shown. Additional details are used to inform about, e.g., the type of the train, price, and if it is on time. To enable this sensor, add the following lines to your `configuration.yaml` file: diff --git a/source/_integrations/device_automation.markdown b/source/_integrations/device_automation.markdown index 5f9dc1a1b80b..90b57539d3ff 100644 --- a/source/_integrations/device_automation.markdown +++ b/source/_integrations/device_automation.markdown @@ -1,10 +1,12 @@ --- -title: "Device Automation" -logo: home-assistant.png +title: Device Automation ha_category: - Automation -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: device_automation --- Device Automations is a plugin for the automation integration to allow other integrations to provide device specific triggers, conditions and actions. diff --git a/source/_integrations/device_sun_light_trigger.markdown b/source/_integrations/device_sun_light_trigger.markdown index 1b896c2acea3..6ff8ccde1d26 100644 --- a/source/_integrations/device_sun_light_trigger.markdown +++ b/source/_integrations/device_sun_light_trigger.markdown @@ -1,11 +1,11 @@ --- -title: "Presence based lights" -description: "Instructions on how to automate your lights with Home Assistant." -logo: home-assistant.png +title: Presence-based Lights +description: Instructions on how to automate your lights with Home Assistant. ha_category: - Automation -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal +ha_domain: device_sun_light_trigger --- Home Assistant has a built-in integration called `device_sun_light_trigger` to help you automate your lights. The integration will: @@ -52,5 +52,5 @@ device_sun_light_trigger: light_group: group.living_room light_profile: relax device_group: group.my_devices - disable_turn_off: 1 -``` + disable_turn_off: true +``` diff --git a/source/_integrations/device_tracker.markdown b/source/_integrations/device_tracker.markdown index b1207f6aef47..608bfa4b0330 100644 --- a/source/_integrations/device_tracker.markdown +++ b/source/_integrations/device_tracker.markdown @@ -1,11 +1,11 @@ --- -title: "Device Tracker" -description: "Instructions on how to setup device tracking within Home Assistant." -logo: home-assistant.png +title: Device Tracker +description: Instructions on how to setup device tracking within Home Assistant. ha_category: - Presence Detection -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_domain: device_tracker --- The device tracker allows you to track devices in Home Assistant. This can happen by querying your wireless router or by having applications push location info. @@ -23,20 +23,18 @@ device_tracker: password: YOUR_PASSWORD new_device_defaults: track_new_devices: true - hide_if_away: false ``` The following optional parameters can be used with any platform:
    - Device tracker will only look for global settings under the configuration of the first configured platform. + Device tracker will only look for the following global settings under the configuration of the first configured platform:
    | Parameter | Default | Description | |----------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `interval_seconds` | 12 | Seconds between each scan for new devices | +| `interval_seconds` | 12 | Seconds between each scan for new devices. This only applies to local device trackers, not applications that push updates. | | `consider_home` | 180 | Seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. `consider_home` helps prevent false alarms in presence detection when using IP scanners such as Nmap. `consider_home` accepts various time representations, (e.g., the following all represents 3 minutes: `180`, `0:03`, `0:03:00`) | -| `new_device_defaults`| | Default values for new discovered devices. Available options `track_new_devices` (default: `true`), `hide_if_away` (default: `false`) |
    @@ -68,7 +66,7 @@ As of 0.94 `known_devices.yaml` is being phased out and no longer used by all tr
    -Once `device_tracker` is enabled, a file will be created in your config dir named `known_devices.yaml`. Edit this file to adjust which devices to be tracked. +Once `device_tracker` is enabled, a file will be created in your configuration dir named `known_devices.yaml`. Edit this file to adjust which devices to be tracked. Here's an example configuration for a single device: @@ -78,12 +76,11 @@ devicename: mac: EA:AA:55:E7:C6:94 picture: https://www.home-assistant.io/images/favicon-192x192.png track: true - hide_if_away: false ```
    -In the example above, `devicename` refers to the detected name of the device. For instance, `my_iphone`. +In the example above, `devicename` refers to the detected name of the device. For example, with `nmap`, this will be the MAC address (with byte separators omitted).
    @@ -91,11 +88,10 @@ In the example above, `devicename` refers to the detected name of the device. F |----------------|-------------------------------|---------------------------------------------------------------------------------------------------------| | `name` | Host name or "Unnamed Device" | The friendly name of the device. | | `mac` | None | The MAC address of the device. Add this if you are using a network device tracker like Nmap or SNMP. | -| `picture` | None | A picture that you can use to easily identify the person or device. You can also save the image file in a folder "www" in the same location (can be obtained from developer tools) where you have your configuration.yaml file and just use `picture: /local/favicon-192x192.png`. The path 'local' is mapped to the 'www' folder you create. | +| `picture` | None | A picture that you can use to easily identify the person or device. You can also save the image file in a folder "www" in the same location (can be obtained from developer tools) where you have your `configuration.yaml` file and just use `picture: /local/favicon-192x192.png`. The path 'local' is mapped to the 'www' folder you create. | | `icon` | mdi:account | An icon for this device (use as an alternative to `picture`). | | `gravatar` | None | An email address for the device's owner. If provided, it will override `picture`. | | `track` | [uses platform setting] | If `yes`/`on`/`true` then the device will be tracked. Otherwise its location and state will not update. | -| `hide_if_away` | false | If `yes`/`on`/`true` then the device will be hidden if it is not at home. | | `consider_home` | [uses platform setting] | Seconds to wait till marking someone as not home after not being seen. Allows you to override the global `consider_home` setting from the platform configuration on a per device level. | ## Device states diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index bdde83a6e2e1..678a65cd0926 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -1,11 +1,11 @@ --- title: "MQTT Device Tracker" description: "Instructions on how to use MQTT to track devices in Home Assistant." -logo: mqtt.png ha_category: - Presence Detection ha_iot_class: Configurable ha_release: 0.7.3 +ha_domain: mqtt --- @@ -54,13 +54,14 @@ source_type: ```yaml # Complete configuration.yaml entry device_tracker: - devices: - paulus_oneplus: 'location/paulus' - annetherese_n4: 'location/annetherese' - qos: 1 - payload_home: 'present' - payload_not_home: 'not present' - source_type: bluetooth + - platform: mqtt + devices: + paulus_oneplus: 'location/paulus' + annetherese_n4: 'location/annetherese' + qos: 1 + payload_home: 'present' + payload_not_home: 'not present' + source_type: bluetooth ``` ## Usage diff --git a/source/_integrations/device_tracker.mysensors.markdown b/source/_integrations/device_tracker.mysensors.markdown index 88d645f68b65..b6a14fec11af 100644 --- a/source/_integrations/device_tracker.mysensors.markdown +++ b/source/_integrations/device_tracker.mysensors.markdown @@ -1,27 +1,27 @@ --- title: "MySensors Device Tracker" description: "Instructions on how to use MySensors to track devices in Home Assistant." -logo: mysensors.png ha_category: - DIY - Presence Detection ha_release: 0.38 ha_iot_class: Local Push +ha_domain: mysensors --- -Integrates MySensors device trackers into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors device trackers into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following sensor types are supported: -##### MySensors version 2.0 and higher +## MySensors version 2.0 and higher -S_TYPE | V_TYPE --------------------|--------------------------------------- -S_GPS | V_POSITION +| S_TYPE | V_TYPE | +| ------ | ---------- | +| S_GPS | V_POSITION | -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. -### MySensors 2.x example sketch +## MySensors 2.x example sketch ```cpp /** @@ -95,6 +95,3 @@ void loop() } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/device_tracker.xiaomi.markdown b/source/_integrations/device_tracker.xiaomi.markdown index 12042f1b1ac2..e6e5e8eb2be3 100644 --- a/source/_integrations/device_tracker.xiaomi.markdown +++ b/source/_integrations/device_tracker.xiaomi.markdown @@ -1,10 +1,10 @@ --- title: "Xiaomi Router" description: "Instructions on how to integrate Xiaomi routers into Home Assistant." -logo: xiaomi.png ha_category: - Presence Detection ha_release: 0.36 +ha_domain: xiaomi --- The `xiaomi` platform offers presence detection by looking at connected devices to a [Xiaomi](http://miwifi.com) router. @@ -43,3 +43,6 @@ See the [device tracker integration page](/integrations/device_tracker/) for ins To ensure that your router is compatible, navigate to `http://YOUR_ROUTER_IP/api/misystem/devicelist`. You should see a listing of the device currently connected to your router. + +However, some users report that even when the previous URL does not work, they have been able to integrate their Mi Router 3 in Home Assistant. E.g., some users with the Mi Router 3 and firmware version 2.10.46 Stable have integrated their routers successfully and an alternative URL to test integration with is `http://YOUR_ROUTER_IP/cgi-bin/luci/api/misystem/devicelist`. Navigating to this page should show the `{"code":401,"msg":"Invalid token"}` message. + diff --git a/source/_integrations/device_trigger.mqtt.markdown b/source/_integrations/device_trigger.mqtt.markdown new file mode 100644 index 000000000000..8a843437826e --- /dev/null +++ b/source/_integrations/device_trigger.mqtt.markdown @@ -0,0 +1,75 @@ +--- +title: "MQTT Device Trigger" +description: "Instructions on how to integrate MQTT device triggers within Home Assistant." +ha_category: + - Device Automation +ha_release: 0.106 +ha_iot_class: Configurable +ha_domain: mqtt +--- + +The `mqtt` device trigger platform uses an MQTT message payload to generate device trigger events. + +An MQTT device trigger is a better option than a [binary sensor](/integrations/binary_sensor.mqtt/) for buttons, remote controls etc. + +## Configuration + +MQTT device triggers are only supported through [MQTT discovery](/docs/mqtt/discovery/), manual setup through `configuration.yaml` is not supported. +The discovery topic needs to be: `/device_automation/[/]/config`. + +{% configuration %} +automation_type: + description: The type of automation, must be 'trigger'. + required: true + type: string +payload: + description: Optional payload to match the payload being sent over the topic. + required: false + type: string +qos: + description: The maximum QoS level to be used when receiving messages. + required: false + type: integer + default: 0 +topic: + description: The MQTT topic subscribed to receive trigger events. + required: true + type: string +type: + description: "The type of the trigger, e.g. `button_short_press`. Entries supported by the frontend: `button_short_press`, `button_short_release`, `button_long_press`, `button_long_release`, `button_double_press`, `button_triple_press`, `button_quadruple_press`, `button_quintuple_press`. If set to an unsupported value, will render as `subtype type`, e.g. `First button spammed` with `type` set to `spammed` and `subtype` set to `button_1`" + required: true + type: string +subtype: + description: "The subtype of the trigger, e.g. `button_1`. Entries supported by the frontend: `turn_on`, `turn_off`, `button_1`, `button_2`, `button_3`, `button_4`, `button_5`, `button_6`. If set to an unsupported value, will render as `subtype type`, e.g. `left_button pressed` with `type` set to `button_short_press` and `subtype` set to `left_button`" + required: true + type: string +device: + description: "Information about the device this device trigger is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html)." + required: true + type: map + keys: + connections: + description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." + required: false + type: [list, map] + identifiers: + description: A list of IDs that uniquely identify the device. For example a serial number. + required: false + type: [list, string] + manufacturer: + description: The manufacturer of the device. + required: false + type: string + model: + description: The model of the device. + required: false + type: string + name: + description: The name of the device. + required: false + type: string + sw_version: + description: The firmware version of the device. + required: false + type: string +{% endconfiguration %} diff --git a/source/_integrations/dht.markdown b/source/_integrations/dht.markdown index 3a366372ed8e..519844684533 100644 --- a/source/_integrations/dht.markdown +++ b/source/_integrations/dht.markdown @@ -1,14 +1,14 @@ --- -title: "DHT Sensor" -description: "Instructions on how to integrate DHTxx sensors within Home Assistant." +title: DHT Sensor +description: Instructions on how to integrate DHTxx sensors within Home Assistant. ha_category: - DIY ha_release: 0.7 logo: dht.png ha_iot_class: Local Polling +ha_domain: dht --- - The `dht` sensor platform allows you to get the current temperature and humidity from a DHT11, DHT22 or AM2302 device. ## Configuration diff --git a/source/_integrations/dialogflow.markdown b/source/_integrations/dialogflow.markdown index 39634189b375..2e7b45ec0417 100644 --- a/source/_integrations/dialogflow.markdown +++ b/source/_integrations/dialogflow.markdown @@ -1,15 +1,17 @@ --- -title: "Dialogflow" -description: "Instructions on how integrate Dialogflow with Home Assistant." +title: Dialogflow +description: Instructions on how integrate Dialogflow with Home Assistant. logo: dialogflow.png ha_category: - Voice ha_release: 0.56 +ha_config_flow: true +ha_domain: dialogflow --- The `dialogflow` integration is designed to be used with the [webhook](https://dialogflow.com/docs/fulfillment#webhook) integration of [Dialogflow](https://dialogflow.com/). When a conversation ends with a user, Dialogflow sends an action and parameters to the webhook. -To be able to receive messages from DialogFlow, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP integration ([docs](/integrations/http/#base_url)). Dialogflow will return fallback answers if your server does not answer or takes too long (more than 5 seconds). +To be able to receive messages from Dialogflow, your Home Assistant instance needs to be accessible from the web and you need to have the `base_url` configured for the HTTP integration ([documentation](/integrations/http/#base_url)). Dialogflow will return fallback answers if your server does not answer or takes too long (more than 5 seconds). Dialogflow could be [integrated](https://dialogflow.com/docs/integrations/) with many popular messaging, virtual assistant and IoT platforms. @@ -38,7 +40,7 @@ To get the webhook URL, go to the integrations page in the configuration screen - Select name, language (if you are planning to use Google Actions check their [supported languages](https://support.google.com/assistant/answer/7108196?hl=en)) and time zone - Click "Save" - Now go to "Fulfillment" (in the left menu) -- Enable Webhook and set your Dialogflow webhook url as the endpoint, e.g., `https://myhome.duckdns.org/api/webhook/800b4cb4d27d078a8871656a90854a292651b20635685f8ea23ddb7a09e8b417` +- Enable Webhook and set your Dialogflow webhook URL as the endpoint, e.g., `https://myhome.duckdns.org/api/webhook/800b4cb4d27d078a8871656a90854a292651b20635685f8ea23ddb7a09e8b417` - Click "Save" - Create a new intent - Below "User says" write one phrase that you, the user, will tell Dialogflow, e.g., `What is the temperature at home?` @@ -51,7 +53,7 @@ To get the webhook URL, go to the integrations page in the configuration screen
    - The V1 api will be deprecated on October 23, 2019. If you are still using the V1 API, it is recommended to change your settings in Dialogflow to use the V2 API. No changes to your intents yaml configuration need to take place after upgrading to the V2 API. Change to the V2 API by clicking on the cog button [here](https://console.dialogflow.com/) and then select the V2 API. + The V1 API will be deprecated on October 23, 2019. If you are still using the V1 API, it is recommended to change your settings in Dialogflow to use the V2 API. No changes to your intents YAML configuration need to take place after upgrading to the V2 API. Change to the V2 API by clicking on the cog button [here](https://console.dialogflow.com/) and then select the V2 API.
    diff --git a/source/_integrations/digital_ocean.markdown b/source/_integrations/digital_ocean.markdown index 7ff86f52b5ff..912c30a8ec76 100644 --- a/source/_integrations/digital_ocean.markdown +++ b/source/_integrations/digital_ocean.markdown @@ -1,13 +1,15 @@ --- -title: "Digital Ocean" -description: "Instructions on how to integrate the Digital Ocean within Home Assistant." +title: Digital Ocean +description: Instructions on how to integrate the Digital Ocean within Home Assistant. ha_category: - System Monitor - Binary Sensor - Switch -ha_release: "0.30" -logo: digital_ocean.png +ha_release: '0.30' ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' +ha_domain: digital_ocean --- The `digital_ocean` integration allows you to access the information about your [Digital Ocean](https://www.digitalocean.com/) droplets from Home Assistant. diff --git a/source/_integrations/digitalloggers.markdown b/source/_integrations/digitalloggers.markdown index c725facab7f3..5d0ab4920d26 100644 --- a/source/_integrations/digitalloggers.markdown +++ b/source/_integrations/digitalloggers.markdown @@ -1,11 +1,11 @@ --- -title: "Digital Loggers Switch" -description: "Instructions on how to integrate Digital Loggers DIN III relays into Home Assistant." -logo: digitalloggers.png +title: Digital Loggers +description: Instructions on how to integrate Digital Loggers DIN III relays into Home Assistant. ha_category: - Switch ha_release: 0.35 ha_iot_class: Local Polling +ha_domain: digitalloggers --- The `digitalloggers` switch platform allows you to control the state of your [Digital Loggers](https://www.digital-loggers.com/dinfaqs.html) switches. diff --git a/source/_integrations/directv.markdown b/source/_integrations/directv.markdown index 2f28a1a3df8b..6b8c3ae2d709 100644 --- a/source/_integrations/directv.markdown +++ b/source/_integrations/directv.markdown @@ -1,88 +1,51 @@ --- -title: "DirecTV" -description: "Instructions on how to integrate DirecTV receivers into Home Assistant." -logo: directv.png +title: DirecTV +description: Instructions on how to integrate DirecTV receivers into Home Assistant. ha_category: - Media Player ha_release: 0.25 ha_iot_class: Local Polling +ha_domain: directv +ha_config_flow: true +ha_codeowners: + - '@ctalkington' --- -Master [DirecTV](https://www.directv.com/) receivers (ie: those that have tuners) will be automatically discovered if you enable the [discovery integration](/integrations/discovery/) and the receiver is powered-on. Slave/RVU client/Genie boxes will also be discovered, but only if they are also online at the time of discovery. +The DirecTV platform allows you to control a [DirecTV](https://www.directv.com) receiver and its client devices. + +### Requirements + +For proper integration with Home Assistant, your DirecTV device settings should allow "External Access". + +This is done via series of settings found via "Menu > Settings & Help > Settings > Whole Home > External Device": + +- External Access: Allow +- Current Program: Allow +- Recordings: Allow + +### Configuration + +Go to the integrations page in your configuration and click on new integration -> DirecTV. +If your DirecTV device is on, it has likely been discovered already and you just have to confirm the detected device. + +### YAML Configuration + +Manual configuration of your DirecTV device is also possible, add the following to your `configuration.yaml` file: -To ensure that your DirecTV boxes are always found and configured, they should be added into your `configuration.yaml`. ```yaml # Example configuration.yaml entry -media_player: - - platform: directv +directv: + - host: IP_ADDRESS ``` {% configuration %} host: - description: The IP address or the hostname of the device. Use only if you don't want to scan for devices. - required: false - type: string -port: - description: The port your receiver is using. - required: false - default: 8080 - type: integer -name: - description: Use to give a specific name to the device. - required: false - default: DirecTV Receiver - type: string -device: - description: Use to specify a particular receiver in a Genie setup. - required: false + description: "The hostname or IP of the DirecTV receiver, e.g., `192.168.0.10`." + required: true type: string {% endconfiguration %} -To find valid device IDs, open `http://:8080/info/getLocations` in a web browser. For each Genie slave, you will find a variable `clientAddr` in the response, and this should be used for `device` in `configuration.yaml` - -For example, a response such as: - -```json -{ - "locations": [ - { - "clientAddr": "0", - "locationName": "MASTER GENIE SERVER", - "tunerBond": true - }, - { - "clientAddr": "5009591D6969", - "locationName": "SOME SLAVE GENIE" - } - ], - "status": { - "code": 200, - "commandResult": 0, - "msg": "OK.", - "query": "/info/getLocations" - } -} -``` - -Could be formatted into `configuration.yaml` like so: - -```yaml -media_player: -  - platform: directv - host: 192.168.1.10 - port: 8080 - name: Main DirecTV Box - device: 0 - - platform: directv - host: 192.168.1.10 - port: 8080 - name: Bedroom DirecTV - device: 5009591D6969 -``` - -It is important to notice that the host and port variables for slave/Genie receivers are the same as the master receiver. - ## Services ### Media control services diff --git a/source/_integrations/discogs.markdown b/source/_integrations/discogs.markdown index d2b58f61764b..d0d1eef93c02 100644 --- a/source/_integrations/discogs.markdown +++ b/source/_integrations/discogs.markdown @@ -1,11 +1,14 @@ --- -title: Discogs Sensor -description: "Instructions on how to set up Discogs sensors within Home Assistant." +title: Discogs +description: Instructions on how to set up Discogs sensors within Home Assistant. ha_category: - Multimedia ha_release: 0.61 logo: discogs.png ha_iot_class: Cloud Polling +ha_codeowners: + - '@thibmaek' +ha_domain: discogs --- The `discogs` platform allows you to see the current amount of records in your [Discogs](https://www.discogs.com) collection. diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown index a3331c40ebb0..ac438ce96e45 100644 --- a/source/_integrations/discord.markdown +++ b/source/_integrations/discord.markdown @@ -1,10 +1,11 @@ --- -title: "Discord" -description: "Instructions on how to add Discord notifications to Home Assistant." +title: Discord +description: Instructions on how to add Discord notifications to Home Assistant. logo: discord.png ha_category: - Notifications ha_release: 0.37 +ha_domain: discord --- The [Discord service](https://discordapp.com/) is a platform for the notify component. This allows integrations to send messages to the user using Discord. @@ -85,4 +86,4 @@ For more information about creating and authorizing bots, visit the [OAuth2 info To use notifications effectively, please see the [getting started with automation page](/getting-started/automation/). -Images are uploaded to Discord when a message is sent. As such, a local path to the image is required (i.e. `/config/www/garage.jpg` as opposed to `/local/garage.jpg`), and updating an image after sending it in a message will not update the message in Discord. +Images are uploaded to Discord when a message is sent. As such, a local path to the image is required (i.e., `/config/www/garage.jpg` as opposed to `/local/garage.jpg`), and updating an image after sending it in a message will not update the message in Discord. diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown index c2d84d37f76d..929d55d6096c 100644 --- a/source/_integrations/discovery.markdown +++ b/source/_integrations/discovery.markdown @@ -1,14 +1,14 @@ --- -title: "Discovery" -description: "Instructions on how to setup Home Assistant to discover new devices." -logo: home-assistant.png +title: Discovery +description: Instructions on how to setup Home Assistant to discover new devices. ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_domain: discovery --- -Home Assistant can discover and automatically configure [zeroconf](https://en.wikipedia.org/wiki/Zero-configuration_networking)/[mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) and [uPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play) devices on your network. Currently the `discovery` integration can detect: +Home Assistant can discover and automatically configure [zeroconf](https://en.wikipedia.org/wiki/Zero-configuration_networking)/[mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) and [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play) devices on your network. Currently the `discovery` integration can detect: * [Apple TV](/integrations/apple_tv/) * [Belkin WeMo switches](/integrations/wemo/) @@ -19,18 +19,15 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi * [DLNA DMR enabled devices](/integrations/dlna_dmr) * [Enigma2 media player](/integrations/enigma2) * [Frontier Silicon internet radios](/integrations/frontier_silicon) - * [Google Cast](/integrations/cast) * [Linn / Openhome](/integrations/openhome) * [Logitech Harmony Hub](/integrations/harmony) - * [Logitech media server (Squeezebox)](/integrations/squeezebox) - * [Netgear routers](/integrations/netgear) + * [Logitech Media Server (Squeezebox)](/integrations/squeezebox) + * [NETGEAR routers](/integrations/netgear) * [Panasonic Viera](/integrations/panasonic_viera) * [Philips Hue](/integrations/hue) - * [Plex media server](/integrations/plex#media-player) * [Roku media player](/integrations/roku#media-player) * [SABnzbd downloader](/integrations/sabnzbd) * [Samsung SyncThru Printer](/integrations/syncthru) - * [Samsung TVs](/integrations/samsungtv) * [Sonos speakers](/integrations/sonos) * [Telldus Live](/integrations/tellduslive/) * [Wink](/integrations/wink/) @@ -38,23 +35,23 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi * [Yeelight Sunflower bulb](/integrations/yeelightsunflower/) * [Xiaomi Gateway (Aqara)](/integrations/xiaomi_aqara/) -It will be able to add Google Chromecasts and Belkin WeMo switches automatically, +It will be able to add Belkin WeMo switches automatically, for Philips Hue it will require some configuration from the user.
    -Zeroconf discoverable integrations [Axis](/integrations/axis/)/[ESPHome](/integrations/esphome/)/[HomeKit](/integrations/homekit_controller/)/[Tradfri](/integrations/tradfri/) have been migrated to use [zeroconf](/integrations/zeroconf) integration to initiate discovery. +Zeroconf discoverable integrations [Axis](/integrations/axis/)/[ESPHome](/integrations/esphome/)/[HomeKit](/integrations/homekit_controller/)/[Tradfri](/integrations/tradfri/)/[Google Cast](/integrations/cast/) have been migrated to use [zeroconf](/integrations/zeroconf) integration to initiate discovery.
    -To load this component, add the following lines to your `configuration.yaml`: +To load this integration, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry discovery: ignore: - sonos - - samsung_tv + - samsung_printer enable: - homekit ``` @@ -80,20 +77,17 @@ Valid values for ignore are: * `directv`: DirecTV receivers * `enigma2`: Enigma2 media players * `frontier_silicon`: Frontier Silicon internet radios - * `google_cast`: Google Cast * `harmony`: Logitech Harmony Hub * `igd`: Internet Gateway Device - * `logitech_mediaserver`: Logitech media server (Squeezebox) - * `netgear_router`: Netgear routers + * `logitech_mediaserver`: Logitech Media Server (Squeezebox) + * `netgear_router`: NETGEAR routers * `octoprint`: Octoprint * `openhome`: Linn / Openhome * `panasonic_viera`: Panasonic Viera * `philips_hue`: Philips Hue - * `plex_mediaserver`: Plex media server * `roku`: Roku media player * `sabnzbd`: SABnzbd downloader * `samsung_printer`: Samsung SyncThru Printer - * `samsung_tv`: Samsung TVs * `sonos`: Sonos speakers * `songpal` : Songpal * `tellstick`: Telldus Live @@ -110,7 +104,7 @@ Valid values for enable are: ### UPnP -Home Assistant must be on the same network as the devices for uPnP discovery to work. +Home Assistant must be on the same network as the devices for UPnP discovery to work. If running Home Assistant in a [Docker container](/docs/installation/docker/) use switch `--net=host` to put it on the host's network. ### Windows diff --git a/source/_integrations/dlib_face_detect.markdown b/source/_integrations/dlib_face_detect.markdown index a55723d655ad..6703775b1999 100644 --- a/source/_integrations/dlib_face_detect.markdown +++ b/source/_integrations/dlib_face_detect.markdown @@ -1,10 +1,10 @@ --- -title: "Dlib Face Detect" -description: "Instructions on how to integrate Dlib Face Detect into Home Assistant." -logo: dlib.png +title: Dlib Face Detect +description: Instructions on how to integrate Dlib Face Detect into Home Assistant. ha_category: - Image Processing ha_release: 0.44 +ha_domain: dlib_face_detect --- The `dlib_face_detect` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform enables face detection from cameras, and can fire events with attributes. diff --git a/source/_integrations/dlib_face_identify.markdown b/source/_integrations/dlib_face_identify.markdown index 0709fc15bd11..bab93409aad2 100644 --- a/source/_integrations/dlib_face_identify.markdown +++ b/source/_integrations/dlib_face_identify.markdown @@ -1,10 +1,10 @@ --- -title: "Dlib Face Identify" -description: "Instructions on how to integrate Dlib Face Identify into Home Assistant." -logo: dlib.png +title: Dlib Face Identify +description: Instructions on how to integrate Dlib Face Identify into Home Assistant. ha_category: - Image Processing ha_release: 0.44 +ha_domain: dlib_face_identify --- The `dlib_face_identify` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform allow you to identify persons on camera and fire an event with identify persons. diff --git a/source/_integrations/dlink.markdown b/source/_integrations/dlink.markdown index e43e03c10f42..caa1b0195df2 100644 --- a/source/_integrations/dlink.markdown +++ b/source/_integrations/dlink.markdown @@ -1,11 +1,12 @@ --- -title: "D-Link Switch" -description: "Instructions on how to integrate D-Link switches into Home Assistant." +title: D-Link Wi-Fi Smart Plugs +description: Instructions on how to integrate D-Link switches into Home Assistant. logo: dlink.png ha_category: - Switch ha_iot_class: Local Polling ha_release: 0.14 +ha_domain: dlink --- The `dlink` switch platform allows you to control the state of your [D-Link Wi-Fi Smart Plugs](https://us.dlink.com/en/consumer/smart-plugs). diff --git a/source/_integrations/dlna_dmr.markdown b/source/_integrations/dlna_dmr.markdown index 67dac15e57b1..a013b832b362 100644 --- a/source/_integrations/dlna_dmr.markdown +++ b/source/_integrations/dlna_dmr.markdown @@ -1,11 +1,12 @@ --- -title: "DLNA DMR" -description: "Instructions on how to integrate a DLNA DMR device into Home Assistant." +title: DLNA Digital Media Renderer +description: Instructions on how to integrate a DLNA DMR device into Home Assistant. logo: dlna.png ha_category: - Media Player ha_release: 0.76 ha_iot_class: Local Push +ha_domain: dlna_dmr --- The `dlna_dmr` platform allows you to control a [DLNA Digital Media Renderer](https://www.dlna.org/), such as DLNA enabled TVs or radios. @@ -25,7 +26,7 @@ media_player: {% configuration %} url: - description: The URL to the device description .xml file, e.g., `http://192.168.0.10:9197/description.xml`. + description: The URL to the device description XML file, e.g., `http://192.168.0.10:9197/description.xml`. required: true type: string listen_ip: @@ -42,7 +43,7 @@ name: required: false type: string callback_url_override: - description: Override the advertised callback URL. In case the home assistant instance is not directly reachable (e.g., running in a docker container without bridged-networking), advertise this callback URL for events. + description: Override the advertised callback URL. In case the Home Assistant instance is not directly reachable (e.g., running in a Docker container without bridged-networking), advertise this callback URL for events. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/dnsip.markdown b/source/_integrations/dnsip.markdown index 24d3e270a74c..66409b61cd1a 100644 --- a/source/_integrations/dnsip.markdown +++ b/source/_integrations/dnsip.markdown @@ -1,11 +1,11 @@ --- -title: "DNS IP Sensor" -description: "Instructions on how to integrate a DNS IP sensor into Home Assistant." -logo: home-assistant.png +title: DNS IP +description: Instructions on how to integrate a DNS IP sensor into Home Assistant. ha_category: - Network ha_iot_class: Cloud Polling -ha_release: "0.40" +ha_release: '0.40' +ha_domain: dnsip --- The `dnsip` sensor will expose an IP address, fetched via DNS resolution, as its value. There are two operational modes: diff --git a/source/_integrations/dominos.markdown b/source/_integrations/dominos.markdown index dfc8d461628a..b7c1e84e0149 100644 --- a/source/_integrations/dominos.markdown +++ b/source/_integrations/dominos.markdown @@ -1,11 +1,12 @@ --- -title: "Dominos Pizza" -description: "Instructions on how to setup Dominos Pizza ordering within Home Assistant." +title: Dominos Pizza +description: Instructions on how to setup Dominos Pizza ordering within Home Assistant. logo: dominos.png ha_category: - Other ha_iot_class: Cloud Polling ha_release: 0.59 +ha_domain: dominos --- The `dominos` integration allows you to order Dominos Pizza from within your Home Assistant scripts and automations. diff --git a/source/_integrations/doods.markdown b/source/_integrations/doods.markdown index 3fb11bbabfb5..178acf3c7f77 100644 --- a/source/_integrations/doods.markdown +++ b/source/_integrations/doods.markdown @@ -1,22 +1,23 @@ --- -title: "DOODS" -description: "Detect and recognize objects with DOODS." +title: DOODS - Distributed Outside Object Detection Service +description: Detect and recognize objects with DOODS. ha_category: - Image Processing ha_iot_class: Local Polling -ha_release: "0.100" +ha_release: '0.100' +ha_domain: doods --- 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. ## Setup -You need to have DOODS running somewhere. It's easiest to run as a docker container and deployment is described on docker hub +You need to have DOODS running somewhere. It's easiest to run as a Docker container and deployment is described on Docker Hub [DOODS - Docker](https://hub.docker.com/r/snowzach/doods) ## Configuration -The configuration loosely follows the tensorflow configuration. To enable this platform in your installation, add the following to your `configuration.yaml` file: +The configuration loosely follows the TensorFlow configuration. To enable this platform in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -178,7 +179,7 @@ image_processing: ## Optimizing resources -[Image processing components](/components/image_processing/) process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your config `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. +[Image processing components](/components/image_processing/) process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your configuration `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. ```yaml # Example advanced configuration.yaml entry @@ -199,5 +200,5 @@ image_processing: - binary_sensor.driveway action: - service: image_processing.scan - entity_id: camera.driveway + entity_id: image_processing.doods_camera_driveway ``` diff --git a/source/_integrations/doorbird.markdown b/source/_integrations/doorbird.markdown index 5f21c87d629d..89fa3215d540 100644 --- a/source/_integrations/doorbird.markdown +++ b/source/_integrations/doorbird.markdown @@ -1,6 +1,6 @@ --- -title: "DoorBird" -description: "Instructions on how to integrate your DoorBird video doorbell with Home Assistant." +title: DoorBird +description: Instructions on how to integrate your DoorBird video doorbell with Home Assistant. logo: doorbird.png ha_category: - Doorbell @@ -8,6 +8,11 @@ ha_category: - Switch ha_release: 0.54 ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - '@oblogic7' + - '@bdraco' +ha_domain: doorbird --- The `doorbird` implementation allows you to integrate your [DoorBird](https://www.doorbird.com/) device in Home Assistant. @@ -19,17 +24,18 @@ There is currently support for the following device types within Home Assistant: ## Setup -It is recommended to set up a new account on your Doorbird for use with Home Assistant. This can be added via the Doorbird App by choosing Administration -> (User) Add. This user, needs specific permissions enabled, depending on what functionality you want: +It is recommended to set up a new account on your Doorbird App for use with Home Assistant. This can be added via the Doorbird App by clicking settings (cog icon) -> Administration-> LOGIN (using your App Administration details). Under the "USER" section, choose "Add". This new user account requires specific permissions enabled (depending on what functionality you want). Permissions can be found under "Permissions". The following permissions are recommended: -- Live view -> Watch Always -- Last motion -> Motion + History -- Last ring -> History - -In addition, the "API-Operator" permission needs to be enabled as well. +- "Watch Always" (live view) +- "History" (last motion) +- "Motion" (last motion) +- "API-Operator" (this needed to be enabled as a minimum) ## Configuration -To connect your device, add the following to your `configuration.yaml` file: +To add `DoorBird` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **DoorBird**. + +Alternatively, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -144,20 +150,21 @@ The URLs on the event will be based on the configuration used to connect to your #### Schedules -Once events have been registered on the DoorBird device, they must be attached to a schedule using the official DoorBird app on Android or iOS. Currently there are schedules available for doorbell, motion, relay, and RFID events (on supported devices). +Once events have been registered on the DoorBird device, they must be attached to a schedule using the official DoorBird app on Android or iOS. Currently, there are schedules available for doorbell, motion, relay, and RFID events (on supported Doorbird devices). + +The schedules can be found by navigating to the following area of the Doorbird app (Android or IOS): -For iOS, the schedules can be found by navigating to the following areas of the app: +Settings (cog icon) -> Administration -> LOGIN LOGIN (using your App Administration details) -> (under "EXPERT SETTINGS") Schedule for doorbell -- Doorbell | Settings > Administration > Specific Device > Schedule for Doorbell -- Motion | Settings > Administration > Specific Device > 3D Motion Sensor (Settings) > Schedule for Actions -- Relay | Settings > Administration > Specific Device > Relays > Schedule -- RFID | Settings > Administration > Specific Device > RFID Transponder > Settings > Select Transponder > Schedule +- `Push notification` +- `Trigger Relay ("Relay 1" or "Relay 2")` +- `HTTP(S) Calls (button, motion/movement, RFID)` -Once you are on the desired schedule, click the dropdown button in the upper left to switch to the HTTP Calls view. Now if you click on the heading just above the schedule, you can select the event you would like to be called for the particular schedule that is being viewed. +Click on the dropdown button in the top left and choose your specific "Schedule for actions" (listed above). Depending on your selection, you may have to click on the center title to see the sub-categories menu. On the desired event, you should be able to specify blocks of time for when you would like the event to be sent to Home Assistant. If you want the event to always send, the square in the upper right can be used to populate the entire schedule. Events will be fired to Home Assistant for blocks of time that are blue. -Remember to complete the schedule assignment steps above for each event type that you registered. +Note: Remember to complete the schedule assignment steps above for each event type that you registered. ### Automation Example diff --git a/source/_integrations/dovado.markdown b/source/_integrations/dovado.markdown index 2319ce09adc0..4f3024e61f29 100644 --- a/source/_integrations/dovado.markdown +++ b/source/_integrations/dovado.markdown @@ -1,6 +1,6 @@ --- -title: "Dovado" -description: "How to integrate Dovado within Home Assistant." +title: Dovado +description: How to integrate Dovado within Home Assistant. ha_category: - System Monitor - Notifications @@ -8,6 +8,7 @@ ha_category: logo: dovado.png ha_release: 0.87 ha_iot_class: Local Polling +ha_domain: dovado --- The `dovado` integration manages communication with the [Dovado](https://www.dovado.com/) router. diff --git a/source/_integrations/downloader.markdown b/source/_integrations/downloader.markdown index 5be5d7be0cd5..2157bfaee000 100644 --- a/source/_integrations/downloader.markdown +++ b/source/_integrations/downloader.markdown @@ -1,11 +1,11 @@ --- -title: "Downloader" -description: "Instructions on how to setup the downloader integration with Home Assistant." -logo: home-assistant.png +title: Downloader +description: Instructions on how to setup the downloader integration with Home Assistant. ha_category: - Downloading ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: downloader --- The `downloader` integration provides a service to download files. It will raise an error and not continue to set itself up when the download directory does not exist. The directory needs to be writable for the user that is running Home Assistant. diff --git a/source/_integrations/dsmr.markdown b/source/_integrations/dsmr.markdown index 13a7a0ae8345..2f0a52bc262c 100644 --- a/source/_integrations/dsmr.markdown +++ b/source/_integrations/dsmr.markdown @@ -1,18 +1,19 @@ --- -title: "DSMR or Slimme meter" -description: "Instructions on how to integrate DSMR Smartmeter within Home Assistant." +title: DSMR Slimme Meter +description: Instructions on how to integrate DSMR Smartmeter within Home Assistant. logo: netbeheernederland.jpg ha_category: - Energy ha_release: 0.34 ha_iot_class: Local Push +ha_domain: dsmr --- A sensor platform for Dutch Smart Meters which comply to DSMR (Dutch Smart Meter Requirements), also known as 'Slimme meter' or 'P1 poort'. -- Currently support DSMR V2.2, V3, V4 and V5 through the [dsmr_parser](https://github.com/ndokter/dsmr_parser) module by Nigel Dokter. +- Currently support DSMR V2.2, V3, V4, V5 and V5 Belgian through the [dsmr_parser](https://github.com/ndokter/dsmr_parser) module by Nigel Dokter. - For official information about DSMR refer to: [DSMR Document](https://www.netbeheernederland.nl/dossiers/slimme-meter-15) -- For official information about the P1 port refer to: +- For official information about the P1 port refer to: - For unofficial hardware connection examples refer to: [Domoticx](http://domoticx.com/p1-poort-slimme-meter-hardware/)

    @@ -35,6 +36,7 @@ USB serial converters: - - - +- Serial to network proxies: @@ -52,17 +54,24 @@ sensor: {% configuration %} port: - description: "Serial port to which Smartmeter is connected (default: /dev/ttyUSB0 (connected to USB port)). For remote (i.e. ser2net) connections, use TCP port number to connect to (i.e. 2001)." + description: "Serial port to which Smartmeter is connected via USB. For remote (i.e., ser2net) connections, use TCP port number to connect to (i.e., 2001)." required: false type: string + default: "/dev/ttyUSB0" host: - description: "Host to which Smartmeter is connected (default: '' (connected via serial or USB, see **port**)). For remote connections, use IP address of host to connect to (i.e. 192.168.1.13)." + description: "Host to which Smartmeter is connected via serial or USB, see **port**. For remote connections, use IP address of host to connect to (i.e., 192.168.1.13)." required: false type: string dsmr_version: - description: "Version of DSMR used by meter. Choices: 2.2, 4, 5. Defaults to 2.2." + description: "Version of DSMR used by meter. Choices: `2.2`, `4`, `5`, `5B` (For Belgian Meter)." required: false type: string + default: "2.2" + reconnect_interval: + description: The reconnect interval in seconds when the connection is lost with the Smartmeter. + required: false + type: integer + default: 30 precision: description: Defines the precision of the calculated values, through the argument of round(). required: false @@ -83,15 +92,15 @@ group: meter_readings: name: Meter readings entities: - - sensor.power_consumption_low - - sensor.power_consumption_normal - - sensor.power_production_low - - sensor.power_production_normal + - sensor.energy_consumption_tarif_1 + - sensor.energy_consumption_tarif_2 + - sensor.energy_production_tarif_1 + - sensor.energy_production_tarif_2 - sensor.gas_consumption ``` ```yaml -# Example configuration.yaml entry for remote (TCP/IP, i.e. via ser2net) connection to host which is connected to Smartmeter +# Example configuration.yaml entry for remote (TCP/IP, i.e., via ser2net) connection to host which is connected to Smartmeter sensor: - platform: dsmr host: 192.168.1.13 @@ -102,10 +111,10 @@ group: meter_readings: name: Meter readings entities: - - sensor.power_consumption_low - - sensor.power_consumption_normal - - sensor.power_production_low - - sensor.power_production_normal + - sensor.energy_consumption_tarif_1 + - sensor.energy_consumption_tarif_2 + - sensor.energy_production_tarif_1 + - sensor.energy_production_tarif_2 - sensor.gas_consumption ``` diff --git a/source/_integrations/dsmr_reader.markdown b/source/_integrations/dsmr_reader.markdown new file mode 100644 index 000000000000..e27100c403d5 --- /dev/null +++ b/source/_integrations/dsmr_reader.markdown @@ -0,0 +1,27 @@ +--- +title: DSMR Reader +description: Instructions on how to integrate DSMR Reader. +ha_category: + - Energy +ha_iot_class: Cloud Polling +ha_release: 0.103 +ha_codeowners: + - '@depl0y' +ha_domain: dsmr_reader +--- + +The `dsmr_reader` sensor platform allows you to easily add all sensors that [DSMR Reader](https://dsmr-reader.readthedocs.io/en/latest/) exposes to MQTT. It adds a separate sensor for every field in the MQTT topics. + +## Setup + +To use this component, you will need DSMR Reader to be set up to publish to the MQTT server, that Home Assistant also uses. It is important that you setup DSMR Reader to publish to MQTT using "Split Topic" and that you use the default mappings. + +## Configuration + +To use this sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: dsmr_reader +``` diff --git a/source/_integrations/dte_energy_bridge.markdown b/source/_integrations/dte_energy_bridge.markdown index c0c6a8843c94..9c042a992ab1 100644 --- a/source/_integrations/dte_energy_bridge.markdown +++ b/source/_integrations/dte_energy_bridge.markdown @@ -1,11 +1,12 @@ --- -title: "DTE Energy Bridge" -description: "Instructions on how to setup DTE Energy Bridge with Home Assistant." +title: DTE Energy Bridge +description: Instructions on how to setup DTE Energy Bridge with Home Assistant. logo: dte_energy.png ha_category: - Energy ha_release: 0.21 ha_iot_class: Local Polling +ha_domain: dte_energy_bridge --- A sensor platform for the [DTE](https://www.newlook.dteenergy.com/) Energy Bridge. To find out which version of the DTE Energy Bridge sensor you have, find the status LED on your box. diff --git a/source/_integrations/dublin_bus_transport.markdown b/source/_integrations/dublin_bus_transport.markdown index 81689de682ce..a6e6bcced2bb 100644 --- a/source/_integrations/dublin_bus_transport.markdown +++ b/source/_integrations/dublin_bus_transport.markdown @@ -1,11 +1,12 @@ --- -title: "Dublin Bus Transport" -description: "Instructions on how to integrate timetable data for traveling on Dublin Bus within Home Assistant." +title: Dublin Bus +description: Instructions on how to integrate timetable data for traveling on Dublin Bus within Home Assistant. logo: dublin_bus.png ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.36 +ha_domain: dublin_bus_transport --- The `dublin_bus_transport` sensor will give you the time until the next two departures from a Dublin bus stop using the RTPI information. diff --git a/source/_integrations/duckdns.markdown b/source/_integrations/duckdns.markdown index 2d1344aa704e..9acec85ae01b 100644 --- a/source/_integrations/duckdns.markdown +++ b/source/_integrations/duckdns.markdown @@ -1,14 +1,20 @@ --- -title: "DuckDNS" -description: "Keep your computer registered with the DuckDNS dynamic DNS." -logo: duckdns.png +title: Duck DNS +description: Keep your computer registered with the DuckDNS dynamic DNS. ha_category: - Network ha_release: 0.55 +ha_domain: duckdns --- With the DuckDNS integration you can keep your DuckDNS record up to date. DuckDNS is a free dynamic DNS service that allows you to point a subdomain under `duckdns.org` at your computer. +

    + +If you are running the Home Assistant DuckDNS add-on this integration is not required. The add-on will keep your IP updated with DuckDNS. + +
    + ## Configuration To use the integration in your installation, add the following to your `configuration.yaml` file: @@ -38,10 +44,3 @@ Set the TXT record of your DuckDNS subdomain. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `txt` | no | Payload for the TXT record. | - - -
    - -If you are running the Hass.io [DuckDNS add-on](/addons/duckdns/) this integration is not required. The add-on will keep your IP updated with DuckDNS. - -
    diff --git a/source/_integrations/duke_energy.markdown b/source/_integrations/duke_energy.markdown deleted file mode 100644 index 62e599b9e485..000000000000 --- a/source/_integrations/duke_energy.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Duke Energy" -description: "Instructions on how to set Duke Energy smart meter sensors within Home Assistant." -logo: duke_energy.png -ha_category: - - Energy -ha_release: 0.74 -ha_iot_class: Cloud Polling ---- - -The `duke_energy` sensor platform allows you get the previous days usage for all of your Duke Energy smart meters. - -## Setup - -You will only have access to meters listed in your account at [Duke Energy Usage](https://www.duke-energy.com/my-account/usage-analysis). - -This supports both electric and gas meters. Along with previous days usage, each sensor will have attributes for the previous bills total usage and average usage. - -## Configuration - -To enable the sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: duke_energy - username: YOUR_DUKE_USERNAME - password: YOUR_DUKE_PASSWORD -``` - -{% configuration %} -username: - description: Your Duke Energy username - required: true - type: string -password: - description: Your Duke Energy password - required: true - type: string -{% endconfiguration %} - -
    -Meter usage isn't updated until mid-morning. Prior to updating your meter will report 0 for usage starting at midnight. The API is only called to update every 2 hours from startup time. -
    diff --git a/source/_integrations/dunehd.markdown b/source/_integrations/dunehd.markdown index 5357d9501384..9dddc6e5dbd2 100644 --- a/source/_integrations/dunehd.markdown +++ b/source/_integrations/dunehd.markdown @@ -1,14 +1,13 @@ --- -title: "DuneHD media players" -description: "Instructions on how to integrate DuneHD media players into Home Assistant." -logo: dunehd.png +title: DuneHD +description: Instructions on how to integrate DuneHD media players into Home Assistant. ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.34 +ha_domain: dunehd --- - The `dunehd` media player platform allows you to control a [Dune HD media player](https://dune-hd.com/eng/products/full_hd_media_players) from Home Assistant. Support is based on the official [IP protocol](https://dune-hd.com/support/ip_control/dune_ip_control_overview.txt) published by Dune. Devices with firmware 110127_2105_beta or above are supported. Some functions may depend on the version of the protocol (volume / mute control is only available with version 2 onwards). diff --git a/source/_integrations/dwd_weather_warnings.markdown b/source/_integrations/dwd_weather_warnings.markdown index 4622f4b2e7c5..69d291cf7064 100644 --- a/source/_integrations/dwd_weather_warnings.markdown +++ b/source/_integrations/dwd_weather_warnings.markdown @@ -1,11 +1,11 @@ --- -title: "DWD Weather warnings" -description: "Instructions on how to integrate Deutsche Wetter Dienst weather warnings into Home Assistant." -#logo: dwdwarnapp.png +title: Deutsche Wetter Dienst (DWD) Weather Warnings +description: Instructions on how to integrate Deutsche Wetter Dienst weather warnings into Home Assistant. ha_category: - Weather ha_release: 0.51 ha_iot_class: Cloud Polling +ha_domain: dwd_weather_warnings --- The `dwd_weather_warnings` sensor platform uses the [Deutsche Wetter Dienst (DWD)](https://www.dwd.de) as a source for current and advance warnings. @@ -30,7 +30,7 @@ As it suggests the region name is not the city or nearest city you want to get t Be aware, to get the region name you need to use the following link by replacing `Hamburg` with your city: - Find your region here: `https://www.dwd.de/DE/wetter/warnungen_landkreise/warnWetter_node.html?ort=Hamburg` -- On the page that is loaded in your browser you will find the correct region ("Kreis") below the map as a headding. +- On the page that is loaded in your browser you will find the correct region ("Kreis") below the map as a heading. - Verify if you find any warning for your region here. Your region ("Kreis") will appear only if warnings exist: `https://www.dwd.de/DWD/warnungen/warnapp_landkreise/json/warnings.json?jsonp=loadWarnings`
    diff --git a/source/_integrations/dweet.markdown b/source/_integrations/dweet.markdown index cded98a4cef3..af530711f336 100644 --- a/source/_integrations/dweet.markdown +++ b/source/_integrations/dweet.markdown @@ -1,12 +1,15 @@ --- -title: "Dweet.io" -description: "Transfer events to Dweet.io." +title: dweet.io +description: Transfer events to Dweet.io. logo: dweet.png ha_category: - History - Sensor ha_release: 0.19 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' +ha_domain: dweet --- The `dweet` integration makes it possible to transfer details collected with Home Assistant to [Dweet.io](https://dweet.io/) and visualize them with [freeboard.io](https://freeboard.io). Keep in mind that your information will be public! @@ -133,4 +136,4 @@ Receive the latest dweet. ```bash >>> dweepy.get_latest_dweet_for('ha-sensor') [{'thing': 'ha-sensor'', 'created': '2015-12-10T09:43:31.133Z', 'content': {'humidity': 65, 'temperature': 40}}] -``` \ No newline at end of file +``` diff --git a/source/_integrations/dynalite.markdown b/source/_integrations/dynalite.markdown new file mode 100755 index 000000000000..7ea945c97720 --- /dev/null +++ b/source/_integrations/dynalite.markdown @@ -0,0 +1,217 @@ +--- +title: Philips Dynalite +description: Instructions on setting up Philips Dynalite within Home Assistant. +logo: dynalite.png +ha_category: + - Hub + - Light + - Switch +ha_iot_class: Local Push +ha_release: 0.106 +ha_codeowners: + - '@ziv1234' +ha_config_flow: true +ha_domain: dynalite +--- + +Philips Dynalite support is integrated into Home Assistant as a hub that can drive the light and switch platforms. + +There is currently support for the following device types within Home Assistant: + +- Lights +- Switches + +A Philips Dynalite hub connects to the Dynet network, which is composed of areas, channels, and preset. + +A Dynalite area typically (although not necessarily) defines some physical area, such as a room. + +Each area can have one or more channels that correspond to the different devices they control. A channel can relate to a dimmable light, or other devices. + +Additionally, each area can have one or more presets that determine the behavior of all the channels, and sometimes trigger additional actions. Typically, preset 1 in an area means 'on', and preset '4' means off. Additional presets could be used for scenes and dimming. + +## Configuration + +Since Philips Dynalite has virtually no auto-discover capabilities, it needs to be configured via the `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +dynalite: + bridges: + - host: DEVICE_IP_ADDRESS +``` + +{% configuration %} +host: + description: The IP address of the bridge (e.g., 192.168.1.10). + required: true + type: string +port: + description: Port number of the bridge. + required: false + type: integer + default: 12345 +name: + description: Name for the bridge. + required: false + type: string + default: dynalite +active: + description: "Actively query network. When starting, it will query all devices for their current status, and also will send queries when some changes are in progress (e.g., lights dimming or covers moving). Better experience but creates more load on the Dynalite network. Value can be `on`, `off`, our `init`, where `init` will only send queries during the initial init of Home Assistant." + required: false + type: [boolean, string] + default: false +polltimer: + description: "Polling interval for devices in transition. Value in seconds. When devices are in transition (e.g., a light fading), it will ask for a new state every X seconds until it is at the target level. Only relevant when active is set to `on`." + required: false + type: float + default: 1.0 +autodiscover: + description: Enable auto-discover. As Dynalite does not support native autodiscovery, this tracks events on your network, so if you turn on a light, it will be added to Home Assistant. + required: false + type: boolean + default: false +default: + description: Global defaults for the system + required: false + type: map + keys: + fade: + description: Default fade + required: false + type: float +area: + description: Definition for the various Dynalite areas. + required: true + type: map + keys: + AREA_NUMBER: + description: The Dynalite area number, 1-255. + required: true + type: map + keys: + name: + description: Name of the area. + required: true + type: string + fade: + description: Fade time for the area, in seconds. + required: false + type: float + default: 2.0 + preset: + description: Specific presets for the area. + required: false + type: map + keys: + PRESET_NUMBER: + description: The Dynalite preset number in the area. + required: true + type: map + keys: + name: + description: Name of the preset. + required: false + type: string + default: AREA_NAME Preset PRESET_NUMBER + fade: + description: Fade time for the preset, in seconds. + required: false + type: float + default: 2.0 + nodefault: + description: Do not use the default presets defined globally, but only the specific ones defined for this area. + required: false + type: boolean + default: false + channel: + description: Map of the channels in this area. + required: false + type: map + keys: + CHANNEL_NUMBER: + description: The Dynalite channel number in the area, 1-255. + required: true + type: map + keys: + name: + description: Name of the channel. + required: false + type: string + default: AREA_NAME Channel CHANNEL_NUMBER + type: + description: "Type of entity this should appear as. Can be either `light` or if this is a device that is not a light (e.g., water heater), can be `switch`." + require: false + type: string + default: light + fade: + description: Fade time for the channel, in seconds. + required: false + type: float + default: 2.0 +preset: + description: "Default presets for any area without the `nodefault` option." + required: false + type: map + keys: + PRESET_NUMBER: + description: The Dynalite preset number in the area. + required: true + type: map + keys: + name: + description: "Name of the preset. When used in an area, it will be 'AREA_NAME name'. For example, if a room's name is 'Kitchen' and preset 4 is defined with the name `Off`, it will appear in HA as 'Kitchen Off'." + required: false + type: string + default: AREA_NAME Preset PRESET_NUMBER + fade: + description: Fade time for the preset, in seconds. + required: false + type: float + default: 2.0 +{% endconfiguration %} + +## Examples + +```yaml +# Example configuration.yaml entry specifying optional parameters +dynalite: + bridges: + - host: DEVICE_IP_ADDRESS + port: 12345 + autodiscover: true + polltimer: 1 + area: + '1': + name: Office + '2': + name: Living Room + nodefault: true + channel: + '2': + name: Entrance Spot + fade: 10.0 + '3': + name: Dining Table + preset: + '5': + name: Blinking Lights + '6': + name: All Off + fade: 3.0 + preset: + '1': + name: 'On' + '4': + name: 'Off' +``` + +## Initial configuration and discovery + +Maybe the most difficult thing about a Dynalite system is finding out the areas and channel mapping. If you have them or have access to the Dynalite software and your configuration files, this could be easy, +but in the likely case that your system was installed by an integrator, you will have to discover them on your own. + +This is where the `autodiscover` option comes handy. If it is on, the component will track the Dynet network and every time a device is used, it will be added to Home Assistant. It will initially show as "Area 123 Channel 7", but you can then add it to your `configuration.yaml` with the correct configuration. + +For example, you would go to your kitchen light and turn it on. Now you log into Home Assistant and see what the channel was. If there was more than one discovered (e.g., someone turned off the living room lights), you can try one, turn it on and off in Home Assistant and see which light it affects. + +The initial process can be a bit time consuming and tedious, but it only has to be done once. Once you are done configuring, it is better to set `autodiscover` to `false`, since there are many "fake" channels and areas that the system uses for internal communication and you do not want to have visible. diff --git a/source/_integrations/dyson.markdown b/source/_integrations/dyson.markdown index 2fc4820b0859..db79855dc250 100644 --- a/source/_integrations/dyson.markdown +++ b/source/_integrations/dyson.markdown @@ -1,6 +1,6 @@ --- -title: "Dyson" -description: "Instructions on how to integrate Dyson into Home Assistant." +title: Dyson +description: Instructions on how to integrate Dyson into Home Assistant. logo: dyson.png ha_category: - Hub @@ -10,6 +10,9 @@ ha_category: - Vacuum ha_iot_class: Cloud Polling ha_release: 0.47 +ha_codeowners: + - '@etheralm' +ha_domain: dyson --- The `dyson` integration is the main integration to integrate all [Dyson](https://www.dyson.com) related platforms. @@ -78,7 +81,7 @@ Discovery is not yet supported for any robot vacuum models (Dyson 360 Eye). For To find a devices IP address, you can use your router or `nmap`: ```bash -$ nmap -p 1883 XXX.XXX.XXX.XXX/YY -- open +$ nmap -p 1883 XXX.XXX.XXX.XXX/YY --open ``` Where: @@ -89,7 +92,7 @@ Where: For example: ```bash -$ nmap -p 1883 192.168.0.0/24 -- open +$ nmap -p 1883 192.168.0.0/24 --open ``` ## Vacuum @@ -168,4 +171,5 @@ Note: currently only the 2018 dyson fans are supported(TP04 and DP04). - Pure Cool link (desk and tower) - Pure Hot+cool link (see climate part) for thermal control -- Pure Cool 2018 Models (TP04 and DP04) \ No newline at end of file +- Pure Cool 2018 Models (TP04 and DP04) +- Pure Cool Cryptomic (TP06) diff --git a/source/_integrations/ebox.markdown b/source/_integrations/ebox.markdown index 39561525151f..e4e352ef6e76 100644 --- a/source/_integrations/ebox.markdown +++ b/source/_integrations/ebox.markdown @@ -1,11 +1,12 @@ --- -title: "EBox Sensor" -description: "Instructions on how to integrate EBox data usage within Home Assistant." +title: EBox +description: Instructions on how to integrate EBox data usage within Home Assistant. logo: ebox.png ha_category: - Network ha_release: 0.39 ha_iot_class: Cloud Polling +ha_domain: ebox --- Integrate your [EBox](https://client.ebox.ca/) account information into Home Assistant. diff --git a/source/_integrations/ebusd.markdown b/source/_integrations/ebusd.markdown index 1a5ed645592c..5045f4510916 100644 --- a/source/_integrations/ebusd.markdown +++ b/source/_integrations/ebusd.markdown @@ -1,10 +1,11 @@ --- -title: "ebusd" -description: "The ebusd integration allows the integration between eBUS heating system and Home Assistant." +title: ebusd +description: The ebusd integration allows the integration between eBUS heating system and Home Assistant. ha_category: - Sensor ha_iot_class: Local Polling ha_release: 0.88 +ha_domain: ebusd --- Integration between [ebusd](https://github.com/john30/ebusd/) daemon for communication with eBUS heating systems, and Home Assistant using sensor component. diff --git a/source/_integrations/ecoal_boiler.markdown b/source/_integrations/ecoal_boiler.markdown index 9c4913dca89d..992726b939a3 100644 --- a/source/_integrations/ecoal_boiler.markdown +++ b/source/_integrations/ecoal_boiler.markdown @@ -1,10 +1,11 @@ --- -title: "eCoal water boiler controller" -description: "Instructions on how to integrate eSterownik.pl eCoal.pl controller into Home Assistant." +title: eSterownik eCoal.pl Boiler +description: Instructions on how to integrate eSterownik.pl eCoal.pl controller into Home Assistant. ha_category: - Water Heater ha_release: 0.87 ha_iot_class: Local Polling +ha_domain: ecoal_boiler --- The `ecoal_boiler` integration is the base for pumps and sensors managed by [esterownik.pl eCoal boiler controller](https://esterownik.pl/nasze-produkty/ecoal). diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index 34311394ca66..319887bb33e7 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -1,7 +1,6 @@ --- -title: "Ecobee" -description: "Instructions for how to integrate ecobee thermostats and sensors within Home Assistant." -logo: ecobee.png +title: ecobee +description: Instructions for how to integrate ecobee thermostats and sensors within Home Assistant. ha_category: - Sensor - Binary Sensor @@ -11,6 +10,10 @@ ha_category: featured: true ha_release: 0.9 ha_iot_class: Cloud Poll +ha_config_flow: true +ha_codeowners: + - '@marthoc' +ha_domain: ecobee --- The `ecobee` integration lets you control and view sensor data from [ecobee](https://ecobee.com) thermostats. @@ -45,9 +48,9 @@ To configure the ecobee integration in Home Assistant, you can either use the ** 1. In the **Configuration** > **Integrations** menu, click **+** and then select `ecobee` from the pop-up menu. 2. In the pop-up box, enter the API key you obtained from ecobee.com. 3. In the next pop-up box, you will be presented with a unique four-character PIN code which you will need to authorize in the [ecobee consumer portal](https://www.ecobee.com/consumerportal/index.html). You can do this by logging in, selecting **My Apps** from the hamburger menu, clicking **Add Application** on the left, entering the PIN code from Home Assistant, and clicking **Validate** and then **Add Application** in the bottom right. -4. After authorizing the App on ecobee.com, return to Home Assistant and hit **Submit**. If the authorization was successful, a config entry will be created and your thermostats and sensors will be available in Home Assistant. +4. After authorizing the App on ecobee.com, return to Home Assistant and hit **Submit**. If the authorization was successful, a configuration entry will be created and your thermostats and sensors will be available in Home Assistant. -### Setup via configuration.yaml +### Setup via `configuration.yaml` If you prefer to initially set up this integration in [`configuration.yaml`](/docs/configuration/), you may do so by adding your API key (and optional parameters) as follows (however, you must still complete authorization via the **Integrations** menu): @@ -73,7 +76,7 @@ api_key: The first time you (re)run Home Assistant with this integration it will give you a PIN code that you need to authorize in the [ecobee consumer portal](https://www.ecobee.com/consumerportal/index.html). You can do this by clicking **Add Application** in the **My Apps** section in the sidebar. -The PIN can be found in the Home Assistant portal on the Ecobee card or from the **configurator.ecobee** entity in the States developer tool. +The PIN can be found in the Home Assistant portal on the ecobee card or from the `configurator.ecobee` entity in the States developer tool. - If you do not have an ecobee card, you may be using groups with `default_view` that don't show the card. To get around this, you can temporarily comment out the `default_view` section or add the `configurator.ecobee` integration to your `default_view` and restart Home Assistant. @@ -192,7 +195,7 @@ Resumes the currently active schedule. | Service data attribute | Optional | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------ | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. | +| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Use `entity_id: all` to target all. | | `resume_all` | no | true or false | ### Service `ecobee.set_fan_min_on_time` @@ -201,5 +204,5 @@ Sets the minimum amount of time that the fan will run per hour. | Service data attribute | Optional | Description | | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------ | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. | -| `fan_min_on_time` | no | integer (e.g. 5) | +| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Use `entity_id: all` to target all. | +| `fan_min_on_time` | no | integer (e.g., 5) | diff --git a/source/_integrations/econet.markdown b/source/_integrations/econet.markdown index da50296d3052..b0feccccce0f 100644 --- a/source/_integrations/econet.markdown +++ b/source/_integrations/econet.markdown @@ -1,11 +1,11 @@ --- -title: "EcoNet water heater" -description: "Instructions on how to integrate Rheem EcoNet water heaters into Home Assistant." -logo: econet.png +title: Rheem EcoNET Water Products +description: Instructions on how to integrate Rheem EcoNet water heaters into Home Assistant. ha_category: - Water Heater ha_release: 0.61 ha_iot_class: Cloud Polling +ha_domain: econet --- The `econet` water heater platform is consuming the information provided by a [EcoNet enabled Rheem water heater](https://www.rheem.com/EcoNet/Home). This platform allows you to set the temperature, the operation mode, and enable vacation mode. diff --git a/source/_integrations/ecovacs.markdown b/source/_integrations/ecovacs.markdown index 2cf817826406..98fcd6c50b67 100644 --- a/source/_integrations/ecovacs.markdown +++ b/source/_integrations/ecovacs.markdown @@ -1,12 +1,15 @@ --- -title: "Ecovacs" -description: "Instructions on how to integrate Ecovacs vacuums within Home Assistant." +title: Ecovacs +description: Instructions on how to integrate Ecovacs vacuums within Home Assistant. logo: ecovacs.png ha_category: - Hub - Vacuum ha_iot_class: Cloud Push ha_release: 0.77 +ha_codeowners: + - '@OverloadUT' +ha_domain: ecovacs --- The `ecovacs` integration is the main integration to integrate all [Ecovacs](https://www.ecovacs.com) (Deebot) vacuums. You will need your Ecovacs account information (username, password) to discover and control vacuums in your account. @@ -120,4 +123,4 @@ Alternatively, you can use the `ecovacs_error` event to watch for errors. This e } ``` -Finally, if a vacuum becomes unavailable (usually due to being idle and off its charger long enough for it to completely power off,) the vacuum's `status` attribute will change to `offline` until it is turned back on. \ No newline at end of file +Finally, if a vacuum becomes unavailable (usually due to being idle and off its charger long enough for it to completely power off,) the vacuum's `status` attribute will change to `offline` until it is turned back on. diff --git a/source/_integrations/eddystone_temperature.markdown b/source/_integrations/eddystone_temperature.markdown index 076b5c6b5e2d..c84fb515b920 100644 --- a/source/_integrations/eddystone_temperature.markdown +++ b/source/_integrations/eddystone_temperature.markdown @@ -1,11 +1,12 @@ --- -title: "Eddystone Beacon" -description: "Instructions on how to integrate Eddystone beacons with Home Assistant in order to receive temperature data." +title: Eddystone +description: Instructions on how to integrate Eddystone beacons with Home Assistant in order to receive temperature data. logo: eddystone.png ha_category: - DIY ha_release: 0.42 ha_iot_class: Local Polling +ha_domain: eddystone_temperature --- The `eddystone_temperature` sensor platform reads temperature information from Bluetooth LE advertisements transmitted by [Eddystone](https://en.wikipedia.org/wiki/Eddystone_(Google)) beacons. Your beacons must be configured to transmit UID frames (for identification) and TLM frames (for temperature). @@ -19,7 +20,7 @@ As this platform uses `bluez` to scan for Bluetooth LE devices **a Linux OS with sudo apt-get install libbluetooth-dev ``` -Scanning for Bluetooth LE devices also requires special permissions. To grant these to the python executable execute the following: +Scanning for Bluetooth LE devices also requires special permissions. To grant these to the Python executable execute the following: ```bash sudo apt-get install libcap2-bin diff --git a/source/_integrations/edimax.markdown b/source/_integrations/edimax.markdown index e5e250d24d3a..2df9521494a7 100644 --- a/source/_integrations/edimax.markdown +++ b/source/_integrations/edimax.markdown @@ -1,10 +1,11 @@ --- -title: "Edimax Switch" -description: "Instructions on how to integrate Edimax switches into Home Assistant." +title: Edimax +description: Instructions on how to integrate Edimax switches into Home Assistant. logo: edimax.png ha_category: - Switch ha_release: pre 0.7 +ha_domain: edimax --- This `edimax` switch platform allows you to control the state of your [Edimax](https://www.edimax.com/edimax/merchandise/merchandise_list/data/edimax/global/home_automation_smart_plug/) switches. diff --git a/source/_integrations/edl21.markdown b/source/_integrations/edl21.markdown new file mode 100644 index 000000000000..e8b0ab8abbf9 --- /dev/null +++ b/source/_integrations/edl21.markdown @@ -0,0 +1,40 @@ +--- +title: EDL21 +description: Instructions on how to integrate SML-based EDL21 smart meters into Home Assistant. +ha_category: + - Sensor +ha_release: 0.107 +ha_domain: edl21 +ha_codeowners: + - '@mtdcr' +--- + +The `edl21` integration lets you read German EDL21 smart meters using [SML](https://de.wikipedia.org/wiki/Smart_Message_Language) from Home Assistant. + +In order to connect to the smart meter, an infrared transceiver is required. + +Compatible transceivers: + +- [DIY](https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-rs232-ausgang) +- [Weidmann Elektronik Schreib-/Lesekopf USB](https://shop.weidmann-elektronik.de/index.php?page=product&info=24) + +Tested smart meters: + +- Iskraemeco MT175 (ISKRA MT175-D2A51-V22-K0t) + +## Configuration + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +sensor: + - platform: edl21 + serial_port: /dev/ttyUSB0 +``` + +{% configuration %} +serial_port: + description: The device to communicate with. When using ser2net, use socket://host:port. + required: true + type: string +{% endconfiguration %} diff --git a/source/_integrations/ee_brightbox.markdown b/source/_integrations/ee_brightbox.markdown index 632b5633cb33..97b20ddb95fc 100644 --- a/source/_integrations/ee_brightbox.markdown +++ b/source/_integrations/ee_brightbox.markdown @@ -1,11 +1,11 @@ --- -title: "EE Bright Box" -description: "Instructions on how to integrate EE Bright Box router into Home Assistant." -logo: ee.png +title: EE Bright Box +description: Instructions on how to integrate EE Bright Box router into Home Assistant. ha_category: - Presence Detection ha_release: 0.87 ha_iot_class: Local Polling +ha_domain: ee_brightbox --- This platform offers presence detection by looking at connected devices to a [EE Bright Box 2](https://ee.co.uk/help/phones-and-device/home-broadband/bright-box-2-wireless-router/bright-box-2-wireless-router) router. diff --git a/source/_integrations/efergy.markdown b/source/_integrations/efergy.markdown index 892d7a89aebd..6012d6dea90d 100644 --- a/source/_integrations/efergy.markdown +++ b/source/_integrations/efergy.markdown @@ -1,11 +1,12 @@ --- -title: "Efergy" -description: "Instructions on how to integrate Efergy devices within Home Assistant." +title: Efergy +description: Instructions on how to integrate Efergy devices within Home Assistant. logo: efergy.png ha_category: - Energy ha_release: pre 0.7 ha_iot_class: Cloud Polling +ha_domain: efergy --- Integrate your [Efergy](https://efergy.com) meter information into Home Assistant. @@ -14,7 +15,7 @@ Integrate your [Efergy](https://efergy.com) meter information into Home Assistan To get an app token: -1. Log in to your efergy account +1. Log in to your Efergy account 2. Go to the Settings page 3. Click on App tokens 4. Click "Add token" @@ -69,7 +70,7 @@ monitored_variables: amount: description: The amount of energy consumed over a given period. current_values: - description: This returns the current energy usage of each device on your account, as `efergy_\`. If you only have one device in your account, this is effectively the same as instant_readings. + description: This returns the current energy usage of each device on your account. If you only have one device in your account, this is effectively the same as `instant_readings`. period: description: Some variables take a period argument. Valid options are "day", "week", "month", and "year". required: false diff --git a/source/_integrations/egardia.markdown b/source/_integrations/egardia.markdown index 415e5790116c..50c49c999925 100644 --- a/source/_integrations/egardia.markdown +++ b/source/_integrations/egardia.markdown @@ -1,6 +1,6 @@ --- -title: "Egardia" -description: "Instructions on how to setup Egardia / Woonveilig within Home Assistant." +title: Egardia +description: Instructions on how to setup Egardia / Woonveilig within Home Assistant. logo: egardia.png ha_category: - Hub @@ -8,6 +8,9 @@ ha_category: - Binary Sensor ha_release: 0.65 ha_iot_class: Local Polling +ha_codeowners: + - '@jeroenterheerdt' +ha_domain: egardia --- The `egardia` platform enables the ability to control an [Egardia](https://egardia.com/)/[Woonveilig](https://woonveilig.nl) control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on the WL-1716, GATE-01, GATE-02 and GATE-03 versions of the Egardia/Woonveilig platform. Not only will you integrate your alarm control panel, supported sensors (door contacts at this moment) will be added automatically (hidden by default). @@ -97,7 +100,7 @@ There seem to be multiple versions of software running on GATE-02 devices; we ha 1. Log in to your alarm system's control panel. You will need to access http://[IP of your control panel]. You know this already since you need it in the basic configuration from above. Log in to the control panel with your Egardia/Woonveilig username and password. 2. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. You can leave the port number set to 52010 or change it to anything you like. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'. -3. The Egardia integration relies on capturing the status codes that your alarm emits when something happens (status change or trigger). These codes will be unique for every situation - i.e. the code emitted by the alarm when a sensor is triggered is unique to that sensor. Also, if you have multiple users or remotes, each remote has unique codes that are emitted by the alarm when status is changed using that remote or by that user. For the Egardia integration to work correctly you will need to capture the codes. To do this, on your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. Record the codes shown as well as the status they relate to (see step 4 below). Make sure to change the status of your alarm to all states (disarm, arm, home) by all means possible (all users, remotes, web login, app) as well as trigger the alarm in all ways possible to get 100% coverage of all the codes the alarm system generates. You will need to run this script once and stop it once you have captured all the possible codes. Also, if you ever add users, remotes or sensors to your alarm system, make sure to re-run the script to capture the extra codes so you can update your configuration (see step 4 below). **For comfort, before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).** +3. The Egardia integration relies on capturing the status codes that your alarm emits when something happens (status change or trigger). These codes will be unique for every situation - i.e., the code emitted by the alarm when a sensor is triggered is unique to that sensor. Also, if you have multiple users or remotes, each remote has unique codes that are emitted by the alarm when status is changed using that remote or by that user. For the Egardia integration to work correctly you will need to capture the codes. To do this, on your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. Record the codes shown as well as the status they relate to (see step 4 below). Make sure to change the status of your alarm to all states (disarm, arm, home) by all means possible (all users, remotes, web login, app) as well as trigger the alarm in all ways possible to get 100% coverage of all the codes the alarm system generates. You will need to run this script once and stop it once you have captured all the possible codes. Also, if you ever add users, remotes or sensors to your alarm system, make sure to re-run the script to capture the extra codes so you can update your configuration (see step 4 below). **For comfort, before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).** 4. Once you have the codes, update your `configuration.yaml`: ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/eight_sleep.markdown b/source/_integrations/eight_sleep.markdown index cd21e6bd7dc4..62409889393c 100644 --- a/source/_integrations/eight_sleep.markdown +++ b/source/_integrations/eight_sleep.markdown @@ -1,6 +1,6 @@ --- -title: "Eight Sleep" -description: "Interface an Eight Sleep smart cover or mattress to Home Assistant" +title: Eight Sleep +description: Interface an Eight Sleep smart cover or mattress to Home Assistant logo: eight_sleep.png ha_category: - Health @@ -8,6 +8,9 @@ ha_category: - Sensor ha_release: 0.44 ha_iot_class: Cloud Polling +ha_codeowners: + - '@mezz64' +ha_domain: eight_sleep --- The `eight_sleep` integration allows Home Assistant to fetch data from your [Eight Sleep](https://eightsleep.com/) smart cover or mattress. @@ -15,11 +18,11 @@ The `eight_sleep` integration allows Home Assistant to fetch data from your [Eig There is currently support for the following device types within Home Assistant: - Binary Sensor - lets observe the presence state of a [Eight Sleep](https://eightsleep.com/) cover/mattress through Home Assistant. -- Sensor - This includes bed state and results of the current and previous sleep sessions. +- Sensor - This includes bed state, sleep fitness scores, and results of the current and previous sleep sessions. ## Configuration -It's setup utilizing 'Sensor' platform to convey the current state of your bed and results of your sleep sessions and a 'Binary Sensor' platform to indicate your presence in the bed. A service is also provided to set the heating level and duration of the bed. +It's setup utilizing 'Sensor' platform to convey the current state of your bed and results of your sleep sessions and a 'Binary Sensor' platform to indicate your presence in the bed. A service is also provided to set the cooling/heating level and duration of the bed (cooling is only available for the POD mattress). You must have at least two sleep sessions recorded in the Eight Sleep app prior to setting up the Home Assistant component. @@ -53,6 +56,7 @@ partner: Sensors: - eight_left/right_bed_state +- eight left/right_sleep_fitness - eight_left/right_sleep_session - eight_left/right_previous_sleep_session - eight_left/right_bed_temperature @@ -65,13 +69,13 @@ Binary Sensors: ### Service `heat_set` -You can use the service eight_sleep/heat_set to adjust the target heating level and heating duration of your bed. +You can use the service eight_sleep/heat_set to adjust the target cooling/heating level and heating duration of your bed (cooling is only available for the POD mattress). | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | Entity ID of bed state to adjust. -| `target` | no | Target heating level from 0-100. -| `duration` | no | Duration to heat at the target level in seconds. +| `target` | no | Target cooling/heating level from -100 to 100. +| `duration` | no | Duration to cool/heat at the target level in seconds. Script Example: diff --git a/source/_integrations/elgato.markdown b/source/_integrations/elgato.markdown new file mode 100644 index 000000000000..3cf25d293102 --- /dev/null +++ b/source/_integrations/elgato.markdown @@ -0,0 +1,44 @@ +--- +title: Elgato Key Light +description: Instructions on how to integrate an Elgato Key Light with Home Assistant. +ha_category: + - Light +ha_release: 0.104 +ha_iot_class: Local Polling +ha_qa_scale: platinum +ha_config_flow: true +ha_codeowners: + - '@frenck' +ha_quality_scale: platinum +ha_domain: elgato +--- + +The [Elgato Key Light](https://www.elgato.com/en/gaming/key-light) sets the +bar for high-end studio lightning. With 80 LEDs, that put out a massive +2500 lumens, and can change the color temperature as well. + +The LED light panel is created specifically, and designed for streamers +and content creators, many of whom operate on platforms like YouTube and Twitch. + +## Configuration + +This integration can be configured using the integrations in the +Home Assistant frontend. + +Menu: **Configuration** -> **Integrations**. + +In most cases, Elgato Key Lights devices will be automatically discovered by +Home Assistant. Those automatically discovered devices are listed +on the integrations page. + +If for some reason (e.g., due to lack of mDNS support on your network), +the Elgato Key Light isn't discovered, it can be added manually. + +Click on the `+` sign to add an integration and click on **Elgato Key Light**. +After completing the configuration flow, the Key Light integration will be +available. + +## Lights + +This integration adds the Key Light device as a light in Home Assistant, and +allows you to control the color temperature, brightness, and its on/off state. diff --git a/source/_integrations/eliqonline.markdown b/source/_integrations/eliqonline.markdown index c580bb41fb11..395784027e2a 100644 --- a/source/_integrations/eliqonline.markdown +++ b/source/_integrations/eliqonline.markdown @@ -1,11 +1,11 @@ --- -title: "Eliqonline" -description: "Instructions on how to integrate Eliqonline devices within Home Assistant." -logo: eliq.png +title: Eliqonline +description: Instructions on how to integrate Eliqonline devices within Home Assistant. ha_category: - Energy -ha_release: "0.10" +ha_release: '0.10' ha_iot_class: Cloud Polling +ha_domain: eliqonline --- Integrate your [ELIQ Online](https://eliq.io/) smart meter information into Home Assistant. To get an [access token](https://my.eliq.io/user/settings/api) and the [Channel ID](https://my.eliq.io/user/settings/locations), log in to your account. diff --git a/source/_integrations/elkm1.markdown b/source/_integrations/elkm1.markdown index c56d4f3231a7..c9ed4200ad5d 100644 --- a/source/_integrations/elkm1.markdown +++ b/source/_integrations/elkm1.markdown @@ -1,6 +1,6 @@ --- -title: "Elk-M1 Controller" -description: "Instructions to setup the Elk-M1 controller." +title: Elk-M1 Control +description: Instructions to setup the Elk-M1 controller. logo: elkproducts.png ha_release: 0.81 ha_category: @@ -12,6 +12,10 @@ ha_category: - Sensor - Switch ha_iot_class: Local Push +ha_domain: elkm1 +ha_config_flow: true +ha_codeowners: + - '@bdraco' --- The Elk-M1 is a home security and automation controller that is capable of alarm control panel functions and automation. @@ -29,8 +33,9 @@ There is currently support for the following device types within Home Assistant: ## Configuration -To integrate one or more Elk-M1 controllers with Home Assistant, add the following -section to your `configuration.yaml` file: +To add `ElkM1` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Elk-M1 Control**. + +Alternatively, add the following section to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -55,7 +60,7 @@ password: required: false type: string prefix: - description: The prefix to use, if any, for all the devices created for this controller. At most one host can omit the prefix, all others must have a unique prefix within the home assistant instance. + description: The prefix to use, if any, for all the devices created for this controller. At most one host can omit the prefix, all others must have a unique prefix within the Home Assistant instance. require: false type: string temperature_unit: @@ -63,6 +68,11 @@ temperature_unit: required: false type: string default: F +auto_configure: + description: Auto configure `area`, `counter`, `keypad`, `output`, `setting`, `task`, `thermostat`, `plc`, and `zone` by only adding elements that ElkM1 reports on the initial sync. + required: false + type: boolean + default: False area: description: Elk areas to include in Home Assistant. required: false @@ -270,6 +280,16 @@ elkm1: exclude: [b12-d5] ``` +Example configuration using `auto_configure`: + +```yaml +elkm1: + host: elks://IP_ADDRESS + username: USERNAME + password: PASSWORD + auto_configure: true +``` + Example for a serial port instance on /dev/ttyUSB0 at 115200 baud: ```yaml diff --git a/source/_integrations/elv.markdown b/source/_integrations/elv.markdown index 33de8832c397..5fedad51a3ea 100644 --- a/source/_integrations/elv.markdown +++ b/source/_integrations/elv.markdown @@ -1,10 +1,12 @@ --- -title: "ELV PCA 301 Switch" -description: "Instructions on how to integrate ELV PCA 301 switches into Home Assistant." -logo: elv.png +title: ELV PCA +description: Instructions on how to integrate ELV PCA 301 switches into Home Assistant. ha_category: Switch ha_iot_class: Local Polling ha_release: 0.95 +ha_codeowners: + - '@majuss' +ha_domain: elv --- The `pca` switch platform allows you to control the state of your [ELV PCA 301 smart switch](https://www.elv.de/funkschaltsteckdose-fuer-energiekostenmonitor-pca-301.html). You need an 868 MHz interface like the [JeeLink](https://www.digitalsmarties.net/products/jeelink) flashed with the [pca-hex firmware](https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/firmware/JeeLink_PCA301.hex). diff --git a/source/_integrations/emby.markdown b/source/_integrations/emby.markdown index 8d3efa656135..a8851a12bc8d 100644 --- a/source/_integrations/emby.markdown +++ b/source/_integrations/emby.markdown @@ -1,14 +1,16 @@ --- -title: "Emby" -description: "Instructions on how to integrate Emby into Home Assistant." +title: Emby +description: Instructions on how to integrate Emby into Home Assistant. logo: emby.png ha_category: - Media Player ha_release: 0.32 ha_iot_class: Local Push +ha_codeowners: + - '@mezz64' +ha_domain: emby --- - The `emby` platform allows you to control a [Emby](https://emby.media/) multimedia system from Home Assistant. To add Emby to your installation, add the following to your `configuration.yaml` file: @@ -41,9 +43,4 @@ port: required: false default: 8096 (No SSL), 8920 (SSL) type: integer -auto_hide: - description: Automatically hide devices that are unavailable from the Home Assistant Interface. - required: false - default: false - type: boolean {% endconfiguration %} diff --git a/source/_integrations/emoncms.markdown b/source/_integrations/emoncms.markdown index 69ce34188eef..1d1e874ab691 100644 --- a/source/_integrations/emoncms.markdown +++ b/source/_integrations/emoncms.markdown @@ -1,14 +1,16 @@ --- -title: "Emoncms Sensor" -description: "Instructions on how to integrate Emoncms feeds as sensors into Home Assistant." +title: Emoncms +description: Instructions on how to integrate Emoncms feeds as sensors into Home Assistant. logo: emoncms.png ha_category: - Sensor ha_release: 0.29 ha_iot_class: Local Polling +ha_domain: emoncms +ha_codeowners: + - '@borpin' --- - The `emoncms` sensor platform creates sensors for the feeds available in your local or cloud based version of [Emoncms](https://emoncms.org). To enable this sensor, add the following lines to your `configuration.yaml`, it will list all feeds as a sensor: @@ -22,23 +24,55 @@ sensor: id: 1 ``` +As of Feb 2020, the integration will discover all sensors from Emoncms and will use the unit of measurement specified in the Feed from Emoncms, in preference to the one set in the configuration. Tested with [Emoncms](https://github.com/emoncms/emoncms) V10.1.13 - `unit` was added to the API around version V9.9.1. + ## Configuration variables -- **api_key** (*Required*): The read API key for your Emoncms user. -- **url** (*Required*): The base URL of Emoncms, use "https://emoncms.org" for the cloud based version. -- **id** (*Required*): Positive integer identifier for the sensor. Must be unique if you specify multiple Emoncms sensors. -- **include_only_feed_id** (*Optional*): Positive integer list of Emoncms feed IDs. Only the feeds with feed IDs specified here will be displayed. Can not be specified if `exclude_feed_id` is specified. -- **exclude_feed_id** (*Optional*): Positive integer list of Emoncms feed IDs. All the feeds will be displayed as sensors except the ones listed here. Can not be specified if `include_only_feed_id` is specified. -- **sensor_names** (*Optional*): Dictionary of names for the sensors created that are created based on feed ID. The dictionary consists of `feedid: name` pairs. Sensors for feeds with their feed ID mentioned here will get the chosen name instead of the default name -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to alter the feed value. -- **scan_interval** (*Optional*): Defines the update interval of the sensor in seconds. -- **unit_of_measurement** (*Optional*): Defines the unit of measurement of for all the sensors. default is "W". +{% configuration %} +api_key: + description: The read API key for your Emoncms user. + required: true + type: string +url: + description: "The base URL of Emoncms, use for the cloud-based version. For self-hosted Emoncms or EmonPi you may need a URL of `http://x.x.x.x/emoncms`." + required: true + type: string +id: + description: Positive integer identifier for the sensor. Must be unique if you specify multiple Emoncms sensors. + required: true + type: integer +include_only_feed_id: + description: Positive integer list of Emoncms feed IDs. Only the feeds with feed IDs specified here will be displayed. Can not be specified if `exclude_feed_id` is specified. + required: false + type: list +exclude_feed_id: + description: Positive integer list of Emoncms feed IDs. All the feeds will be displayed as sensors except the ones listed here. Can not be specified if `include_only_feed_id` is specified. + required: false + type: list +sensor_names: + description: "Dictionary of names for the sensors created that are created based on feed ID. The dictionary consists of `feedid: name` pairs. Sensors for feeds with their feed ID mentioned here will get the chosen name instead of the default name." + required: false + type: [integer, list] +value_template: + description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to alter the feed value. + required: false + type: template +scan_interval: + description: Defines the update interval of the sensor in seconds. + required: false + type: integer +unit_of_measurement: + description: Defines the unit of measurement to be used for any sensor where the unit is *not* set in Emoncms. If no unit is set in Emoncms or in the configuration, the default (W) will be used. + required: false + default: W + type: string +{% endconfiguration %} ## Default naming scheme -The names of the sensors created by this integration will use the feed names defined in EmonCMS if available, -or the feed ID otherwise, and will be prefixed with "EmonCMS", e.g., "EmonCMS Total Power" or "EmonCMS Feed 5". -If the `id` property is anything but `1`, the ID will be shown as well, e.g., "EmonCMS 2 Feed 5". +The names of the sensors created by this integration will use the feed names defined in Emoncms if available, +or the feed ID otherwise, and will be prefixed with "Emoncms", e.g., "Emoncms Total Power" or "Emoncms Feed 5". +If the `id` property is anything but `1`, the ID will be shown as well, e.g., "Emoncms 2 Feed 5". If `sensor_names` is used, any feeds with defined names will get those names exactly, with no prefix. @@ -46,6 +80,16 @@ If `sensor_names` is used, any feeds with defined names will get those names exa In this section you find some more examples of how this sensor can be used. +Minimal configuration. All Feeds are added as sensors with the unit of measurement being set by the Emoncms Feed or the default unit. + +```yaml +sensor: + platform: emoncms + api_key: API_KEY + url: https://emoncms.org + id: 1 +``` + Display only feeds with their feed IDs specified in `include_only_feed_id`. ```yaml @@ -70,7 +114,7 @@ sensor: api_key: API_KEY url: https://emoncms.org id: 1 - unit_of_measurement: "KWH" + unit_of_measurement: "kWh" exclude_feed_id: - 107 - 105 @@ -85,7 +129,7 @@ sensor: api_key: API_KEY url: https://emoncms.org id: 1 - unit_of_measurement: "KW" + unit_of_measurement: "kW" include_only_feed_id: - 5 - 120 @@ -127,7 +171,7 @@ sensor: - 107 - 106 - platform: emoncms - api_key: put your emoncms read api key here + api_key: API_KEY url: https://emoncms.org id: 2 scan_interval: 60 diff --git a/source/_integrations/emoncms_history.markdown b/source/_integrations/emoncms_history.markdown index c024e4b710c2..124383acba9c 100644 --- a/source/_integrations/emoncms_history.markdown +++ b/source/_integrations/emoncms_history.markdown @@ -1,13 +1,13 @@ --- -title: "Emoncms history" -description: "Instructions on how to integrate Emoncms history into Home Assistant." +title: Emoncms History +description: Instructions on how to integrate Emoncms history into Home Assistant. logo: emoncms.png ha_category: - History ha_release: 0.31 +ha_domain: emoncms_history --- - The `emoncms_history` integration makes it possible to transfer details collected with Home Assistant to [Emoncms.org](https://emoncms.org/) or your local running Emoncms instance. It will send the data to a specific input node on Emoncms with the entity IDs as a key. Afterwards you can create feeds and dashboards in Emoncms with the collected data. To use the `emoncms_history` integration in your installation, add the following to your `configuration.yaml` file: @@ -25,11 +25,11 @@ emoncms_history: {% configuration %} api_key: - description: Your Emoncms write api key + description: Your Emoncms write API key required: true type: string url: - description: The root URL of your Emoncms installation. (Use https://emoncms.org for the cloud based version) + description: The root URL of your Emoncms installation. (Use `https://emoncms.org` for the cloud based version) required: true type: string inputnode: diff --git a/source/_integrations/emulated_hue.markdown b/source/_integrations/emulated_hue.markdown index a73558708f30..31d8f2170e06 100644 --- a/source/_integrations/emulated_hue.markdown +++ b/source/_integrations/emulated_hue.markdown @@ -1,12 +1,12 @@ --- -title: "Emulated Hue Bridge" -description: "Instructions on how to emulate a Hue Bridge within Home Assistant." -logo: home-assistant.png +title: Emulated Hue +description: Instructions on how to emulate a Hue Bridge within Home Assistant. ha_category: - Hub ha_release: 0.27 ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: emulated_hue ---
    @@ -15,7 +15,7 @@ Be aware that `emulated_hue` doesn't work for new users of **Google Home** with
    -The `emulated_hue` integration provides a virtual Philips Hue bridge, written entirely in software, which allows services that work with the Hue API to interact with Home Assistant +The `emulated_hue` integration provides a virtual Philips Hue bridge, written entirely in software that allows services that work with the Hue API to interact with Home Assistant entities. The driving use case behind for functionality is to allow Home Assistant to work with an Amazon Echo or Google Home with no setup cost outside of configuration changes. The virtual bridge can turn entities on/off or change the brightness of dimmable lights. The volume level of media players can be controlled as brightness. @@ -55,9 +55,8 @@ emulated_hue: ```yaml # Amazon Echo example configuration.yaml entry emulated_hue: - host_ip: YOUR.HASSIO.IP.ADDRESS listen_port: 80 - # Alexa stopped working on different ports. Search for "Philipps Hue Bridge V1 (round)" in the Alexa App to discover devices. + # Amazon Echo/Alexa stopped working on different ports. Search for "Philips Hue Bridge V1 (round)" in the Alexa App to discover devices. ``` {% configuration %} @@ -71,7 +70,7 @@ host_ip: required: false type: string listen_port: - description: "The port the Hue bridge API web server will run on. This can be any free port on your system. However, all new Alexa devices require listen_port: 80." + description: "The port the Hue bridge API web server will run on. This can be any free port on your system. However, all new Alexa devices require listen_port: 80. See `setcap` note below if this is set below `1024` when Home Assistant is ran as a non-root user." required: false type: integer default: 8300 @@ -146,18 +145,45 @@ These attributes used to be found under the `customize` section of `homeassistan You can verify that the `emulated_hue` integration has been loaded and is responding by pointing a local browser to the following URL: - - `http://:8300/description.xml` - This URL should return a descriptor file in the form of an XML file. - - `http://:8300/api/pi/lights` - This will return a list of devices, lights, scenes, groups, etc.. that `emulated_hue` is exposing to Alexa. +- `http://:80/description.xml` - This URL should return a descriptor file in the form of an XML file. +- `http://:80/api/pi/lights` - This will return a list of devices, lights, scenes, groups, etc.. that `emulated_hue` is exposing to Alexa. -For Google Home, verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). +Verify that the URLs above are using port 80, rather than port 8300 (i.e., `http://:80/description.xml`). Both Google Home and Amazon Alexa/Echo (as of the 2019-08 firmware) require port 80. -An additional step is required to run Home Assistant as a non-root user and use port 80 when using the AiO script. Execute the following command to allow `emulated_hue` to use port 80 as a non-root user. +### Platform specific instructions + +#### Home Assistant and Home Assistant Core on Docker + +No further actions are required + +#### Home Assistant Core in a Python venv + +An additional step is required to run Home Assistant as a non-root user and use port 80. + +##### Linux + +On Linux systems (Ubuntu, Debian, etc) execute the following command to allow `emulated_hue` to use port 80 as a non-root user: ```bash sudo setcap 'cap_net_bind_service=+ep' /srv/homeassistant/homeassistant_venv/bin/python3 ``` + Please note that your path may be different depending on your installation method. For example, if you followed the [Virtualenv instructions](/docs/installation/virtualenv/), your path will be `/srv/homeassistant/bin/python3`. +##### FreeBSD and FreeNAS + +On FreeBSD based systems, including FreeNAS, execute the following to allow `emulated_hue` to use port 80 as a non-root user: + +```bash +sysctl net.inet.ip.portrange.reservedhigh=0 +``` + +You can make this persist by adding the following to `/etc/sysctl.conf`: + +```bash +net.inet.ip.portrange.reservedhigh=0 +``` + ### License Much of this code is based on work done by Bruce Locke on his [ha-local-echo](https://github.com/blocke/ha-local-echo) project, originally released under the MIT License. The license is located [here](https://github.com/blocke/ha-local-echo/blob/b9bf5dcaae6d8e305e2283179ffba64bde9ed29e/LICENSE). diff --git a/source/_integrations/emulated_roku.markdown b/source/_integrations/emulated_roku.markdown index 5f0c7a46728b..c06b44b74f6f 100644 --- a/source/_integrations/emulated_roku.markdown +++ b/source/_integrations/emulated_roku.markdown @@ -1,15 +1,16 @@ --- -title: "Emulated Roku" -description: "Instructions on how to set up Emulated Roku within Home Assistant." -logo: home-assistant.png +title: Emulated Roku +description: Instructions on how to set up Emulated Roku within Home Assistant. ha_category: - Hub ha_release: 0.86 ha_iot_class: Local Push +ha_config_flow: true +ha_domain: emulated_roku --- This integration integrates an emulated Roku API into Home Assistant, -so remotes such as Harmony and Android apps can connect to it through WiFi as if it were a Roku player. +so remotes such as Harmony and Android apps can connect to it through Wi-Fi as if it were a Roku player. Home Assistant will see key presses and app launches as Events, which you can use as triggers for automations. Multiple Roku servers may be started if you run out of buttons by specifying multiple server entries. @@ -134,6 +135,6 @@ Known limitations: * Harmony uses UPnP discovery (UPnP is not needed after pairing), which might not work in Docker. You can: * Change Docker to host networking temporarily, then revert after pairing. * Run the `advertise.py` helper script from the emulated_roku library directly somewhere else and point it to the emulated Roku API. -* Harmony cannot launch apps as it uses IR instead of the WiFi API and will not display the custom dummy app list. +* Harmony cannot launch apps as it uses IR instead of the Wi-Fi API and will not display the custom dummy app list. * Home control buttons cannot be assigned to emulated Roku on the Harmony Hub Companion remote as they are limited to Hue (and possibly other APIs) within Harmony. * Harmony will not set the name of the added emulated Roku device to the specified `name`. diff --git a/source/_integrations/enigma2.markdown b/source/_integrations/enigma2.markdown index 7a8c48a1ba47..e195b45756ee 100644 --- a/source/_integrations/enigma2.markdown +++ b/source/_integrations/enigma2.markdown @@ -1,11 +1,14 @@ --- -title: "Enigma2 (OpenWebif)" -description: "Instructions on how to integrate an Enigma2 based box running OpenWebif into Home Assistant." +title: Enigma2 (OpenWebif) +description: Instructions on how to integrate an Enigma2 based box running OpenWebif into Home Assistant. logo: openwebif.png ha_category: - Media Player -ha_release: "0.90" -ha_iot_class: "Local Polling" +ha_release: '0.90' +ha_iot_class: Local Polling +ha_codeowners: + - '@fbradyirl' +ha_domain: enigma2 --- The `enigma2` platform allows you to control a Linux based set-top box which is running [Enigma2](https://github.com/oe-alliance/oe-alliance-enigma2) with the OpenWebif plugin installed. diff --git a/source/_integrations/enocean.markdown b/source/_integrations/enocean.markdown index 8ecb70d3f755..ae8aefc4caa0 100644 --- a/source/_integrations/enocean.markdown +++ b/source/_integrations/enocean.markdown @@ -1,6 +1,6 @@ --- -title: "EnOcean" -description: "Connect EnOcean devices to Home Assistant" +title: EnOcean +description: Connect EnOcean devices to Home Assistant logo: enocean.png ha_category: - Hub @@ -10,6 +10,9 @@ ha_category: - Switch ha_release: 0.21 ha_iot_class: Local Push +ha_codeowners: + - '@bdurrer' +ha_domain: enocean --- The [EnOcean](https://en.wikipedia.org/wiki/EnOcean) standard is supported by many different vendors. There are switches and sensors of many different kinds, and typically they employ energy harvesting to get power such that no batteries are necessary. @@ -19,7 +22,7 @@ The `enocean` integration adds support for some of these devices. You will need There is currently support for the following device types within Home Assistant: - [Binary Sensor](#binary-sensor) - Wall switches -- [Sensor](#sensor) - Power meters, temperature sensors and humidity sensors +- [Sensor](#sensor) - Power meters, temperature sensors, humidity sensors and window handles - [Light](#light) - Dimmers - [Switch](#switch) @@ -32,7 +35,7 @@ The following devices have been confirmed to work out of the box: - Omnio WS-CH-102-L-rw battery-less wall switch - Permundo PSC234 (switch and power monitor) - EnOcean STM-330 temperature sensor - +- Hoppe SecuSignal window handle from Somfy If you own a device not listed here, please check whether your device can talk in one of the listed [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) (EEP). If it does, it will most likely work. @@ -160,6 +163,7 @@ The EnOcean sensor platform currently supports the following device types: * [power sensor](#power-sensor) * [humidity sensor](#humidity-sensor) * [temperature sensor](#temperature-sensor) + * [window handle](#window-handle) To use your EnOcean device, you first have to set up your [EnOcean hub](#hub) and then add the following to your `configuration.yaml` file: @@ -188,7 +192,6 @@ device_class: default: powersensor {% endconfiguration %} - ### Power sensor This has been tested with a Permundo PSC234 switch, but any device sending EEP **A5-12-01** messages will work. @@ -204,7 +207,6 @@ sensor: device_class: powersensor ``` - ### Humidity sensor The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) are supported: @@ -256,29 +258,29 @@ sensor: The temperature sensor supports these additional configuration properties. {% configuration %} -temp_min: +min_temp: description: The minimal temperature in °C your sensor supports. required: false type: integer default: 0 -temp_max: +max_temp: description: The maximum temperature in °C your sensor supports. required: false type: integer default: 40 -range_min: - description: The range value your sensor reports for `temp_min` +range_from: + description: The range value your sensor reports for `min_temp` required: false type: integer default: 255 -range_max: - description: The range value your sensor reports for `temp_max` +range_to: + description: The range value your sensor reports for `max_temp` required: false type: integer default: 0 {% endconfiguration %} -Note that the default configuration values of _range_min_ and _range_max_ are not typos, the range is backwards for most sensors. +Note that the default configuration values of _range_from_ and _range_to_ are not typos, the range is backwards for most sensors. However, some EEPs have a different, inverted range, which goes from 0 to 250. This includes the following EEPs: - **A5-04-01** @@ -294,10 +296,33 @@ sensor: platform: enocean id: [0x01,0x90,0x84,0x3C] device_class: temperature - range_min: 0 - range_max: 250 + range_from: 0 + range_to: 250 +``` + +### Window handle + +As of now, the Hoppe SecuSignal window handle from Somfy has been successfully tested. However, any mechanical window handle that follows the EnOcean RPS telegram spec F6 10 00 (Hoppe AG) is supported. + +To configure a window handle, add the following code to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry for window handle EEP F6-10-00 +sensor: + - name: Living Room Window Handle + platform: enocean + id: [0xDE,0xAD,0xBE,0xEF] + device_class: windowhandle ``` +The configuration does not have any optional parameters. + +The window handle sensor can have the following states: + +- **closed**: The window handle is in closed position (typically down, or 6 o'clock) +- **open**: The window handle is in open position (typically left or right, or 3 o'clock or 9 o'clock) +- **tilt**: The window handle is in tilt position (typically up or 12 o'clock) + ## Switch An EnOcean switch can take many forms. Currently, only a few types have been tested: Permundo PSC234 and Nod On SIN-2-1-01. diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown index b3367d300b8e..0a55306f4ff0 100644 --- a/source/_integrations/enphase_envoy.markdown +++ b/source/_integrations/enphase_envoy.markdown @@ -1,11 +1,11 @@ --- -title: "Enphase Envoy" -description: "Instructions on how to setup Enphase Envoy with Home Assistant." -logo: enphase-logo.svg +title: Enphase Envoy +description: Instructions on how to setup Enphase Envoy with Home Assistant. ha_category: - Energy ha_release: 0.76 ha_iot_class: Local Polling +ha_domain: enphase_envoy --- A sensor platform for the [Enphase Envoy](https://enphase.com/en-us/products-and-services/envoy-and-combiner) solar energy gateway. Works with older models that only have production metrics (ie. Envoy-C) and newer models that offer both production and consumption metrics (ie. Envoy-S). @@ -29,6 +29,14 @@ ip_address: description: The local IP address of your Envoy. Leave blank to use the default host name 'envoy', but this may not always be reliable. You should be able to just browse to this IP address. required: false type: string +username: + description: Access more information beyond the basics, such as Inverter data. Some Envoy devices do not use the standard username which is used by the API. This lets the user use a different username than the default of 'envoy'. + required: false + type: string +password: + description: Password to be used with the username configuration variable. + required: false + type: string monitored_conditions: description: The list of conditions to monitor. If you have an Envoy that doesn't support consumption metrics (ie. Envoy-C), it's best only configure the production metrics. required: false diff --git a/source/_integrations/entur_public_transport.markdown b/source/_integrations/entur_public_transport.markdown index 55b8e6674969..5d1a9d4ee532 100644 --- a/source/_integrations/entur_public_transport.markdown +++ b/source/_integrations/entur_public_transport.markdown @@ -1,11 +1,13 @@ --- -title: "Entur public transport" -description: "Instructions for how to set up monitoring of public transport departures in Norway." -logo: entur.svg +title: Entur +description: Instructions for how to set up monitoring of public transport departures in Norway. ha_category: - Transport ha_release: 0.84 ha_iot_class: Cloud Polling +ha_codeowners: + - '@hfurubotten' +ha_domain: entur_public_transport --- The `entur_public_transport` sensor gives real-time departure information for the next departures from any bus stop, car ferry quay, train station, airport and person ferries quay in Norway. @@ -105,18 +107,18 @@ sensor: [Entur's travel planer](https://en-tur.no) has a map of all stops used in Norway. Use the map to find the stops you're interested in. When you have found one of your stops, click on it. -Now the web browser should contain an URL with the id in it. Such as this: +Now the web browser should contain a URL with the id in it. Such as this: `https://en-tur.no/nearby-stop-place-detail?id=NSR:StopPlace:32376` -The stop id is the content after `id=` parameter in the url. Copy paste this into the configuration. +The stop id is the content after `id=` parameter in the URL. Copy paste this into the configuration. ## FAQ - Troubleshooting **Q:** I have multiple stop ids and have added whitelisting of a line. Now some of the stop places are showing `unknown`. **A:** A whitelisting of lines takes affect on all of the stops. So you have to whitelist all lines you are interested in on all stop places. - + --- **Q:** I have added whitelisting of lines, and everything has worked as fine before, but now it has stopped updating all of a sudden. diff --git a/source/_integrations/environment_canada.markdown b/source/_integrations/environment_canada.markdown index d4196a79120f..39ff7c889a77 100644 --- a/source/_integrations/environment_canada.markdown +++ b/source/_integrations/environment_canada.markdown @@ -1,6 +1,6 @@ --- -title: "Environment Canada Weather" -description: "Weather data from Environment Canada." +title: Environment Canada +description: Weather data from Environment Canada. logo: environment_canada.png ha_category: - Weather @@ -8,6 +8,9 @@ ha_category: - Camera ha_release: 0.95 ha_iot_class: Cloud Polling +ha_codeowners: + - '@michaeldavie' +ha_domain: environment_canada --- The `environment_canada` weather platforms provide meteorological data for Canadian locations from [Environment Canada](https://weather.gc.ca/index_e.html). @@ -33,9 +36,9 @@ Each platform automatically determines which weather station's data to use. Howe For each platform, the location to use is determined according to the following hierarchy: - - Location ID specified in platform configuration (optional) - - Closest station to latitude/longitude specified in platform configuration (optional - - Closest station to latitude/longitude specified in Home Assistant core configuration +- Location ID specified in platform configuration (optional) +- Closest station to latitude/longitude specified in platform configuration (optional) +- Closest station to latitude/longitude specified in Home Assistant configuration ## Weather @@ -69,7 +72,7 @@ station: required: false type: string name: - description: Name to be used for the entity ID, e.g. `weather.`. + description: Name to be used for the entity ID, e.g., `weather.`. required: false type: string forecast: @@ -97,20 +100,20 @@ sensor: - `wind_chill` - The current wind chill, in ºC. - `humidex` - The current humidex, in ºC. - `pressure` - The current air pressure, in kPa. - - `tendency` - The current air pressure tendency, e.g. "Rising". + - `tendency` - The current air pressure tendency, e.g., "Rising". - `humidity` - The current humidity, in %. - `visibility` - The current visibility, in km. - - `condition` - A brief text statement of the current weather conditions, e.g. "Sunny". + - `condition` - A brief text statement of the current weather conditions, e.g., "Sunny". - `icon_code` - A two-digit number corresponding to a condition icon, as specified in these [image to description](https://dd.weather.gc.ca/citypage_weather/docs/Current_Conditions_Icons-Icones_conditions_actuelles.pdf) and [code to description](https://dd.weather.gc.ca/citypage_weather/docs/current_conditions_icon_code_descriptions_e.csv) mappings. - `wind_speed` - The current sustained wind speed, in km/h. - `wind_gust` - The current wind gust, in km/h. - - `wind_dir` - The current cardinal wind direction, e.g. "SSW". + - `wind_dir` - The current cardinal wind direction, e.g., "SSW". - `wind_bearing` - The current wind direction in degrees. - `high_temp` - The next forecast high temperature, in ºC. - `low_temp` - The next forecast low temperature, in ºC. - `uv_index` - The next forecast UV index. - `pop` - The next forecast probability of precipitation, in %. - - `text_summary` - A textual description of the next forecast period, e.g. "Tonight. Mainly cloudy. Low -12." + - `text_summary` - A textual description of the next forecast period, e.g., "Tonight. Mainly cloudy. Low -12." - `precip_yesterday` - The total amount of precipitation that fell the previous day. - `warnings` - Current warning alerts. - `watches` - Current watch alerts. @@ -197,7 +200,7 @@ station: required: false type: string name: - description: Name to be used for the entity ID, e.g. `camera.`. + description: Name to be used for the entity ID, e.g., `camera.`. required: false type: string loop: diff --git a/source/_integrations/envirophat.markdown b/source/_integrations/envirophat.markdown index b0d41db4b8a1..6514177e4b64 100644 --- a/source/_integrations/envirophat.markdown +++ b/source/_integrations/envirophat.markdown @@ -1,11 +1,11 @@ --- -title: "Enviro pHAT" -description: "Instructions on how to integrate the Enviro pHAT within Home Assistant." -logo: raspberry-pi.png +title: Enviro pHAT +description: Instructions on how to integrate the Enviro pHAT within Home Assistant. ha_category: - DIY ha_iot_class: Local Polling ha_release: 0.44 +ha_domain: envirophat --- The `envirophat` sensor platform allows you to display information collected by an [Enviro pHAT](https://shop.pimoroni.com/products/enviro-phat) add-on board for the Raspberry Pi. The board features a wide range of sensors, such as: diff --git a/source/_integrations/envisalink.markdown b/source/_integrations/envisalink.markdown index db77a771c3fa..26e348a4a35d 100644 --- a/source/_integrations/envisalink.markdown +++ b/source/_integrations/envisalink.markdown @@ -1,6 +1,6 @@ --- -title: "Envisalink Alarm Control Panel" -description: "Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an envisalink evl3/evl4 board." +title: Envisalink +description: Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an envisalink evl3/evl4 board. logo: eyezon.png ha_category: - Alarm @@ -8,6 +8,7 @@ ha_category: - Sensor ha_release: 0.23 ha_iot_class: Local Push +ha_domain: envisalink --- The `envisalink` integration will allow Home Assistant users who own either a DSC or Honeywell alarm panel to leverage their alarm system and its sensors to provide Home Assistant with rich information about their homes. Connectivity between Home Assistant and the alarm panel is accomplished through a device produced by Eyez On, known as the Envisalink. The Envisalink evl3 and evl4 boards provide a TCP/IP interface to the alarm panel, where it emulates an alarm keypad. This board also exposes a raw TCP/IP based API, upon which this integration is built. Currently, the Envisalink version 4 is the latest model. This integration supports both the evl3 and the evl4. @@ -22,7 +23,7 @@ There is currently support for the following device types within Home Assistant: This is a fully event-based component. Any event sent by the Envisalink device will be immediately reflected within Home Assistant. -As of 0.29, the alarm_trigger service is supported. It is possible to fire off an envisalink-based alarm directly from Home Assistant. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. +As of 0.29, the alarm_trigger service is supported. It is possible to fire off an envisalink-based alarm directly from Home Assistant. For example, a newer Z-Wave / Zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. An `envisalink` section must be present in the `configuration.yaml` file and contain the following options as required: @@ -104,7 +105,7 @@ panic_type: default: Police type: string zones: - description: "Envisalink boards have no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information on the available zone types, take a look at the [Binary Sensor](/integrations/envisalink) docs. *Note: If no zones are specified, Home Assistant will not load any binary_sensor components.*" + description: "Envisalink boards have no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information on the available zone types, take a look at the [Binary Sensor](/integrations/envisalink) documentation. *Note: If no zones are specified, Home Assistant will not load any binary_sensor components.*" required: false type: integer keys: @@ -136,6 +137,6 @@ The following services are supported by Envisalink and can be used to script or - **alarm_arm_home**: Arms the alarm in home mode. - **alarm_arm_away**: Arms the alarm in standard away mode. - **alarm_arm_night**: Arms the alarm in night mode. -- **alarm_trigger**: Trigger an alarm on the Envisalink connected alarm system. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. -- **envisalink_alarm_keypress**: Sends a string of up to 6 characters to the alarm. *DSC alarms only* +- **alarm_trigger**: Trigger an alarm on the Envisalink connected alarm system. For example, a newer Z-Wave / Zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. +- **alarm_keypress**: Sends a string of up to 6 characters to the alarm. *Works with DSC panels, and confirmed to work with Honeywell Vista-20P (aka First Alert FA-168)* - **invoke_custom_function**: Invokes a custom PGM function. *DSC alarms only* diff --git a/source/_integrations/ephember.markdown b/source/_integrations/ephember.markdown index baf6765bac78..409d5bca350a 100644 --- a/source/_integrations/ephember.markdown +++ b/source/_integrations/ephember.markdown @@ -1,15 +1,17 @@ --- -title: "EPH Controls EMBER Thermostat" -description: "Instructions on how to integrate EPH Controls EMBER thermostats within Home Assistant." +title: EPH Controls +description: Instructions on how to integrate EPH Controls EMBER thermostats within Home Assistant. logo: ephcontrolsember.png ha_category: - Climate ha_release: 0.57 ha_iot_class: Local Polling +ha_codeowners: + - '@ttroy50' +ha_domain: ephember --- - -The `ephember` climate platform lets you control [EPH Controls](https://emberapp.ephcontrols.com/) thermostats. The module only works if you have a WiFi gateway to control your EPH system and an account on the EMBER app. +The `ephember` climate platform lets you control [EPH Controls](https://emberapp.ephcontrols.com/) thermostats. The module only works if you have a Wi-Fi gateway to control your EPH system and an account on the EMBER app. To set it up, add the following information to your `configuration.yaml` file: diff --git a/source/_integrations/epson.markdown b/source/_integrations/epson.markdown index 311a3aa158c2..ff8459ff08bc 100644 --- a/source/_integrations/epson.markdown +++ b/source/_integrations/epson.markdown @@ -1,11 +1,12 @@ --- -title: "Epson" -description: "Instructions on how to integrate Epson projector into Home Assistant." +title: Epson +description: Instructions on how to integrate Epson projector into Home Assistant. logo: epson.png ha_category: - Media Player ha_release: 0.72 ha_iot_class: Local Polling +ha_domain: epson --- The `epson` platform allows you to control a Epson projector from Home diff --git a/source/_integrations/epsonworkforce.markdown b/source/_integrations/epsonworkforce.markdown index aaa6c43cd611..f52d484d8928 100644 --- a/source/_integrations/epsonworkforce.markdown +++ b/source/_integrations/epsonworkforce.markdown @@ -1,11 +1,14 @@ --- -title: "Epson Workforce" -description: "Instructions on how to integrate Epson Workforce Printer into Home Assistant." +title: Epson Workforce +description: Instructions on how to integrate Epson Workforce Printer into Home Assistant. logo: epson.png ha_category: - Sensor ha_release: 0.92 ha_iot_class: Local Polling +ha_codeowners: + - '@ThaStealth' +ha_domain: epsonworkforce --- The `epson workforce` platform allows you to monitor the ink levels of a Epson Workforce printer from Home diff --git a/source/_integrations/eq3btsmart.markdown b/source/_integrations/eq3btsmart.markdown index 5eb9ea261db6..c35923f11a9f 100644 --- a/source/_integrations/eq3btsmart.markdown +++ b/source/_integrations/eq3btsmart.markdown @@ -1,11 +1,14 @@ --- -title: "EQ3 Bluetooth Smart Thermostats" -description: "Instructions on how to integrate EQ3 Bluetooth Smart Thermostats into Home Assistant." +title: EQ3 Bluetooth Smart Thermostats +description: Instructions on how to integrate EQ3 Bluetooth Smart Thermostats into Home Assistant. logo: eq3.gif ha_category: - Climate ha_iot_class: Local Polling ha_release: 0.18 +ha_codeowners: + - '@rytilahti' +ha_domain: eq3btsmart --- The `eq3btsmart` climate platform allows you to integrate EQ3 Bluetooth Smart Thermostats. diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index 1b774de5fe49..e8d01bc80d76 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -1,12 +1,15 @@ --- -title: "ESPHome" -description: "Support for ESPHome devices using the native ESPHome API." +title: ESPHome +description: Support for ESPHome devices using the native ESPHome API. featured: true -logo: esphome.png ha_category: - DIY ha_release: 0.85 ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - '@OttoWinter' +ha_domain: esphome --- This integration allows you to connect your [ESPHome](https://esphome.io) devices directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api.html). diff --git a/source/_integrations/essent.markdown b/source/_integrations/essent.markdown index 4c786679a154..dffcd83444c5 100644 --- a/source/_integrations/essent.markdown +++ b/source/_integrations/essent.markdown @@ -1,12 +1,15 @@ --- -title: "Essent" -description: "Instructions on how to integrate Essent within Home Assistant." +title: Essent +description: Instructions on how to integrate Essent within Home Assistant. logo: essent.png ha_category: - Energy - Sensor ha_release: 0.93 ha_iot_class: Cloud Polling +ha_codeowners: + - '@TheLastProject' +ha_domain: essent --- The `essent` platform uses [PyEssent](https://github.com/TheLastProject/PyEssent/) to communicate with the (undocumented) API of Dutch energy provider Essent. It provides sensors for each of your meters and tariffs, updated daily. @@ -31,4 +34,3 @@ password: description: Your password for [Mijn Essent](https://www.essent.nl/content/particulier/klantenservice/mijn_essent/). type: string {% endconfiguration %} - diff --git a/source/_integrations/etherscan.markdown b/source/_integrations/etherscan.markdown index d16cf44d78dc..206fba68dd95 100644 --- a/source/_integrations/etherscan.markdown +++ b/source/_integrations/etherscan.markdown @@ -1,11 +1,12 @@ --- -title: "Etherscan" -description: "Instructions on how to integrate Etherscan.io data within Home Assistant." +title: Etherscan +description: Instructions on how to integrate Etherscan.io data within Home Assistant. logo: etherscan.png ha_category: - Finance ha_release: 0.47 ha_iot_class: Cloud Polling +ha_domain: etherscan --- The `Etherscan` sensor platform displays Ether and ERC-20 token balances from [Etherscan.io](https://etherscan.io). diff --git a/source/_integrations/eufy.markdown b/source/_integrations/eufy.markdown index c52ac6501b7d..24890e2b3366 100644 --- a/source/_integrations/eufy.markdown +++ b/source/_integrations/eufy.markdown @@ -1,6 +1,6 @@ --- -title: "Eufy" -description: "Instructions on how to integrate Eufy devices into Home Assistant." +title: eufy +description: Instructions on how to integrate Eufy devices into Home Assistant. logo: eufy.png ha_category: - Hub @@ -8,6 +8,7 @@ ha_category: - Switch ha_release: 0.68 ha_iot_class: Local Polling +ha_domain: eufy --- The `eufy` integration is the main integration to integrate various [eufy](https://www.eufylife.com/) devices with Home Assistant. diff --git a/source/_integrations/everlights.markdown b/source/_integrations/everlights.markdown index 9b29cf84f75f..4a3531edf2b2 100644 --- a/source/_integrations/everlights.markdown +++ b/source/_integrations/everlights.markdown @@ -1,11 +1,12 @@ --- -title: "EverLights Light" -description: "Instructions on how to set up EverLights within Home Assistant." +title: EverLights +description: Instructions on how to set up EverLights within Home Assistant. logo: everlights.png ha_category: - Light ha_iot_class: Local Polling ha_release: 0.87 +ha_domain: everlights --- [EverLights](https://myeverlights.com/) are permanent Christmas lights installed on a home's gutters or flashing. This integration can change all LEDs in a zone to a single color or activate a pattern that was previously saved to the control box. diff --git a/source/_integrations/evohome.markdown b/source/_integrations/evohome.markdown index 4cd2d83222c7..0ece0adff3c4 100644 --- a/source/_integrations/evohome.markdown +++ b/source/_integrations/evohome.markdown @@ -1,40 +1,32 @@ --- -title: "Honeywell evohome/TCC systems" -description: "Instructions on how to integrate a Honeywell evohome/TCC system with Home Assistant." +title: Honeywell Total Connect Comfort (Europe) +description: Instructions on how to integrate a Honeywell Evohome/TCC system with Home Assistant. logo: honeywell.png ha_category: - Hub - Climate -ha_release: 0.80 + - Water Heater +ha_release: '0.80' ha_iot_class: Cloud Polling +ha_codeowners: + - '@zxdavb' +ha_domain: evohome --- The `evohome` integration links Home Assistant with all _non-US_ [Honeywell Total Connect Comfort (TCC)](https://international.mytotalconnectcomfort.com/Account/Login) CH/DHW systems, such as: -- The Honeywell evohome CH/DHW system, and -- The Honeywell Round Thermostat +- the Honeywell Evohome CH/DHW system, and +- the Honeywell Mobile Access Kit with a Round Thermostat It does not support the home security functionality of TCC. -It uses v2 of the [evohome-client](https://github.com/watchforstock/evohome-client) client library. +It uses the [evohome-async](https://github.com/zxdavb/evohome-async) client library. -Honeywell removed support for higher-precision temperatures from the v2 API, and thus reported temperatures are rounded up to the nearest 0.5C. - -### evohome - -evohome is a multi-zone system. Each zone is represented as a **Climate** device: it will expose the zone's operating mode, temperature and setpoint. - -The controller/location is also represented as a **Climate** device: it will expose the location's operating mode (see below for details). Note that the controller's current temperature is calculated as an average of all the Zones. - -The DHW controller is represented as a **WaterHeater** device: It will report its current temperature (but not target temperature), and it can be turned on or off. - -### Round Thermostat - -Although Round Thermostat is, strictly speaking, a Controller and a single zone, they are merged into a single **Climate** device. +For your system to be compatible with this integration, then you must be able to access it via [https://international.mytotalconnectcomfort.com/](https://international.mytotalconnectcomfort.com/) (note the 'international'). ## Configuration -To set up this integration, add the following to your **configuration.yaml** file: +To set up this integration, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -45,7 +37,7 @@ evohome: {% configuration %} username: - description: The username (email address) that has access to [Honeywell TCC](https://international.mytotalconnectcomfort.com/Account/Login) web site. + description: The username (email address) that has access to the [TCC](https://international.mytotalconnectcomfort.com/Account/Login) web site. required: true type: string password: @@ -53,44 +45,153 @@ password: required: true type: string location_idx: - description: Used to select which location to use, if your login has access to more than one location. Multiple locations at one time are not supported. + description: Used to select which location to use, if your login has access to more than one location. Multiple locations at one time are not officially supported. required: false type: integer default: 0 scan_interval: - description: How often updates are retrieved from Honeywell's web servers. The minimum value is 60 seconds. + description: How often updates are retrieved from the vendor's web servers. The minimum interval is 60 seconds. required: false type: integer default: 300 {% endconfiguration %} -This is an IoT cloud-polling device, and the recommended `scan_interval` is 180 seconds. Testing has indicated that this is a safe interval that - by itself - shouldn't cause you to be rate-limited by Honeywell. +This is an IoT cloud-polling integration and the recommended minimum `scan_interval` is 180 seconds. Testing has indicated that this is a safe interval that - by itself - shouldn't cause you to be rate-limited by the vendor. There is little value in shorter intervals, as this integration will automatically force a refresh shortly after any configuration changes. + +## Locations and Zones + +TCC systems are implemented as a _location_, which consist of 1-12 _zones_ and, optionally, a DHW controller: + + - The system location (e.g., a house) is used for operating modes such as home, away, economy, etc. + - Heating zones (e.g., rooms) are used for the target temperature. + +### Evohome + +Each zone is represented as a **Climate** entity which will expose the zone's operating mode, current temperature and setpoint. + +The Evohome location (controller) is also represented as a **Climate** entity that will expose the location's operating mode. Locations have neither a current temperature nor a setpoint, but as all **Climate** entities are required by Home Assistant to report a temperature, this is calculated as the average of all the zones. + +The DHW controller is represented as a **WaterHeater** entity which will report its current temperature and can be turned on or off. Due to limitations with the vendor's RESTful API, the setpoint is not reported and cannot be changed. + +Note that there is limited support for schedules: they cannot be changed and there is no facility to backup/restore that data (see [here](https://evohome.readthedocs.io/en/latest/) for such functionality). + +### Round Thermostat + +These systems use an internet gateway rather than an Evohome controller. They usually have only one Round Thermostat, although they can have two. Systems with one such thermostat will still appear as two **Climate** entities, one for location mode (away, economy, etc.), and another for the zone setpoint. + +## Temperature Precision + +Note that TCC devices may well measure temperatures with very high precision, but the vendor API will report temperatures rounded _towards_ the setpoint (i.e., either up or down) with a precision of 0.5 °C; this a proxy for the deadband as used by other climate systems. Where possible, this integration will leverage an older vendor API to obtain current temperatures with a precision of 0.01 °C. + +Therefore, depending upon the above, Home Assistant will display/record current temperatures with a precision of either 0.5 °C or 0.1 °C (it's highest supported precision). + +## System modes, Zone overrides and Inheritance + +TCC locations can support up to six distinct operating modes: **Auto**, **AutoWithEco**, **Away**, **DayOff**, **HeatingOff**, and **Custom**. Not all systems support all modes. + +Zones support three setpoint modes: **FollowSchedule**, **TemporaryOverride**, and **PermanentOverride** but 'inherit' an operating mode from their location (the actual algorithm for this is a little more complicated than indicated below - please see the vendor's documentation). + +For **FollowSchedule**, a zone's `setpoint` (target temperature) is a function of its scheduled target temperature and its inherited mode: + +- **Auto** setpoints are scheduled temperatures (the default) +- **AutoWithEco** setpoints are scheduled temperatures, less 3 °C + +If the zone's target temperature is changed then it will either be a **TemporaryOverride** or a **PermanentOverride**, depending. A **TemporaryOverride** will revert to **FollowSchedule** after some specified time. A **PermanentOverride** is a permanent change until some subsequent intervention is made. Zones can be switched between the two override modes without changing the target temperature. + +For some location modes all zones will have a setpoint enforced upon them, regardless of their own mode: + +- **Away** setpoints to 12 °C +- **HeatingOff** setpoints to a minimum, usually 4 °C + +For **Away**, the DHW controller will also be turned off. -## Operating modes, and inheritance +Some locations have a hidden mode, **AutoWithReset**, that will behave as **Auto**, and will reset all zones to **FollowSchedule**. -Zones support only three setpoint modes: **FollowSchedule**, **TemporaryOverride**, and **PermanentOverride**. +In the Home Assistant schema, all this is done via a combination of `HVAC_MODE` and `PRESET_MODE` (but also see the state attributes `system_mode_status` and `setpoint_status`, below). -Mostly, the zone 'inherits' its functional operating mode from the controller (the actual algorithm for this is a little complicated). +## Service Calls -The evohome controller supports seven distinct system modes: **Auto**, **AutoWithEco**, **Away**, **DayOff**, **HeatingOff**, and **Custom**; **AutoWithReset** is a hidden mode that will revert all zones to **FollowSchedule** mode. +This integration provides its own service calls to expose the full functionality of TCC systems beyond the limitations of Home Assistant's standardised schema. Mostly, this relates to specifying the duration of mode changes, after which time the entities revert to **Auto** or **FollowSchedule** (for locations and zones, respectively). -If the zone is in **FollowSchedule** mode, its `temperature` (target temperature) is a function of its scheduled temperature and its functional mode - for example, **AutoWithEco** is scheduled temperature less 3C. +It is recommended to use the native service calls (e.g., `evohome.set_system_mode`) instead of Home Assistant's generic equivalents (e.g., `climate.set_hvac_mode`) whenever possible. However, it may be necessary to use the generic service calls for integration with 3rd party systems such as Amazon Alexa or Google Home. -If the controller is set to **HeatingOff** (target temperature to a minimum) or **Away** (target temperature to 12C), then the zones will inherit that mode regardless of their own setpoint mode. +### evohome.set_system_mode + +This service call will set the operating `mode` of the system for a specified period of time, after which it will revert to **Auto**. However, if no period of time is provided, then the change is permanent. + +For **AutoWithEco**, the period of time is a `duration` is up to 24 hours. + +{% raw %} +```yaml +- action: + - service: evohome.set_system_mode + data: + mode: AutoWithEco + duration: {hours: 1, minutes: 30} +``` +{% endraw %} + +For the other modes, such as **Away**, the duration is a `period` of days, where 1 day will revert at midnight tonight, and 2 days reverts at midnight tomorrow. + +{% raw %} +```yaml +- action: + - service: evohome.set_system_mode + data: + mode: Away + period: {days: 30} +``` +{% endraw %} + +### evohome.reset_system + +This service call will set the operating mode of the system to **AutoWithReset**, and reset all the zones to **FollowSchedule**. + +Not all systems support this feature. + +### evohome.refresh_system + +This service call will immediately pull the latest state data from the vendor's servers rather than waiting for the next `scan_interval`. + +### evohome.set_zone_override + +This service call will set the `setpoint` of a zone, as identified by its `entity_id`, for a specified period of time (**TemporaryOverride**). However, if no period of time is provided (c.f. a duration of 0, below), then the change is permanent (**PermanentOverride**). + +{% raw %} +```yaml +- action: + - service: evohome.set_zone_override + data: + entity_id: climate.loungeroom + setpoint: 10 +``` + +The `duration` can be up to 24 hours, after which the zone mode will revert to schedule (**FollowSchedule**). If the `duration` is 0 hours, then the change will be until the next setpoint. + +{% raw %} +```yaml +- action: + - service: evohome.set_zone_override + data: + entity_id: climate.loungeroom + setpoint: 10 + duration: {minutes: 0} +``` +{% endraw %} -If the zone's temperature is changed, then it will be a **TemporaryOverride** that will revert to **FollowSchedule** at the next scheduled setpoint. Once this is done, the zone can be switched to **PermanentOverride** mode. +### evohome.clear_zone_override -In Home Assistant, all this is done via `HVAC_MODE` and `PRESET_MODE` (but also see `systemModeStatus`, `setpointStatus`, below). +This service call is used to set a zone, as identified by its `entity_id`, to **FollowSchedule**. ## Useful Jinja Templates -The actual operating mode of evohome entities can be tracked via their state attributes, which includes a JSON data structure for the current state called `status`. +The actual operating mode of Evohome entities can be tracked via their state attributes, which includes a JSON data structure for the current state called `status`. -For the Controller, see `systemModeStatus`: +For the location (controller), see `system_mode_status`: {% raw %} ```text -{% if state_attr('climate.my_home', 'status').systemModeStatus.mode == "Away" %} +{% if state_attr('climate.my_home', 'status').system_mode_status.mode == "Away" %} The system is in Away mode {% else %} The system is not in Away mode @@ -98,11 +199,11 @@ For the Controller, see `systemModeStatus`: ``` {% endraw %} -For the Zones, it is `setpointStatus`: +For the Zones, it is `setpoint_status`: {% raw %} ```text -{{ state_attr('climate.kitchen', 'status').setpointStatus.setpointMode }} +{{ state_attr('climate.kitchen', 'status').setpoint_status.setpoint_mode }} ``` {% endraw %} @@ -110,16 +211,16 @@ The Zones will expose the current/upcoming scheduled `setpoints`: {% raw %} ```text -{{ state_attr('climate.kitchen', 'status').setpoints.next.temperature }} +{{ state_attr('climate.kitchen', 'status').setpoints.next_sp_temp }} ``` {% endraw %} -All evohome entities may have faults, and these can be turned into sensors, or: +All Evohome entities may have faults, and these can be turned into sensors, or: {% raw %} ```text -{% if state_attr('climate.bedroom', 'status').activeFaults %} - {% if state_attr('climate.bedroom', 'status').activeFaults[0].faultType == 'TempZoneActuatorLowBattery' %} +{% if state_attr('climate.bedroom', 'status').active_faults %} + {% if state_attr('climate.bedroom', 'status').active_faults[0].fault_type == 'TempZoneActuatorLowBattery' %} There is a low battery {% endif %} There is a Fault! diff --git a/source/_integrations/ezviz.markdown b/source/_integrations/ezviz.markdown new file mode 100644 index 000000000000..8c76eb83e17a --- /dev/null +++ b/source/_integrations/ezviz.markdown @@ -0,0 +1,246 @@ +--- +title: Ezviz +description: Integrate Ezviz camera within Home Assistant. +logo: ezviz.png +ha_release: 0.107 +ha_category: + - Camera +ha_iot_class: Cloud Polling +ha_domain: ezviz +ha_codeowners: + - '@baqs' +--- + +The `ezviz` sensor platform uses the EzvizLife API to interact with the devices. +It also exposes an RTSP stream, by using the local camera IPs (so the device hosting Home Assistant has to be able to access the local IP of the cameras). + +As there is no official documentation for the API, the component retrieves data from the API used in the Ezviz mobile app, [hosted here](https://apiieu.ezvizlife.com). + +## Configuration + +The configuration (see below) needs your Ezviz username & password you use within the Ezviz mobile application. + +Next, add the Ezviz camera to your `configuration.yaml` file like below: + +```yaml +# Example configuration.yaml entry +camera: + - platform: ezviz + username: YOUR_USERNAME + password: YOUR_PASSWORD + cameras: + D12345678: + username: YOUR_CAMERA_USERNAME + password: YOUR_CAMERA_PASSWORD +``` + +As you see, here is the way to describe the camera credentials. +The password for each camera is usually written underneath the device, near the QR code. It is also code "verification code". + +{% configuration %} +username: + description: The Ezviz account username. + required: true + type: string +password: + description: The Ezviz account password. + required: true + type: string +cameras: + description: A list of cameras + required: false + type: string + serial: + description: The Ezviz camera Serial, usually a letter followed by 8 digits. + required: true + type: string + username: + description: The Ezviz camera RTSP username. + required: true + type: string + password: + description: The Ezviz verification code. + required: true + type: string +{% endconfiguration %} + +## Lovelace + +If you want a shiny Lovelace card, with proper buttons, here is a snippet of a Lovelace card: + +```yaml + +camera_image: camera.c6n_d12345678 +camera_view: live +elements: + - icon: 'mdi:arrow-up' + style: + background: 'rgba(255, 255, 255, 0.5)' + bottom: 50px + right: 25px + tap_action: + action: call-service + service: camera.ezviz_ptz + service_data: + direction: up + entity_id: camera.c6n_d12345678 + type: icon + - icon: 'mdi:arrow-down' + style: + background: 'rgba(255, 255, 255, 0.5)' + bottom: 0px + right: 25px + tap_action: + action: call-service + service: camera.ezviz_ptz + service_data: + direction: down + entity_id: camera.c6n_d12345678 + type: icon + - icon: 'mdi:arrow-left' + style: + background: 'rgba(255, 255, 255, 0.5)' + bottom: 25px + right: 50px + tap_action: + action: call-service + service: camera.ezviz_ptz + service_data: + direction: left + entity_id: camera.c6n_d12345678 + type: icon + - icon: 'mdi:arrow-right' + style: + background: 'rgba(255, 255, 255, 0.5)' + bottom: 25px + right: 0px + tap_action: + action: call-service + service: camera.ezviz_ptz + service_data: + direction: right + entity_id: camera.c6n_d12345678 + type: icon + - icon: 'mdi:run-fast' + style: + background: 'rgba(255, 255, 255, 0.5)' + top: 25px + right: 25px + tap_action: + action: call-service + service: camera.ezviz_switch_follow_move_on + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon + - icon: 'mdi:run' + style: + background: 'rgba(255, 255, 255, 0.5)' + top: 25px + right: 0px + tap_action: + action: call-service + service: camera.ezviz_switch_follow_move_off + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon + - icon: 'mdi:eye' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 25px + top: 50px + tap_action: + action: call-service + service: camera.ezviz_switch_privacy_off + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon + - icon: 'mdi:eye-off' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 0px + top: 50px + tap_action: + action: call-service + service: camera.ezviz_switch_privacy_on + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon + - icon: 'mdi:volume-high' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 25px + top: 75px + tap_action: + action: call-service + service: camera.ezviz_switch_audio_off + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon + - icon: 'mdi:volume-off' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 0px + top: 75px + tap_action: + action: call-service + service: camera.ezviz_switch_audio_on + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon + - icon: 'mdi:led-on' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 25px + top: 100px + tap_action: + action: call-service + service: camera.ezviz_switch_state_off + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon + - icon: 'mdi:led-off' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 0px + top: 100px + tap_action: + action: call-service + service: camera.ezviz_switch_state_on + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon + - icon: 'mdi:brightness-4' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 25px + top: 100px + tap_action: + action: call-service + service: camera.ezviz_switch_ir_off + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon + - icon: 'mdi:brightness-5' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 0px + top: 100px + tap_action: + action: call-service + service: camera.ezviz_switch_ir_on + service_data: + entity_id: camera.c6n_d12345678 + confirmation: true + type: icon +entity: camera.c6n_d12345678 +type: picture-elements +``` diff --git a/source/_integrations/facebook.markdown b/source/_integrations/facebook.markdown index fd55f53ac762..396f927e8da3 100644 --- a/source/_integrations/facebook.markdown +++ b/source/_integrations/facebook.markdown @@ -1,10 +1,10 @@ --- -title: "Facebook Messenger" -description: "Instructions on how to add Facebook user notifications to Home Assistant." -logo: facebook.png +title: Facebook Messenger +description: Instructions on how to add Facebook user notifications to Home Assistant. ha_category: - Notifications ha_release: 0.36 +ha_domain: facebook --- The `facebook` notification platform enables sending notifications via Facebook Messenger, powered by [Facebook](https://facebook.com). @@ -119,20 +119,3 @@ script: title: Blue payload: DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_BLUE ``` - -You can now also use Facebook public beta broadcast API to push messages to ALL users who interacted with your chatbot on your page, without having to collect their number. This will scale to thousands of users. Facebook requires that this only be used for non-commercial purposes and they validate every message you send. Also note, your Facebook bot needs to be authorized for "page_subscritions" if you want to make it to all but can be used right away to a selected group of testers of your choice. - -To enable broadcast just use the keyword "BROADCAST" as your target. Only put ONE target BROADCAST as below: - -```yaml -- alias: Facebook Broadcast - trigger: - platform: sun - event: sunset - action: - service: notify.facebook - data: - message: Some text you want to send - target: - - BROADCAST -``` diff --git a/source/_integrations/facebox.markdown b/source/_integrations/facebox.markdown index 4674ac2fa376..3e1b57111e74 100644 --- a/source/_integrations/facebox.markdown +++ b/source/_integrations/facebox.markdown @@ -1,10 +1,10 @@ --- -title: "Facebox" -description: "Detect and recognize faces with Facebox." -logo: machine-box.png +title: Facebox +description: Detect and recognize faces with Facebox. ha_category: - Image Processing -ha_release: 0.70 +ha_release: 0.7 +ha_domain: facebox --- The `facebox` image processing platform allows you to detect and recognize faces in a camera image using [Facebox](https://machinebox.io/docs/facebox). The state of the entity is the number of faces detected, and recognized faces are listed in the `matched_faces` attribute. An `image_processing.detect_face` event is fired for each recognized face, and the event `data` provides the `confidence` of recognition, the `name` of the person, the `image_id` of the image associated with the match, the `bounding_box` that contains the face in the image, and the `entity_id` that processing was performed on. @@ -111,9 +111,9 @@ Use the `image_processing.detect_face` events to trigger automations, and breako ``` {% endraw %} -## Service `facebox_teach_face` +## Service `facebox.teach_face` -The service `facebox_teach_face` can be used to teach Facebox faces. +The service `facebox.teach_face` can be used to teach Facebox faces. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -141,7 +141,7 @@ You can use an automation to receive a notification when you train a face: alias: Face taught trigger: - event_data: - service: facebox_teach_face + service: facebox.teach_face event_type: call_service platform: event condition: [] @@ -180,4 +180,3 @@ you can create an automation to receive notifications on Facebox errors: title: Facebox error ``` {% endraw %} - diff --git a/source/_integrations/fail2ban.markdown b/source/_integrations/fail2ban.markdown index 142a55dc6e2e..a15b7525ee37 100644 --- a/source/_integrations/fail2ban.markdown +++ b/source/_integrations/fail2ban.markdown @@ -1,14 +1,13 @@ --- -title: "Fail2Ban Sensor" -description: "Instructions on how to integrate a fail2ban sensor into Home Assistant." +title: Fail2Ban +description: Instructions on how to integrate a fail2ban sensor into Home Assistant. ha_category: - Network ha_iot_class: Local Polling -logo: fail2ban.png ha_release: 0.57 +ha_domain: fail2ban --- - The `fail2ban` sensor allows for IPs banned by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to be displayed in the Home Assistant frontend.
    @@ -55,13 +54,13 @@ For most setups, you can follow [this tutorial](/cookbook/fail2ban/) to set up `
    -These steps assume you already have the Home Assistant docker running behind NGINX and that it is externally accessible. It also assumes the docker is running with the `--net='host'` flag. +These steps assume you already have the Home Assistant Docker running behind NGINX and that it is externally accessible. It also assumes the Docker is running with the `--net='host'` flag.
    -For those of us using Docker, the above tutorial may not be sufficient. The following steps specifically outline how to set up `fail2ban` and Home Assistant when running Home Assistant within a Docker behind NGINX. The setup this was tested on was an unRAID server using the [let's encrypt docker](https://github.com/linuxserver/docker-letsencrypt) from linuxserver.io. +For those of us using Docker, the above tutorial may not be sufficient. The following steps specifically outline how to set up `fail2ban` and Home Assistant when running Home Assistant within a Docker behind NGINX. The setup this was tested on was an unRAID server using the [Let's Encrypt Docker](https://github.com/linuxserver/docker-letsencrypt) from linuxserver.io. -#### Set http logger +#### Set HTTP logger In your `configuration.yaml` file, add the following to the `logger` integration to ensure that Home Assistant prints failed login attempts to the log. @@ -73,7 +72,7 @@ logger: #### Edit the `jail.local` file -Next, we need to edit the `jail.local` file that is included with the Let's Encrypt docker linked above. Note, for this tutorial, we'll only be implementing the `[hass-iptables]` jail from the [previously linked tutorial](/cookbook/fail2ban/). +Next, we need to edit the `jail.local` file that is included with the Let's Encrypt Docker linked above. Note, for this tutorial, we'll only be implementing the `[hass-iptables]` jail from the [previously linked tutorial](/cookbook/fail2ban/). Edit `/mnt/user/appdata/letsencrypt/fail2ban/jail.local` and append the following to the end of the file: @@ -124,14 +123,14 @@ Now do the same for the Home Assistant docker, but this time we'll be mapping th By default, the IP address that Home Assistant sees will be that of the container (something like `172.17.0.16`). What this means is that for any failed login attempt, assuming you have correctly configured `fail2ban`, the Docker IP will be logged as banned, but the originating IP is still allowed to make attempts. We need `fail2ban` to recognize the originating IP to properly ban it. -First, we have to add the following to the nginx configuration file located in `/mnt/user/appdata/letsencrypt/nginx/site-confs/default`. +First, we have to add the following to the NGINX configuration file located in `/mnt/user/appdata/letsencrypt/nginx/site-confs/default`. ```bash proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ``` -This snippet should be added within your Home Assistant server config, so you have something like the following: +This snippet should be added within your Home Assistant server configuration, so you have something like the following: ```bash server { @@ -159,7 +158,7 @@ server { } ``` -Once that's added to the nginx configuration, we need to modify the Home Assistant `configuration.yaml` such that the `X-Forwarded-For` header can be parsed. This is done by adding the following to the `http` component: +Once that's added to the NGINX configuration, we need to modify the Home Assistant `configuration.yaml` such that the `X-Forwarded-For` header can be parsed. This is done by adding the following to the `http` component: ```yaml http: diff --git a/source/_integrations/familyhub.markdown b/source/_integrations/familyhub.markdown index 27fdf1dcfee5..c3519fb39955 100644 --- a/source/_integrations/familyhub.markdown +++ b/source/_integrations/familyhub.markdown @@ -1,11 +1,11 @@ --- -title: "Family Hub Camera" -description: "Instructions on how to integrate Samsung Family Hub refrigerator cameras within Home Assistant." -logo: familyhub.png +title: Samsung Family Hub +description: Instructions on how to integrate Samsung Family Hub refrigerator cameras within Home Assistant. ha_category: - Camera -ha_release: "0.70" +ha_release: '0.70' ha_iot_class: Local Polling +ha_domain: familyhub --- The `familyhub` platform allows you to get images of the inside of your [Samsung Family Hub refrigerator](https://www.samsung.com/us/explore/family-hub-refrigerator/connected-hub/) in Home Assistant. diff --git a/source/_integrations/fan.markdown b/source/_integrations/fan.markdown index cdf478a8211f..648ffb98b664 100644 --- a/source/_integrations/fan.markdown +++ b/source/_integrations/fan.markdown @@ -1,11 +1,109 @@ --- -title: "Fan" -description: "Instructions on how to setup Fan devices within Home Assistant." -logo: home-assistant.png +title: Fan +description: Instructions on how to setup Fan devices within Home Assistant. ha_category: - Fan -ha_qa_scale: internal ha_release: 0.27 +ha_quality_scale: internal +ha_domain: fan --- -The `fan` integration is built for the controlling of fan devices. +The Fan integration allows you to control and monitor Fan devices. + +## Services + +### Fan control services + +Available services: +`fan.set_speed`, `fan.set_direction`, `fan.oscillate`, `fan.turn_on`, `fan.turn_off`, `fan.toggle` + +
    + +Not all fan services may be available for your platform. Be sure to check the available services Home Assistant has enabled by checking service developer tool icon **Services**. + +
    + +### Service `fan.set_speed` + +Sets the speed for fan device + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that define the entity ID(s) of fan device(s) to control. To target all fan devices, use `all`. +| `speed` | no | Speed setting + +#### Automation example + +```yaml +automation: + trigger: + platform: time + at: "07:15:00" + action: + - service: fan.set_speed + data: + entity_id: fan.kitchen + speed: low +``` + +### Service `fan.set_direction` + +Sets the rotation for fan device + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that define the entity ID(s) of fan device(s) to control. To target all fan devices, use `all`. +| `direction` | no | The direction to rotate. Either `forward` or `reverse` + +#### Automation example + +```yaml +automation: + trigger: + platform: time + at: "07:15:00" + action: + - service: fan.set_direction + data: + entity_id: fan.kitchen + direction: forward +``` + +### Service `fan.oscillate` + +Sets the oscillation for fan device + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that define the entity ID(s) of fan device(s) to control. To target all fan devices, use `all`. +| `oscillating` | no | Flag to turn on/off oscillation. Either `True` or `False`. + +#### Automation example + +```yaml +automation: + trigger: + platform: time + at: "07:15:00" + action: + - service: fan.oscillate + data: + entity_id: fan.kitchen + oscillating: True +``` + +### Service `fan.turn_on` + +Turn fan device on. This is only supported if the fan device supports being turned off. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that define the entity ID(s) of fan device(s) to control. To target all fan devices, use `all`. + +### Service `fan.turn_off` + +Turn fan device off. This is only supported if the fan device supports being turned on. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that define the entity ID(s) of fan device(s) to control. To target all fan devices, use `all`. diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown index 4cac0826660b..2a12a35a02b5 100644 --- a/source/_integrations/fan.mqtt.markdown +++ b/source/_integrations/fan.mqtt.markdown @@ -1,11 +1,11 @@ --- title: "MQTT Fan" description: "Instructions on how to integrate MQTT fans into Home Assistant." -logo: mqtt.png ha_category: - Fan ha_release: 0.27 ha_iot_class: Configurable +ha_domain: mqtt --- The `mqtt` fan platform lets you control your MQTT enabled fans. @@ -28,78 +28,83 @@ fan: ``` {% configuration %} +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. + required: false + type: string command_topic: description: The MQTT topic to publish commands to change the fan state. required: true type: string -name: - description: The name of the fan. - required: false - type: string - default: MQTT Fan -state_topic: - description: The MQTT topic subscribed to receive state updates. +device: + description: "Information about the device this fan is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." required: false - type: string -payload_on: - description: The payload that represents the running state. + type: map + keys: + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: [list, map] + identifiers: + description: A list of IDs that uniquely identify the device. For example a serial number. + required: false + type: [string, list] + manufacturer: + description: The manufacturer of the device. + required: false + type: string + model: + description: The model of the device. + required: false + type: string + name: + description: The name of the device. + required: false + type: string + sw_version: + description: The firmware version of the device. + required: false + type: string +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." required: false - type: string - default: "ON" -payload_off: - description: The payload that represents the stop state. + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. required: false type: string - default: "OFF" -state_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the state." +name: + description: The name of the fan. required: false type: string -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 + default: MQTT Fan optimistic: description: Flag that defines if lock works in optimistic mode required: false type: boolean default: "`true` if no state topic defined, else `false`." -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: true -oscillation_state_topic: - description: The MQTT topic subscribed to receive oscillation state updates. - required: false - type: string oscillation_command_topic: description: The MQTT topic to publish commands to change the oscillation state. required: false type: string -payload_oscillation_on: - description: The payload that represents the oscillation on state. - required: false - type: string - default: oscillate_on -payload_oscillation_off: - description: The payload that represents the oscillation off state. +oscillation_state_topic: + description: The MQTT topic subscribed to receive oscillation state updates. required: false type: string - default: oscillate_off oscillation_value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the oscillation." required: false type: string -speed_state_topic: - description: The MQTT topic subscribed to receive speed state updates. +payload_available: + description: The payload that represents the available state. required: false type: string -speed_command_topic: - description: The MQTT topic to publish commands to change speed state. + default: online +payload_high_speed: + description: The payload that represents the fan's high speed. required: false type: string + default: high payload_low_speed: description: The payload that represents the fan's low speed. required: false @@ -110,81 +115,76 @@ payload_medium_speed: required: false type: string default: medium -payload_high_speed: - description: The payload that represents the fan's high speed. +payload_not_available: + description: The payload that represents the unavailable state. required: false type: string - default: high -speed_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the speed payload." + default: offline +payload_off: + description: The payload that represents the stop state. required: false type: string -speeds: - description: "List of speeds this fan is capable of running at. Valid entries are `off`, `low`, `medium` and `high`." + default: "OFF" +payload_on: + description: The payload that represents the running state. required: false - type: [string, list] -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. + type: string + default: "ON" +payload_oscillation_off: + description: The payload that represents the oscillation off state. required: false type: string -payload_available: - description: The payload that represents the available state. + default: oscillate_off +payload_oscillation_on: + description: The payload that represents the oscillation on state. required: false type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. + default: oscillate_on +qos: + description: The maximum QoS level of the state topic. + required: false + type: integer + default: 0 +retain: + description: If the published message should have the retain flag on or not. + required: false + type: boolean + default: true +speed_command_topic: + description: The MQTT topic to publish commands to change speed state. required: false type: string - default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. +speed_state_topic: + description: The MQTT topic subscribed to receive speed state updates. required: false type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." +speed_value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the speed payload." required: false - type: template + type: string +speeds: + description: "List of speeds this fan is capable of running at. Valid entries are `off`, `low`, `medium` and `high`." + required: false + type: [string, list] +state_topic: + description: The MQTT topic subscribed to receive state updates. + required: false + type: string +state_value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the state." + required: false + type: string unique_id: description: An ID that uniquely identifies this fan. If two fans have the same unique ID, Home Assistant will raise an exception. required: false type: string -device: - description: "Information about the device this fan is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." - required: false - type: map - keys: - identifiers: - description: A list of IDs that uniquely identify the device. For example a serial number. - required: false - type: [string, list] - connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' - required: false - type: [list, map] - manufacturer: - description: The manufacturer of the device. - required: false - type: string - model: - description: The model of the device. - required: false - type: string - name: - description: The name of the device. - required: false - type: string - sw_version: - description: The firmware version of the device. - required: false - type: string {% endconfiguration %} - +
    Make sure that your topics match exactly. `some-topic/` and `some-topic` are different topics. - +
    ## Examples @@ -214,6 +214,7 @@ fan: payload_medium_speed: "medium" payload_high_speed: "high" speeds: + - "off" - low - medium - high diff --git a/source/_integrations/fan.template.markdown b/source/_integrations/fan.template.markdown index 9f1cef8b046a..f470d92ddf12 100644 --- a/source/_integrations/fan.template.markdown +++ b/source/_integrations/fan.template.markdown @@ -5,8 +5,8 @@ ha_category: - Fan ha_release: 0.69 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: template --- The `template` platform creates fans that combine integrations and provides the diff --git a/source/_integrations/fan.xiaomi_miio.markdown b/source/_integrations/fan.xiaomi_miio.markdown index 901f1a5c6247..b5df2b4d9c31 100644 --- a/source/_integrations/fan.xiaomi_miio.markdown +++ b/source/_integrations/fan.xiaomi_miio.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Air Purifier" description: "Instructions on how to integrate your Xiaomi Air Purifier and Xiaomi Air Humidifier within Home Assistant." -logo: xiaomi.png ha_category: - Fan ha_iot_class: Local Polling ha_release: 0.57 +ha_domain: xiaomi_miio --- The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier, Air Humidifier and Air Fresh. @@ -29,6 +29,7 @@ Air Purifier Super | zhimi.airpurifier.sa1 | | Air Purifier Super 2 | zhimi.airpurifier.sa2 | | Air Humidifier | zhimi.humidifier.v1 | | Air Humidifier CA1 | zhimi.humidifier.ca1 | | +Air Humidifier CB1 | zhimi.humidifier.cb1 | | Air Fresh VA2 | zhimi.airfresh.va2 | | @@ -43,30 +44,30 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - LED (on, off), LED brightness (bright, dim, off) - Favorite Level (0...16) - Attributes - - model - - temperature - - humidity - - aqi - - mode - - filter_hours_used - - filter_life_remaining - - favorite_level - - child_lock - - led - - motor_speed - - average_aqi - - purify_volume - - learn_mode - - sleep_time - - sleep_mode_learn_count - - extra_features - - turbo_mode_supported - - auto_detect - - use_time - - button_pressed - - buzzer - - led_brightness - - sleep_mode + - `model` + - `temperature` + - `humidity` + - `aqi` + - `mode` + - `filter_hours_used` + - `filter_life_remaining` + - `favorite_level` + - `child_lock` + - `led` + - `motor_speed` + - `average_aqi` + - `purify_volume` + - `learn_mode` + - `sleep_time` + - `sleep_mode_learn_count` + - `extra_features` + - `turbo_mode_supported` + - `auto_detect` + - `use_time` + - `button_pressed` + - `buzzer` + - `led_brightness` + - `sleep_mode` ### Air Purifier Pro (zhimi.airpurifier.v6) @@ -76,33 +77,33 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - LED (on, off) - Favorite Level (0...16) - Attributes - - model - - temperature - - humidity - - aqi - - mode - - filter_hours_used - - filter_life_remaining - - favorite_level - - child_lock - - led - - motor_speed - - average_aqi - - purify_volume - - learn_mode - - sleep_time - - sleep_mode_learn_count - - extra_features - - turbo_mode_supported - - auto_detect - - use_time - - button_pressed - - filter_rfid_product_id - - filter_rfid_tag - - filter_type - - illuminance - - motor2_speed - - volume + - `model` + - `temperature` + - `humidity` + - `aqi` + - `mode` + - `filter_hours_used` + - `filter_life_remaining` + - `favorite_level` + - `child_lock` + - `led` + - `motor_speed` + - `average_aqi` + - `purify_volume` + - `learn_mode` + - `sleep_time` + - `sleep_mode_learn_count` + - `extra_features` + - `turbo_mode_supported` + - `auto_detect` + - `use_time` + - `button_pressed` + - `filter_rfid_product_id` + - `filter_rfid_tag` + - `filter_type` + - `illuminance` + - `motor2_speed` + - `volume` ### Air Purifier Pro V7 (zhimi.airpurifier.v7) @@ -112,28 +113,28 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - LED (on, off) - Favorite Level (0...16) - Attributes - - model - - temperature - - humidity - - aqi - - mode - - filter_hours_used - - filter_life_remaining - - favorite_level - - child_lock - - led - - motor_speed - - average_aqi - - learn_mode - - extra_features - - turbo_mode_supported - - button_pressed - - filter_rfid_product_id - - filter_rfid_tag - - filter_type - - illuminance - - motor2_speed - - volume + - `model` + - `temperature` + - `humidity` + - `aqi` + - `mode` + - `filter_hours_used` + - `filter_life_remaining` + - `favorite_level` + - `child_lock` + - `led` + - `motor_speed` + - `average_aqi` + - `learn_mode` + - `extra_features` + - `turbo_mode_supported` + - `button_pressed` + - `filter_rfid_product_id` + - `filter_rfid_tag` + - `filter_type` + - `illuminance` + - `motor2_speed` + - `volume` ### Air Purifier 2S (zhimi.airpurifier.mc1) @@ -144,27 +145,27 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - LED (on, off) - Favorite Level (0...16) - Attributes - - model - - temperature - - humidity - - aqi - - mode - - filter_hours_used - - filter_life_remaining - - favorite_level - - child_lock - - led - - motor_speed - - average_aqi - - learn_mode - - extra_features - - turbo_mode_supported - - button_pressed - - filter_rfid_product_id - - filter_rfid_tag - - filter_type - - illuminance - - buzzer + - `model` + - `temperature` + - `humidity` + - `aqi` + - `mode` + - `filter_hours_used` + - `filter_life_remaining` + - `favorite_level` + - `child_lock` + - `led` + - `motor_speed` + - `average_aqi` + - `learn_mode` + - `extra_features` + - `turbo_mode_supported` + - `button_pressed` + - `filter_rfid_product_id` + - `filter_rfid_tag` + - `filter_type` + - `illuminance` + - `buzzer` ### Air Purifier V3 (zhimi.airpurifier.v3) @@ -173,30 +174,30 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - Child lock (on, off) - LED (on, off) - Attributes - - model - - aqi - - mode - - led - - buzzer - - child_lock - - illuminance - - filter_hours_used - - filter_life_remaining - - motor_speed - - average_aqi - - volume - - motor2_speed - - filter_rfid_product_id - - filter_rfid_tag - - filter_type - - purify_volume - - learn_mode - - sleep_time - - sleep_mode_learn_count - - extra_features - - auto_detect - - use_time - - button_pressed + - `model` + - `aqi` + - `mode` + - `led` + - `buzzer` + - `child_lock` + - `illuminance` + - `filter_hours_used` + - `filter_life_remaining` + - `motor_speed` + - `average_aqi` + - `volume` + - `motor2_speed` + - `filter_rfid_product_id` + - `filter_rfid_tag` + - `filter_type` + - `purify_volume` + - `learn_mode` + - `sleep_time` + - `sleep_mode_learn_count` + - `extra_features` + - `auto_detect` + - `use_time` + - `button_pressed` ### Air Humidifier (zhimi.humidifier.v1) @@ -207,18 +208,18 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - LED (on, off), LED brightness (bright, dim, off) - Target humidity (30, 40, 50, 60, 70, 80) - Attributes - - model - - temperature - - humidity - - mode - - buzzer - - child_lock - - trans_level - - target_humidity - - led_brightness - - button_pressed - - use_time - - hardware_version + - `model` + - `temperature` + - `humidity` + - `mode` + - `buzzer` + - `child_lock` + - `trans_level` + - `target_humidity` + - `led_brightness` + - `button_pressed` + - `use_time` + - `hardware_version` ### Air Humidifier CA (zhimi.humidifier.ca1) @@ -230,21 +231,48 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - Target humidity (30, 40, 50, 60, 70, 80) - Dry mode (on, off) - Attributes - - model - - temperature - - humidity - - mode - - buzzer - - child_lock - - trans_level - - target_humidity - - led_brightness - - button_pressed - - use_time - - hardware_version - - motor_speed - - depth - - dry + - `model` + - `temperature` + - `humidity` + - `mode` + - `buzzer` + - `child_lock` + - `trans_level` + - `target_humidity` + - `led_brightness` + - `button_pressed` + - `use_time` + - `hardware_version` + - `motor_speed` + - `depth` + - `dry` + +### Air Humidifier CB (zhimi.humidifier.cb1) + +- On, Off +- Operation modes (silent, medium, high, auto) +- Buzzer (on, off) +- Child lock (on, off) +- LED (on, off), LED brightness (bright, dim, off) +- Target humidity (30, 40, 50, 60, 70, 80) +- Dry mode (on, off) +- Attributes + - `speed` + - `speed_list` + - `model` + - `temperature` + - `humidity` + - `mode` + - `buzzer` + - `child_lock` + - `target_humidity` + - `led_brightness` + - `use_time` + - `hardware_version` + - `motor_speed` + - `depth` + - `dry` + - `supported_features` ### Air Fresh VA2 @@ -254,22 +282,22 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | * Child lock (on, off) * LED (on, off), LED brightness (bright, dim, off) * Attributes - - model - - aqi - - average_aqi - - temperature - - humidity - - co2 - - mode - - led - - led_brightness - - buzzer - - child_lock - - filter_life_remaining - - filter_hours_used - - use_time - - motor_speed - - extra_features + - `model` + - `aqi` + - `average_aqi` + - `temperature` + - `humidity` + - `co2` + - `mode` + - `led` + - `led_brightness` + - `buzzer` + - `child_lock` + - `filter_life_remaining` + - `filter_hours_used` + - `use_time` + - `motor_speed` + - `extra_features` Please follow the instructions on [Retrieving the Access Token](/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. @@ -314,7 +342,7 @@ Set the fan speed/operation mode. | `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) +### Service `xiaomi_miio.fan_set_buzzer_on` (Air Purifier Pro excluded) Turn the buzzer on. @@ -322,7 +350,7 @@ Turn the buzzer on. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_buzzer_off` (Air Purifier Pro excluded) +### Service `xiaomi_miio.fan_set_buzzer_off` (Air Purifier Pro excluded) Turn the buzzer off. @@ -330,23 +358,23 @@ Turn the buzzer off. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_led_on` (Air Purifiers only) +### Service `xiaomi_miio.fan_set_led_on` (Air Purifiers only) -Turn the led on. +Turn the LED on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_led_off` (Air Purifiers only) +### Service `xiaomi_miio.fan_set_led_off` (Air Purifiers only) -Turn the led off. +Turn the LED off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_child_lock_on` +### Service `xiaomi_miio.fan_set_child_lock_on` Turn the child lock on. @@ -354,7 +382,7 @@ Turn the child lock on. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_child_lock_off` +### Service `xiaomi_miio.fan_set_child_lock_off` Turn the child lock off. @@ -362,16 +390,16 @@ Turn the child lock off. |---------------------------|----------|---------------------------------------------------------| | `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) +### Service `xiaomi_miio.fan_set_led_brightness` (Air Purifier 2S and Air Purifier Pro excluded) -Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). +Set the LED brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| | `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) +### Service `xiaomi_miio.fan_set_favorite_level` (Air Purifiers only) Set the favorite level of the operation mode "favorite". @@ -380,7 +408,7 @@ Set the favorite level of the operation mode "favorite". | `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) +### Service `xiaomi_miio.fan_set_auto_detect_on` (Air Purifier 2S and Air Purifier Pro only) Turn the auto detect on. @@ -388,7 +416,7 @@ Turn the auto detect on. |---------------------------|----------|---------------------------------------------------------| | `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) +### Service `xiaomi_miio.fan_set_auto_detect_off` (Air Purifier 2S and Air Purifier Pro only) Turn the auto detect off. @@ -396,7 +424,7 @@ Turn the auto detect off. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_learn_mode_on` (Air Purifier 2 only) +### Service `xiaomi_miio.fan_set_learn_mode_on` (Air Purifier 2 only) Turn the learn mode on. @@ -404,7 +432,7 @@ Turn the learn mode on. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_learn_mode_off` (Air Purifier 2 only) +### Service `xiaomi_miio.fan_set_learn_mode_off` (Air Purifier 2 only) Turn the learn mode off. @@ -412,7 +440,7 @@ Turn the learn mode off. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_volume` (Air Purifier Pro only) +### Service `xiaomi_miio.fan_set_volume` (Air Purifier Pro only) Set the sound volume. @@ -421,7 +449,7 @@ Set the sound volume. | `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) +### Service `xiaomi_miio.fan_reset_filter` (Air Purifier 2 only) Reset the filter lifetime and usage. @@ -429,7 +457,7 @@ Reset the filter lifetime and usage. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_extra_features` (Air Purifier only) +### Service `xiaomi_miio.fan_set_extra_features` (Air Purifier only) Set the extra features. @@ -438,7 +466,7 @@ Set the extra features. | `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) +### Service `xiaomi_miio.fan_set_target_humidity` (Air Humidifier only) Set the target humidity. @@ -447,7 +475,7 @@ Set the target humidity. | `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) +### Service `fan.xiaomi_miio_set_dry_on` (Air Humidifier CA and CB) Turn the dry mode on. @@ -455,7 +483,7 @@ Turn the dry mode on. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -### Service `fan.xiaomi_miio_set_dry_off` (Air Humidifier CA only) +### Service `fan.xiaomi_miio_set_dry_off` (Air Humidifier CA and CB) Turn the dry mode off. diff --git a/source/_integrations/fastdotcom.markdown b/source/_integrations/fastdotcom.markdown index ba875c364832..56ccc9511171 100644 --- a/source/_integrations/fastdotcom.markdown +++ b/source/_integrations/fastdotcom.markdown @@ -1,19 +1,22 @@ --- -title: "Fast.com" -description: "How to integrate Fast.com within Home Assistant." -logo: fastdotcom.png +title: Fast.com +description: How to integrate Fast.com within Home Assistant. ha_category: - System Monitor - Sensor ha_release: 0.88 ha_iot_class: Cloud Polling +ha_codeowners: + - '@rohankapoorcom' +ha_domain: fastdotcom --- The `fastdotcom` integration uses the [Fast.com](https://fast.com/) web service to measure network bandwidth performance.
    -Currently fast.com only supports measuring download bandwidth. If you want to measure bandwidth metrics other then download such as ping and upload, utilize the [speedtest](/integrations/speedtestdotnet) component. +Currently, the Fast.com integration only supports measuring download bandwidth. +If you want to measure bandwidth metrics other then download such as ping and upload, utilize the [Speedtest.net](/integrations/speedtestdotnet) integration.
    @@ -75,6 +78,6 @@ action: ## Notes -- When running on Raspberry Pi, the maximum speed is limited by its 100 Mbit/s LAN adapter. +- When running on Raspberry Pi 3 or older, the maximum speed is limited by its 100 Mbit/s LAN adapter. - The sensor will return the maximum measured speed during a 15-second test. - Speed tests consume data depending on your internet speed, make sure to consider this if your internet connection has limited bandwidth. diff --git a/source/_integrations/feedreader.markdown b/source/_integrations/feedreader.markdown index 98b1b7fcd6d0..73652257486b 100644 --- a/source/_integrations/feedreader.markdown +++ b/source/_integrations/feedreader.markdown @@ -1,10 +1,10 @@ --- title: Feedreader -description: "Instructions on how to integrate RSS feeds into Home Assistant." -logo: rss.gif +description: Instructions on how to integrate RSS feeds into Home Assistant. ha_category: - Other ha_release: 0.18 +ha_domain: feedreader --- Add an RSS/Atom feed reader that polls feeds every hour and sends new entries into the event bus. @@ -22,7 +22,7 @@ feedreader: {% configuration %} urls: - description: List of URLS for your feeds. + description: List of URLs for your feeds. required: true type: list scan_interval: diff --git a/source/_integrations/ffmpeg.markdown b/source/_integrations/ffmpeg.markdown index 48219e79d7b1..a2f69d7165e0 100644 --- a/source/_integrations/ffmpeg.markdown +++ b/source/_integrations/ffmpeg.markdown @@ -1,23 +1,18 @@ --- -title: "FFmpeg" -description: "Instructions on how to integrate FFmpeg within Home Assistant." -logo: ffmpeg.png +title: FFmpeg +description: Instructions on how to integrate FFmpeg within Home Assistant. ha_category: - Image Processing ha_release: 0.29 +ha_domain: ffmpeg --- The `ffmpeg` integration allows other Home Assistant integrations to process video and audio streams. This integration supports all FFmpeg versions since 3.0.0; if you have an older version, please update.
    -You need the `ffmpeg` binary in your system path. On Debian 8 or Raspbian (Jessie) you can install it from [debian-backports](https://backports.debian.org/Instructions/). If you want [hardware acceleration](https://trac.ffmpeg.org/wiki/HWAccelIntro) support on a Raspberry Pi, you will need to build from source by yourself. Windows binaries are available on the [FFmpeg](http://www.ffmpeg.org/) website. -
    - -
    - -If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. - +If you are running Home Assistant Core in a Python environment, you'll need have the `ffmpeg` binary in your system path. +On Debian 8 or Raspbian (Jessie) you can install it from [debian-backports](https://backports.debian.org/Instructions/). If you want [hardware acceleration](https://trac.ffmpeg.org/wiki/HWAccelIntro) support on a Raspberry Pi, you will need to build from source by yourself. Windows binaries are available on the [FFmpeg](http://www.ffmpeg.org/) website.
    ## Configuration @@ -37,7 +32,7 @@ ffmpeg_bin: {% endconfiguration %} ### Raspbian Debian Jessie Lite Installations -To get the binary on Raspbian Debian Jessie Lite on a RPi you need to perform the following: +To get the binary on Raspbian Debian Jessie Lite on a Raspberry Pi you need to perform the following: ```bash sudo echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list diff --git a/source/_integrations/ffmpeg_motion.markdown b/source/_integrations/ffmpeg_motion.markdown index 08d0cd8a668d..7f0b73b699f5 100644 --- a/source/_integrations/ffmpeg_motion.markdown +++ b/source/_integrations/ffmpeg_motion.markdown @@ -1,17 +1,17 @@ --- -title: "FFmpeg Motion Binary Sensor" -description: "Instructions on how to integrate an FFmpeg-based motion binary sensor" -logo: ffmpeg.png +title: FFmpeg Motion +description: Instructions on how to integrate an FFmpeg-based motion binary sensor ha_category: - Image Processing ha_release: 0.27 +ha_domain: ffmpeg_motion --- The `ffmpeg` platform allows you to use any video feed with [FFmpeg](https://www.ffmpeg.org/) for motion sensors in Home Assistant.
    -If the `ffmpeg` process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service *ffmpeg.start*, *ffmpeg.stop*, *ffmpeg.restart*. +If the `ffmpeg` process is broken, the sensor will be unavailable. To control the FFmpeg process of sensor, use the service `ffmpeg.start`, `ffmpeg.stop`, `ffmpeg.restart`.
    diff --git a/source/_integrations/ffmpeg_noise.markdown b/source/_integrations/ffmpeg_noise.markdown index 2f269a7b5090..1d147dd09d63 100644 --- a/source/_integrations/ffmpeg_noise.markdown +++ b/source/_integrations/ffmpeg_noise.markdown @@ -1,17 +1,17 @@ --- -title: "FFmpeg Noise Binary Sensor" -description: "Instructions on how to integrate an FFmpeg-based noise binary sensor" -logo: ffmpeg.png +title: FFmpeg Noise +description: Instructions on how to integrate an FFmpeg-based noise binary sensor ha_category: - Image Processing ha_release: 0.27 +ha_domain: ffmpeg_noise --- The `ffmpeg` platform allows you to use any video or audio feed with [FFmpeg](https://www.ffmpeg.org/) for various sensors in Home Assistant.
    -If the `ffmpeg` process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service *ffmpeg.start*, *ffmpeg.stop*, *ffmpeg.restart*. +If the `ffmpeg` process is broken, the sensor will be unavailable. To control the FFmpeg process of sensor, use the service `ffmpeg.start`, `ffmpeg.stop`, `ffmpeg.restart`.
    @@ -36,7 +36,7 @@ name: required: false type: string initial_state: - description: Start ffmpeg with home-assistant. + description: Start FFmpeg with home-assistant. required: false type: boolean default: true diff --git a/source/_integrations/fibaro.markdown b/source/_integrations/fibaro.markdown index ddea890a6b79..67c8c0503f2a 100644 --- a/source/_integrations/fibaro.markdown +++ b/source/_integrations/fibaro.markdown @@ -1,7 +1,6 @@ --- -title: "Fibaro" -description: "Instructions on how to setup Fibaro Z-Wave hubs (HCL and HC2) and configure devices within Home Assistant." -logo: fibaro.png +title: Fibaro +description: Instructions on how to setup Fibaro Z-Wave hubs (HCL and HC2) and configure devices within Home Assistant. ha_category: - Hub - Binary Sensor @@ -13,6 +12,7 @@ ha_category: - Switch ha_release: 0.83 ha_iot_class: Local Push +ha_domain: fibaro --- The [Fibaro](https://fibaro.com/) hub is a controller mainly connecting to Z-Wave devices. @@ -72,7 +72,7 @@ plugins: type: boolean default: false device_config: - description: Lists device specific parameter or behaviour overrides. + description: Lists device specific parameter or behavior overrides. required: false type: list default: None diff --git a/source/_integrations/fido.markdown b/source/_integrations/fido.markdown index 0f615b4db6b8..b88742852ef9 100644 --- a/source/_integrations/fido.markdown +++ b/source/_integrations/fido.markdown @@ -1,11 +1,12 @@ --- -title: "Fido Sensor" -description: "Instructions on how to integrate Fido data usage within Home Assistant." +title: Fido +description: Instructions on how to integrate Fido data usage within Home Assistant. logo: fido.png ha_category: - Network ha_release: 0.39 ha_iot_class: Cloud Polling +ha_domain: fido --- Integrate your [Fido](https://www.fido.ca/) account information into Home Assistant. diff --git a/source/_integrations/file.markdown b/source/_integrations/file.markdown index 750767b1de42..ee302225f3ea 100644 --- a/source/_integrations/file.markdown +++ b/source/_integrations/file.markdown @@ -1,13 +1,15 @@ --- -title: "File" -description: "Instructions on how to integrate sensors which read from files into Home Assistant." -logo: file.png +title: File +description: Instructions on how to integrate sensors which read from files into Home Assistant. ha_category: - Utility - Notifications - Sensor ha_release: pre 0.7 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' +ha_domain: file --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/filesize.markdown b/source/_integrations/filesize.markdown index 81e1fdcff92a..50613cb1ef9d 100644 --- a/source/_integrations/filesize.markdown +++ b/source/_integrations/filesize.markdown @@ -1,14 +1,20 @@ --- -title: "File size Sensor" -description: "Component for monitoring the size of a file." -logo: file.png +title: File Size +description: Component for monitoring the size of a file. ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.64 +ha_domain: filesize --- -The `filesize` sensor for displaying the size in MB of a file. Note that paths must be added to [whitelist_external_dirs](/docs/configuration/basic/). +The `filesize` sensor is for displaying the size in MB of a file. + +
    + +File paths must also be added to [whitelist_external_dirs](/docs/configuration/basic/) in your `configuration.yaml`. + +
    ## Configuration diff --git a/source/_integrations/filter.markdown b/source/_integrations/filter.markdown index efe9cbc344f7..5838deeecef5 100644 --- a/source/_integrations/filter.markdown +++ b/source/_integrations/filter.markdown @@ -1,12 +1,14 @@ --- -title: "Filter Sensor" -description: "Instructions on how to integrate Data Filter Sensors into Home Assistant." +title: Filter +description: Instructions on how to integrate Data Filter Sensors into Home Assistant. ha_category: - Utility ha_release: 0.65 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@dgomes' +ha_domain: filter --- The `filter` platform enables sensors that process the states of other entities. @@ -44,7 +46,7 @@ sensor: - filter: lowpass time_constant: 10 - filter: time_simple_moving_average - window_size: 00:05 + window_size: "00:05" precision: 2 ``` @@ -69,7 +71,7 @@ filters: required: true type: string window_size: - description: Size of the window of previous states. Time based filters such as `time_simple_moving_average` will require a time period (size in time), while other filters such as `outlier` will require an integer (size in number of states) + description: Size of the window of previous states. Time based filters such as `time_simple_moving_average` will require a time period (size in time), while other filters such as `outlier` will require an integer (size in number of states). Time periods are in _hh:mm_ format and must be quoted. required: false type: [integer, time] default: 1 @@ -148,7 +150,7 @@ This filter is relevant when you have a sensor which produces states at a very h The Time Throttle filter (`time_throttle`) will only update the state of the sensor for the first state in the window. This means the filter will skip all other values. -To adjust the rate you need to set the window_size. To throttle a sensor down to 1 value per minute, the `window_size` should be set to 00:01. +To adjust the rate you need to set the window_size. To throttle a sensor down to 1 value per minute, the `window_size` should be set to "00:01". This filter is relevant when you have a sensor which produces states at a very high inconstant rate, which you might want to throttle down to some constant rate for storing or visualization purposes. @@ -158,7 +160,7 @@ The Time SMA filter (`time_simple_moving_average`) is based on the paper [Algori The paper defines three types/versions of the Simple Moving Average (SMA): *last*, *next* and *linear*. Currently only *last* is implemented. -Theta, as described in the paper, is the `window_size` parameter, and can be expressed using time notation (e.g., 00:05 for a five minutes time window). +Theta, as described in the paper, is the `window_size` parameter, and can be expressed using time notation (e.g., "00:05" for a five minutes time window). ### Range diff --git a/source/_integrations/fints.markdown b/source/_integrations/fints.markdown index 50fe88040f7a..533b908e9fdb 100644 --- a/source/_integrations/fints.markdown +++ b/source/_integrations/fints.markdown @@ -1,10 +1,11 @@ --- -title: "FinTS Sensor" -description: "Instructions on how to use the FinTS sensor." +title: FinTS +description: Instructions on how to use the FinTS sensor. ha_category: - Finance -ha_release: "0.70" +ha_release: '0.70' ha_iot_class: Local Push +ha_domain: fints --- With the FinTS sensor, you can fetch your account information from your bank. This only works with banks that support the FinTS (aka. HBCI) standard. The FinTS standard used by many German banks. So if you do not have a German bank account, this will most likely not work for you. To find out if your bank supports FinTS, check the bank's website or call their hotline. diff --git a/source/_integrations/fitbit.markdown b/source/_integrations/fitbit.markdown index 579273763bf6..df110206e1d8 100644 --- a/source/_integrations/fitbit.markdown +++ b/source/_integrations/fitbit.markdown @@ -1,11 +1,13 @@ --- -title: "Fitbit" -description: "Instructions on how to integrate Fitbit devices within Home Assistant." -logo: fitbit.png +title: Fitbit +description: Instructions on how to integrate Fitbit devices within Home Assistant. ha_category: - Health ha_iot_class: Cloud Polling ha_release: 0.19 +ha_codeowners: + - '@robbiet480' +ha_domain: fitbit --- The Fitbit sensor allows you to expose data from [Fitbit](https://fitbit.com/) to Home Assistant. diff --git a/source/_integrations/fixer.markdown b/source/_integrations/fixer.markdown index 0a6f9d94711e..2e7f0040ef30 100644 --- a/source/_integrations/fixer.markdown +++ b/source/_integrations/fixer.markdown @@ -1,14 +1,15 @@ --- -title: "Fixer.io" -description: "Instructions on how to integrate exchange rates from Fixer.io within Home Assistant." +title: Fixer +description: Instructions on how to integrate exchange rates from Fixer.io within Home Assistant. ha_category: - Finance -logo: fixer-io.png ha_iot_class: Cloud Polling ha_release: 0.23 +ha_codeowners: + - '@fabaff' +ha_domain: fixer --- - The `fixer` sensor will show you the current exchange rate from [Fixer.io](https://fixer.io/) which is using data from the [European Central Bank (ECB)](https://www.ecb.europa.eu). To get an overview about the available [currencies](https://fixer.io/symbols). diff --git a/source/_integrations/fleetgo.markdown b/source/_integrations/fleetgo.markdown index 9db3ebd72db4..8c99dbd45add 100644 --- a/source/_integrations/fleetgo.markdown +++ b/source/_integrations/fleetgo.markdown @@ -1,11 +1,11 @@ --- -title: "FleetGO" -description: "Instructions on how to use a FleetGO as a device tracker." -logo: fleetgo.png +title: FleetGO +description: Instructions on how to use a FleetGO as a device tracker. ha_category: - Car ha_iot_class: Cloud Polling ha_release: 0.76 +ha_domain: fleetgo --- The `fleetgo` device tracker platform allows you to integrate your vehicles equipped with [FleetGO](https://fleetgo.com) hardware into Home Assistant. It allows you to see certain details about your vehicle, but also shows your vehicle on the map. diff --git a/source/_integrations/flexit.markdown b/source/_integrations/flexit.markdown index eccec0f27489..5ab4f06bfe91 100644 --- a/source/_integrations/flexit.markdown +++ b/source/_integrations/flexit.markdown @@ -1,11 +1,12 @@ --- -title: "Flexit A/C controller" -description: "Instructions on how to integrate Flexit A/C unit into Home Assistant." +title: Flexit +description: Instructions on how to integrate Flexit A/C unit into Home Assistant. logo: flexit.png ha_category: - Climate ha_release: 0.47 ha_iot_class: Local Polling +ha_domain: flexit --- Integrates [Flexit](https://www.flexit.no/en/) Air Conditioning unit into Home Assistant. diff --git a/source/_integrations/flic.markdown b/source/_integrations/flic.markdown index d8b00f617a4e..b5ceba3b9b84 100644 --- a/source/_integrations/flic.markdown +++ b/source/_integrations/flic.markdown @@ -1,24 +1,25 @@ --- -title: Flic Smart Button -description: "Instructions on how to integrate flic buttons within Home Assistant." +title: Flic +description: Instructions on how to integrate flic buttons within Home Assistant. logo: flic.png ha_category: - Binary Sensor ha_iot_class: Local Push ha_release: 0.35 +ha_domain: flic --- The `flic` platform allows you to receive click events from [flic](https://flic.io) smart buttons. The platform does not directly interact with the buttons, *but communicates with a flic service* that manages the buttons. The service can run on the same instance as Home Assistant or any other reachable machine. -#### Service setup +## Service setup If you are using Hass.io, you can run the service locally by [installing](/hassio/installing_third_party_addons/) the flicd add-on from [pschmitt's repository](https://github.com/pschmitt/hassio-addons). -For instructions on how to install the service manually, visit the GitHub repository of the service for [Linux](https://github.com/50ButtonsEach/fliclib-linux-hci), [OS X](https://github.com/50ButtonsEach/flic-service-osx) or [Windows](https://github.com/50ButtonsEach/fliclib-windows). +For instructions on how to install the service manually, visit the GitHub repository of the service for [Linux](https://github.com/50ButtonsEach/fliclib-linux-hci), [macOS](https://github.com/50ButtonsEach/flic-service-osx) or [Windows](https://github.com/50ButtonsEach/fliclib-windows). -#### Configuration +## Configuration To use your flic buttons in your installation, add the following to your `configuration.yaml` file: @@ -55,15 +56,15 @@ timeout: default: 3 {% endconfiguration %} -#### Discovery +## Discovery If discovery is enabled, you can add a new button by pressing it for at least 7 seconds. The button will be paired with the flic service and added to Home Assistant. Otherwise, you have to manually pair it with the flic service. The Home Assistant platform will not scan for new buttons and will only connect to buttons already paired. -#### Timeout +## Timeout - When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. +When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. -#### Events +## Events The flic integration fires `flic_click` events on the bus. You can capture the events and respond to them in automation scripts like this: @@ -94,7 +95,6 @@ To help detect and debug flic button clicks, you can use this automation that se ```yaml automation: - alias: FLIC Html5 notify on every click - hide_entity: false trigger: platform: event event_type: flic_click @@ -105,6 +105,6 @@ automation: message: {% raw %}"flic {{ trigger.event.data.button_name }} was {{ trigger.event.data.click_type }} clicked"{% endraw %} ``` -##### Ignoring Click Types +### Ignoring Click Types For some purposes it might make sense to exclude a specific click type from triggering click events. For example when ignoring double clicks, pressing the button twice fast results in two `single` instead of a `double` click event. This is very useful for applications where you want to click fast. diff --git a/source/_integrations/flock.markdown b/source/_integrations/flock.markdown index d063c7ce5270..aa992fc2b96e 100644 --- a/source/_integrations/flock.markdown +++ b/source/_integrations/flock.markdown @@ -1,13 +1,15 @@ --- -title: "Flock" -description: "Instructions on how to add Flock notifications to Home Assistant." +title: Flock +description: Instructions on how to add Flock notifications to Home Assistant. logo: flock.png ha_category: - Notifications ha_release: 0.71 +ha_codeowners: + - '@fabaff' +ha_domain: flock --- - The `flock` platform uses [Flock.com](https://flock.com) to deliver notifications from Home Assistant. ## Setup diff --git a/source/_integrations/flume.markdown b/source/_integrations/flume.markdown new file mode 100644 index 000000000000..43838b61976f --- /dev/null +++ b/source/_integrations/flume.markdown @@ -0,0 +1,75 @@ +--- +title: flume +description: Documentation about the flume sensor. +ha_category: + - Sensor +ha_iot_class: Cloud Polling +ha_release: 0.103 +ha_codeowners: + - '@ChrisMandich' +ha_domain: flume +--- + +The `flume` sensor will show you the current [flume](https://portal.flumetech.com/) status for the given Device ID. + +Flume monitors the real-time status of your home water meter. Allowing the end-user to detect small leaks, gain real-time information on household water consumption, set water goals and budgets, and receive push notifications when suspicious water activities occur. + +## Configuration + +You can find your Client ID and Client Secret under "API Access" on the [settings page](https://portal.flumetech.com/#settings). + +To enable the flume sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + # Flume + - platform: flume + username: YOUR_FLUME_USERNAME + password: YOUR_FLUME_PASSWORD + client_id: YOUR_FLUME_CLIENT_ID + client_secret: YOUR_FLUME_CLIENT_SECRET +``` + +{% configuration %} +username: + description: Your flume user id. + required: true + type: string +password: + description: Your flume password. + required: true + type: string +client_id: + description: Your flume Client ID. + required: true + type: string +client_secret: + description: Your flume Client Secret. + required: true + type: string +name: + description: A name to display on the sensor. + required: false + default: Flume Sensor + type: string +{% endconfiguration %} + +# Configuration for Binary Sensor + +The following YAML creates a binary sensor. This requires the default sensor to be configured successfully. + +{% raw %} + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: template + sensors: + flume_status: + friendly_name: "Flume Flow Status" + value_template: >- + {{ states.sensor.flume_sensor.state != "0" }} +``` + +{% endraw %} diff --git a/source/_integrations/flunearyou.markdown b/source/_integrations/flunearyou.markdown index 4407c9241b09..53e3a023e37a 100644 --- a/source/_integrations/flunearyou.markdown +++ b/source/_integrations/flunearyou.markdown @@ -1,11 +1,14 @@ --- -title: "Flu Near You" -description: "Instructions on how to use Flu Near You data within Home Assistant" +title: Flu Near You +description: Instructions on how to use Flu Near You data within Home Assistant logo: flunearyou.png ha_category: - Health ha_release: 0.83 ha_iot_class: Cloud Polling +ha_codeowners: + - '@bachya' +ha_domain: flunearyou --- The `flunearyou` sensor platform allows users in the United States and its diff --git a/source/_integrations/flux.markdown b/source/_integrations/flux.markdown index c888b5cee97e..c6bcb3f90507 100644 --- a/source/_integrations/flux.markdown +++ b/source/_integrations/flux.markdown @@ -1,11 +1,11 @@ --- -title: "Flux Light Adjustment" -description: "Instructions on how to have switches call command line commands." +title: Flux +description: Instructions on how to have switches call command line commands. ha_category: - Automation ha_release: 0.21 -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: flux --- The `flux` switch platform will change the temperature of your lights similar to the way flux works on your computer, using circadian rhythm. They will be bright during the day, and gradually fade to a red/orange at night. The `flux` switch restores its last state after startup. diff --git a/source/_integrations/flux_led.markdown b/source/_integrations/flux_led.markdown index 13ae001d4f4f..7581247ef43e 100644 --- a/source/_integrations/flux_led.markdown +++ b/source/_integrations/flux_led.markdown @@ -1,11 +1,12 @@ --- -title: "Flux Led/MagicLight" -description: "Instructions on how to setup Flux led/MagicLight within Home Assistant." +title: Flux LED/MagicLight +description: Instructions on how to setup Flux led/MagicLight within Home Assistant. logo: magic_light.png ha_category: - Light ha_iot_class: Local Polling ha_release: 0.25 +ha_domain: flux_led --- The `flux_led` support is integrated into Home Assistant as a light platform. Several brands of both bulbs and controllers use the same protocol and they have the HF-LPB100 chipset in common. The chances are high that your bulb or controller (eg. WiFi LED CONTROLLER) will work if you can control the device with the MagicHome app. @@ -158,7 +159,7 @@ light: ### Effects -The Flux Led light offers a number of effects which are not included in other lighting packages. These can be selected from the front-end, or sent in the effect field of the `light.turn_on` command. +The Flux LED light offers a number of effects which are not included in other lighting packages. These can be selected from the front-end, or sent in the effect field of the `light.turn_on` command. | Effect Name | Description | |--------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------| diff --git a/source/_integrations/folder.markdown b/source/_integrations/folder.markdown index 27b52d18ebd1..775a93eee227 100644 --- a/source/_integrations/folder.markdown +++ b/source/_integrations/folder.markdown @@ -1,11 +1,11 @@ --- -title: "Folder sensor" -description: "Sensor for monitoring the contents of a folder." -logo: file.png +title: Folder +description: Sensor for monitoring the contents of a folder. ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.64 +ha_domain: folder --- Sensor for monitoring the contents of a folder. Note that folder paths must be added to [whitelist_external_dirs](/docs/configuration/basic/). Optionally a [wildcard filter](https://docs.python.org/3.6/library/fnmatch.html) can be applied to the files considered within the folder. The state of the sensor is the size in MB of files within the folder that meet the filter criteria. diff --git a/source/_integrations/folder_watcher.markdown b/source/_integrations/folder_watcher.markdown index 41e6de16f6f9..f13154692c98 100644 --- a/source/_integrations/folder_watcher.markdown +++ b/source/_integrations/folder_watcher.markdown @@ -1,12 +1,12 @@ --- -title: "Folder Watcher" -description: "Component for monitoring changes within the filesystem." -logo: home-assistant.png +title: Folder Watcher +description: Component for monitoring changes within the filesystem. ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.67 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: folder_watcher --- This integration adds [Watchdog](https://pythonhosted.org/watchdog/) file system monitoring, publishing events on the Home Assistant bus on the creation/deletion/modification of files within configured folders. The monitored `event_type` are: diff --git a/source/_integrations/foobot.markdown b/source/_integrations/foobot.markdown index 113747fce19e..dae6feb01765 100644 --- a/source/_integrations/foobot.markdown +++ b/source/_integrations/foobot.markdown @@ -1,11 +1,11 @@ --- -title: "Foobot Air Quality Monitor" -description: "Instructions on how to setup Foobot Air Quality sensor in Home Assistant." -logo: foobot.png +title: Foobot +description: Instructions on how to setup Foobot Air Quality sensor in Home Assistant. ha_category: - Health ha_release: 0.66 ha_iot_class: Cloud Polling +ha_domain: foobot --- The `foobot` sensor platform will fetch air quality data from your or yours [Foobot device(s)](https://foobot.io/features/). diff --git a/source/_integrations/fortigate.markdown b/source/_integrations/fortigate.markdown index a5e2b815d250..6a5028fcb9cb 100644 --- a/source/_integrations/fortigate.markdown +++ b/source/_integrations/fortigate.markdown @@ -1,11 +1,13 @@ --- -title: "Fortigate" -description: "Instructions on how to integrate FortiGate Firewalls into Home Assistant." -logo: fortinet.jpg +title: FortiGate +description: Instructions on how to integrate FortiGate Firewalls into Home Assistant. ha_category: - Presence Detection ha_release: 0.97 ha_iot_class: Local Polling +ha_codeowners: + - '@kifeo' +ha_domain: fortigate --- This is a FortiGate presence sensor based on device detection of the FortiGate API diff --git a/source/_integrations/fortios.markdown b/source/_integrations/fortios.markdown index 4ec9a0de4c00..91f5c4139153 100644 --- a/source/_integrations/fortios.markdown +++ b/source/_integrations/fortios.markdown @@ -1,11 +1,13 @@ --- -title: "Device Tracker FortiOS" -description: "Instructions on how to use Fortinet FortiOS to track devices in Home Assistant." -logo: fortinet.jpg +title: Home Assistant Device Tracker to support FortiOS +description: Instructions on how to use Fortinet FortiOS to track devices in Home Assistant. ha_category: - Presence Detection ha_release: 0.97 ha_iot_class: Local Polling +ha_codeowners: + - '@kimfrellsen' +ha_domain: fortios --- This integration enables Home Assistant to do device tracking of devices with a MAC address connected to a FortiGate from [Fortinet](https://www.fortinet.com). @@ -13,7 +15,7 @@ This integration enables Home Assistant to do device tracking of devices with a The integration relies on the [fortiosapi](https://pypi.org/project/fortiosapi/). The integration has been tested both on FortiGate appliance and FortiGate VM running SW FortiOS v. 6.0.x and 6.2.0. -All devices with a MAC address identified by FortiGate would be tracked, this covers both Ethernet and WiFi devices, including devices detected by LLDP. +All devices with a MAC address identified by FortiGate would be tracked, this covers both Ethernet and Wi-Fi devices, including devices detected by LLDP. The integration is based on the Home Assistant `device_tracker` platform. diff --git a/source/_integrations/foscam.markdown b/source/_integrations/foscam.markdown index eda94f98cc54..4e677baf85cc 100644 --- a/source/_integrations/foscam.markdown +++ b/source/_integrations/foscam.markdown @@ -1,11 +1,14 @@ --- -title: "Foscam IP Camera" -description: "Instructions on how to integrate Foscam IP cameras within Home Assistant." +title: Foscam +description: Instructions on how to integrate Foscam IP cameras within Home Assistant. logo: foscam.png ha_category: - Camera ha_iot_class: Local Polling ha_release: 0.7.3 +ha_codeowners: + - '@skgsergio' +ha_domain: foscam --- The `foscam` platform allows you to watch the live stream of your [Foscam](https://www.foscam.com) IP camera in Home Assistant. @@ -62,7 +65,7 @@ If your Foscam camera supports PTZ, you will be able to pan or tilt your camera. | Service data attribute | Description | | -----------------------| ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of cameras. Else targets all. | +| `entity_id` | String or list of strings that point at `entity_id`s of cameras. Use `entity_id: all` to target all. | | `movement` | Direction of the movement. Allowed values: `up`, `down`, `left`, `right`, `top_left`, `top_right`, `bottom_left`, `bottom_right` | | `travel_time` | (Optional) Travel time in seconds. Allowed values: float from 0 to 1. Default: 0.125 | diff --git a/source/_integrations/foursquare.markdown b/source/_integrations/foursquare.markdown index b008784e041a..1e4c50b2bc9e 100644 --- a/source/_integrations/foursquare.markdown +++ b/source/_integrations/foursquare.markdown @@ -1,11 +1,14 @@ --- title: Foursquare -description: "Instructions on how to the Foursquare API into Home Assistant." +description: Instructions on how to the Foursquare API into Home Assistant. logo: foursquare.png ha_category: - Social ha_release: 0.26 ha_iot_class: Cloud Polling and Cloud Push +ha_codeowners: + - '@robbiet480' +ha_domain: foursquare --- The `foursquare` integration accepts pushes from the Foursquare [Real-Time API](https://developer.foursquare.com/overview/realtime) and a service to check users in on Swarm. @@ -28,7 +31,7 @@ push_secret: type: string {% endconfiguration %} -#### Getting the access token #### +## Getting the access token After you have registered your APP on your [My Apps Page](https://foursquare.com/developers/apps) you get a `CLIENT_ID` and you have specified a `REDIRECT_URL` which can be any URL you like, but since it will get your access token via an HTTP GET request, it should be a URL which will ignore the `access_token` HTTP GET variable. A good idea is to choose the URL of your Home Assistant. @@ -40,7 +43,7 @@ https://foursquare.com/oauth2/authenticate?client_id=CLIENT_ID&response_type=tok and change the `CLIENT_ID` and `YOUR_REGISTERED_REDIRECT_URL` to your actual values. You will receive an OAuth request landing page, asking you if you want to connect your Foursquare account to your newly created app. Say "Yes". -After that, you will get redirected to your `REDIRECT_URL` with the `access_token` as an HTTP GET variable. Copy everything after the = and paste it in your configuration.yaml as the `access_token`. +After that, you will get redirected to your `REDIRECT_URL` with the `access_token` as an HTTP GET variable. Copy everything after the = and paste it in your `configuration.yaml` as the `access_token`. ### Real-Time API @@ -69,7 +72,7 @@ Parameters: - **eventId** (*Optional*): The event the user is checking in to. - **shout** (*Optional*): A message about your check-in. The maximum length of this field is 140 characters. - **mentions** (*Optional*): Mentions in your check-in. This parameter is a semicolon-delimited list of mentions. A single mention is of the form "start,end,userid", where start is the index of the first character in the shout representing the mention, end is the index of the first character in the shout after the mention, and userid is the userid of the user being mentioned. If userid is prefixed with "fbu-", this indicates a Facebook userid that is being mention. Character indices in shouts are 0-based. -- **broadcast** (*Optional*): "Who to broadcast this check-in to. Accepts a comma-delimited list of values: private (off the grid) or public (share with friends), Facebook share on Facebook, twitter share on twitter, followers share with followers (celebrity mode users only), If no valid value is found, the default is public." +- **broadcast** (*Optional*): "Who to broadcast this check-in to. Accepts a comma-delimited list of values: private (off the grid) or public (share with friends), Facebook share on Facebook, Twitter share on twitter, followers share with followers (celebrity mode users only), If no valid value is found, the default is public." - **ll** (*Optional*): Latitude and longitude of the user's location. Only specify this field if you have a GPS or other device reported location for the user at the time of check-in. - **llAcc** (*Optional*): Accuracy of the user's latitude and longitude, in meters. - **alt** (*Optional*): Altitude of the user's location, in meters. diff --git a/source/_integrations/free_mobile.markdown b/source/_integrations/free_mobile.markdown index 35e82eaa8bc8..0d5af30f4d14 100644 --- a/source/_integrations/free_mobile.markdown +++ b/source/_integrations/free_mobile.markdown @@ -1,10 +1,10 @@ --- -title: "Free Mobile" -description: "Instructions on how to add user notifications to Home Assistant." -logo: free_mobile.png +title: Free Mobile +description: Instructions on how to add user notifications to Home Assistant. ha_category: - Notifications ha_release: 0.11 +ha_domain: free_mobile --- The `free_mobile` platform is using the French mobile operator [Free Mobile](http://mobile.free.fr/) to send SMS to your own cell phone. diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index 163d8dc2c5d5..e12e7e4f2a5f 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -1,7 +1,6 @@ --- -title: "Freebox" -description: "Instructions on how to integrate Freebox routers into Home Assistant." -logo: freebox.svg +title: Freebox +description: Instructions on how to integrate Freebox routers into Home Assistant. ha_category: - Network - Presence Detection @@ -9,21 +8,37 @@ ha_category: - Switch ha_release: 0.85 ha_iot_class: Local Polling +ha_codeowners: + - '@snoof85' + - '@Quentame' +ha_config_flow: true +ha_domain: freebox --- The `freebox` integration allows you to observe and control [Freebox router](https://www.free.fr/). There is currently support for the following device types within Home Assistant: -* [Sensor](#sensor) with traffic metrics +* [Sensor](#sensor) with traffic and temperature metrics * [Device tracker](#presence-detection) for connected devices -* [Switch](#switch) to control WiFi +* [Switch](#switch) to control Wi-Fi ## Configuration -If you have enabled the [discovery component](/integrations/discovery/), -your Freebox should be detected automatically. Otherwise, you can set it -up manually in your `configuration.yaml` file: +If you have enabled the [discovery integration](/integrations/discovery/), your Freebox should be detected automatically. +Otherwise, you can set it up manually via the frontend or via your `configuration.yaml` file. + +You can find out your Freebox host and port by opening this address in your browser. +The returned JSON should contain an `api_domain` (`host`) and a `https_port` (`port`). +Please consult the [API documentation](https://dev.freebox.fr/sdk/os/) for more information. + +### Via the frontend + +Menu: **Configuration** -> **Integrations**. Search for "Freebox", add your host and port, click submit. + +If you add the integration for the first time, follow the instructions in the [Initial setup](#initial-setup) section. + +### Via the configuration file ```yaml freebox: @@ -33,31 +48,32 @@ freebox: {% configuration %} host: - description: The url of the Freebox. + description: The URL of the Freebox. required: true type: string port: - description: The https port the Freebox is listening on. + description: The HTTPS port the Freebox is listening on. required: true type: string {% endconfiguration %} -You can find out your Freebox host and port by opening the address in your browser. The -returned json should contain an api_domain (`host`) and a https_port (`port`). -Please consult the [api documentation](https://dev.freebox.fr/sdk/os/) for more information. +
    + + If you change your Freebox router for a new one, go into your Home Assistant configuration `.storage` folder and delete the "freebox" folder, then add the integration again. + +
    ### Initial setup
    -You must have set a password for your Freebox router web administration page. Enable the option "Permettre les nouvelles demandes d'associations" and check that the option "Accès à distance sécurisé à Freebox OS" is active in "Gestion des ports" > "Connexions entrantes". + + You must have set a password for your Freebox router web administration page. Enable the option "Permettre les nouvelles demandes d'associations" and check that the option "Accès à distance sécurisé à Freebox OS" is active in "Gestion des ports" > "Connexions entrantes". +
    -The first time Home Assistant will connect to your Freebox, you will need to -authorize it by pressing the right arrow on the facade of the Freebox when -prompted to do so. +The first time Home Assistant will connect to your Freebox, you will need to authorize it by pressing the right arrow on the facade of the Freebox when prompted to do so. -To make the WiFi switch working you will have to add "Modification des réglages de la Freebox -" permission to Home Assistant application in "Paramètres de la Freebox" > "Gestion des accès" > "Applications". +To make the Wi-Fi switch and the reboot service working you will have to add "Modification des réglages de la Freebox" permission to Home Assistant application in "Paramètres de la Freebox" > "Gestion des accès" > "Applications". ### Supported routers @@ -69,8 +85,7 @@ Only the routers with Freebox OS are supported: ## Presence Detection -This platform offers presence detection by keeping track of the -devices connected to a [Freebox](https://www.free.fr/) router. +This platform offers presence detection by keeping track of the devices connected to a [Freebox](https://www.free.fr/) router. ### Notes @@ -85,9 +100,15 @@ refreshes the devices states. ## Sensor -This platform offers you sensors to monitor a Freebox router. The monitored conditions are -instant upload and download rates in KB/s. +This platform offers you sensors to monitor a Freebox router. +The monitored conditions are internal temperature and upload and download rates in KB/s. + +## Service + +### Service `freebox.reboot` + +This service will reboot your Freebox router. It does not take any parameter. Be aware there is no confirmation. ## Switch -This platform offers you a switch to toggle the Wifi on or off. This will toggle all WiFi interfaces of the router (all SSID and all bands). +This platform offers you a switch to toggle the Wi-Fi on or off. This will toggle all Wi-Fi interfaces of the router (all SSID and all bands). diff --git a/source/_integrations/freedns.markdown b/source/_integrations/freedns.markdown index bf1dec6b9500..7e03d2edcb04 100644 --- a/source/_integrations/freedns.markdown +++ b/source/_integrations/freedns.markdown @@ -1,10 +1,10 @@ --- -title: "freedns.afraid.org" -description: "Keep your DNS record up to date with FreeDNS." -logo: afraid_freedns.png +title: FreeDNS +description: Keep your DNS record up to date with FreeDNS. ha_category: - Network ha_release: 0.67 +ha_domain: freedns --- With the `freedns` integration you can keep your [FreeDNS](https://freedns.afraid.org) record up to date. diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index d94d7f739fa8..19741dfe9b6a 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -1,24 +1,17 @@ --- -title: "FRITZ!Box" -description: "Instructions on how to integrate AVM FRITZ!Box based routers into Home Assistant." -logo: avm.png +title: AVM FRITZ!Box +description: Instructions on how to integrate AVM FRITZ!Box based routers into Home Assistant. ha_category: - Presence Detection -ha_release: "0.10" +ha_release: '0.10' +ha_domain: fritz --- - -The `fritz` platform offers presence detection by looking at connected devices to a [AVM Fritz!Box](https://avm.de/produkte/fritzbox/) based router. - -## Setup - -
    -If not running Home Assistant via Hass.io or Docker it might be necessary to install additional packages: sudo apt-get install python3-lxml libxslt-dev libxml2-dev zlib1g-dev -If you installed Home Assistant in a virtualenv, run the following commands inside it: pip3 install lxml; be patient this will take a while.
    +The `fritz` platform offers presence detection by looking at connected devices to a [AVM FRITZ!Box](https://avm.de/produkte/fritzbox/) based router. ## Configuration -To use an Fritz!Box router in your installation, add the following to your `configuration.yaml` file: +To use an FRITZ!Box router in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -28,7 +21,7 @@ device_tracker: {% configuration %} host: - description: The IP address of your router, e.g., `192.168.1.1`. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. + description: The IP address of your router, e.g., `192.168.1.1`. It is optional since every FRITZ!Box is also reachable by using the IP address 169.254.1.1. required: false type: string username: @@ -42,7 +35,7 @@ password: {% endconfiguration %}
    -It seems that it is not necessary to use the password in current generation Fritz!Box routers because the necessary data can be retrieved anonymously. +It seems that it is not necessary to use the password in current generation FRITZ!Box routers because the necessary data can be retrieved anonymously.
    See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index 584bd17b6330..5bb8cb5cb330 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -1,7 +1,6 @@ --- -title: "Fritzbox" -description: "Instructions on how to integrate the AVM Fritzbox Smart Home components." -logo: avm.png +title: AVM FRITZ!Box +description: Instructions on how to integrate the AVM Fritzbox Smart Home components. ha_category: - Binary Sensor - Climate @@ -9,9 +8,10 @@ ha_category: - Switch ha_release: 0.68 ha_iot_class: Local Polling +ha_domain: fritzbox --- -The [AVM](https://en.avm.de) Fritzbox integration for Home Assistant allows you to integrate the switch and climate devices. +The [AVM](https://en.avm.de) FRITZ!Box integration for Home Assistant allows you to integrate the switch and climate devices. There is currently support for the following device types within Home Assistant: @@ -24,6 +24,7 @@ There is currently support for the following device types within Home Assistant: - [FRITZ!Box 6490 Cable](https://en.avm.de/products/fritzbox/fritzbox-6490-cable/) - [FRITZ!Box 7590](https://en.avm.de/products/fritzbox/fritzbox-7590/) +- [FRITZ!Box 7490](https://en.avm.de/products/fritzbox/fritzbox-7490/) - [FRITZ!Box 7430](https://en.avm.de/products/fritzbox/fritzbox-7430/) - [FRITZ!DECT 200](https://en.avm.de/products/fritzdect/fritzdect-200/) - [FRITZ!DECT 301](https://en.avm.de/products/fritzdect/fritzdect-301/) @@ -42,12 +43,12 @@ fritzbox: {% configuration %} devices: - description: A list of Fritzbox devices. + description: A list of FRITZ!Box devices. required: true type: map keys: host: - description: The hostname or IP address of the Fritzbox. + description: The hostname or IP address of the FRITZ!Box. required: true type: string username: @@ -62,16 +63,16 @@ devices: ## Switch & Thermostat -To get AVM Fritzbox switch and thermostat follow the instructions above. +To get AVM FRITZ!Box switch and thermostat follow the instructions above. ### Attributes -The are several attributes that can be useful for automations and templates. +There are several attributes that can be useful for automations and templates. | Attribute | Description | | --------- | ----------- | | `device_locked` | The state of the key lock at the device. -| `locked` | The state of the lock for configuring the device via the app or the Fritzbox web interface. +| `locked` | The state of the lock for configuring the device via the app or the FRITZ!Box web interface. | `low_battery` | The low battery state indication. | `battery_level` | The battery level (only available since Fritz!OS 7). | `holiday_mode` | The state of the holiday mode (only available since Fritz!OS 7). @@ -84,15 +85,15 @@ The are several attributes that can be useful for automations and templates. ## Sensor -To get AVM Fritzbox temperature sensor (e.g. FRITZ!DECT Repeater 100) follow the instructions for the [Fritzbox component](#setup). +To get AVM FRITZ!Box temperature sensor (e.g., FRITZ!DECT Repeater 100) follow the instructions for the [FRITZ!Box integration](#setup). ### Attributes -The are several attributes that can be useful for automations and templates. +There are several attributes that can be useful for automations and templates. | Attribute | Description | | --------- | ----------- | | `device_locked` | The state of the key lock at the device. -| `locked` | The state of the lock for configuring the device via the app or the Fritzbox web interface. +| `locked` | The state of the lock for configuring the device via the app or the FRITZ!Box web interface. | `temperature_unit` | The unit of the temperature sensor. | `temperature` | The current temperature sensor reading. diff --git a/source/_integrations/fritzbox_callmonitor.markdown b/source/_integrations/fritzbox_callmonitor.markdown index f8476c7f49ac..ebb5dea0ed34 100644 --- a/source/_integrations/fritzbox_callmonitor.markdown +++ b/source/_integrations/fritzbox_callmonitor.markdown @@ -1,39 +1,23 @@ --- -title: "FRITZ!Box Call Monitor" -description: "Instructions on how to integrate a phone call monitor for AVM FRITZ!Box routers into Home Assistant." -logo: avm.png +title: AVM FRITZ!Box Call Monitor +description: Instructions on how to integrate a phone call monitor for AVM FRITZ!Box routers into Home Assistant. ha_category: - System Monitor ha_release: 0.27 ha_iot_class: Local Polling +ha_domain: fritzbox_callmonitor --- -The `fritzbox_callmonitor` sensor monitors the call monitor exposed by [AVM Fritz!Box](https://avm.de/produkte/fritzbox/) routers on TCP port 1012. It will assume the values `idle`, `ringing`, `dialing` or `talking` with the phone numbers involved contained in the state attributes. +The `fritzbox_callmonitor` sensor monitors the call monitor exposed by [AVM FRITZ!Box](https://avm.de/produkte/fritzbox/) routers on TCP port 1012. It will assume the values `idle`, `ringing`, `dialing` or `talking` with the phone numbers involved contained in the state attributes. It can also access the internal phone book of the router to look up the names corresponding to the phone numbers and store them in the state attributes. -## Prerequisites - -To build the package you have to install some dependencies first. - -```bash -$ sudo apt-get update -$ sudo apt-get install libxml2-dev libxslt-dev \ - python3-setuptools zlib1g-dev build-essential -``` - -If you installed Home Assistant in a virtualenv, also run the following command inside it. -Be patient this will take a while. -```bash -pip3 install lxml -``` - ## Setup -To activate the call monitor on your Fritz!Box, dial #96\*5\* from any phone connected to it. +To activate the call monitor on your FRITZ!Box, dial #96\*5\* from any phone connected to it. ## Configuration -To use the Fritz!Box call monitor in your installation, add the following to your `configuration.yaml` file: +To use the FRITZ!Box call monitor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -48,7 +32,7 @@ name: default: Phone type: string host: - description: The IP address of your router, e.g., 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. + description: The IP address of your router, e.g., 192.168.1.1. It is optional since every FRITZ!Box is also reachable by using the IP address 169.254.1.1. If you have a local DNS server and have assigned a hostname to your FRITZ!Box, you can also use that here instead of the IP address. required: false default: 169.254.1.1 type: string @@ -58,11 +42,11 @@ port: default: 1012 type: integer username: - description: Fritz!Box user's user name. This is required to use the phone book lookup feature. The user needs to have the "voice message, fax message, Fritz!App Fon and call list" permission. + description: FRITZ!Box user's user name. This is required to use the phone book lookup feature. The user needs to have the "voice message, fax message, Fritz!App Fon and call list" permission. required: false type: string password: - description: Fritz!Box user's user password. This is required to use the phone book lookup feature. + description: FRITZ!Box user's user password. This is required to use the phone book lookup feature. required: false type: string phonebook: diff --git a/source/_integrations/fritzbox_netmonitor.markdown b/source/_integrations/fritzbox_netmonitor.markdown index 20297177ccdc..feac908879d8 100644 --- a/source/_integrations/fritzbox_netmonitor.markdown +++ b/source/_integrations/fritzbox_netmonitor.markdown @@ -1,21 +1,20 @@ --- -title: "FRITZ!Box Net Monitor" -description: "Instructions on how to integrate an AVM FRITZ!Box monitor into Home Assistant." -logo: avm.png +title: AVM FRITZ!Box Net Monitor +description: Instructions on how to integrate an AVM FRITZ!Box monitor into Home Assistant. ha_category: - System Monitor ha_release: 0.36 ha_iot_class: Local Polling +ha_domain: fritzbox_netmonitor --- -The `fritzbox_netmonitor` sensor monitors the network statistics exposed by [AVM Fritz!Box](https://avm.de/produkte/fritzbox/) routers. +The `fritzbox_netmonitor` sensor monitors the network statistics exposed by [AVM FRITZ!Box](https://avm.de/produkte/fritzbox/) routers. -
    -If not running Home Assistant via Hass.io or Docker it might be necessary to install additional packages: sudo apt-get install libxslt-dev libxml2-dev python3-lxml -If you are working with the All-in-One installation, you may also need to execute also within your virtual environment the command pip3 install lxml; be patient this will take a while. -
    +## Configuration -To use the Fritz!Box network monitor in your installation, add the following to your `configuration.yaml` file: +For this integration to function properly, you need to have "UPnP Statusinformation transfer" activated on the AVM FRITZ!Box. Please make sure you have that enabled. + +To use the FRITZ!Box network monitor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -25,7 +24,7 @@ sensor: {% configuration %} host: - description: The IP address of your router, e.g., 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. + description: The IP address of your router, e.g., 192.168.1.1. It is optional since every FRITZ!Box is also reachable by using the IP address 169.254.1.1. required: false default: 169.254.1.1 type: string @@ -40,9 +39,8 @@ The following statistics will be exposed as attributes. |Attribute |Description | |:----------------------|:------------------------------------------------------------| -|is_linked |True if the FritzBox is physically linked to the provider | -|is_connected |True if the FritzBox has established an internet-connection | -|wan_access_type |Connection-type, can be `DSL` or `Cable` | +|is_linked |True if the FRITZ!Box is physically linked to the provider | +|is_connected |True if the FRITZ!Box has established an internet-connection | |external_ip |External IP address | |uptime |Uptime in seconds | |bytes_sent |Bytes sent | @@ -53,7 +51,3 @@ The following statistics will be exposed as attributes. |max_byte_rate_down |Maximum downstream-rate in bytes/s | The sensor's state corresponds to the `is_linked` attribute and is either `online`, `offline`, or `unavailable` (in case connection to the router is lost). - -
    -This integration does not support "Fritz!Box 6490 Cable" with FritzOS 6.87 installed. -
    diff --git a/source/_integrations/fritzdect.markdown b/source/_integrations/fritzdect.markdown deleted file mode 100644 index e7b40fa340ac..000000000000 --- a/source/_integrations/fritzdect.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "AVM FRITZ!DECT Switch" -description: "Instructions on how to integrate your AVM FRITZ!DECT switches into Home Assistant." -logo: avm.png -ha_category: - - Switch -ha_iot_class: Local Polling -ha_release: 0.38 ---- - -The `fritzdect` switch platform allows you to control the state of your [AVM FRITZ!DECT DECT-based wireless switches](https://en.avm.de/products/fritzdect/). The AVM FRITZ!DECT switches need to be paired to your Fritz!Box and then can be monitored and controlled via Home Assistant. - -Supported devices (tested): - -- FRITZ!DECT 200 - -Supported Firmwares (tested): - -- FRITZ!OS: 06.80 / FRITZ!DECT: 03.83 -- FRITZ!OS: 06.98-51288 (Beta) / FRITZ!DECT: 03.87 -- FRITZ!OS: 7.01 / FRITZ!DECT: 04.09 - -To use your AVM FRITZ!DECT switch(es) in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: fritzdect - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The username for your Fritz!Box. - required: true - type: string -password: - description: The password for your Fritz!Box. - required: true - type: string -host: - description: The IP address/hostname of your Fritz!Box. - required: false - type: string - default: fritz.box -{% endconfiguration %} - -It is recommended to create a dedicated user for Home Assistant and only allow access to "Smart Home". - -
    -If this integration throws an error when starting home-assistant you should check if all actors are plugged in and connected to the FritzBox. Inactive actors that are not deleted from FritzBox configuration might lead to errors. -
    diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown index abcc86f3f804..63cd737d46d8 100644 --- a/source/_integrations/fronius.markdown +++ b/source/_integrations/fronius.markdown @@ -1,12 +1,14 @@ --- -title: "Fronius" -description: "Instructions on how to connect your Fronius Inverter to Home Assistant." +title: Fronius +description: Instructions on how to connect your Fronius Inverter to Home Assistant. ha_category: - Energy - Sensor -logo: fronius.png ha_iot_class: Local Polling ha_release: 0.96 +ha_codeowners: + - '@nielstron' +ha_domain: fronius --- The `fronius` sensor polls a [Fronius](https://www.fronius.com/) solar inverter, battery system or smart meter and present the values as sensors in Home Assistant. diff --git a/source/_integrations/frontend.markdown b/source/_integrations/frontend.markdown index 2abaf4600fd7..41bf06b7e27c 100644 --- a/source/_integrations/frontend.markdown +++ b/source/_integrations/frontend.markdown @@ -1,11 +1,13 @@ --- -title: "Frontend" -description: "Offers a frontend to Home Assistant." -logo: home-assistant.png +title: Home Assistant Frontend +description: Offers a frontend to Home Assistant. ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/frontend' +ha_domain: frontend --- This offers the official frontend to control Home Assistant. This integration is by default enabled, unless you've disabled or removed the [`default_config:`](https://www.home-assistant.io/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: @@ -17,7 +19,7 @@ frontend: {% configuration %} javascript_version: - description: "DEPRECATED, it is now done using feature detection in the browser. Version of the JavaScript to serve to clients. Options: `es5` - transpiled so old browsers understand it. `latest` - not transpiled, so will work on recent browsers only. `auto` - select a version according to the browser user-agent. The value in the config can be overiden by putting `es5` or `latest` in the URL. For example `http://localhost:8123/states?es5` " + description: "DEPRECATED, it is now done using feature detection in the browser. Version of the JavaScript to serve to clients. Options: `es5` - transpiled so old browsers understand it. `latest` - not transpiled, so will work on recent browsers only. `auto` - select a version according to the browser user-agent. The value in the configuration can be overiden by putting `es5` or `latest` in the URL. For example `http://localhost:8123/states?es5` " required: false type: string default: auto diff --git a/source/_integrations/frontier_silicon.markdown b/source/_integrations/frontier_silicon.markdown index 566cc2202efc..89b1b30ff665 100644 --- a/source/_integrations/frontier_silicon.markdown +++ b/source/_integrations/frontier_silicon.markdown @@ -1,11 +1,11 @@ --- -title: "Frontier Silicon Internet Radios" -description: "Instructions on how to integrate Frontier Silicon Internet Radios into Home Assistant." -logo: frontier.png +title: Frontier Silicon +description: Instructions on how to integrate Frontier Silicon Internet Radios into Home Assistant. ha_category: - Media Player ha_iot_class: Local Push -ha_release: "0.40" +ha_release: '0.40' +ha_domain: frontier_silicon --- This integration provides support for Internet Radios based on the [Frontier Silicon chipset]. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the [UNDOK] app. @@ -49,6 +49,11 @@ password: required: false default: 1234 type: string +name: + description: Friendly name of the Internet Radio. If present this will override the friendly name reported by the radio itself. + required: false + default: empty + type: string {% endconfiguration %} Some models use a separate port (2244) for API access, this can be verified by visiting http://[host]:[port]/device. diff --git a/source/_integrations/futurenow.markdown b/source/_integrations/futurenow.markdown index 5dd9375e0a33..ed726961d70d 100644 --- a/source/_integrations/futurenow.markdown +++ b/source/_integrations/futurenow.markdown @@ -1,10 +1,11 @@ --- -title: "P5 FutureNow Lights" -description: "Instructions on how to set up P5 FutureNow relay/dimmer units as lights within Home Assistant." +title: P5 FutureNow +description: Instructions on how to set up P5 FutureNow relay/dimmer units as lights within Home Assistant. logo: p5.png ha_category: - Light ha_release: 0.75 +ha_domain: futurenow --- The `futurenow` light platform allows you to use [P5](https://www.p5.hu/) FutureNow relay/dimmer units as lights. Currently supported units: diff --git a/source/_integrations/garadget.markdown b/source/_integrations/garadget.markdown index 49c35416cefa..ad1d3a4ed213 100644 --- a/source/_integrations/garadget.markdown +++ b/source/_integrations/garadget.markdown @@ -1,14 +1,14 @@ --- -title: "Garadget Cover" -description: "Instructions on how to integrate Garadget covers within Home Assistant." +title: Garadget +description: Instructions on how to integrate Garadget covers within Home Assistant. logo: garadget.png ha_category: - Cover ha_release: 0.32 ha_iot_class: Cloud Polling +ha_domain: garadget --- - The `garadget` cover platform lets you control [Garadget](https://www.garadget.com/) garage door futurizers through Home Assistant. ## Configuration diff --git a/source/_integrations/garmin_connect.markdown b/source/_integrations/garmin_connect.markdown new file mode 100644 index 000000000000..aac4d4f8be91 --- /dev/null +++ b/source/_integrations/garmin_connect.markdown @@ -0,0 +1,118 @@ +--- +title: Garmin Connect +description: Instructions on how to configure the Garmin Connect integration for Home Assistant. +logo: garmin_connect.png +ha_category: + - Health +ha_iot_class: Cloud Polling +ha_release: 0.105 +ha_codeowners: + - '@cyberjunky' +ha_config_flow: true +ha_domain: garmin_connect +--- + +The Garmin Connect sensor allows you to expose data from [Garmin Connect](https://connect.garmin.com) to Home Assistant. + +## Configuration + +To add Garmin Connect to your installation, go to Configuration >> Integrations in the UI and enable the Garmin Connect integration by entering your credentials. + +After successful login a standard set of sensors are enabled. +You can enable more if needed by using the Integrations page. + +Please be aware that Garmin Connect has very low rate limits, max. once every ~10 minutes. + +## Available Sensors + +Not every sensor holds meaningful values, it depends on the tracking device you use, and the apps you have connected. + +Enabled by default: + +```text +Total Steps +Daily Step Goal +Total KiloCalories +Active KiloCalories +BMR KiloCalories +Consumed KiloCalories +Burned KiloCalories +Total Distance Mtr +Active Time +Sedentary Time +Sleeping Time +Awake Duration +Sleep Duration +Floors Ascended +Floors Descended +Floors Ascended Goal +Min Heart Rate +Max Heart Rate +Resting Heart Rate +Avg Stress Level +Max Stress Level +Rest Stress Duration +Activity Stress Duration +Uncat. Stress Duration +Total Stress Duration +Low Stress Duration +Medium Stress Duration +High Stress Duration +Body Battery Charged +Body Battery Drained +Body Battery Highest +Body Battery Lowest +Body Battery Most Recent +Average SPO2 +Lowest SPO2 +Latest SPO2 +``` + +Disabled by default: + +```text +Remaining KiloCalories +Net Remaining KiloCalories +Net Calorie Goal +Wellness Start Time +Wellness End Time +Wellness Description +Wellness Distance Mtr +Wellness Active KiloCalories +Wellness KiloCalories +Highly Active Time +Floors Ascended Mtr +Floors Descended Mtr +Min Avg Heart Rate +Max Avg Heart Rate +Abnormal HR Counts +Last 7 Days Avg Heart Rate +Stress Qualifier +Stress Duration +Stress Percentage +Rest Stress Percentage +Activity Stress Percentage +Uncat. Stress Percentage +Low Stress Percentage +Medium Stress Percentage +High Stress Percentage +Latest SPO2 Time +Average Altitude +Moderate Intensity +Vigorous Intensity +Intensity Goal +Latest Respiration Update +Highest Respiration +Lowest Respiration +Latest Respiration + +Weight +BMI +Body Fat +Body Water +Body Mass +Muscle Mass +Physique Rating +Visceral Fat +Metabolic Age +``` diff --git a/source/_integrations/gc100.markdown b/source/_integrations/gc100.markdown index 781011d39f4b..79a5648b7197 100644 --- a/source/_integrations/gc100.markdown +++ b/source/_integrations/gc100.markdown @@ -1,12 +1,13 @@ --- -title: "gc100" -description: "Instructions on how to integrate gc100 with Home Assistant." +title: Global Caché GC-100 +description: Instructions on how to integrate gc100 with Home Assistant. ha_category: - Hub - Binary Sensor - Switch ha_release: 0.57 ha_iot_class: Local Polling +ha_domain: gc100 --- The Global Caché [GC-100](https://www.globalcache.com/products/gc-100/) can be integrated into Home Assistant. GC-100 is a TCP-controllable diff --git a/source/_integrations/gdacs.markdown b/source/_integrations/gdacs.markdown new file mode 100644 index 000000000000..bcc229c229a1 --- /dev/null +++ b/source/_integrations/gdacs.markdown @@ -0,0 +1,141 @@ +--- +title: Global Disaster Alert and Coordination System (GDACS) +description: Instructions on how to integrate the Global Disaster Alert and Coordination System (GDACS) feed into Home Assistant. +logo: gdacs.jpg +ha_category: + - Geolocation +ha_iot_class: Cloud Polling +ha_release: 0.106 +ha_config_flow: true +ha_quality_scale: platinum +ha_codeowners: + - '@exxamalte' +ha_domain: gdacs +--- + +The `gdacs` integration lets you use a GeoRSS feed provided by +[GDACS](https://www.gdacs.org/) with information +about major droughts, earthquakes, floods, tropical cyclones, tsunamis and +volcanic activities worldwide. +It retrieves alerts from a feed and shows information of those alerts filtered +by distance to Home Assistant's location. + +Entities are generated, updated and removed automatically with each update +from the feed. Each entity defines latitude and longitude and will be shown +on the default map automatically, or on a map card by defining the source +`gdacs`. The distance is available as the state of each entity, and +converted to the unit (kilometers or miles) configured in Home Assistant. + +

    + +

    + +The data is updated every 5 minutes. + +
    + +The material used by this integration is provided by the [Global Disaster +Alert and Coordination System (GDACS)](https://www.gdacs.org/) - a cooperation +framework between the United Nations and the European Commission - under the +[Creative Commons Attribution 4.0 International (CC BY 4.0) license](http://creativecommons.org/licenses/by/4.0/). +It has only been modified for the purpose of presenting the material in Home Assistant. +Please refer to the [creator's disclaimer and terms of use notice](https://www.gdacs.org/About/termofuse.aspx) for more information. + +
    + +## Configuration + +To integrate the GDACS feed use the "Integrations" feature +in the GUI, you find it under Configurations - Integrations, or add the +following line to your `configuration.yaml`. + +```yaml +# Example configuration.yaml entry +gdacs: +``` + +{% configuration %} +categories: + description: The categories of alerts to be included. Valid categories are 'Drought', 'Earthquake', 'Flood', 'Tropical Cyclone', 'Tsunami', 'Volcano'. + required: false + type: list +radius: + description: The radius around your location to monitor; defaults to 500 km or mi (depending on the unit system defined in your `configuration.yaml`). + required: false + type: float + default: 500.0 +latitude: + description: Latitude of the coordinates around which alerts are considered. + required: false + type: float + default: Latitude defined in your configuration. +longitude: + description: Longitude of the coordinates around which alerts are considered. + required: false + type: float + default: Longitude defined in your configuration. +{% endconfiguration %} + +## State Attributes + +The following state attributes are available for each entity in addition to +the standard ones: + +| Attribute | Description | +|------------------|-------------| +| latitude | Latitude of the alert's location. | +| longitude | Longitude of the alert's location. | +| source | `gdacs` to be used in conjunction with `geo_location` automation trigger. | +| external_id | The external ID used in the feed to identify the alert. | +| title | Title of this entry. | +| description | Description of this entry. | +| event type | Type of event this alert is for (Drought, Earthquake, Flood, Tropical Cyclone, Tsunami, Volcano). | +| alert level | Alert level (Red, Orange, Green). | +| country | Country that the alert is applicable to. | +| duration in week | Duration of the alert in full weeks (only shown if more than one week). | +| from date | Date and time this alert started. | +| to date | Date and time this alert ended (or now if ongoing). | +| population | Exposed population. | +| severity | Severity of the alert. | +| vulnerability | Vulnerability score (textual or numerical). | + +Please note that some of the attribute values depend on the context and may not +be comparable between different event types. + +## Sensor + +This integration automatically creates a sensor that shows how many entities +are currently managed by this integration. In addition to that the sensor has +some useful attributes that indicate the currentness of the data retrieved +from the feed. + +

    + +

    + +| Attribute | Description | +|------------------------|-------------| +| status | Status of last update from the feed ("OK" or "ERROR"). | +| last update | Timestamp of the last update from the feed. | +| last update successful | Timestamp of the last successful update from the feed. | +| last timestamp | Timestamp of the latest entry from the feed. | +| created | Number of entities that were created during last update (optional). | +| updated | Number of entities that were updated during last update (optional). | +| removed | Number of entities that were removed during last update (optional). | + +## Full Configuration + +```yaml +# Example configuration.yaml entry +gdacs: + categories: + - Drought + - Earthquake + radius: 1000 + latitude: -41.2 + longitude: 174.7 +``` + +## Locations NOT supported: + +- Ireland diff --git a/source/_integrations/gearbest.markdown b/source/_integrations/gearbest.markdown index 113ce3a07d51..2cf6ab80b061 100644 --- a/source/_integrations/gearbest.markdown +++ b/source/_integrations/gearbest.markdown @@ -1,14 +1,16 @@ --- -title: "Gearbest" -description: "Instructions on how to integrate a Gearbest sensor into Home Assistant." +title: Gearbest +description: Instructions on how to integrate a Gearbest sensor into Home Assistant. logo: gearbest.png ha_category: - Sensor ha_iot_class: Cloud Polling -ha_release: "0.60" +ha_release: '0.60' +ha_codeowners: + - '@HerrHofrat' +ha_domain: gearbest --- - The `gearbest` sensor will track the price of a product from [Gearbest](https://www.gearbest.com). This information can be used in, e.g., automations to notify you when a price drops. The update interval for every item is currently set to 2 hours. To enable this sensor, add the following lines to your `configuration.yaml` file: @@ -24,7 +26,7 @@ sensor: {% configuration %} currency: - description: "The currency in which the products should be tracked. Currently supported: USD, EUR, GBP, AUD, CAD, CHF, HKD, CNY, NZD, JPY, RUB, BRL, CLP, NOK, DKK, SEK, KRW, ILS, COP, MXN, PEN, THB, IDR, UAH, PLN, INR, BGN, HUF, RON, TRY, CZK, HRK, MAD, AED, SAR, ZAR, SGD, MYR, TWD, RSD, NGN - if the currency could not be found in the conversion rate list, USD will be used as default. Either an ID or an URL must be present." + description: "The currency in which the products should be tracked. Currently supported: USD, EUR, GBP, AUD, CAD, CHF, HKD, CNY, NZD, JPY, RUB, BRL, CLP, NOK, DKK, SEK, KRW, ILS, COP, MXN, PEN, THB, IDR, UAH, PLN, INR, BGN, HUF, RON, TRY, CZK, HRK, MAD, AED, SAR, ZAR, SGD, MYR, TWD, RSD, NGN - if the currency could not be found in the conversion rate list, USD will be used as default. Either an ID or a URL must be present." required: true type: string items: diff --git a/source/_integrations/geizhals.markdown b/source/_integrations/geizhals.markdown index a0f2d630f473..fd725ccbf522 100644 --- a/source/_integrations/geizhals.markdown +++ b/source/_integrations/geizhals.markdown @@ -1,11 +1,12 @@ --- -title: "Geizhals" -description: "Instructions on how to integrate a Geizhals sensor into Home Assistant." +title: Geizhals +description: Instructions on how to integrate a Geizhals sensor into Home Assistant. logo: geizhals.png ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.51 +ha_domain: geizhals --- The `geizhals` sensor will give you the best price of a product from [Geizhals](https://geizhals.de) or related site. With this information can be used in e.g., automations to notify you when a price drops. diff --git a/source/_integrations/generic_ip_camera.markdown b/source/_integrations/generic_ip_camera.markdown index e701055785c9..7491b90b5dd2 100644 --- a/source/_integrations/generic_ip_camera.markdown +++ b/source/_integrations/generic_ip_camera.markdown @@ -6,6 +6,7 @@ ha_category: logo: home-assistant.png ha_release: pre 0.7 ha_iot_class: Configurable +ha_domain: camera --- The `generic` camera platform allows you to integrate any IP camera or other URL into Home Assistant. Templates can be used to generate the URLs on the fly. @@ -91,7 +92,7 @@ camera: content_type: 'image/svg+xml' ``` -### Local image with Hass.io +### Local image You can show a static image with this platform. Just place the image here: `/config/www/your_image.png` diff --git a/source/_integrations/generic_thermostat.markdown b/source/_integrations/generic_thermostat.markdown index abadb2988636..c1f46672399f 100644 --- a/source/_integrations/generic_thermostat.markdown +++ b/source/_integrations/generic_thermostat.markdown @@ -1,11 +1,11 @@ --- -title: "Generic Thermostat" -description: "Turn Home Assistant into a thermostat" -logo: home-assistant.png +title: Generic Thermostat +description: Turn Home Assistant into a thermostat ha_category: - Climate ha_release: pre 0.7 ha_iot_class: Local Polling +ha_domain: generic_thermostat --- The `generic_thermostat` climate platform is a thermostat implemented in Home Assistant. It uses a sensor and a switch connected to a heater or air conditioning under the hood. When in heater mode, if the measured temperature is cooler than the target temperature, the heater will be turned on and turned off when the required temperature is reached. When in air conditioning mode, if the measured temperature is hotter than the target temperature, the air conditioning will be turned on and turned off when required temperature is reached. One Generic Thermostat entity can only control one switch. If you need to activate two switches, one for a heater and one for an air conditioner, you will need two Generic Thermostat entities. @@ -87,7 +87,7 @@ precision: Time for `min_cycle_duration` and `keep_alive` must be set as "hh:mm:ss" or it must contain at least one of the following entries: `days:`, `hours:`, `minutes:`, `seconds:` or `milliseconds:`. Alternatively, it can be an integer that represents time in seconds. -Currently the `generic_thermostat` climate platform supports 'heat', 'cool' and 'off' hvac modes. You can force your `generic_thermostat` to avoid starting by setting HVAC mode to 'off'. +Currently the `generic_thermostat` climate platform supports 'heat', 'cool' and 'off' HVAC modes. You can force your `generic_thermostat` to avoid starting by setting HVAC mode to 'off'. Please note that when changing the preset mode to away, you will force a target temperature change as well that will get restored once the preset mode is set to none again. diff --git a/source/_integrations/geniushub.markdown b/source/_integrations/geniushub.markdown index 488351ed4836..e78b867e0861 100644 --- a/source/_integrations/geniushub.markdown +++ b/source/_integrations/geniushub.markdown @@ -1,6 +1,6 @@ --- -title: "Genius Hub" -description: "Instructions on how to integrate a Genius Hub with Home Assistant." +title: Genius Hub +description: Instructions on how to integrate a Genius Hub with Home Assistant. logo: geniushub.png ha_category: - Climate @@ -10,6 +10,9 @@ ha_category: - Switch ha_release: 0.92 ha_iot_class: Local Polling +ha_codeowners: + - '@zxdavb' +ha_domain: geniushub --- The `geniushub` integration links Home Assistant with your Genius Hub CH/DHW system, including its zones, devices, and issues. @@ -28,11 +31,17 @@ Each zone controlled by your Genius Hub will be exposed as either a: Currently, there is no support for altering zone schedules, although entities can be switched to/from geniushub modes that utilize schedules. -There are limitations due to the differences between the Genius Hub and Home Assisatnt schemas (e.g. HA has no **Footprint** mode) - see below for more details. +There are limitations due to the differences between the Genius Hub and Home Assistant schemas (e.g., HA has no **Footprint** mode) - use the service handlers, below, for this functionality. + +### Service Handlers + +Home Assistant is obligated to place restrictions upon integrations such as **geniushub** to maintain compatibility with other ecosystems (e.g., Google Home) and so not all of the **geniushub** functionality is available via the web UI. Some of this missing functionality is exposed via integration-specific service handlers: + - `set_zone_override`: change the zone's setpoint _for a specified duration_ (up to 24h), and + - `set_zone_mode`: change the zone's mode to one of `off`, `timer` or (if supported by the zone) `footprint` ### Climate and Water Heater Entities -Climate and Water Heater entities will report their current temperature, setpoint and mode; other properties (e.g. occupied state) are available via their state attributes (see examples below). The Genius Hub mode will be reported as/set to: +Climate and Water Heater entities will report their current temperature, setpoint and mode; other properties (e.g., occupied state) are available via their state attributes (see examples below). The Genius Hub mode will be reported as/set to: GH mode | HA Operation | HA Preset :---: | :---: | :---: @@ -41,18 +50,17 @@ GH mode | HA Operation | HA Preset **Override** | Heat | Boost **Footprint** | Heat | Activity -Note that `Boost` mode may - -Note that **Footprint** mode is only available to **Radiator** zones that have room sensors. +**Footprint** mode is only available to **Radiator** zones that have room sensors. ### Switch Entities -Switch entities will report back their state; other properties are available via their state attributes. Currently, HA switches do not have modes/presets, so the Home Assistant state will be reported as: - +Switch entities will report back their state; other properties are available via their state attributes. Currently, HA switches do not have modes/presets, so the Home Assistant `state` will be *reported* as: - `On` for **Override** \ **On**, and -- `Off` otherwise (NB: the zone could still be 'on', e.g. with **Timer** mode) +- `Off` otherwise (NB: the zone could still be 'on', e.g., with **Timer** mode) + +Note: if you turn a Switch entity `Off` via Home Assistant's web UI, it will revert to **Timer** mode - this may not be the behavior you are expecting. -If you turn a Switch entity `Off` via HA, it will revert to **Timer** mode. +Individual smart plugs are not yet exposed as switches - you can create one zone per smart plug as a work-around. ### Devices @@ -154,9 +162,9 @@ value_template: "{{ state_attr('climate.genius_zone_12', 'status').occupied }}" ## Configuration -To set up this integration, add one of the following to your **configuration.yaml** file. +To set up this integration, add one of the following to your `configuration.yaml` file. -If required, you can switch between one Option and the other and, as the `unique_id` remains consistent, state history will be preserved. This assumes that the correct MAC address is provided for Option 2, below. If a wrong MAC address was provided for Option 1, then the MAC address can be overridden for Option 1 to maintain these links within the entity registry. +If required, you can switch between one Option and the other and, as the `unique_id` remains consistent, state history will be preserved. This assumes that the correct MAC address is provided for Option 2, below. If a wrong MAC address was provided for Option 1, then the MAC address can be overridden for Option 1 to maintain these links within the entity registry. ### Option 1: hub hostname/address with user credentials @@ -171,7 +179,7 @@ The hub does not have to be in the same subnet as your Home Assistant server. ### Option 2: hub token only -This option is recommended only if Ootion 1 does not work. The MAC address should match that written on the back of the Hub. +This option is recommended only if Option 1 does not work. The MAC address should match that written on the back of the Hub. - Requires a **hub token** obtained from [my.geniushub.co.uk/tokens](https://my.geniushub.co.uk/tokens). - Uses the v1 API - which is well-documented. diff --git a/source/_integrations/geo_json_events.markdown b/source/_integrations/geo_json_events.markdown index af3cafcc038c..b4530d733272 100644 --- a/source/_integrations/geo_json_events.markdown +++ b/source/_integrations/geo_json_events.markdown @@ -1,11 +1,12 @@ --- -title: "GeoJSON Events" -description: "Instructions on how to integrate GeoJSON feeds into Home Assistant." +title: GeoJSON +description: Instructions on how to integrate GeoJSON feeds into Home Assistant. logo: geo_location.png ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.79 +ha_domain: geo_json_events --- The `geo_json_events` platform lets you integrate GeoJSON feeds. It retrieves events from a feed and shows information of those events filtered by distance to Home Assistant's location. diff --git a/source/_integrations/geo_location.markdown b/source/_integrations/geo_location.markdown index cd95864cf06b..ce76eeb3a670 100644 --- a/source/_integrations/geo_location.markdown +++ b/source/_integrations/geo_location.markdown @@ -1,8 +1,9 @@ --- -title: "Geolocation" -description: "Instructions on how to integrate geolocation aware platforms into Home Assistant." +title: Geolocation +description: Instructions on how to integrate geolocation aware platforms into Home Assistant. logo: geo_location.png ha_release: 0.78 +ha_domain: geo_location --- Geolocation aware entities are typically related to events in the real world in the vicinity of Home Assistant's location, like for example weather events, bush fires or earthquakes. @@ -13,15 +14,16 @@ Entities can have associated geolocation coordinates (latitude and longitude) so The [Geolocation trigger](/docs/automation/trigger/#geolocation-trigger) can be used in automations triggered by Geolocation entities appearing in or disappearing from zones. The following value must be used as `source` of the trigger depending on which platform is managing the entities: -| Platform | Source | -|---------------------------------------------------|-------------------------------| -| GeoJSON Events | `geo_json_events` | -| GeoNet New Zealand Quakes | `geonetnz_quakes` | -| IGN Sismología | `ign_sismologia` | -| NSW Rural Fire Service Incidents | `nsw_rural_fire_service_feed` | -| Queensland Bushfire Alert | `qld_bushfire` | -| U.S. Geological Survey Earthquake Hazards Program | `usgs_earthquakes_feed` | -| The World Wide Lightning Location Network | `wwlln` | +| Platform | Source | +|-------------------------------------------------------|-------------------------------| +| GeoJSON Events | `geo_json_events` | +| GeoNet New Zealand Quakes | `geonetnz_quakes` | +| Global Disaster Alert and Coordination System (GDACS) | `gdacs` | +| IGN Sismología | `ign_sismologia` | +| NSW Rural Fire Service Incidents | `nsw_rural_fire_service_feed` | +| Queensland Bushfire Alert | `qld_bushfire` | +| U.S. Geological Survey Earthquake Hazards Program | `usgs_earthquakes_feed` | +| The World Wide Lightning Location Network | `wwlln` | Conditions can be used to further filter entities, for example by inspecting their state attributes. diff --git a/source/_integrations/geo_rss_events.markdown b/source/_integrations/geo_rss_events.markdown index 6f020aa88e14..fabb67fa0447 100644 --- a/source/_integrations/geo_rss_events.markdown +++ b/source/_integrations/geo_rss_events.markdown @@ -1,11 +1,13 @@ --- -title: GeoRSS Events Sensor -description: "Instructions on how to set up GeoRSS sensors within Home Assistant." -logo: rss.png +title: GeoRSS +description: Instructions on how to set up GeoRSS sensors within Home Assistant. ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.55 +ha_codeowners: + - '@exxamalte' +ha_domain: geo_rss_events --- The `geo_rss_events` sensor retrieves events from a GeoRSS feed and shows information of those events filtered by distance to Home Assistant's location and grouped by category. diff --git a/source/_integrations/geofency.markdown b/source/_integrations/geofency.markdown index 02716bda083e..594d9173e840 100644 --- a/source/_integrations/geofency.markdown +++ b/source/_integrations/geofency.markdown @@ -1,11 +1,12 @@ --- -title: "Geofency" -description: "Instructions for how to use Geofency to track devices in Home Assistant." -logo: geofency.png +title: Geofency +description: Instructions for how to use Geofency to track devices in Home Assistant. ha_category: - Presence Detection ha_release: 0.53 ha_iot_class: Cloud Push +ha_config_flow: true +ha_domain: geofency --- This integration sets up integration with [Geofency](https://www.geofency.com/). Geofency is a paid app for iOS that lets users to configure a request that will be sent when a geofence or iBeacon region is entered or exited. This can be configured with Home Assistant to update your location. diff --git a/source/_integrations/geonetnz_quakes.markdown b/source/_integrations/geonetnz_quakes.markdown index ba00fd528a58..bee62f90641a 100644 --- a/source/_integrations/geonetnz_quakes.markdown +++ b/source/_integrations/geonetnz_quakes.markdown @@ -1,11 +1,16 @@ --- -title: "GeoNet NZ Quakes" -description: "Instructions on how to integrate the GeoNet New Zealand Quakes feed into Home Assistant." +title: GeoNet NZ Quakes +description: Instructions on how to integrate the GeoNet New Zealand Quakes feed into Home Assistant. logo: geonet-nz.png ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.98 +ha_config_flow: true +ha_quality_scale: platinum +ha_codeowners: + - '@exxamalte' +ha_domain: geonetnz_quakes --- The `geonetnz_quakes` integration lets you use a GeoJSON feed provided by @@ -22,7 +27,7 @@ on the default map automatically, or on a map card by defining the source converted to the unit (kilometers or miles) configured in Home Assistant.

    - +

    The data is updated every 5 minutes. @@ -107,7 +112,7 @@ some useful attributes that indicate the currentness of the data retrieved from the feed.

    - +

    | Attribute | Description | diff --git a/source/_integrations/geonetnz_volcano.markdown b/source/_integrations/geonetnz_volcano.markdown new file mode 100644 index 000000000000..5d04d7495e30 --- /dev/null +++ b/source/_integrations/geonetnz_volcano.markdown @@ -0,0 +1,99 @@ +--- +title: GeoNet NZ Volcano +description: Instructions on how to integrate the GeoNet New Zealand Volcanic Alert Level feed into Home Assistant. +logo: geonet-nz.png +ha_category: + - Sensor +ha_iot_class: Cloud Polling +ha_release: 0.103 +ha_config_flow: true +ha_codeowners: + - '@exxamalte' +ha_domain: geonetnz_volcano +--- + +The `geonetnz_volcano` integration lets you use a GeoJSON feed provided by +New Zealand's [GeoNet](https://www.geonet.org.nz/) with information +about volcanoes in the New Zealand region. +It shows information of those volcanoes filtered by distance to Home Assistant's +location. + +Entities are generated and updated automatically with each update +from the feed. Each entity defines the [volcanic alert level](https://www.geonet.org.nz/about/volcano/val) +as its state. Latitude and longitude of the volcano are included as attributes +to show on the default map automatically. + +The data is updated every 5 minutes. + +

    + +

    + +

    + +

    + +
    + +The material used by this integration is provided under the [Creative Commons Attribution 3.0 New Zealand (CC BY 3.0 NZ) license](http://creativecommons.org/licenses/by/3.0/nz/). +It has only been modified for the purpose of presenting the material in Home Assistant. +Please refer to the [creator's disclaimer notice](https://www.geonet.org.nz/disclaimer) and [data policy](https://www.geonet.org.nz/policy) for more information. + +We acknowledge the New Zealand GeoNet project and its sponsors EQC, GNS Science and LINZ, for providing data/images used in this integration. + +
    + +## Configuration + +To integrate the GeoNet New Zealand Volcanic Alert Level feed use the **Integrations** feature +in the GUI, you find it under **Configurations** -> **Integrations**, or add the +following line to your `configuration.yaml`. + +```yaml +# Example configuration.yaml entry +geonetnz_volcano: +``` + +{% configuration %} +radius: + description: The radius around your location to monitor; defaults to 50 km or mi (depending on the unit system defined in your configuration). + required: false + type: float + default: 50.0 +latitude: + description: Latitude of the coordinates around which volcanoes are considered. + required: false + type: float + default: Latitude defined in your configuration. +longitude: + description: Longitude of the coordinates around which volcanoes are considered. + required: false + type: float + default: Longitude defined in your configuration. +{% endconfiguration %} + +## State Attributes + +The following state attributes are available for each entity in addition to +the standard ones: + +| Attribute | Description | +|------------------------|-------------| +| latitude | Latitude of the volcano. | +| longitude | Longitude of the volcano. | +| external_id | The external ID used in the feed to identify the volcano. | +| activity | Volcanic activity. | +| hazards | Most likely hazards. | +| distance | The distance in km or mi to Home Assistant's location. | +| last update | Timestamp of the last update from the feed. | +| last update successful | Timestamp of the last successful update from the feed. | + +## Full Configuration + +```yaml +# Example configuration.yaml entry +geonetnz_volcano: + radius: 100 + latitude: -41.2 + longitude: 174.7 +``` diff --git a/source/_integrations/gios.markdown b/source/_integrations/gios.markdown new file mode 100644 index 000000000000..520804be7585 --- /dev/null +++ b/source/_integrations/gios.markdown @@ -0,0 +1,34 @@ +--- +title: GIOŚ +description: Instructions on how to integrate GIOŚ (Polish Chief Inspectorate Of Environmental Protection) air quality service into Home Assistant. +ha_category: + - Health +ha_release: 0.104 +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@bieniu' +ha_domain: gios +--- + +The `gios` integration uses the [GIOŚ](http://powietrze.gios.gov.pl/pjp/current) web service as a source for air quality data for your location. + +## Setup + +To obtain `station_id` of the measuring station, go to [GIOŚ](http://powietrze.gios.gov.pl/pjp/current) page, select the measuring station on the map and click the "More Info" link. The address of the opened page will look like this: `http://powietrze.gios.gov.pl/pjp/current/station_details/chart/291` and `291` will be `station_id` of measuring station. + +## Configuration + +To add GIOŚ to your installation, go to **Configuration** >> **Integrations** in the UI and enable the GIOŚ integration. + +{% configuration %} +name: + description: Manually specify Name. + required: false + type: string + default: GIOŚ +station_id: + description: Specify ID of the measuring station. + required: true + type: integer +{% endconfiguration %} diff --git a/source/_integrations/github.markdown b/source/_integrations/github.markdown index 030f8409ccce..8c383d3baacf 100644 --- a/source/_integrations/github.markdown +++ b/source/_integrations/github.markdown @@ -1,11 +1,12 @@ --- -title: "GitHub Sensor" -description: "How to integrate the GitHub sensor into Home Assistant." +title: GitHub +description: How to integrate the GitHub sensor into Home Assistant. logo: github.png ha_category: - Sensor ha_release: 0.88 ha_iot_class: Cloud Polling +ha_domain: github --- The GitHub sensor integrates data from [GitHub](https://github.com/) to monitor your favorite repositories. @@ -24,7 +25,7 @@ sensor: - platform: github access_token: !secret github_access_token repositories: - - path: 'home-assistant/home-assistant' + - path: 'home-assistant/core' ``` {% configuration %} @@ -42,7 +43,7 @@ repositories: type: list keys: path: - description: Path to the repository. For Home Assistant this will be `home-assistant/home-assistant` + description: Path to the repository. For Home Assistant this will be `home-assistant/core` required: true type: string name: diff --git a/source/_integrations/gitlab_ci.markdown b/source/_integrations/gitlab_ci.markdown index 50e9054409b2..81c87e1861f2 100644 --- a/source/_integrations/gitlab_ci.markdown +++ b/source/_integrations/gitlab_ci.markdown @@ -1,18 +1,18 @@ --- -title: "GitLab-CI Sensor" -description: "How to integrate GitLab-CI Job status within Home Assistant." -logo: gitlab.png +title: GitLab-CI +description: How to integrate GitLab-CI Job status within Home Assistant. ha_category: - Sensor -ha_release: 0.80 +ha_release: 0.8 ha_iot_class: Cloud Polling +ha_domain: gitlab_ci --- The `gitlab_ci` sensor platform integrates results reported by CI/CD Pipeline Jobs in [GitLab](https://gitlab.com/). ## Setup -You will need a GitLab repository ID. On the **Details** page for your GitLab repo, just below the project name is **Project ID:**. +You will need a GitLab repository ID. On the **Details** page for your GitLab repository, just below the project name is **Project ID:**. Alternatively, you can use `GitLab_Username/GitLab_RepositoryName`, e.g., `MyCoolUsername/MyCoolRepository`. diff --git a/source/_integrations/gitter.markdown b/source/_integrations/gitter.markdown index f22ca36535af..714aa4035ac0 100644 --- a/source/_integrations/gitter.markdown +++ b/source/_integrations/gitter.markdown @@ -1,13 +1,15 @@ --- -title: "Gitter Sensor" -description: "Instructions on how to integrate a Gitter room sensor with Home Assistant" +title: Gitter +description: Instructions on how to integrate a Gitter room sensor with Home Assistant logo: gitter.png ha_category: - Sensor ha_release: 0.47 +ha_codeowners: + - '@fabaff' +ha_domain: gitter --- - This `gitter` sensor allows one to monitor a [Gitter.im](https://gitter.im) chatroom for unread messages. ## Configuration diff --git a/source/_integrations/glances.markdown b/source/_integrations/glances.markdown index a4029b1cc012..0c3fe3d97272 100644 --- a/source/_integrations/glances.markdown +++ b/source/_integrations/glances.markdown @@ -1,14 +1,17 @@ --- -title: "Glances" -description: "Instructions on how to integrate Glances sensors into Home Assistant." -logo: glances.png +title: Glances +description: Instructions on how to integrate Glances sensors into Home Assistant. ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.7.3 +ha_config_flow: true +ha_codeowners: + - '@fabaff' + - '@engrbm87' +ha_domain: glances --- - The `glances` integration allows you to monitor the system information provided by the [Glances](https://github.com/nicolargo/glances) API. This enables one to track remote host and display their stats in Home Assistant. ## Setup @@ -21,7 +24,7 @@ $ sudo glances -w Glances web server started on http://0.0.0.0:61208/ ``` -Check if you are able to access the API located at `http://IP_ADRRESS:61208/api/3`. Don't use `-s` as this will start the XMLRPC server on port 61209. Home Assistant only supports the REST API of GLANCES. +Check if you are able to access the API located at `http://IP_ADRRESS:61208/api/3`. Don't use `-s` as this will start the XML-RPC server on port 61209. Home Assistant only supports the REST API of GLANCES. The details about your memory usage is provided as a JSON response. If so, you are good to proceed. @@ -87,11 +90,12 @@ version: ## Integration Entities -Glances integration will add the following sensors: +Glances integration will add the following sensors if available in the platform: -- disk_use_percent: The used disk space in percent. -- disk_use: The used disk space. -- disk_free: The free disk space. +- For each detected disk (or mount point) the following sensors will be created: + - disk_use_percent: The used disk space in percent. + - disk_use: The used disk space. + - disk_free: The free disk space. - memory_use_percent: The used memory in percent. - memory_use: The used memory. - memory_free: The free memory. @@ -104,9 +108,9 @@ Glances integration will add the following sensors: - process_thread: The number of threads. - process_sleeping: The number of sleeping processes. - cpu_use_percent: The used CPU in percent. -- cpu_temp: The CPU temperature (may not be available on all platforms). +- sensor_temp: A temperature sensor for each device that provides temperature (depends on platform). - docker_active: The count of active Docker containers. - docker_cpu_use: The total CPU usage in percent of Docker containers. - docker_memory_use: The total memory used by Docker containers. -Not all platforms are able to provide all metrics. For instance `cpu_temp` is requires installing and configuring `lmsensors` in Ubuntu, and may not be available at all in other platforms. +Not all platforms are able to provide all metrics. For instance the cpu temp sensor requires installing and configuring `lmsensors` in Ubuntu, and may not be available at all in other platforms. diff --git a/source/_integrations/gntp.markdown b/source/_integrations/gntp.markdown index a8b58a7ed9d6..88191c028c13 100644 --- a/source/_integrations/gntp.markdown +++ b/source/_integrations/gntp.markdown @@ -1,10 +1,12 @@ --- -title: "GNTP (Growl)" -description: "Instructions for adding GNTP/Growl notifications to Home Assistant." -logo: gntp.png +title: Growl (GnGNTP) +description: Instructions for adding GNTP/Growl notifications to Home Assistant. ha_category: - Notifications ha_release: 0.16 +ha_codeowners: + - '@robbiet480' +ha_domain: gntp --- [GNTP](http://growl.info/documentation/developer/gntp.php) is a specification for sending and receiving notifications between computers. The most well known server implementations are [Growl](http://growl.info) for Mac and [Growl for Windows](http://www.growlforwindows.com/). diff --git a/source/_integrations/goalfeed.markdown b/source/_integrations/goalfeed.markdown index e48394fa3a2a..43c19f889b25 100644 --- a/source/_integrations/goalfeed.markdown +++ b/source/_integrations/goalfeed.markdown @@ -1,10 +1,11 @@ --- -title: "Goalfeed" -description: "Instructions on how to setup Goalfeed events within Home Assistant." +title: Goalfeed +description: Instructions on how to setup Goalfeed events within Home Assistant. logo: goalfeed.png ha_category: - Other ha_release: 0.63 +ha_domain: goalfeed --- The `goalfeed` integration lets you use your Goalfeed account to trigger events in Home Assistant whenever a NHL or MLB team scores. @@ -42,8 +43,8 @@ Now you can use the goal event type in your automations: Goal events have the following event data: -- **team**: Three letter code representing the team. This is unique within the leagues, but not unique across the leagues (i.e. 'WPG' or 'TOR'). -- **team_name**: The team that scored (i.e. 'Winnipeg Jets' or 'Toronto Blue Jays'). +- **team**: Three letter code representing the team. This is unique within the leagues, but not unique across the leagues (i.e., 'WPG' or 'TOR'). +- **team_name**: The team that scored (i.e., 'Winnipeg Jets' or 'Toronto Blue Jays'). - **team_hash**: A unique hash for the team (you can find these values on https://goalfeed.ca/get-teams). - **league_id**: A unique number for the league. -- **league_name**: A the short name of the league (i.e. 'NHL' or 'MLB'). +- **league_name**: A the short name of the league (i.e., 'NHL' or 'MLB'). diff --git a/source/_integrations/gogogate2.markdown b/source/_integrations/gogogate2.markdown index 9b91045b8d85..c5dc645db8ea 100644 --- a/source/_integrations/gogogate2.markdown +++ b/source/_integrations/gogogate2.markdown @@ -1,11 +1,12 @@ --- -title: "Gogogate2 Cover" -description: "Instructions on how to integrate Gogogate2-Enabled garage door covers into Home Assistant." +title: Gogogate2 +description: Instructions on how to integrate Gogogate2-Enabled garage door covers into Home Assistant. logo: gogogate2.png ha_category: - Cover ha_release: 0.67 ha_iot_class: Local Polling +ha_domain: gogogate2 --- The `gogogate2` cover platform lets you control Gogogate2-Enabled garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your Gogogate2 mobile app. diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index a96ea5a33f65..365737ff32b8 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -1,14 +1,16 @@ --- -title: "Google Assistant" -description: "Setup for Google Assistant integration" -logo: google-assistant.png +title: Google Assistant +description: Setup for Google Assistant integration ha_category: - Voice featured: true ha_release: 0.56 +ha_codeowners: + - '@home-assistant/cloud' +ha_domain: google_assistant --- -The `google_assistant` integration allows you to control things via Google Assistant (on your mobile or tablet) or a Google Home device. +The `google_assistant` integration allows you to control things via Google Assistant on your mobile, tablet or Google Home device. ## Automatic setup via Home Assistant Cloud @@ -18,15 +20,15 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na ## Manual setup -The Google Assistant integration requires a bit more setup than most due to the way Google requires Assistant Apps to be set up. +The Google Assistant integration (without Home Assistant Cloud) requires a bit more setup than most due to the way Google requires Assistant Apps to be set up.
    -To use Google Assistant, your Home Assistant configuration has to be [externally accessible with a hostname and SSL certificate](/docs/configuration/remote/). If you haven't already configured that, you should do so before continuing. If you make DNS changes to accomplish this, please ensure you have allowed up to the full 48 hours for DNS changes to propogate, otherwise Google may not be able to reach your server. +To use Google Assistant, your Home Assistant configuration has to be [externally accessible with a hostname and SSL certificate](/docs/configuration/remote/). If you haven't already configured that, you should do so before continuing. If you make DNS changes to accomplish this, please ensure you have allowed up to the full 48 hours for DNS changes to propagate, otherwise Google may not be able to reach your server.
    -You need to create an API Key with the [Google Cloud API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see [below](#troubleshooting-the-request_sync-service)). If you don't provide one, the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have set up this component, you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration. +You will need to create a service account [Create Service account key](https://console.cloud.google.com/apis/credentials/serviceaccountkey) which allows you to update devices without unlinking and relinking an account (see [below](#troubleshooting-the-request_sync-service)). If you don't provide the service account, the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have set up this component, you will need to call this service (or command) each time you add a new device in Home Assistant that you wish to control via the Google Assistant integration. See Step 2 after the note for more details. 1. Create a new project in the [Actions on Google console](https://console.actions.google.com/). 1. Add/Import a project and give it a name. @@ -36,7 +38,7 @@ You need to create an API Key with the [Google Cloud API Console](https://consol 2. `Account linking` is required for your app to interact with Home Assistant. Set this up under the `Quick Setup` section. 1. Leave it at the default `No, I only want to allow account creation on my website` and select `Next`. 2. For the `Linking type` select `OAuth` and `Authorization Code`. Click `Next` - 3. Client ID: `https://oauth-redirect.googleusercontent.com/`, the trailing slash is important. + 3. Client ID: `https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID`. 4. Client Secret: Anything you like, Home Assistant doesn't need this field. 5. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize`. 6. Token URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/token`. Click `Next` @@ -45,15 +47,15 @@ You need to create an API Key with the [Google Cloud API Console](https://consol 9. Testing instructions: Enter anything. It doesn't matter since you won't submit this app. Click `Save` Screenshot: Account linking - + 3. Select the `Develop` tab at the top of the page, then in the upper right hand corner select the `Test` button to generate the draft version Test App. 4. Add the `google_assistant` integration configuration to your `configuration.yaml` file and restart Home Assistant following the [configuration guide](#configuration) below. -5. Open the Google Home app and goto `Account` most right icon. -6. Click `+ Set up or add`, `+ Set up device`, 'New devices', choose your home and click `Next` click `Have something...`you should have `[test] your app name` listed under 'Add new.' Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms for your devices or nicknames for your devices. +5. (Note that app versions may be slightly different.) Open the Google Home app and go to `Settings`. +6. Click `Add...`, `+ Set up or add`, `+ Set up device`, and click `Have something already setup?`. You should have `[test] your app name` listed under 'Add new'. Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms and nicknames for your devices if you wish.
    -If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app. +If you've added Home Assistant to your phone's home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant redirecting back to the Google Home app.
    @@ -64,7 +66,7 @@ If you've added Home Assistant to the home screen, you have to first remove it f 2. Copy and share the link with the new user. 3. When the new user opens the link with their own Google account, it will enable your draft test app under their account. 3. Have the new user go to their `Google Assistant` app to add `[test] your app name` to their account. -2. If you want to support actively reporting of state to Google's server (config option `report_state`) and support `google_assistant.request_sync`, you need to generate a service account. +2. If you want to support actively reporting of state to Google's server (configuration option `report_state`) and support `google_assistant.request_sync`, you need to generate a service account. 1. In the GCP Console, go to the [Create Service account key](https://console.cloud.google.com/apis/credentials/serviceaccountkey) page. 2. From the Service account list, select New service account. 3. In the Service account name field, enter a name. @@ -73,21 +75,18 @@ If you've added Home Assistant to the home screen, you have to first remove it f 6. For the Key type, select the JSON option. 7. Click Create. A JSON file that contains your key downloads to your computer. 8. Use the information in this file or the file directly to add to the `service_account` key in the configuration. -3. If you didn't specify a service account and want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: - 1. Go to the [Google API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview). - 2. Select your project and click Enable Homegraph API. - 3. Go to Credentials, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials. - 4. Note down the generated API Key and use this in the configuration. + 9. Go to the [Google API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview). + 10. Select your project and click Enable HomeGraph API. + ### Configuration -Now add the following lines to your `configuration.yaml` file: +Now add your setup to your `configuration.yaml` file, such as: ```yaml # Example configuration.yaml entry google_assistant: project_id: YOUR_PROJECT_ID - api_key: YOUR_API_KEY service_account: !include SERVICE_ACCOUNT.JSON report_state: true exposed_domains: @@ -102,8 +101,6 @@ google_assistant: light.living_room: expose: false room: LIVING_ROOM - group.all_automations: - expose: false ``` {% configuration %} @@ -117,7 +114,7 @@ secure_devices_pin: type: string default: "" api_key: - description: Your Homegraph API key (for the `google_assistant.request_sync` service). This is not required if a service_account is specified. + description: Your HomeGraph API key (for the `google_assistant.request_sync` service). This is not required if a service_account is specified. This has been deprecated and will be removed in 0.105, you must setup a `service_account` now. required: false type: string service_account: @@ -188,23 +185,19 @@ Currently, the following domains are available to be used with Google Assistant, - switch (on/off) - fan (on/off/speed) - light (on/off/brightness/rgb color/color temp) -- lock (lock/unlock (to allow assistant to unlock, set the `allow_unlock` key in configuration)) +- lock - cover (on/off/set position) - media_player (on/off/set volume (via set volume)/source (via set input source)) - climate (temperature setting, hvac_mode) - vacuum (dock/start/stop/pause) -- sensor (temperature setting, only for temperature sensor) -- Alarm Control Panel (Arm/Disarm) - -
    - The domain groups contains groups containing all items, by example group.all_automations. When telling Google Assistant to shut down everything, this will lead in this example to disabling all automations -
    +- sensor (temperature setting for temperature sensors and humidity setting for humidity sensors) +- Alarm Control Panel (arm/disarm) ### Secure Devices Certain devices are considered secure, including anything in the `lock` domain, `alarm_control_panel` domain and `covers` with device types `garage` and `door`. -By default these cannot be opened by Google Assistant unless a `secure_devices_pin` is set up. To allow opening, set the `secure_devices_pin` to something and you will be prompted to speak the pin when opening the device. Closing and locking these devices does not require a pin. +By default these cannot be opened by Google Assistant unless a `secure_devices_pin` is set up. To allow opening, set the `secure_devices_pin` to something and you will be prompted to speak the pin when opening the device. Closing or locking these devices does not require a pin. For the Alarm Control Panel if a code is set it must be the same as the `secure_devices_pin`. If `code_arm_required` is set to `false` the system will arm without prompting for the pin. @@ -213,13 +206,13 @@ For the Alarm Control Panel if a code is set it must be the same as the `secure_ Media Player sources are sent via the Modes trait in Google Assistant. There is currently a limitation with this feature that requires a hard-coded set of settings. Because of this, the only sources that will be usable by this feature [are listed here](https://developers.google.com/actions/reference/smarthome/traits/modes). -#### Example Command: +#### Example Command "Hey Google, change input source to TV on Living Room Receiver" ### Room/Area support -Entities that have not got rooms explicitly set and that have been placed in Home Assistant areas will return room hints to Google with the devices in those areas. +Entities that have not been explicitly assigned to rooms but have been placed in Home Assistant areas will return room hints to Google with the devices in those areas. ### Climate Operation Modes @@ -236,18 +229,18 @@ Here are the modes that are currently available: ### Troubleshooting the request_sync service -The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlenest/answer/7126338) from Home Control and relink. +Syncing may fail after a period of time, likely around 30 days, due to the fact that your Actions on Google app is technically in testing mode and has never been published. Eventually, it seems that the test expires. Control of devices will continue to work but syncing may not. If you say "Ok Google, sync my devices" and get the response "Unable to sync Home Assistant" (or whatever you named your project), this can usually be resolved by going back to your test app in the [Actions on Google console](https://console.actions.google.com/) and clicking `Simulator` under `TEST`. Regenerate the draft version Test App and try asking Google to sync your devices again. If regenerating the draft does not work, go back to the `Action` section and just hit the `enter` key for the URL to recreate the Preview. -The request_sync service may fail with a 404 if the project_id of the Homegraph API differs from the project_id of the Actions SDK found in the preferences of your project on [Actions on Google console](https://console.actions.google.com). Resolve this by: +The `request_sync` service requires that the initial sync from Google includes the `agent_user_id`. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlenest/answer/7126338) from Home Control and relink. + +The `request_sync` service may fail with a 404 if the `project_id` of the HomeGraph API differs from the `project_id` of the Actions SDK found in the preferences of your project on [Actions on Google console](https://console.actions.google.com). Resolve this by: 1. Removing your project from the [Actions on Google console](https://console.actions.google.com). 2. Add a new project to the [Google Cloud API Console](https://console.cloud.google.com). Here you get a new `project_id`. - 3. Enable Homegraph API to the new project. + 3. Enable HomeGraph API to the new project. 4. Generate a new API key. 5. Again, create a new project in the [Actions on Google console](https://console.actions.google.com/). Described above. But at the step 'Build under the Actions SDK box' choose your newly created project. By this, they share the same `project_id`. -Syncing may also fail after a period of time, likely around 30 days, due to the fact that your Actions on Google app is technically in testing mode and has never been published. Eventually, it seems that the test expires. Control of devices will continue to work but syncing may not. If you say "Ok Google, sync my devices" and get the response "Unable to sync Home Assistant", this can usually be resolved by going back to your test app in the [Actions on Google console](https://console.actions.google.com/) and clicking `Simulator` under `TEST`. Regenerate the draft version Test App and try asking Google to sync your devices again. If regenerating the draft does not work, go back to the `Action` section and just hit the `enter` key for the URL to recreate the Preview. - ### Troubleshooting with NGINX When using NGINX, ensure that your `proxy_pass` line *does not* have a trailing `/`, as this will result in errors. Your line should look like: diff --git a/source/_integrations/google_cloud.markdown b/source/_integrations/google_cloud.markdown index b32392337291..da8dadfe234f 100644 --- a/source/_integrations/google_cloud.markdown +++ b/source/_integrations/google_cloud.markdown @@ -1,9 +1,11 @@ --- -title: "Google Cloud Platform" -description: "Google Cloud Platform integration." -logo: google_cloud.png +title: Google Cloud Platform +description: Google Cloud Platform integration. ha_category: Text-to-speech ha_release: 0.95 +ha_codeowners: + - '@lufton' +ha_domain: google_cloud --- The `google_cloud` platform allows you to use [Google Cloud Platform](https://cloud.google.com/) API and integrate them into Home Assistant. @@ -72,17 +74,17 @@ key_file: required: false type: string language: - description: "Default language of the voice, e.g. `en-US`. Supported languages, genders and voices listed [here](https://cloud.google.com/text-to-speech/docs/voices). Also there are extra not documented but supported languages (see dropdown [here](https://cloud.google.com/text-to-speech/#streaming_demo_section))." + description: "Default language of the voice, e.g., `en-US`. Supported languages, genders and voices listed [here](https://cloud.google.com/text-to-speech/docs/voices). Also there are extra not documented but supported languages (see dropdown [here](https://cloud.google.com/text-to-speech/#streaming_demo_section))." required: false type: string default: en-US gender: - description: "Default gender of the voice, e.g. `male`. Supported languages, genders and voices listed [here](https://cloud.google.com/text-to-speech/docs/voices)." + description: "Default gender of the voice, e.g., `male`. Supported languages, genders and voices listed [here](https://cloud.google.com/text-to-speech/docs/voices)." required: false type: string default: neutral voice: - description: "Default voice name, e.g. `en-US-Wavenet-F`. Supported languages, genders and voices listed [here](https://cloud.google.com/text-to-speech/docs/voices). **Important! This parameter will override `language` and `gender` parameters if set**." + description: "Default voice name, e.g., `en-US-Wavenet-F`. Supported languages, genders and voices listed [here](https://cloud.google.com/text-to-speech/docs/voices). **Important! This parameter will override `language` and `gender` parameters if set**." required: false type: string encoding: diff --git a/source/_integrations/google_domains.markdown b/source/_integrations/google_domains.markdown index 568344e69e7d..34d2e7bc35b6 100644 --- a/source/_integrations/google_domains.markdown +++ b/source/_integrations/google_domains.markdown @@ -1,10 +1,10 @@ --- -title: "Google Domains" -description: "Keep your computer registered with the Google Domains dynamic DNS." -logo: google_domains.png +title: Google Domains +description: Keep your computer registered with the Google Domains dynamic DNS. ha_category: - Network ha_release: 0.57 +ha_domain: google_domains --- With the Google Domains integration you can keep your Google Domains record up to date. diff --git a/source/_integrations/google_maps.markdown b/source/_integrations/google_maps.markdown index 7c9d18a78a27..702159ae9324 100644 --- a/source/_integrations/google_maps.markdown +++ b/source/_integrations/google_maps.markdown @@ -1,11 +1,11 @@ --- -title: "Google Maps Location Sharing" -description: "Instructions how to use Google Maps Location Sharing to track devices in Home Assistant." -logo: google_maps.png +title: Google Maps +description: Instructions how to use Google Maps Location Sharing to track devices in Home Assistant. ha_release: 0.67 ha_category: - Presence Detection ha_iot_class: Cloud Polling +ha_domain: google_maps --- The `google_maps` platform allows you to detect presence using the unofficial API of [Google Maps Location Sharing](https://myaccount.google.com/locationsharing). @@ -30,7 +30,7 @@ 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. +Once enabled and you have rebooted devices discovered through this integration will 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`. diff --git a/source/_integrations/google_pubsub.markdown b/source/_integrations/google_pubsub.markdown index d940eadde8a6..5dd29729d84a 100644 --- a/source/_integrations/google_pubsub.markdown +++ b/source/_integrations/google_pubsub.markdown @@ -1,10 +1,10 @@ --- -title: "Google Pub/Sub" -description: "Setup for Google Pub/Sub integration" -logo: google-pubsub.png +title: Google Pub/Sub +description: Setup for Google Pub/Sub integration ha_category: - History ha_release: 0.88 +ha_domain: google_pubsub --- The `google_pubsub` integration allows you to hook into the Home Assistant event bus and send events to [Google Cloud Pub/Sub](https://cloud.google.com/pubsub/docs/overview). The current [free tier](https://cloud.google.com/free/) of GCP should allow you to sync about 1 event every 2 seconds on average (2 million invocations per month). @@ -17,7 +17,7 @@ You need to create a Service Account key in the [Google Cloud API Console](https - Choose a new "New Service Account", give it a name and leave the key type as JSON - Select the role: Pub/Sub Publisher -This will download the Service Account JSON key to your machine. Do NOT share this with anyone. Place this file in your Home Assistant config folder. +This will download the Service Account JSON key to your machine. Do NOT share this with anyone. Place this file in your Home Assistant configuration folder. Next, create a Google Pub/Sub topic in the [Google Cloud API Console](https://console.cloud.google.com/cloudpubsub/topicList). The topic name will become something like `projects/project-198373/topics/topic-name`. Note the last part only (the name you chose): `topic-name`. @@ -77,4 +77,3 @@ filter: ### Saving the data using a Google Cloud Function To save your data automatically to BigQuery, follow the [instructions here](https://github.com/timvancann/home-assistant-pubsub-cloud-function). The current [free tier](https://cloud.google.com/free/) of GCP should allow to store up to 10GB of data. - diff --git a/source/_integrations/google_translate.markdown b/source/_integrations/google_translate.markdown index 6ab7ffde4d31..eade1d2951a0 100644 --- a/source/_integrations/google_translate.markdown +++ b/source/_integrations/google_translate.markdown @@ -1,10 +1,12 @@ --- -title: "Google Translate Text-to-Speech" -description: "Instructions on how to setup Google Translate Text-to-Speech with Home Assistant." -logo: google.png +title: Google Translate Text-to-Speech +description: Instructions on how to setup Google Translate Text-to-Speech with Home Assistant. ha_category: - Text-to-speech ha_release: 0.35 +ha_codeowners: + - '@awarecan' +ha_domain: google_translate --- The `google_translate` text-to-speech platform uses the unofficial [Google Translate Text-to-Speech engine](https://translate.google.com/) to read a text with natural sounding voices. diff --git a/source/_integrations/google_travel_time.markdown b/source/_integrations/google_travel_time.markdown index 6ac9f6041114..d12dfc8a6751 100644 --- a/source/_integrations/google_travel_time.markdown +++ b/source/_integrations/google_travel_time.markdown @@ -1,11 +1,13 @@ --- -title: "Google Maps Travel Time" -description: "Instructions on how to add Google Maps travel time to Home Assistant." -logo: google_maps.png +title: Google Maps Travel Time +description: Instructions on how to add Google Maps travel time to Home Assistant. ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.19 +ha_codeowners: + - '@robbiet480' +ha_domain: google_travel_time --- The `google_travel_time` sensor provides travel time from the [Google Distance Matrix API](https://developers.google.com/maps/documentation/distance-matrix/). @@ -75,7 +77,7 @@ options: required: exclusive type: [time, string] avoid: - description: "Indicate what google should avoid when calculating the travel time, you can choose from: `tolls`, `highways`, `ferries`, `indoor`." + description: "Indicate what Google should avoid when calculating the travel time, you can choose from: `tolls`, `highways`, `ferries`, `indoor`." required: false type: string transit_mode: diff --git a/source/_integrations/google_wifi.markdown b/source/_integrations/google_wifi.markdown index 131ee254fd85..de70816021a4 100644 --- a/source/_integrations/google_wifi.markdown +++ b/source/_integrations/google_wifi.markdown @@ -1,14 +1,13 @@ --- -title: "Google Wifi" -description: "Instructions on how to integrate Google Wifi/OnHub routers into Home Assistant." +title: Google Wifi +description: Instructions on how to integrate Google Wifi/OnHub routers into Home Assistant. ha_category: - System Monitor -logo: google_wifi.png ha_iot_class: Local Polling -ha_release: "0.50" +ha_release: '0.50' +ha_domain: google_wifi --- - The `google_wifi` sensor platform is displaying the exposed status of a [Google Wifi](https://madeby.google.com/wifi/) (or OnHub) router. The sensor is able to report network status, up-time, current IP address and firmware versions. diff --git a/source/_integrations/gpmdp.markdown b/source/_integrations/gpmdp.markdown index dcc780a8ae9d..cba4da858bec 100644 --- a/source/_integrations/gpmdp.markdown +++ b/source/_integrations/gpmdp.markdown @@ -1,14 +1,13 @@ --- -title: "Google Play Music Desktop Player" -description: "Instructions on how to integrate GPMDP into Home Assistant." -logo: gpmdp.png +title: Google Play Music Desktop Player (GPMDP) +description: Instructions on how to integrate GPMDP into Home Assistant. ha_category: - Media Player ha_iot_class: Local Polling -ha_release: "0.20" +ha_release: '0.20' +ha_domain: gpmdp --- - The `gpmdp` media player platform allows you to control a [GPMDP](https://www.googleplaymusicdesktopplayer.com/) instance running on a computer from Home Assistant. You will have first have to check "Enable playback API" in GPMDP's settings and then add an inbound rule to the firewall to allow access to port 5672 on the computer running GPMDP. diff --git a/source/_integrations/gpsd.markdown b/source/_integrations/gpsd.markdown index c9b6bdadc6f4..0b685920e375 100644 --- a/source/_integrations/gpsd.markdown +++ b/source/_integrations/gpsd.markdown @@ -1,11 +1,13 @@ --- -title: "GPSD" -description: "Instructions on how to integrate GPSD into Home Assistant." -logo: gpsd.png +title: GPSD +description: Instructions on how to integrate GPSD into Home Assistant. ha_category: - Utility ha_release: 0.26 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' +ha_domain: gpsd --- The `gpsd` integration is using the GPS information collected by [gpsd](http://catb.org/gpsd/) and a GPS receiver. @@ -64,4 +66,3 @@ name: type: string default: GPS {% endconfiguration %} - diff --git a/source/_integrations/gpslogger.markdown b/source/_integrations/gpslogger.markdown index 1b46c6f20009..a9e756e3bde7 100644 --- a/source/_integrations/gpslogger.markdown +++ b/source/_integrations/gpslogger.markdown @@ -1,11 +1,12 @@ --- -title: "GPSLogger" -description: "Instructions on how to use GPSLogger to track devices in Home Assistant." -logo: gpslogger.png +title: GPSLogger +description: Instructions on how to use GPSLogger to track devices in Home Assistant. ha_category: - Presence Detection ha_release: 0.34 ha_iot_class: Cloud Push +ha_config_flow: true +ha_domain: gpslogger --- This integration sets up integration with [GPSLogger](https://gpslogger.app/). GPSLogger is an open source app for Android that allows users to update your location in Home Assistant. diff --git a/source/_integrations/graphite.markdown b/source/_integrations/graphite.markdown index 3a1c3c73780d..2ba430893f67 100644 --- a/source/_integrations/graphite.markdown +++ b/source/_integrations/graphite.markdown @@ -1,10 +1,11 @@ --- -title: "Graphite" -description: "Instructions on how to record Home Assistant history in Graphite." +title: Graphite +description: Instructions on how to record Home Assistant history in Graphite. logo: graphite.png ha_category: - History ha_release: 0.13 +ha_domain: graphite --- The `graphite` integration records all events and state changes and feeds the data to a [graphite](http://graphite.wikidot.com/) instance. @@ -33,4 +34,3 @@ prefix: type: string default: ha {% endconfiguration %} - diff --git a/source/_integrations/greeneye_monitor.markdown b/source/_integrations/greeneye_monitor.markdown index 52afe90bcb9b..14fccfa3ed09 100644 --- a/source/_integrations/greeneye_monitor.markdown +++ b/source/_integrations/greeneye_monitor.markdown @@ -1,12 +1,15 @@ --- -title: "GreenEye Monitor" -description: "Instructions on how to integrate your GreenEye Monitor within Home Assistant." +title: GreenEye Monitor (GEM) +description: Instructions on how to integrate your GreenEye Monitor within Home Assistant. logo: brultech.png ha_category: - Hub - Sensor ha_release: 0.82 ha_iot_class: Local Push +ha_codeowners: + - '@jkeljo' +ha_domain: greeneye_monitor --- The [GreenEye Monitor (GEM)](https://www.brultech.com/greeneye/) integration for Home Assistant allows you to create sensors for the various data channels of the GEM. Each current transformer (CT) channel, pulse counter, and temperature sensor appears in Home Assistant as a sensor, and can be used in automations. @@ -32,8 +35,13 @@ greeneye_monitor: counted_quantity_per_pulse: 1 time_unit: "min" temperature_sensors: + temperature_unit: "C" + sensors: + - number: 1 + name: back_porch_temperature + voltage: - number: 1 - name: back_porch_temperature + name: house_volts ``` By default, GEM will send updates every 5 seconds. That's a lot of data, and the databases used by the [`recorder`](/integrations/recorder) integration for history don't do well with that much data, so it is recommended to configure the [`influxdb`](/integrations/influxdb) integration and exclude the GEM sensors from `recorder`. @@ -70,6 +78,18 @@ monitors: required: false type: boolean default: false + voltage: + description: Configuration for voltage sensor + required: false + keys: + number: + description: A channel number that exists in the GEM. There is only one voltage sensor on current models of the GEM. + required: true + type: integer + name: + description: The name that should be used for the voltage sensor in Home Assistant. + required: true + type: string temperature_sensors: description: Configuration for temperature sensors required: false diff --git a/source/_integrations/greenwave.markdown b/source/_integrations/greenwave.markdown index 4aace281ee97..c4aed6eee571 100644 --- a/source/_integrations/greenwave.markdown +++ b/source/_integrations/greenwave.markdown @@ -1,11 +1,12 @@ --- -title: Greenwave Reality (TCP Connected) Lights -description: "Instructions on how to set up Greenwave Reality lights within Home Assistant." +title: Greenwave Reality +description: Instructions on how to set up Greenwave Reality lights within Home Assistant. logo: greenwavereality.png ha_category: - Light ha_release: 0.61 ha_iot_class: Local Polling +ha_domain: greenwave --- This integration communicates with the Greenwave Reality (TCP Connected) Gateway to allow control of all lights and fixtures registered to the gateway. Bulbs and Fixtures can be created and modified inside the TCP Lighting App for Android and iOS. diff --git a/source/_integrations/griddy.markdown b/source/_integrations/griddy.markdown new file mode 100644 index 000000000000..6ebc9080d11b --- /dev/null +++ b/source/_integrations/griddy.markdown @@ -0,0 +1,64 @@ +--- +title: Griddy Power +description: Instructions on how to integrate griddy prices into Home Assistant. +ha_category: + - Sensor +ha_release: 0.107 +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@bdraco' +ha_domain: griddy +--- + +The `griddy` integration allows you to integrate your [Griddy](https://griddy.com/) price data into Home Assistant. + +There is currently support for the following device types within Home Assistant: + +- Sensor + +## Configuration + +You will need your Griddy Load Zone to use this module. + +To add `Griddy` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Griddy**. + +Alternatively, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +griddy: + loadzone: YOUR_LZ +``` + +{% configuration %} +loadzone: + description: Your Load Zone is in your Griddy account under “Account > Meter > Load Zone.” + required: true + type: string +{% endconfiguration %} + +### Sensor + +The current price for the Load Zone will appear as a sensor: + +- LZ_XXXXX Price Now + +### Example Automation + +```yaml +- id: '1572630019168' + alias: Stop Tesla Charging if Power Price Spikes + description: '' + trigger: + - above: '30' + entity_id: sensor.lz_houston_price_now + platform: numeric_state + condition: + - condition: zone + entity_id: device_tracker.my_tesla + zone: zone.home + action: + - service: switch.turn_off + entity_id: switch.my_tesla_charger_switch +``` diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index 451f8ca80a58..1c26b598ef5f 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -1,16 +1,18 @@ --- -title: "Group" -description: "Instructions on how to setup groups within Home Assistant." -logo: home-assistant.png +title: Group +description: Instructions on how to setup groups within Home Assistant. ha_category: - Organization -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: group --- -Groups allow the user to combine multiple entities into one. +Groups allow the user to combine multiple entities into one. -Check the **Set State** page from the **Developer Tools** and browse the **Current entities:** listing for all available entities. +Check the **States** page from the **Developer Tools** and browse the **Current entities:** listing for all available entities. ```yaml # Example configuration.yaml entry @@ -46,142 +48,11 @@ all: type: boolean default: false icon: - description: The icon that shows in the front end. **The rest of this only applies to the deprecated UI `/states`**. If the group is a view, this icon will show at the top in the frontend instead of the name. If the group is a view and both name and icon have been specified, the icon will appear at the top of the frontend and the name will be displayed as the mouse-over text. - required: false - type: string -view: - description: "**Only applies to the deprecated UI `/states`**. If yes then the entry will be shown as a view (tab) at the top. Groups that are set to `view: true` cannot be used as entities in other views. *Does not apply to Lovelace.*" - required: false - type: boolean - default: false -control: - description: "**This is only a feature in generated mode of Lovelace** If value set to `hidden` the group switch will be hidden." + description: The icon that shows in the front end. required: false type: string {% endconfiguration %} -## Default groups - -Some integrations automatically create special groups containing integration entities. These groups are named like `group.all_...`, for example: - -- `group.all_switches` -- `group.all_lights` -- `group.all_devices` -- `group.all_scripts` -- `group.all_automations` - -You can see list of these groups in **State** page of the **Developer Tools**. - ## Group behavior By default when any member of a group is `on` then the group will also be `on`. Similarly with a device tracker, when any member of the group is `home` then the group is `home`. If you set the `all` option to `true` though, this behavior is inverted and all members of the group have to be `on` for the group to turn on as well. - ---- - -## Old user interface - -This section only applies if you've not moved off the deprecated `/states` user interface. - -A group can be promoted to a **view** by setting `view: true` under the group definition. This will make the group available as a new tab in the frontend. - -By default, every group appears in the HOME tab. If you create a group `default_view` it will REPLACE the contents of the HOME tab so you can customize the HOME tab as you wish. - -```yaml -# Example configuration.yaml entry -group: - default_view: - view: true - icon: mdi:home - entities: - - group.kitchen - - group.awesome_people - - group.climate - kitchen: - name: Kitchen - entities: - - switch.kitchen_pin_3 - upstairs: - name: Kids - icon: mdi:account-multiple - view: true - entities: - - input_boolean.notify_home - - camera.demo_camera - - device_tracker.demo_paulus - - group.garden - climate: - name: Climate - view: false - entities: - - sensor.bedroom_temp - - sensor.porch_temp - awesome_people: - name: Awesome People - view: false - entities: - - device_tracker.dad_smith - - device_tracker.mom_smith -``` - -

    - -Example of groups shown as views in the frontend. -

    - -If all entities in a group are switches or lights then Home Assistant adds a switch at the top of the card that turns them all on/off at once. If you want to hide this switch, set `control` to `hidden`. - -You can create views (tabs) that contain other groups (but not other groups which are marked as `view: true`). -Notice in the example below that in order to refer to the group "Living Room", you use `group.living_room` (lowercase and spaces replaced with underscores). - -```yaml -# Example configuration.yaml entry that shows two groups, referred to in a view group (tab) - Living Room: - control: hidden - entities: - - light.light_family_1 - - binary_sensor.motion_living - Bedroom: light.light_bedroom, switch.sleeping - Rooms: - view: true - name: Rooms - entities: - - group.living_room - - group.bedroom -``` - -Default groups appear in the HOME tab, if not overridden by user views and groups. Default groups are hidden by default, so you must [customize](/docs/configuration/customizing-devices/) them to be visible in your custom groups and views. - -```yaml -# Example configuration.yaml to include default groups in custom view -customize: - group.all_automations: - hidden: false - group.all_scripts: - hidden: false -group: - automation_view: - name: Automation - view: true - entities: - - group.all_automations - - group.all_scripts -``` - -## Customize group order -You can also order your groups using [customize](/docs/configuration/customizing-devices/) with `order: ` if they don't show up in the order you want them in. - -```yaml -# Example configuration.yaml to order groups with order: -customize: - group.all_automations: - order: 1 - group.all_scripts: - order: 2 -group: - automation_view: - name: Automation - view: true - entities: - - group.all_automations - - group.all_scripts -``` diff --git a/source/_integrations/growatt_server.markdown b/source/_integrations/growatt_server.markdown index 10fe85ebf455..eb11a1623753 100644 --- a/source/_integrations/growatt_server.markdown +++ b/source/_integrations/growatt_server.markdown @@ -1,12 +1,15 @@ --- -title: "Growatt server PV Inverter Sensor" -description: "Instructions on how to integrate your Growatt server solar inverter within Home Assistant." +title: Growatt +description: Instructions on how to integrate your Growatt server solar inverter within Home Assistant. logo: growatt.png ha_category: - Sensor - Energy ha_release: 0.99 ha_iot_class: Cloud Polling +ha_codeowners: + - '@indykoning' +ha_domain: growatt_server --- This is a sensor to collect information from your Growatt inverters using [Growatt server](https://server.growatt.com/). diff --git a/source/_integrations/gstreamer.markdown b/source/_integrations/gstreamer.markdown index e0bf7e009f30..fe212313f4f5 100644 --- a/source/_integrations/gstreamer.markdown +++ b/source/_integrations/gstreamer.markdown @@ -1,11 +1,12 @@ --- -title: "Gstreamer" -description: "Instructions on how to integrate Gstreamer into Home Assistant." +title: GStreamer +description: Instructions on how to integrate Gstreamer into Home Assistant. ha_category: - Media Player logo: gstreamer.png ha_release: 0.39 ha_iot_class: Local Push +ha_domain: gstreamer --- The `gstreamer` platform allows you to play audio via a [gstreamer](https://gstreamer.freedesktop.org/) pipeline. Practically, this means you can play audio directly on the computer running Home Assistant. It is particularly suited for playing TTS. Advanced users can specify a pipeline to transform the audio stream and/or redirect it elsewhere. diff --git a/source/_integrations/gtfs.markdown b/source/_integrations/gtfs.markdown index c6b79067dab1..a2cf143ed1ba 100644 --- a/source/_integrations/gtfs.markdown +++ b/source/_integrations/gtfs.markdown @@ -1,11 +1,13 @@ --- -title: "Public Transit (GTFS)" -description: "Instructions on how to use public transit open data in Home Assistant." -logo: train.png +title: General Transit Feed Specification (GTFS) +description: Instructions on how to use public transit open data in Home Assistant. ha_category: - Transport ha_iot_class: Local Polling ha_release: 0.17 +ha_codeowners: + - '@robbiet480' +ha_domain: gtfs --- The `gtfs` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from your chosen public transit authority and is formatted as [General Transit Feed Specification](https://developers.google.com/transit/gtfs/) data, commonly known as GTFS. @@ -18,7 +20,7 @@ Here are some examples: - [Metropolitan Transit Authority of New York City (MTA)](http://web.mta.info/developers/) - Provides separate data feeds for subway, bus, LIRR and Metro-North of the greater New York City metropolitan region. - [Official Timetable Switzerland](https://opentransportdata.swiss/en/dataset/timetable-2019-gtfs) - The official timetable data for Switzerland in 2019. -You need to download a GTFS ZIP file and put it into a folder named `gtfs` in your configuration directory. For ease of use, it is suggested that you rename the file to just the agency/data source name (i.e. `bart.zip` instead of `google_transit_20160328_v1.zip`). You can also unzip and place a folder in the `gtfs` folder. +You need to download a GTFS ZIP file and put it into a folder named `gtfs` in your configuration directory. For ease of use, it is suggested that you rename the file to just the agency/data source name (i.e., `bart.zip` instead of `google_transit_20160328_v1.zip`). You can also unzip and place a folder in the `gtfs` folder. The data will be converted into a queryable format and saved as a SQLite3 database alongside the source data. The sensor will check for the existence of this SQLite3 data at every startup and will re-import the ZIP/Folder if none is found. diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown index 7b1c1ca31f37..bc5e2bd939b4 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -1,12 +1,12 @@ --- -title: "Habitica" -description: "Instructions on enabling Habitica support for your Home Assistant" -logo: habitica.png +title: Habitica +description: Instructions on enabling Habitica support for your Home Assistant ha_category: - Hub - Sensor ha_release: 0.78 ha_iot_class: Cloud Polling +ha_domain: habitica --- This integration allows you to monitor and manage your Habitica profile. This integration exposes the [Habitica's API](https://habitica.com/apidoc/) as a Home Assistant service. It supports multiple users and allows you to automate checking out your habits and daily tasks or casting magics using Home Assistant. @@ -65,7 +65,7 @@ The API is exposed to Home Assistant as a service called `habitica.api_call`. To |----------------------|--------|--------|----------------| | `name` | yes | string | Habitica's username as per `configuration.yaml` entry. | | `path` | yes | [string] | Items from API URL in form of an array with method attached at the end. See the example below. | -| `args` | no | map | Any additional json or url parameter arguments. See the example below and [apidoc](https://habitica.com/apidoc/). | +| `args` | no | map | Any additional JSON or URL parameter arguments. See the example below and [apidoc](https://habitica.com/apidoc/). | A successful call to this service will fire an event `habitica_api_call_success`. @@ -73,13 +73,13 @@ A successful call to this service will fire an event `habitica_api_call_success` |----------------------|--------|----------------| | `name` | string | Copied from service data attribute. | | `path` | [string] | Copied from service data attribute. | -| `data` | map | Deserialized `data` field of JSON object Habitica's server returned in response to api call. For more info see [docs](https://habitica.com/apidoc/). | +| `data` | map | Deserialized `data` field of JSON object Habitica's server returned in response to API call. For more info see the [API documentation](https://habitica.com/apidoc/). | #### Let's consider some examples on how to call the service. For example, let's say that there is a configured `habitica` platform for user `xxxNotAValidNickxxx` with their respective `api_user` and `api_key`. Let's create a new task (a todo) for this user via Home Assistant. There is an [API call](https://habitica.com/apidoc/#api-Task-CreateUserTasks) for this purpose. -To create a new task one should hit `https://habitica.com/api/v3/tasks/user` endpoint with `POST` request with a json object with task properties. +To create a new task one should hit `https://habitica.com/api/v3/tasks/user` endpoint with `POST` request with a JSON object with task properties. So let's call the API on `habitica.api_call`. * The `name` key becomes `xxxNotAValidNickxxx`. @@ -87,7 +87,7 @@ So let's call the API on `habitica.api_call`. * Remove `https://habitica.com/api/v3/` at the beginning of the endpoint URL. * Split the remaining on slashes (/) and **append the lowercase method** at the end. * You should get `["tasks", "user", "post"]`. To get a better idea of the API you are recommended to try all of the API calls in IPython console [using this package](https://github.com/ASMfreaK/habitipy/blob/master/README.md). -* The `args` key is more or less described in the [docs](https://habitica.com/apidoc/). +* The `args` key is more or less described in the [API documentation](https://habitica.com/apidoc/). Combining all together: call `habitica.api_call` with data diff --git a/source/_integrations/hangouts.markdown b/source/_integrations/hangouts.markdown index b6a1443eba4e..5cbba1743941 100644 --- a/source/_integrations/hangouts.markdown +++ b/source/_integrations/hangouts.markdown @@ -1,11 +1,12 @@ --- -title: "Google Hangouts" -description: "Hangouts chatbot support" -logo: hangouts.png +title: Google Hangouts +description: Hangouts chatbot support ha_category: - Hub - Notifications ha_release: 0.77 +ha_config_flow: true +ha_domain: hangouts --- This integration allows you to send messages to [Google Hangouts](https://hangouts.google.com) conversations, as well as to react to messages in conversations. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. Home Assistant will impersonate a Smartisan YQ603 phone which will then show up in your Google devices. diff --git a/source/_integrations/harman_kardon_avr.markdown b/source/_integrations/harman_kardon_avr.markdown index 87e4b0c47d90..e91244d1eb60 100644 --- a/source/_integrations/harman_kardon_avr.markdown +++ b/source/_integrations/harman_kardon_avr.markdown @@ -1,11 +1,12 @@ --- -title: "Harman Kardon AVR Network Receivers" -description: "Instructions on how to integrate Harman Kardon AVR Network Receivers into Home Assistant." +title: Harman Kardon AVR +description: Instructions on how to integrate Harman Kardon AVR Network Receivers into Home Assistant. logo: harman_kardon.png ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.85 +ha_domain: harman_kardon_avr --- The `harman_kardon_avr` platform allows you to control Harman Kardon Network Receivers from Home Assistant. diff --git a/source/_integrations/harmony.markdown b/source/_integrations/harmony.markdown index 3c9f71aadc89..e06c50b13134 100644 --- a/source/_integrations/harmony.markdown +++ b/source/_integrations/harmony.markdown @@ -1,11 +1,17 @@ --- -title: "Harmony Hub Remote" -description: "Instructions on how to integrate Harmony Hub remotes into Home Assistant." +title: Logitech Harmony Hub +description: Instructions on how to integrate Harmony Hub remotes into Home Assistant. logo: logitech.png ha_category: - Remote ha_iot_class: Local Push ha_release: 0.34 +ha_config_flow: true +ha_codeowners: + - '@ehendrix23' + - '@bramkragten' + - '@bdraco' +ha_domain: harmony --- The `harmony` remote platform allows you to control the state of your [Harmony Hub Device](https://www.logitech.com/en-us/product/harmony-hub). @@ -16,10 +22,13 @@ Supported units: - Harmony Companion - Harmony Pro - Harmony Elite +- Harmony Pro 2400 -The preferred way to setup the Harmony remote is by enabling the [discovery component](/integrations/discovery/). +The preferred way to setup the Harmony remote for your installation is via **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Logitech Harmony Hub**. -However, if you want to manually configure the device, you will need to add its settings to your `configuration.yaml` file: +Once `Logitech Harmony Hub` has been configured, the default activity and duration in seconds between sending commands to a device can be adjusted in the settings via **Configuration** >> **Integrations** >> **Your Logitech Harmony Hub** + +Alternatively, if you want to manually configure the device, you will need to add its settings to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -27,14 +36,6 @@ remote: - platform: harmony name: Bedroom host: 10.168.1.13 -``` - -You can override some default configuration values on a discovered hub (e.g., the `port` or `activity`) by adding a `configuration.yaml` setting. In this case leave the `host` setting empty so the platform will discover the host IP automatically, but set the `name` in the config to match exactly the name you have set for your Hub so the platform knows what Hub you are trying to configure. - -```yaml -# Example configuration.yaml entry with discovery - - platform: harmony - name: Living Room activity: Watch TV ``` @@ -45,13 +46,8 @@ name: type: string host: description: The Harmony device's IP address. Leave empty for the IP to be discovered automatically. - required: false + required: true type: string -port: - description: The Harmony device's port. - required: false - type: integer - default: 5222 activity: description: Activity to use when `turn_on` service is called without any data. Overrides the `activity` setting for this discovered hub. required: false @@ -61,16 +57,11 @@ delay_secs: required: false type: float default: 0.4 -hold_secs: - description: Default duration in seconds between sending the "press" command and sending the "release" command. - required: false - type: integer - default: 0 {% endconfiguration %} ### Configuration file -Upon startup one file will be written to your Home Assistant configuration directory per device in the following format: `harmony_REMOTENAME.conf`. The file will contain: +Upon startup one file will be written to your Home Assistant configuration directory per device in the following format: `harmony_UNIQUE_ID.conf`. The file will contain: - List of all programmed activity names and ID numbers - List of all programmed device names and ID numbers @@ -88,7 +79,7 @@ Turn off all devices that were switched on from the start of the current activit ### Service `remote.turn_on` -Start an activity. Will start the default `activity` from configuration.yaml if no activity is specified. The specified activity can either be the activity name or the activity ID from the configuration file written to your [Home Assistant configuration directory](/docs/configuration/). +Start an activity. Will start the default `activity` from `configuration.yaml` if no activity is specified. The specified activity can either be the activity name or the activity ID from the configuration file written to your [Home Assistant configuration directory](/docs/configuration/). | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -182,7 +173,7 @@ data: delay_secs: 0.6 ``` -### Service `remote.harmony_change_channel` +### Service `harmony.change_channel` Sends the change channel command to the Harmony HUB @@ -194,13 +185,13 @@ Sends the change channel command to the Harmony HUB A typical service call for changing the channel would be:: ```yaml -service: remote.change_channel +service: harmony.change_channel data: entity_id: remote.tv_room channel: 200 ``` -### Service `remote.harmony_sync` +### Service `harmony.sync` Force synchronization between the Harmony device and the Harmony cloud. diff --git a/source/_integrations/haveibeenpwned.markdown b/source/_integrations/haveibeenpwned.markdown index 7fd9fb67c9e3..f931c6c33652 100644 --- a/source/_integrations/haveibeenpwned.markdown +++ b/source/_integrations/haveibeenpwned.markdown @@ -1,23 +1,18 @@ --- -title: "HaveIBeenPwned Sensor" -description: "Instructions on how to integrate HaveIBeenPwned sensor into Home Assistant." +title: HaveIBeenPwned +description: Instructions on how to integrate HaveIBeenPwned sensor into Home Assistant. logo: haveibeenpwned.png ha_category: - Sensor ha_release: 0.31 ha_iot_class: Cloud Polling +ha_domain: haveibeenpwned --- The `haveibeenpwned` sensor platform creates sensors that check for breached email accounts on [haveibeenpwned](https://haveibeenpwned.com). ## Configuration -
    - - The HaveIBeenPwned API is no longer a free API. For more information about this change read the HIBP creator's [blogpost regarding the change](https://www.troyhunt.com/authentication-and-the-have-i-been-pwned-api/). - -
    - In order to use this integration you need to purchase an API key. Visit the [API key page](https://haveibeenpwned.com/API/Key) on the HIBP website to purchase one. ## Configuration diff --git a/source/_integrations/hddtemp.markdown b/source/_integrations/hddtemp.markdown index 32a805b292ea..822dda182d60 100644 --- a/source/_integrations/hddtemp.markdown +++ b/source/_integrations/hddtemp.markdown @@ -1,10 +1,11 @@ --- -title: "HDDTemp" -description: "Instructions on how to integrate hard drive temperature information into Home Assistant." +title: hddtemp +description: Instructions on how to integrate hard drive temperature information into Home Assistant. ha_category: - System Monitor ha_release: 0.32 ha_iot_class: Local Polling +ha_domain: hddtemp --- The `hddtemp` sensor platform is using the data provided by [HDDTemp](https://savannah.nongnu.org/projects/hddtemp). diff --git a/source/_integrations/hdmi_cec.markdown b/source/_integrations/hdmi_cec.markdown index 674509549faa..df453447f18a 100644 --- a/source/_integrations/hdmi_cec.markdown +++ b/source/_integrations/hdmi_cec.markdown @@ -1,11 +1,12 @@ --- -title: "HDMI CEC" -description: "Instructions on how to interact with HDMI CEC via Home Assistant." +title: HDMI-CEC +description: Instructions on how to interact with HDMI-CEC via Home Assistant. ha_category: - Automation logo: hdmi.png ha_release: 0.23 ha_iot_class: Local Push +ha_domain: hdmi_cec --- The `hdmi_cec` integration provides services that allow selecting the active device, powering on all devices, setting all devices to standby and creates switch entities for HDMI devices. Devices are defined in the configuration file by associating HDMI port number and a device name. Connected devices that provide further HDMI ports, such as sound-bars and AVRs are also supported. Devices are listed from the perspective of the CEC-enabled Home Assistant device. Any connected device can be listed, regardless of whether it supports CEC. Ideally the HDMI port number on your device will map correctly the CEC physical address. If it does not, use `cec-client` (part of the `libcec` package) to listen to traffic on the CEC bus and discover the correct numbers. @@ -18,13 +19,9 @@ The computer running Home Assistant must support CEC, and of course be connected ### libcec -[libcec](https://github.com/Pulse-Eight/libcec) must be installed for this integration to work. Follow the installation instructions for your environment, provided at the link. `libcec` installs Python 3 bindings by default as a system Python module. If you are running Home Assistant in a [Python virtual environment](/docs/installation/virtualenv/), make sure it can access the system module, by either symlinking it or using the `--system-site-packages` flag. - -
    +This section only applies to users of Home Assistant Core in a Python virtual environment. -If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. - -
    +[libcec](https://github.com/Pulse-Eight/libcec) must be installed for this integration to work. Follow the installation instructions for your environment, provided at the link. `libcec` installs Python 3 bindings by default as a system Python module. If you are running Home Assistant in a [Python virtual environment](/docs/installation/virtualenv/), make sure it can access the system module, by either symlinking it or using the `--system-site-packages` flag. #### Symlinking into virtual environment @@ -122,7 +119,7 @@ hdmi_cec: Choose just one schema. Mixing both approaches is not possible. -Another option you can use in config is `platform` which specifying of default platform of HDMI devices. "switch" and "media_player" are supported. Switch is default. +Another option you can use in configuration is `platform` which specifying of default platform of HDMI devices. "switch" and "media_player" are supported. Switch is default. ```yaml hdmi_cec: @@ -137,7 +134,7 @@ hdmi_cec: hdmi_cec.hdmi_5: media_player ``` -And the last option is `host`. PyCEC supports bridging CEC commands over TCP. When you start pyCEC on machine with HDMI port (`python -m pycec`), you can then run homeassistant on another machine and connect to CEC over TCP. Specify TCP address of pyCEC server: +And the last option is `host`. PyCEC supports bridging CEC commands over TCP. When you start pyCEC on machine with HDMI port (`python -m pycec`), you can then run Home Assistant on another machine and connect to CEC over TCP. Specify TCP address of pyCEC server: ```yaml hdmi_cec: @@ -149,7 +146,7 @@ hdmi_cec: ### Select Device -Call the `hdmi_cec.select_device` service with the name of the device from config or entity_id or physical address"to select it, for example: +Call the `hdmi_cec.select_device` service with the name of the device from configuration or entity_id or physical address"to select it, for example: ```json {"device": "Chromecast"} diff --git a/source/_integrations/heatmiser.markdown b/source/_integrations/heatmiser.markdown index 26059c0b5010..fc470f457320 100644 --- a/source/_integrations/heatmiser.markdown +++ b/source/_integrations/heatmiser.markdown @@ -1,41 +1,43 @@ --- -title: "Heatmiser Thermostat" -description: "Instructions on how to integrate Heatmiser thermostats within Home Assistant." +title: Heatmiser +description: Instructions on how to integrate Heatmiser thermostats within Home Assistant. logo: heatmiser.png ha_category: - Climate -ha_release: "0.10" +ha_release: '0.10' ha_iot_class: Local Polling +ha_codeowners: + - '@andylockran' +ha_domain: heatmiser --- The `heatmiser` climate platform let you control [Heatmiser DT/DT-E/PRT/PRT-E](https://www.heatmisershop.co.uk/room-thermostats/) thermostats from Heatmiser. The module itself is currently setup to work over a RS232 -> RS485 converter, therefore it connects over IP. -Further work would be required to get this setup to connect over Wifi, but the HeatmiserV3 python module being used is a full implementation of the V3 protocol. +Further work would be required to get this setup to connect over Wi-Fi, but the HeatmiserV3 Python module being used is a full implementation of the V3 protocol. To set it up, add the following information to your `configuration.yaml` file: ```yaml climate: - platform: heatmiser - ipaddress: YOUR_IP_ADDRESS + host: YOUR_IP_ADDRESS port: YOUR_PORT tstats: - - 1: - id: THERMOSTAT_ID + - id: THERMOSTAT_ID name: THERMOSTAT_NAME ``` A single interface can handle up to 32 connected devices. {% configuration %} -ipaddress: +host: description: The IP address of your interface. required: true type: string port: description: The port that the interface is listening on. required: true - type: integer + type: string tstats: description: A list of thermostats activated on the gateway. required: true diff --git a/source/_integrations/heos.markdown b/source/_integrations/heos.markdown index 77a90a30a311..3c9b67b8227c 100644 --- a/source/_integrations/heos.markdown +++ b/source/_integrations/heos.markdown @@ -1,11 +1,15 @@ --- -title: "Denon HEOS" -description: "Instructions on how to integrate Denon HEOS into Home Assistant." +title: Denon HEOS +description: Instructions on how to integrate Denon HEOS into Home Assistant. logo: heos.png ha_category: - Media Player ha_release: 0.92 ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - '@andrewsayre' +ha_domain: heos --- The HEOS integration adds support for [HEOS](http://heosbydenon.denon.com) capable products, such as speakers, amps, and receivers (Denon and Marantz) into Home Assistant. Features currently include: @@ -77,7 +81,7 @@ You can play a HEOS favorite by number or name with the `media_player.play_media | ---------------------- | ---------------------------------------------------------| | `entity_id` | `entity_id` of the player | `media_content_type` | Set to the value `favorite` -| `media_content_id` | The nubmer (i.e. `1`) or name (i.e. `Thumbprint Radio`) of the HEOS favorite +| `media_content_id` | The nubmer (i.e., `1`) or name (i.e., `Thumbprint Radio`) of the HEOS favorite #### Play Playlist @@ -113,9 +117,9 @@ You can play a HEOS Quick Select by nubmer or name with the `media_player.play_m | ---------------------- | ---------------------------------------------------------| | `entity_id` | `entity_id` of the player | `media_content_type` | Set to the value `quick_select` -| `media_content_id` | The quick select number (i.e. `1`) or name (i.e. `Quick Select 1`) +| `media_content_id` | The quick select number (i.e., `1`) or name (i.e., `Quick Select 1`) -#### Play Url +#### Play URL You can play a URL through a HEOS media player using the `media_player.play_media` service. The HEOS player must be able to reach the URL. Example service data payload: diff --git a/source/_integrations/here_travel_time.markdown b/source/_integrations/here_travel_time.markdown index cbb65aa66a61..fc28c2f37852 100644 --- a/source/_integrations/here_travel_time.markdown +++ b/source/_integrations/here_travel_time.markdown @@ -1,12 +1,14 @@ --- -title: "HERE Travel Time" -description: "Instructions on how to add HERE travel time to Home Assistant." -logo: HERE_logo.svg +title: HERE Travel Time +description: Instructions on how to add HERE travel time to Home Assistant. ha_category: - Transport - Sensor ha_iot_class: Cloud Polling -ha_release: "0.100" +ha_release: '0.100' +ha_codeowners: + - '@eifinger' +ha_domain: here_travel_time --- The `here_travel_time` sensor provides travel time from the [HERE Routing API](https://developer.here.com/documentation/routing/topics/introduction.html). @@ -19,6 +21,10 @@ HERE offers a Freemium Plan which includes 250,000 free Transactions per month. By default HERE will deactivate your account if you exceed the free Transaction limit for the month. You can add payment details to reenable your account as described [here](https://developer.here.com/faqs) +### Migrate from app_code to api_key + +HERE has changed its authentication mechanism. It is no longer possible to use `app_id` and `app_code`. Existing users have to follow the [migration guide](https://developer.here.com/documentation/authentication/dev_guide/topics/api-key-credentials.html) in order to retrieve the now needed `api_key`. + ## Configuration To enable the sensor, add the following lines to your `configuration.yaml` file: @@ -27,8 +33,7 @@ To enable the sensor, add the following lines to your `configuration.yaml` file: # Example entry for configuration.yaml sensor: - platform: here_travel_time - app_id: "YOUR_APP_ID" - app_code: "YOUR_APP_CODE" + api_key: "YOUR_API_KEY" origin_latitude: "51.222975" origin_longitude: "9.267577" destination_latitude: "51.257430" @@ -36,12 +41,8 @@ sensor: ``` {% configuration %} -app_id: - description: "Your application's API id (get one by following the instructions above)." - required: true - type: string -app_code: - description: "Your application's API code (get one by following the instructions above)." +api_key: + description: "Your application's API key (get one by following the instructions above)." required: true type: string origin_latitude: @@ -88,6 +89,15 @@ traffic_mode: required: false type: boolean default: false +arrival: + description: "Time when travel is expected to end. A 24 hour time string like `08:00:00`. On a sensor update it will be combined with the current date to get travel time for that moment. Cannot be used in combination with `departure`. Can only be used in combination with `mode: publicTransportTimeTable`" + required: false + type: time +departure: + description: "Time when travel is expected to end. A 24 hour time string like `08:00:00`. On a sensor update it will be combined with the current date to get travel time for that moment. Cannot be used in combination with `arrival`. The default is now (the current date and time)" + required: false + type: time + default: "now" unit_system: description: "You can choose between `metric` or `imperial`." required: false @@ -109,15 +119,13 @@ Tracking can be set up to track entities of type `device_tracker`, `zone`, `sens sensor: # Tracking entity to entity - platform: here_travel_time - app_id: "YOUR_APP_ID" - app_code: "YOUR_APP_CODE" + api_key: "YOUR_API_KEY" name: Phone To Home origin_entity_id: device_tracker.mobile_phone destination_entity_id: zone.home # Full config - platform: here_travel_time - app_id: "YOUR_APP_ID" - app_code: "YOUR_APP_CODE" + api_key: "YOUR_API_KEY" name: Work to Home By Bike origin_entity_id: zone.work destination_latitude: 59.2842 @@ -126,9 +134,8 @@ sensor: route_mode: fastest traffic_mode: false unit_system: imperial + departure: "17:00:00" scan_interval: 2678400 # 1 month - - ``` ## Entity Tracking diff --git a/source/_integrations/hikvision.markdown b/source/_integrations/hikvision.markdown index a3bfd008d714..21834e4cdc07 100644 --- a/source/_integrations/hikvision.markdown +++ b/source/_integrations/hikvision.markdown @@ -1,11 +1,13 @@ --- -title: Hikvision Binary Sensor -description: "Instructions on how to set up Hikvision camera binary sensors within Home Assistant." -logo: hikvision.png +title: Hikvision +description: Instructions on how to set up Hikvision camera binary sensors within Home Assistant. ha_category: - Binary Sensor ha_release: 0.35 ha_iot_class: Local Push +ha_codeowners: + - '@mezz64' +ha_domain: hikvision --- The Hikvision Binary Sensor is a platform that parses the event stream of a @@ -55,6 +57,8 @@ and has been confirmed to work with the following models: - DS-2CD2042WD-I - DS-2CD2142FWD-I - DS-2CD2155FWD-IS +- IPC-D140H(-M) +- DS-7616NI-K2 (NVR) ## Configuration @@ -94,7 +98,7 @@ port: type: integer default: 80 ssl: - description: "`true` if you want to connect with https. Be sure to set the port also." + description: "`true` if you want to connect with HTTPS. Be sure to set the port also." required: false type: boolean default: false diff --git a/source/_integrations/hikvisioncam.markdown b/source/_integrations/hikvisioncam.markdown index 28101dfa6977..c2f268093326 100644 --- a/source/_integrations/hikvisioncam.markdown +++ b/source/_integrations/hikvisioncam.markdown @@ -1,10 +1,13 @@ --- -title: "Hikvision Camera Switch" -description: "Instructions on how to integrate Hikvision camera switches into Home Assistant." +title: Hikvision +description: Instructions on how to integrate Hikvision camera switches into Home Assistant. logo: hikvision.png ha_category: - Switch ha_release: pre 0.7 +ha_codeowners: + - '@fbradyirl' +ha_domain: hikvisioncam --- This `hikvisioncam` switch platform allows you to control your motion detection setting on your [Hikvision](https://www.hikvision.com/) camera. diff --git a/source/_integrations/hisense_aehw4a1.markdown b/source/_integrations/hisense_aehw4a1.markdown new file mode 100644 index 000000000000..637870c4f48b --- /dev/null +++ b/source/_integrations/hisense_aehw4a1.markdown @@ -0,0 +1,48 @@ +--- +title: Hisense AEH-W4A1 +description: Instructions to setup the Hisense AEH W4A1 WiFi module for ACs. +logo: hisense.png +ha_release: 0.103 +ha_category: + - Climate +ha_iot_class: Local Poll +ha_config_flow: true +ha_codeowners: + - '@bannhead' +ha_domain: hisense_aehw4a1 +--- + +The Hisense AEH-W4A1 is a Wi-Fi module used to give Wi-Fi connectivity to some Hisense ACs and rebranded models (Smart Cool, Beko and others). + +Later AC models use other Wi-Fi modules (like AEH-W4B1 and AEH-W4E1) that are not compatible or otherwise tested with this integration. + +It is highly recommended not to use one of the official smartphone applications and this integration at the same time, to avoid problems related to command collision. + +## Configuration + +To integrate one or more Hisense AEH-W4A1 controlled ACs with Home Assistant, use the Configuration/Integrations or add the following section to your `configuration.yaml` file: + +```yaml +# Automatic discovery +hisense_aehw4a1: +``` + +Alternately, devices that are not discoverable can be statically configured. +The use of static configuration disables automatic discovery. + +{% configuration %} +ip_address: + description: One or more static IP addresses + required: false + type: list +{% endconfiguration %} + +## Full configuration example + +```yaml +# Static configured devices +hisense_aehw4a1: + ip_address: + - 192.168.5.10 + - 192.168.5.20 +``` diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown index dd740ee6fb16..21f1914161bf 100644 --- a/source/_integrations/history.markdown +++ b/source/_integrations/history.markdown @@ -1,11 +1,13 @@ --- -title: "History" -description: "Instructions on how to enable history support for Home Assistant." -logo: home-assistant.png +title: History +description: Instructions on how to enable history support for Home Assistant. ha_category: - History ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: history --- The `history` integration will track everything that is going on within Home @@ -69,7 +71,7 @@ Without any `include` or `exclude` configuration the history displays graphs for Define domains and entities to `exclude` (aka. blacklist). This is convenient when you are basically happy with the information displayed, but just want to remove some entities or domains. Usually these are entities/domains which do not -change (like `weblink`) or rarely change (like `updater` or `automation`). +change or rarely change (like `updater` or `automation`). ```yaml # Example configuration.yaml entry with exclude @@ -77,7 +79,6 @@ history: exclude: domains: - automation - - weblink - updater entities: - sensor.last_boot @@ -161,6 +162,7 @@ in seconds since the UNIX epoch. Convert them manually using ```python from datetime import datetime + datetime.fromtimestamp(1422830502) ``` diff --git a/source/_integrations/history_graph.markdown b/source/_integrations/history_graph.markdown deleted file mode 100644 index d18cbd82b8bb..000000000000 --- a/source/_integrations/history_graph.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "History Graph" -description: "Instructions for setting up History Graph." -ha_category: - - History -logo: home-assistant.png -ha_release: 0.55 -ha_qa_scale: internal ---- - -

    - -

    - -The `history_graph` integration will make the UI display a graph similar to the graphs in `more-info` popups and the [history](/integrations/history/) panel. If you want to add history graphs to the Lovelace UI, please check the [History Graph Card](/lovelace/history-graph/) configuration as it slightly differs from the component. - -To use this integration in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Minimal configuration.yaml entry -history_graph: - gr1: - entities: - - light.ceiling.lights - -``` - -{% configuration %} -entities: - description: List of entities whose history to show as a graph. - required: true - type: string -name: - description: Name to display. - required: false - default: ID - type: string -hours_to_show: - description: Number of hours to show in the graph. - required: false - default: 24 - type: integer -refresh: - description: Number of seconds between graph refreshes. 0 to disable refreshing. - required: false - default: 0 - type: integer -{% endconfiguration %} - -### Full Example - -```yaml -# Full configuration.yaml entry -history_graph: - gr1: - name: Lights Graph - entities: - - light.ceiling.lights - - light.bed_light - hours_to_show: 240 - refresh: 60 - gr2: - name: Temperature - entities: - - sensor.outside_temperature - - sensor.inside_temperature - hours_to_show: 120 - # refresh: 0 -``` - -For sensors to automatically be combined into one graph they need to have exactly the same unit of measurement. This is important if you have, e.g., a unit-less temperature `state_topic` MQTT sensor and you want to combine this with a weather sensor. `unit_of_measurement:` of the MQTT sensor then needs to be set to `°C`. diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index 6038fbd4c104..303efde7fa3b 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -1,12 +1,12 @@ --- -title: "History Statistics Sensor" -description: "Instructions about how to integrate historical statistics into Home Assistant." -logo: home-assistant.png +title: History Stats +description: Instructions about how to integrate historical statistics into Home Assistant. ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.39 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: history_stats --- The `history_stats` sensor platform provides quick statistics about another integration or platforms, using data from the [history](/integrations/history/). @@ -32,7 +32,7 @@ sensor: entity_id: light.my_lamp state: 'on' type: time - start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}' + start: '{{ now().replace(hour=0, minute=0, second=0) }}' end: '{{ now() }}' ``` {% endraw %} @@ -47,7 +47,7 @@ state: required: true type: string name: - description: Name displayed on the frontend. + description: Name displayed on the frontend. Note that it is used by Home Assistant to generate sensor's `object_id` so it is advisable to choose a unique one and change name for frontend using [customization](/docs/configuration/customizing-devices/#friendly_name) or via [Lovelace](/lovelace/entities/#name). required: false default: unnamed statistics type: string @@ -131,7 +131,7 @@ Here are some examples of periods you could work with, and what to write in your {% raw %} ```yaml - start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}' + start: '{{ now().replace(hour=0, minute=0, second=0) }}' end: '{{ now() }}' ``` {% endraw %} @@ -140,7 +140,7 @@ Here are some examples of periods you could work with, and what to write in your {% raw %} ```yaml - end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}' + end: '{{ now().replace(hour=0, minute=0, second=0) }}' duration: hours: 24 ``` @@ -150,7 +150,7 @@ Here are some examples of periods you could work with, and what to write in your {% raw %} ```yaml - start: '{{ now().replace(hour=6).replace(minute=0).replace(second=0) }}' + start: '{{ now().replace(hour=6, minute=0, second=0) }}' duration: hours: 5 ``` @@ -162,7 +162,7 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd {% raw %} ```yaml - start: '{{ as_timestamp( now().replace(hour=0).replace(minute=0).replace(second=0) ) - now().weekday() * 86400 }}' + start: '{{ as_timestamp( now().replace(hour=0, minute=0, second=0) ) - now().weekday() * 86400 }}' end: '{{ now() }}' ``` {% endraw %} @@ -171,7 +171,7 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd {% raw %} ```yaml - end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}' + end: '{{ now().replace(hour=0, minute=0, second=0) }}' duration: days: 30 ``` @@ -188,6 +188,6 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd
    - The `/developer-tools/template` page of your home-assistant UI can help you check if the values for `start`, `end` or `duration` are correct. If you want to check if your period is right, just click on your component, the `from` and `to` attributes will show the start and end of the period, nicely formatted. + The `/developer-tools/template` page of your Home Assistant UI can help you check if the values for `start`, `end` or `duration` are correct. If you want to check if your period is right, just click on your component, the `from` and `to` attributes will show the start and end of the period, nicely formatted.
    diff --git a/source/_integrations/hitron_coda.markdown b/source/_integrations/hitron_coda.markdown index 7ef0a51759bc..82176f5956cd 100644 --- a/source/_integrations/hitron_coda.markdown +++ b/source/_integrations/hitron_coda.markdown @@ -1,10 +1,11 @@ --- -title: "Hitron CODA Routers" -description: "Instructions on how to integrate Hitron CODA Routers into Home Assistant." +title: Rogers Hitron CODA +description: Instructions on how to integrate Hitron CODA Routers into Home Assistant. logo: hitron.png ha_category: - Presence Detection ha_release: 0.58 +ha_domain: hitron_coda --- This integration offers presence detection by examining devices connected to a [Rogers Hitron CODA](https://www.rogers.com/customer/support/article/wi-fi-password-hitron-coda4582-cgn3amr-cgnm3552-cgn3acr-cgn3) @@ -32,7 +33,7 @@ username: required: true type: string password: - description: The password for the specified username. Usually your WiFi password. + description: The password for the specified username. Usually your Wi-Fi password. required: true type: string type: diff --git a/source/_integrations/hive.markdown b/source/_integrations/hive.markdown index 681a06886ef8..3efe2f9862a4 100644 --- a/source/_integrations/hive.markdown +++ b/source/_integrations/hive.markdown @@ -1,7 +1,6 @@ --- -title: "Hive" -description: "Instructions on how to integrate Hive devices with Home Assistant." -logo: hive.png +title: Hive +description: Instructions on how to integrate Hive devices with Home Assistant. ha_category: - Hub - Binary Sensor @@ -12,24 +11,24 @@ ha_category: - Water Heater ha_release: 0.59 ha_iot_class: Cloud Polling +ha_codeowners: + - '@Rendili' + - '@KJonline' +ha_domain: hive --- The `hive` integration is the main integration to set up and integrate all supported Hive devices. Once configured with the minimum required details it will detect and add all Hive devices into Home Assistant, including support for multi-zone heating. This integration uses the unofficial API used in the official Hive website [https://my.hivehome.com](https://my.hivehome.com), and you will need to use the same Username and Password you use on the Hive website to configure this Hive integration in Home Assistant. -There is currently support for the following services and platforms within Home Assistant: +There is currently support for the following platforms within Home Assistant: -- [Services](#services) - - [Service `hive.boost_heating`](#service-hiveboostheating) - - [Service `hive.boost_hot_water`](#service-hiveboosthotwater) -- [Platforms](#platforms) - - [Binary Sensor](#binary-sensor) - - [Climate](#climate) - - [Light](#light) - - [Sensor](#sensor) - - [Switch](#switch) - - [Water Heater](#water-heater) +- [Binary Sensor](#binary-sensor) +- [Climate](#climate) +- [Light](#light) +- [Sensor](#sensor) +- [Switch](#switch) +- [Water Heater](#water-heater) To add your Hive devices into your Home Assistant installation, add the following to your `configuration.yaml` file: @@ -60,7 +59,7 @@ scan_interval: ### Service `hive.boost_heating` -You can use the service `hive.boost_heating` to set your heating to boost for a period of time at a certain target temperature". +You can use the service `hive.boost_heating` to set your heating to boost for a period of time at a certain target temperature". Individual TRVs can also be boosted in the same way, using this service. | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------------------------- | diff --git a/source/_integrations/hlk_sw16.markdown b/source/_integrations/hlk_sw16.markdown index 69f8f71f1806..991132ee9802 100644 --- a/source/_integrations/hlk_sw16.markdown +++ b/source/_integrations/hlk_sw16.markdown @@ -1,12 +1,13 @@ --- -title: "HLK-SW16 Relay Module" -description: "Instructions on how to integrate HLK-SW16 relay into Home Assistant." +title: Hi-Link HLK-SW16 +description: Instructions on how to integrate HLK-SW16 relay into Home Assistant. logo: hlktech.jpg ha_category: - DIY - Switch ha_release: 0.84 ha_iot_class: Local Push +ha_domain: hlk_sw16 --- The [HLK-SW16](http://www.hlktech.net/product_detail.php?ProId=48) by [Hi-Link](http://www.hlktech.net/) is a simple networkable 16 port relay device. diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 62dda4765836..94fe5ba02a0f 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -1,8 +1,120 @@ --- -title: "Core integration" -description: "Description of the homeassistant integration." -logo: home-assistant.png +title: Home Assistant Core Integration +description: Description of the homeassistant integration. ha_release: 0.0 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: homeassistant --- The Home Assistant integration provides generic implementations like the generic `homeassistant.turn_on`. + +## Services + +The `homeassistant` integration provides services for controlling Home Assistant itself, as well as generic controls for any entity. + +### Service `homeassistant.check_config` + +Reads the configuration files and checks them for correctness, but **does not** load them into Home Assistant. Creates a persistent notification and log entry if errors are found. + +### Service `homeassistant.reload_core_config` + +Loads the main configuration file (`configuration.yaml`) and all linked files. Once loaded the new configuration is applied. + +### Service `homeassistant.restart` + +Restarts the Home Assistant instance (also reloading the configuration on start). + +### Service `homeassistant.stop` + +Stops the Home Assistant instance. Home Assistant must be restarted from the Host device to run again. + +### Service `homeassistant.set_location` + +Update the location of the Home Assistant default zone (usually "Home"). + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `latitude` | no | Latitude of your location. | +| `longitude` | no | Longitude of your location. | + +#### Example + +```yaml +action: + service: homeassistant.set_location + data: + latitude: 32.87336 + longitude: 117.22743 +``` + +### Service `homeassistant.toggle` + +Generic service to toggle devices on/off under any domain. Same usage as the light.turn_on, switch.turn_on, etc. services. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | The entity_id of the device to toggle on/off. | + +#### Example + +```yaml +action: + service: homeassistant.toggle + data: + entity_id: light.living_room +``` + +#### Service `homeassistant.turn_on` + +Generic service to turn devices on under any domain. Same usage as the light.turn_on, switch.turn_on, etc. services. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | The entity_id of the device to turn on. | + +#### Example + +```yaml +action: + service: homeassistant.turn_on + data: + entity_id: light.living_room +``` + +### Service `homeassistant.turn_off` + +Generic service to turn devices off under any domain. Same usage as the light.turn_on, switch.turn_on, etc. services. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | The entity_id of the device to turn off. | + +#### Example + +```yaml +action: + service: homeassistant.turn_off + data: + entity_id: light.living_room +``` + +### Service `homeassistant.update_entity` + +Force one or more entities to update its data rather than wait for the next scheduled update. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | no | One or multiple entity_ids to update. It can be a list. | + +#### Example + +```yaml +action: + service: homeassistant.update_entity + data: + entity_id: + - light.living_room + - switch.coffe_pot +``` diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 20acf947f03b..a8c726e4e259 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -1,10 +1,10 @@ --- -title: "HomeKit" -description: "Instructions on how to set up the HomeKit integration in Home Assistant." +title: HomeKit +description: Instructions on how to set up the HomeKit integration in Home Assistant. ha_category: - Voice ha_release: 0.64 -logo: apple-homekit.png +ha_domain: homekit --- The `homekit` integration allows you to forward entities from Home Assistant to Apple HomeKit, so they can be controlled from Apple's Home app and Siri. Please make sure that you have read the [considerations](#considerations) listed below to save you some trouble later. However if you do encounter issues, check out the [troubleshooting](#troubleshooting) section. @@ -191,7 +191,7 @@ The HomeKit guidelines only allow a maximum of 100 unique accessories (`aid`) pe ### Persistence Storage -Unfortunately `HomeKit` doesn't support any persistent storage - only the configuration for accessories that are added to the `Home Assistant Bridge` are kept. To avoid problems, it is recommended to use an automation to always start `HomeKit` with at least the same entities setup. If for some reason some entities are not set up, their config will be deleted. (State unknown or similar will not cause any issues.) +Unfortunately `HomeKit` doesn't support any persistent storage - only the configuration for accessories that are added to the `Home Assistant Bridge` are kept. To avoid problems, it is recommended to use an automation to always start `HomeKit` with at least the same entities setup. If for some reason some entities are not set up, their configuration will be deleted. (State unknown or similar will not cause any issues.) A common situation might be if you decide to disable parts of the configuration for testing. Please make sure to disable `auto start` and `turn off` the `Start HomeKit` automation (if you have one). @@ -313,7 +313,7 @@ Filters are applied as follows: The `safe_mode` option should only be used (and only works) if you encounter issues during the pairing. ([Pairing hangs - zeroconf error](#pairing-hangs---zeroconf-error)). -To use `safe_mode`, add the option to your `homekit` config: +To use `safe_mode`, add the option to your `homekit` configuration: ```yaml homekit: @@ -324,7 +324,7 @@ Restart your Home Assistant instance. If you don't see a `pincode`, follow the [
    -To avoid any errors, after you have successfully paired your Home Assistant Bridge, remove the `safe_mode` option from your config and restart Home Assistant. +To avoid any errors, after you have successfully paired your Home Assistant Bridge, remove the `safe_mode` option from your configuration and restart Home Assistant.
    @@ -332,7 +332,7 @@ To avoid any errors, after you have successfully paired your Home Assistant Brid The `advertise_ip` option can be used to run this integration even inside an ephemeral Docker container with network isolation enabled, e.g., not using the host network. -To use `advertise_ip`, add the option to your `homekit` config: +To use `advertise_ip`, add the option to your `homekit` configuration: ```yaml homekit: @@ -411,7 +411,7 @@ You might have paired the `Home Assistant Bridge` already. If not, delete the `. This is often setup and network related. Make sure to check the other issues below as well, but things that might work include: - Check your router configuration -- Try with WIFI **and** LAN +- Try with Wi-Fi **and** LAN - Change the default [port](#port) Remember that the iOS device needs to be in the same local network as the Home Assistant device for pairing. @@ -428,16 +428,16 @@ Configure the network mode as `networkbridge`. Otherwise the Home Assistant Brid #### Pairing hangs - zeroconf error -Pairing eventually fails, you might see and an error message `NonUniqueNameException`. Add the `safe_mode` option to your config, see [safe_mode](#safe-mode). +Pairing eventually fails, you might see and an error message `NonUniqueNameException`. Add the `safe_mode` option to your configuration, see [safe_mode](#safe-mode). -#### Pairing hangs - only works with debug config +#### Pairing hangs - only works with debug configuration -Pairing works fine when the filter is set to only include `demo.demo`, but fails with normal config. See [specific entity doesn't work](#specific-entity-doesnt-work) +Pairing works fine when the filter is set to only include `demo.demo`, but fails with normal configuration. See [specific entity doesn't work](#specific-entity-doesnt-work) #### Pairing hangs - no error -1. Make sure that you don't try to add more than 100 accessories, see [device limit](#device-limit). In rare cases, one of your entities doesn't work with the HomeKit component. Use the [filter](#configure-filter) to find out which one. Feel free to open a new issue in the `home-assistant` repo, so we can resolve it. -2. Check logs, and search for `Starting accessory Home Assistant Bridge on address`. Make sure Home Assistant Bridge hook ups to a correct interface. If it did not, explicitly set `homekit.ip_address` configuration variable. +1. Make sure that you don't try to add more than 100 accessories, see [device limit](#device-limit). In rare cases, one of your entities doesn't work with the HomeKit component. Use the [filter](#configure-filter) to find out which one. Feel free to open a new issue in the `home-assistant` repository, so we can resolve it. +2. Check logs, and search for `Starting accessory Home Assistant Bridge on address`. Make sure Home Assistant Bridge hook up to a correct interface. If it did not, explicitly set `homekit.ip_address` configuration variable. #### Duplicate AID found when attempting to add accessory @@ -459,7 +459,7 @@ To use the HomeKit integration with to different Home Assistant instances on the #### Specific entity doesn't work -Although we try our best, some entities don't work with the HomeKit integration yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [home-assistant/issues/new](https://github.com/home-assistant/home-assistant/issues/new?labels=component: homekit) +Although we try our best, some entities don't work with the HomeKit integration yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [home-assistant/issues/new](https://github.com/home-assistant/home-assistant/issues/new?labels=component:%20homekit) #### Accessories are all listed as not responding @@ -479,7 +479,7 @@ To fix this, you need to unpair the `Home Assistant Bridge`, delete the `.homeki #### The linked battery sensor isn't recognized -Try removing the entity from HomeKit and then adding it again. If you are adding this config option to an existing entity in HomeKit, any changes you make to this entity's config options won't appear until the accessory is removed from HomeKit and then re-added. See [resetting accessories](#resetting-accessories). +Try removing the entity from HomeKit and then adding it again. If you are adding this configuration option to an existing entity in HomeKit, any changes you make to this entity's configuration options won't appear until the accessory is removed from HomeKit and then re-added. See [resetting accessories](#resetting-accessories). #### My media player is not showing up as a television accessory @@ -491,7 +491,7 @@ The volume and play/pause controls will show up on the Remote app or Control Cen #### Resetting accessories -On Home Assistant `0.97.x` or later, you may use the service `homekit.reset_accessory` with one or more entity_ids to reset accessories whose configuration may have changed. This can be useful when changing a media_player's device class to `tv`, linking a battery, or whenever HomeAssistant add supports for new HomeKit features to existing entities. +On Home Assistant `0.97.x` or later, you may use the service `homekit.reset_accessory` with one or more entity_ids to reset accessories whose configuration may have changed. This can be useful when changing a media_player's device class to `tv`, linking a battery, or whenever Home Assistant adds support for new HomeKit features to existing entities. On earlier versions of Home Assistant, you can reset accessories by removing the entity from HomeKit (via [filter](#configure-filter)) and then re-adding the accessory. diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 05c90c881493..f7ead7e9eaef 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -1,7 +1,6 @@ --- -title: "HomeKit controller support" -description: "Instructions for how to integrate your HomeKit devices within Home Assistant." -logo: apple-homekit.png +title: HomeKit Controller +description: Instructions for how to integrate your HomeKit devices within Home Assistant. ha_category: - Hub - Alarm @@ -12,8 +11,14 @@ ha_category: - Switch - Binary Sensor - Sensor + - Fan + - Health ha_release: 0.68 -ha_iot_class: Local Polling +ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - '@Jc2k' +ha_domain: homekit_controller --- The [HomeKit](https://developer.apple.com/homekit/) controller integration allows you to connect accessories with the "Works with HomeKit" logo to Home Assistant. This integration should not be confused with the [HomeKit](/integrations/homekit/) integration, which allows you to control Home Assistant devices via HomeKit. @@ -31,15 +36,19 @@ There is currently support for the following device types within Home Assistant: - Cover (HomeKit garage door openers, windows, or window coverings) - Light (HomeKit lights) - Lock (HomeKit lock) -- Switch (HomeKit switches) -- Binary Sensor (HomeKit motion sensors and contact sensors) +- Switch (HomeKit switches, outlets and valves) +- Binary Sensor (HomeKit motion, contact, occupancy and smoke sensors) - Sensor (HomeKit humidity, temperature, co2 and light level sensors) +- Fan +- Air Quality HomeKit IP accessories for these device types may work with some caveats: -- If the device is WiFi based and has no physical controls or screen then you may need an Apple HomeKit device like an iPhone or iPad to get the accessory onto your WiFi network. For example, for a Koogeek LS1 you must add the accessory to HomeKit on your iOS device, then remove it from the iOS device. This leaves the LS1 in an unpaired state but still on your WiFi. Home Assistant can then find it and pair with it. +- If the device is Wi-Fi based and has no physical controls or screen then you may need an Apple HomeKit device like an iPhone or iPad to get the accessory onto your Wi-Fi network. For example, for a Koogeek LS1 you must add the accessory to HomeKit on your iOS device, then remove it from the iOS device. This leaves the LS1 in an unpaired state but still on your Wi-Fi. Home Assistant can then find it and pair with it. - You need to know the HomeKit PIN. There is no way to recover this if you do not have it. In this case, you will need to contact the manufacturer to see what options you have. +HomeKit controller will poll your devices, but it will also automatically enable push updates for accessories that support it. + Home Assistant does not currently support HomeKit BLE.
    @@ -60,19 +69,15 @@ If your device doesn't have a display and received HomeKit support after it was If you have lost your PIN code, then you may not be able to pair your accessory. You should contact the manufacturer to see if there is anything you can do. -### My accessory isn't updating straight away - -This is normal - HomeKit controller is currently a local polling based integration. It polls your accessory for its latest state once per minute. - ### Home Assistant cannot discover my device -For IP accessories, Home Assistant can only find devices that are already on the same network as your device. If an accessory is WiFi based and has no user interface for joining it to your Wifi network, you will need an Apple HomeKit controller device (an iPhone or iPad). You should pair it with the controller and then remove the pairing in the UI (but do not reset the accessory itself). This will leave the accessory on your WiFi network but in an unpaired state, and then Home Assistant can find it. +For IP accessories, Home Assistant can only find devices that are already on the same network as your device. If an accessory is Wi-Fi based and has no user interface for joining it to your Wi-Fi network, you will need an Apple HomeKit controller device (an iPhone or iPad). You should pair it with the controller and then remove the pairing in the UI (but do not reset the accessory itself). This will leave the accessory on your Wi-Fi network but in an unpaired state, and then Home Assistant can find it. Home Assistant can only find accessories that aren't already paired. Even if you reset your Home Assistant configuration, the accessory will still think it is paired and you won't be able to use it with Home Assistant. You should reset the accessory according to the manufacturer's instructions. Some devices have a "Reset HomeKit" option, and some may require a full reset. ### HomeKit controller is finding devices on my network even though I don't have any Apple devices -This is completely normal. Unlike many other commercial IoT offerings, the HomeKit protocol is a local and offline protocol that does not rely on the Apple ecosystem to function. You do not need an Apple online account to use a "Works with HomeKit" device. Some WiFi devices may need an iOS device briefly to get them onto your WiFi, but other than that you do not need any Apple hardware on your network. +This is completely normal. Unlike many other commercial IoT offerings, the HomeKit protocol is a local and offline protocol that does not rely on the Apple ecosystem to function. You do not need an Apple online account to use a "Works with HomeKit" device. Some Wi-Fi devices may need an iOS device briefly to get them onto your WiFi, but other than that you do not need any Apple hardware on your network. Many IoT devices are getting a post-launch HomeKit upgrade. This might mean your device starts showing in Home Assistant as a `homekit_controller` device even though when you bought it without HomeKit support. This might be a better choice for you than a native integration. For example, many climate devices have an online-only API and a HomeKit API. The HomeKit one might not expose all of the settings and controls you are used to, but it also won't break if your Internet connection goes down or the cloud service goes away. @@ -87,7 +92,7 @@ HomeKit controller update skipped as previous poll still in flight In these cases it's unlikely that HomeKit controller itself is directly responsible. This is a safety feature to avoid overloading your Home Assistant instance. It means that Home Assistant tried to poll your accessory but the previous poll was still happening. This means it is taking over 1 minute to poll your accessory. This could be caused by a number of things: - You have too many blocking synchronous integrations for your Home Assistant instance. All synchronous integrations share a thread pool, and if there are lots of tasks to run on it they will queued, which will cause delays. In the worst cases this queue can build up faster than it can be emptied. Faster hardware may help, but you may need to disable some integrations. -- Your network connection to an accessory is poor and HomeKit Controller is unable to reach the accessory reliably. This will likely require a change to your network setup to improve WiFi coverage or replace damaged cabling. +- Your network connection to an accessory is poor and HomeKit Controller is unable to reach the accessory reliably. This will likely require a change to your network setup to improve Wi-Fi coverage or replace damaged cabling. - There is a problem with the accessory itself which is causing intermittent network issues. In these cases, HomeKit Controller will skip polling to avoid a buildup of back pressure in your instance. diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown index d3b77eabf459..ee22deabef7b 100644 --- a/source/_integrations/homematic.markdown +++ b/source/_integrations/homematic.markdown @@ -1,6 +1,6 @@ --- -title: "Homematic" -description: "Instructions for integrating Homematic into Home Assistant." +title: Homematic +description: Instructions for integrating Homematic into Home Assistant. logo: homematic.png ha_category: - Hub @@ -14,6 +14,10 @@ ha_category: - Switch ha_iot_class: Local Push ha_release: 0.23 +ha_codeowners: + - '@pvizeli' + - '@danielperna84' +ha_domain: homematic --- The [Homematic](https://www.homematic.com/) integration provides bi-directional communication with your CCU/Homegear. It uses a XML-RPC connection to set values on devices and subscribes to receive events the devices and the CCU emit. @@ -32,10 +36,16 @@ There is currently support for the following device types within Home Assistant: Device support is available for most of the wired and wireless devices, as well as a lot of IP devices. If you have a setup with mixed protocols, you have to configure additional [interfaces](/integrations/homematic#interfaces) with the appropriate ports. The default is using port 2001, which are wireless devices. Wired devices usually are available through port 2000 and IP devices through port 2010. The virtual thermostatgroups the CCU provides use port 9292 **and** require you to set the `path` setting to `/groups`. When using SSL on a CCU3, by default the same ports as usual with a prepended 4 are available. So 2001 becomes 42001, 2010 becomes 42010 etc.. +
    + +Since CCU Version 3, the internal firewalls are enabled by default. You have to grant full access for the `XML-RPC API` or specify the IP-address of the Home Assistant server and whitelist it, inside the CCU's security settings. + +
    + If you want to see if a specific device you have is supported, head over to the [pyhomematic](https://github.com/danielperna84/pyhomematic/tree/master/pyhomematic/devicetypes) repository and browse through the source code. A dictionary with the device identifiers (e.g., HM-Sec-SC-2) can be found within the relevant modules near the bottom. If your device is not supported, feel free to contribute. We automatically detect all devices we currently support and try to generate useful names. If you enable name-resolving, we try to fetch names from Metadata (Homegear), via JSON-RPC or the XML-API you may have installed on your CCU. Since this may fail this is disabled by default. -You can manually rename the created entities by using Home Assistant's [Customizing](/docs/configuration/customizing-devices/) feature. With it you are also able to hide entities you don't want to see in the UI. The HomeMatic integration is also supported by the [Entity Registry](https://developers.home-assistant.io/docs/en/entity_registry_index.html), which allows you to change the friendly name and the entity ID directly in the Home Assistant UI. +You can manually rename the created entities by using Home Assistant's [Customizing](/docs/configuration/customizing-devices/) feature. With it you are also able to hide entities you don't want to see in the UI. The Homematic integration is also supported by the [Entity Registry](https://developers.home-assistant.io/docs/en/entity_registry_index.html), which allows you to change the friendly name and the entity ID directly in the Home Assistant UI. To set up the component, add the following information to your `configuration.yaml` file: @@ -72,7 +82,7 @@ Configuration variables (interface): {% configuration %} host: - description: IP address or Hostname of CCU/Homegear device or Hass.io add-on. + description: IP address or hostname of CCU/Homegear device or Home Assistant add-on. required: true type: string port: @@ -127,6 +137,10 @@ host: description: IP address of CCU/Homegear device. required: true type: string +port: + description: "Port of CCU/Homegear XML-RPC Server. Wireless: 2001, wired: 2000, IP: 2010" + required: false + type: integer username: description: When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. required: false @@ -166,6 +180,7 @@ homematic: hosts: ccu2: host: 127.0.0.1 + port: 2001 username: Admin password: secret @@ -209,7 +224,7 @@ The values of variables are polled from the CCU/Homegear in an interval of 30 se ### Events -When HomeMatic devices change their state or some other internal value, the CCU/Homegear sends event messages to Home Assistant. These events are automatically parsed and the entities in Home Assistant are updated. However, you can also manually use these events to trigger automations. Two event-types are available: +When Homematic devices change their state or some other internal value, the CCU/Homegear sends event messages to Home Assistant. These events are automatically parsed and the entities in Home Assistant are updated. However, you can also manually use these events to trigger automations. Two event-types are available: - **homematic.keypress**: For devices with buttons, see information below - **homematic.impulse**: For impulse sensors @@ -249,9 +264,9 @@ You can test whether your button works within Home Assistant if you look at the It may happen that "your_nice_name" is not resolved correctly; the according message (#2 in the above example) will be missing. This might be due to secure communication between your HM interface and the HM device. You can change the communication from "secure" to "standard" within your HM-interface to solve that issue (in "Einstellungen" - "Geräte" find your device and change "Übertragungsmodus" from secure to standard) - not recommended for devices that should have secure communication. -#### `homematic.keypress` events for HomeMatic IP devices +#### `homematic.keypress` events for Homematic IP devices -To get the `homematic.keypress` event for some HomeMatic IP devices like WRC2 / WRC6 (wall switch) or SPDR (passage sensor) or the KRC4 (key ring remote control) you have to temporary create an empty program for each channel in the CCU: +To get the `homematic.keypress` event for some Homematic IP devices like WRC2 / WRC6 (wall switch) or SPDR (passage sensor) or the KRC4 (key ring remote control) you have to temporary create an empty program for each channel in the CCU: 1. In the menu of your CCU's admin panel go to `Programs and connections` > `Programs & CCU connection` 2. Go to `New` in the footer menu @@ -311,7 +326,7 @@ action: #### Advanced examples -If you are familiar with the internals of HomeMatic devices, you can manually set values on the devices. This can serve as a workaround if support for a device is currently not available, or only limited functionality has been implemented. +If you are familiar with the internals of Homematic devices, you can manually set values on the devices. This can serve as a workaround if support for a device is currently not available, or only limited functionality has been implemented. Using this service provides you direct access to the setValue-method of the primary connection. If you have multiple hosts, you may select the one hosting a specific device by providing the proxy-parameter with a value equivalent to the name you have chosen. In the example configuration from above `rf`, `wired` and `ip` would be valid values. Manually turn on a switch actor: @@ -388,7 +403,7 @@ action: #### Detecting lost connections -When the connection to your HomeMatic CCU or Homegear is lost, Home Assistant will stop getting updates from devices. This may happen after rebooting the CCU for example. Due to the nature of the communication protocol this cannot be handled automatically, so you must call *homematic.reconnect* in this case. That's why it is usually a good idea to check if your HomeMatic integrations are still updated properly, in order to detect connection losses. This can be done in several ways through an automation: +When the connection to your Homematic CCU or Homegear is lost, Home Assistant will stop getting updates from devices. This may happen after rebooting the CCU for example. Due to the nature of the communication protocol this cannot be handled automatically, so you must call *homematic.reconnect* in this case. That's why it is usually a good idea to check if your Homematic integrations are still updated properly, in order to detect connection losses. This can be done in several ways through an automation: - If you have a sensor which you know will be updated frequently (e.g., an outdoor temperature sensor, voltage sensor or light sensor) you could set up a helper binary sensor and an automation like this: @@ -431,7 +446,7 @@ When the connection to your HomeMatic CCU or Homegear is lost, Home Assistant wi obj.State(now); ``` - The HomeMatic CCU will execute all active programs which meet their conditions (none in this case) on every reboot. + The Homematic CCU will execute all active programs which meet their conditions (none in this case) on every reboot. 3. Set up a template sensor in Home Assistant, which contains the value of the system variable: @@ -462,7 +477,7 @@ The `homematic` notification platform enables invoking Homematic devices. To use this notification platform in your installation, add the following to your `configuration.yaml` file: -## Configuration +### Configuration ```yaml # Example configuration.yaml entry @@ -489,7 +504,7 @@ param: required: true type: string interface: - description: Set the name of the interface from the config. + description: Set the name of the interface from the configuration. required: false type: string value: diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index 385d6a49b691..d6431a9c4adc 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -1,6 +1,6 @@ --- -title: "HomematicIP Cloud" -description: "Instructions for integrating HomematicIP into Home Assistant." +title: HomematicIP Cloud +description: Instructions for integrating HomematicIP into Home Assistant. logo: homematicip_cloud.png ha_category: - Hub @@ -13,6 +13,11 @@ ha_category: - Switch ha_iot_class: Cloud Push ha_release: 0.66 +ha_config_flow: true +ha_quality_scale: platinum +ha_codeowners: + - '@SukramJ' +ha_domain: homematicip_cloud --- The [HomematicIP](https://www.homematic-ip.com/) integration platform is used as an interface to the cloud server. Since there is no official documentation about this API, everything was done via reverse engineering. The [homematicip-rest-api](https://github.com/coreGreenberet/homematicip-rest-api) is used for communicating. Use at your own risk. @@ -74,10 +79,10 @@ authtoken: ## Adding and removing devices and group via native HomematicIP APP -Devices and groups are instantly removed from Homeassistant when removed in the native HomematicIP APP. -Groups are instantly created in Homeassistant when created in the native HomematicIP APP. -Devices are created with a delay of 30 seconds in Homeassistant when created in the native HomematicIP APP. -Within this delay the device registration should be completed in the App, otherwise the device name will be a default one based on the device type. This can easily be fixed in the Homeassistant entity registry afterwards. +Devices and groups are instantly removed from Home Assistant when removed in the native HomematicIP APP. +Groups are instantly created in Home Assistant when created in the native HomematicIP APP. +Devices are created with a delay of 30 seconds in Home Assistant when created in the native HomematicIP APP. +Within this delay the device registration should be completed in the App, otherwise the device name will be a default one based on the device type. This can easily be fixed in the Home Assistant entity registry afterwards. ## Implemented and tested devices @@ -86,7 +91,7 @@ Within this delay the device registration should be completed in the App, otherw * homematicip_cloud.binary_sensor * Acceleration Sensor (*HMIP-SAM*) - * Window and door contact (*HmIP-SWDO, -I*) + * Window and door contact (*HmIP-SWDO, HmIP-SWDO-PL, HmIP-SWDO-I, HmIP-SWDM, HmIP-SWDM-B2*) * Contact Interface flush-mount – 1 channel (*HmIP-FCI1*) * Contact Interface (*HmIP-SCI*) * Window Rotary Handle Sensor (*HmIP-SRH*) @@ -102,21 +107,31 @@ Within this delay the device registration should be completed in the App, otherw * Key Ring Remote Control - alarm (*HmIP-KRCA*) (battery only) * Alarm Siren (*HmIP-ASIR, -B1*) (battery only) * Remote Control for brand switches – 2-button (*HmIP-BRC2*) (battery only) + * Pluggable Power Supply Monitoring (*HmIP-PMFS*) * homematicip_cloud.climate * Climate group (*HmIP-HeatingGroup*) * This includes temperature/humidity measures for climate devices of a room delivered by: - * Wall-mounted thermostat (*HmIP-WTH, WTH-2*) - * Brand Wall-mounted thermostat (*HmIP-BWTH, BWTH-24*) - * Radiator thermostat (*HmIP-eTRV,-2,-C*) - should also work with (*HmIP-eTRV-2-UK, -B, -B1*) + * Wall-mounted thermostat (*HmIP-WTH, HmIP-WTH-2, HmIP-WTH-B*) + * Brand Wall-mounted thermostat (*HmIP-BWTH, HmIP-BWTH-24*) + * Radiator thermostat (*HmIP-eTRV, HmIP-eTRV-2, HmIP-eTRV-C*) - should also work with (*HmIP-eTRV-2-UK, HmIP-eTRV-2-B, HmIP-eTRV-2-B1*) * Temperature and humidity sensor (*HmIP-STH*) * Temperature and humidity Sensor with display (*HmIP-STHD*) + * Alpha IP Wall Thermostat Display (*ALPHA-IP-RBG*) + * Alpha IP Wall Thermostat Display analog (*ALPHA-IP-RBGa*) + * There is no need to directly support the following devices by Home Assistant, because their integration is done by the required wall thermostats: + * Floor Heating Actuator – 6x channels, 230V (*HMIP-FAL230-C6*) + * Floor Heating Actuator – 10x channels, 230V (*HMIP-FAL230-C10*) + * Floor Heating Actuator – 6x channels, 24V (*HMIP-FAL24-C6*) + * Floor Heating Actuator – 10x channels, 24V (*HMIP-FAL24-C10*) + * Floor Heating Actuator – 12x channels, motorized (*HMIP-FALMOT-C12*) * homematicip_cloud.cover * Shutter actuator for brand-mount (*HmIP-BROLL*) * Shutter actuator for flush-mount (*HmIP-FROLL*) * Blind Actuator for brand switches (*HmIP-BBL*) * Blind Actuator for flush-mount (*HmIP-FBL*) + * Garage door module for Tormatic (*HmIP-MOD_TM*) * homematicip_cloud.light * Switch actuator and meter for brand switches (*HmIP-BSM*) @@ -126,9 +141,9 @@ Within this delay the device registration should be completed in the App, otherw * Switch Actuator for brand switches – with signal lamp (*HmIP-BSL*) * homematicip_cloud.sensor - * Cloud Access point duty-cycle (*HmIP-HAP, -B1*) - * Wall Mounted Thermostat Pro with Display (*HmIP-WTH, WTH2*) - * Radiator thermostat (*HmIP-eTRV,-2, -C*) - should also work with (*HmIP-eTRV-2-UK, -B, -B1*) + * Cloud Access point duty-cycle (*HmIP-HAP, HmIP-HAP-B1*) + * Wall Mounted Thermostat (*HmIP-WTH, HmIP-WTH2, HmIP-WTH-B*) + * Radiator thermostat (*HmIP-eTRV, HmIP-eTRV-2, HmIP-eTRV-C*) - should also work with (*HmIP-eTRV-2-UK, HmIP-eTRV-2-B, HmIP-eTRV-2-B1*) * Temperature and Humidity Sensor without display - indoor (*HmIP-STH*) * Temperature and Humidity Sensor with display - indoor (*HmIP-STHD*) * Temperature and Humidity sensor - outdoor (*HmIP-STHO, -A*) @@ -137,31 +152,50 @@ Within this delay the device registration should be completed in the App, otherw * Presence Sensor – indoor (*HmIP-SPI*) * Light Sensor - outdoor (*HmIP-SLO*) * Passage Sensor with Direction Recognition (*HmIP-SPDR*) (delta counter) + * Alpha IP Wall Thermostat Display (*ALPHA-IP-RBG*) + * Alpha IP Wall Thermostat Display analog (*ALPHA-IP-RBGa*) * homematicip_cloud.switch * Pluggable Switch (*HmIP-PS*) - * Pluggable Switch and Meter (*HmIP-PSM*) - should also work with (*HmIP-PSM-CH, -IT, -UK, -PE*) - * Switch Actuator and Meter – flush-mount (*HmIP-FSM, -FSM16*) + * Pluggable Switch and Meter (*HmIP-PSM*) - should also work with (*HmIP-PSM-CH, HmIP-PSM-IT, HmIP-PSM-UK, HmIP-PSM-PE*) + * Switch Actuator and Meter – flush-mount (*HmIP-FSM, HmIP-FSM16*) * Open Collector Module Receiver - 8x (*HmIP-MOD-OC8*) * Multi IO Box - 2x (*HmIP-MIOB*) * Switch Circuit Board - 1x channels (*HmIP-PCBS*) * Switch Circuit Board - 2x channels (*HmIP-PCBS2*) * Printed Circuit Board Switch Battery (*HmIP-PCBS-BAT*) + * Switch Actuator for heating systems – 2 channels (*HmIP-WHS2*) * homematicip_cloud.weather * Weather Sensor – basic (*HmIP-SWO-B*) * Weather Sensor – plus (*HmIP-SWO-PL*) * Weather Sensor – pro (*HmIP-SWO-PR*) +## What to do, if a device is missing in Home Assistant + +In order for a device to be integrated into Home Assistant, it must first be implemented in the upstream library. A dump of your configuration is required for this, which is then attached to a new issue in the [upstream lib's](https://github.com/coreGreenberet/homematicip-rest-api) GitHub repository. + +1. Create a dump of your access point configuration in Home Assistant: + Developer Tools -> Services -> Select `homematicip_cloud.dump_hap_config` -> Execute. + The default dump is anonymized and is written to your configuration directory (`hmip_config_XXXX.json`). +2. Create a [new issue](https://github.com/coreGreenberet/homematicip-rest-api/issues/new) at this GitHub repository and attach the created dump file. + +Please be patient, wait for the implementation and a new release of the upstream library. +Afterward, this device can be implemented into Home Assistant. + ## Services +Executable by all users: - `homematicip_cloud.activate_eco_mode_with_duration`: Activate eco mode with duration. - `homematicip_cloud.activate_eco_mode_with_period`: Activate eco mode with period. - `homematicip_cloud.activate_vacation`: Activates the vacation mode until the given time. - `homematicip_cloud.deactivate_eco_mode`: Deactivates the eco mode immediately. - `homematicip_cloud.deactivate_vacation`: Deactivates the vacation mode immediately. - `homematicip_cloud.set_active_climate_profile`: Set the active climate profile index. + +Executable by administrators or within the context of an automation: - `homematicip_cloud.dump_hap_config`: Dump the configuration of the Homematic IP Access Point(s). +- `homematicip_cloud.reset_energy_counter`: Reset energy counter of measuring actuators. ### Service Examples @@ -246,6 +280,16 @@ action: anonymize: True ``` +Reset energy counter of measuring actuators. + +```yaml +... +action: + service: homematicip_cloud.reset_energy_counter + data: + entity_id: switch.livingroom +``` + ## Additional info @@ -253,6 +297,8 @@ Push button devices are only available with a battery sensor. This is due to a l It's not possible to detect a key press event on these devices at the moment. * Remote Control - 8 buttons (*HmIP-RC8*) + * Wall-mount Remote Control for brand switches - 2-button (*HmIP-BRC2*) + * Motion Detector for 55mm frames - indoor (HmIP-SMI55)(Push button) * Wall-mount Remote Control - 2-button (*HmIP-WRC2*) * Wall-mount Remote Control - 6-button (*HmIP-WRC6*) * Key Ring Remote Control - 4 buttons (*HmIP-KRC4*) diff --git a/source/_integrations/homeworks.markdown b/source/_integrations/homeworks.markdown index a7e94a4ccf59..e1ef17d076cd 100644 --- a/source/_integrations/homeworks.markdown +++ b/source/_integrations/homeworks.markdown @@ -1,12 +1,13 @@ --- -title: "Homeworks Hub" -description: "How to use Lutron Homeworks Series 4 & 8 with Home Assistant." +title: Lutron Homeworks +description: How to use Lutron Homeworks Series 4 & 8 with Home Assistant. logo: lutron.png ha_category: - Hub - Light ha_release: 0.85 ha_iot_class: Local Push +ha_domain: homeworks --- [Lutron](http://www.lutron.com/) is an American lighting control company. The Lutron Homeworks Series 4 & 8 systems are relatively old (~2003), and use RS-232 connections to communicate with home automation systems. The `homeworks` integration in Home Assistant is responsible for communicating with the main controller for these systems. Communication is through an ethernet to serial converter (NPort, for example). diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown index 27ad9976ddbe..34a24c8b04f8 100644 --- a/source/_integrations/honeywell.markdown +++ b/source/_integrations/honeywell.markdown @@ -1,42 +1,25 @@ --- -title: "Honeywell Thermostat" -description: "Instructions on how to integrate Honeywell thermostats within Home Assistant." +title: Honeywell Total Connect Comfort (US) +description: Instructions on how to integrate Honeywell thermostats within Home Assistant. logo: honeywell.png ha_category: - Climate ha_release: pre 0.7 ha_iot_class: Cloud Polling +ha_codeowners: + - '@zxdavb' +ha_domain: honeywell --- -The `honeywell` climate platform integrates Home Assistant with _US-based_ [Honeywell Total Connect Comfort (TCC)](https://mytotalconnectcomfort.com/portal/]) climate systems. +The `honeywell` climate platform integrates Home Assistant with _US-based_ [Honeywell Total Connect Comfort (TCC)](https://mytotalconnectcomfort.com/portal/) climate systems. -It does not support the home security functionality of TCC. +It uses the [somecomfort](https://github.com/kk7ds/somecomfort) client library. It does not support the home security functionality of TCC. -It uses the [somecomfort](https://github.com/kk7ds/somecomfort) client library. - -
    - -There is some potential confusion over this integration because it was previously implemented as a combination of two _distinct_ climate systems, one being US-based, the other EU-based. - -These two regions are _not_ interchangeable, and the `eu` region is now deprecated. Ongoing support for such systems is available via the [evohome](/integrations/evohome/) integration. - -
    - -### US-based Systems - -These systems are based in North America, and temperatures are usually in Fahrenheit. They would likely be HVAC systems. They always use the [somecomfort](https://github.com/kk7ds/somecomfort) client library. In this integration, this is called the `us` region. - -If your system is US-based, then you can access your system via [https://mytotalconnectcomfort.com/portal/](https://mytotalconnectcomfort.com/portal/) (note the `/portal/`). - -### EU-based Systems - -These systems are based in Europe (including the UK & Ireland), and temperatures are usually in Celsius. They would likely be heating-only systems. They always use the [evohome-client](https://github.com/watchforstock/evohome-client) client library. In this integration, this is called the `eu` region. - -If your system is EU-based, then you can access it via [https://international.mytotalconnectcomfort.com/](https://international.mytotalconnectcomfort.com/) (note the `international`). +If your system is compatible with this integration, then you will be able access your it via [https://mytotalconnectcomfort.com/portal/](https://mytotalconnectcomfort.com/portal/) (note the `/portal/`). ## Configuration -To set up this integration, add the following to the `climate:` section of your **configuration.yaml** file: +To set up this integration, add the following to the `climate:` section of your `configuration.yaml` file: ```yaml climate: diff --git a/source/_integrations/hook.markdown b/source/_integrations/hook.markdown deleted file mode 100644 index 94e046e9d91d..000000000000 --- a/source/_integrations/hook.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Hook Switch" -description: "Instructions on how to integrate the Hook Smart Home Hub into Home Assistant." -logo: hook.png -ha_category: - - Switch -ha_iot_class: Assumed State -ha_release: 0.34 ---- - -The `hook` integration allows you to control the Hook Smart Home Hub from within Home Assistant. - -Hook allows you to control cheap mains electrical outlets, like these ones at [Amazon](https://amzn.to/2WVZdGG). - -In short, Hook is an RF to Wi-Fi bridge, controlling devices that receive commands at 315MHz and 433MHz. Unfortunately, this does not allow Hook to determine if the command was successful, so the state is assumed. - -Hook provides a simple [REST API](https://app.swaggerhub.com/api/rahilj/GetHook_RestAPI/v1). This Home Assistant integration reads in devices that have been set up in the official app. - -## Configuration - -Configure with either your username/password or your API token for the official app. - -To enable this platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: hook - username: YOUR_E_MAIL_ADDRESS - password: YOUR_HOOK -``` - -Or - -```yaml -# Example configuration.yaml entry -switch: - - platform: hook - token: YOUR_API_TOKEN -``` - -{% configuration %} -username: - description: The email address associated with your Hook Smart Home Hub. - required: true - type: string -password: - description: The password for your Hook Smart Home Hub. - required: true - type: string -token: - description: The API token for your Hook Smart Home Hub. - required: true - type: string -{% endconfiguration %} - -Extra debug logging is available, if you need it. - -```yaml -# Example configuration.yaml entry -logger: - default: error - logs: - homeassistant.components.switch.hook: debug -``` diff --git a/source/_integrations/horizon.markdown b/source/_integrations/horizon.markdown index 432fb10454b2..c6fde98febb6 100644 --- a/source/_integrations/horizon.markdown +++ b/source/_integrations/horizon.markdown @@ -1,11 +1,12 @@ --- -title: "Horizon HD Recorder" -description: "Instructions how to integrate the Unitymedia Horizon HD Recorder into Home Assistant." +title: Unitymedia Horizon HD Recorder +description: Instructions how to integrate the Unitymedia Horizon HD Recorder into Home Assistant. logo: unitymedia.png ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.72 +ha_domain: horizon --- The `horizon` integration allows you to control a [Unitymedia](https://www.unitymedia.de) Horizon HD Recorder from Home Assistant. diff --git a/source/_integrations/hp_ilo.markdown b/source/_integrations/hp_ilo.markdown index 4f2cee29ede7..9b9338101748 100644 --- a/source/_integrations/hp_ilo.markdown +++ b/source/_integrations/hp_ilo.markdown @@ -1,11 +1,12 @@ --- -title: "HP ILO" -description: "How to integrate HP ILO (Integrated Lights-Out) sensors within Home Assistant." +title: HP Integrated Lights-Out (ILO) +description: How to integrate HP ILO (Integrated Lights-Out) sensors within Home Assistant. logo: hewlett_packard_enterprise.png ha_category: - System Monitor ha_release: 0.27 ha_iot_class: Local Polling +ha_domain: hp_ilo --- The `hp_ilo` platform allows you to do an API call to the HP ILO (Integrated Lights-Out) sensor of your server, and use this data in Home Assistant sensors. diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index 21e1396fcaf1..7c38d3ef9ef5 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -1,10 +1,12 @@ --- -title: "Push Notifications" -description: "Instructions on how to use the HTML5 push notifications platform from Home Assistant." -logo: html5.png +title: HTML5 Push Notifications +description: Instructions on how to use the HTML5 push notifications platform from Home Assistant. ha_category: - Notifications ha_release: 0.27 +ha_codeowners: + - '@robbiet480' +ha_domain: html5 --- The `html5` notification platform enables you to receive push notifications to Chrome or Firefox, no matter where you are in the world. `html5` also supports Chrome and Firefox on Android, which enables native-app-like integrations without actually needing a native app. @@ -54,15 +56,15 @@ name: type: string default: notify vapid_pub_key: - description: The VAPID public key generated by Google (this is the key that is immediately visible under "webpush certificates"). + description: The VAPID public key generated by Google (this is the key that is immediately visible under "webpush certificates"), [see configuring the platform](#configuring-the-platform). required: true type: string vapid_prv_key: - description: The VAPID private key generated by Google. + description: The VAPID private key generated by Google, [see configuring the platform](#configuring-the-platform). required: true type: string vapid_email: - description: The e-mail account associated with your Firebase project. + description: The e-mail account associated with your Firebase project, [see configuring the platform](#configuring-the-platform). required: true type: string gcm_api_key: @@ -80,21 +82,21 @@ gcm_sender_id: The `html5` platform can only function if all of the following requirements are met: * You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. -* Your Home Assistant instance is accessible from outside your network over HTTPS. +* Your Home Assistant instance is accessible from outside your network over HTTPS or can perform an alternative [Domain Name Verification Method](https://support.google.com/webmasters/answer/9008080#domain_name_verification) on the domain used by Home Assistant. * If using a proxy, HTTP basic authentication must be off for registering or unregistering for push notifications. It can be re-enabled afterwards. -* If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev` and `libssl-dev` must be installed prior to `pywebpush` (i.e. `pywebpush` probably won't automatically install). -* You have configured SSL/TLS for your Home Assistant. It doesn't need to be configured in Home Assistant though, e.g., you can be running [NGINX](/ecosystem/nginx/) in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e. not self signed). +* If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev` and `libssl-dev` must be installed prior to `pywebpush` (i.e., `pywebpush` probably won't automatically install). +* You have configured SSL/TLS for your Home Assistant. It doesn't need to be configured in Home Assistant though, e.g., you can be running [NGINX](/ecosystem/nginx/) in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e., not self signed). * You are willing to accept the notification permission in your browser. ### Configuring the platform -1. Make sure you can access your Home Assistant installation from outside your network over HTTPS ([see docs](/docs/configuration/remote/)). -2. Create a new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard). +1. Make sure you can access your Home Assistant installation from outside your network over HTTPS ([see documentation](/docs/configuration/remote/)) or can perform an alternative [Domain Name Verification Method](https://support.google.com/webmasters/answer/9008080#domain_name_verification) on the domain used by Home Assistant. +2. Create a new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard), this project will be imported into Firebase later (alternatively, the project can also be created during step 4). 3. Go to [https://console.cloud.google.com/apis/credentials/domainverification](https://console.cloud.google.com/apis/credentials/domainverification) and verify your domain via Google Webmaster Central / Search Console - [see below](#verify-your-domain). 4. With the domain verified, go to [https://console.firebase.google.com](https://console.firebase.google.com), select import Google project and select the project you created. 5. Then, click the cogwheel on top left and select "Project settings". 6. Select 'Cloud Messaging' tab. -7. Generate a new key pair under the Web configuration listing at the bottom of the page. To view the private key click the three dots to the right and 'Show private key'. +7. Generate a new key pair under the Web configuration listing at the bottom of the page. To view the private key click the three dots to the right and 'Show private key'. ### Setting up your browser @@ -214,7 +216,7 @@ data: url: https://google.com ``` -If no URL or actions are provided, interacting with a notification will open your Home Assistant in the browser. You can use relative URLs to refer to Home Assistant, i.e. `/map` would turn into `https://192.168.1.2:8123/map`. +If no URL or actions are provided, interacting with a notification will open your Home Assistant in the browser. You can use relative URLs to refer to Home Assistant, i.e., `/map` would turn into `https://192.168.1.2:8123/map`. #### TTL and Priority @@ -232,7 +234,7 @@ data: ### Dismiss -You can dismiss notifications by using service notify.html5_dismiss like so: +You can dismiss notifications by using service html5.dismiss like so: ```json { @@ -311,7 +313,7 @@ You will receive an event named `html5_notification.closed` when the notificatio If you use [NGINX](/ecosystem/nginx/) as a proxy with authentication in front of your Home Assistant instance, you may have trouble with receiving events back to Home Assistant. It's because of authentication token that cannot be passed through the proxy. -To solve the issue put additional location into your nginx site's configuration: +To solve the issue put additional location into your NGINX site's configuration: ```bash location /api/notify.html5/callback { diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown index c92e8b0fa3cb..fae6ab3e9e59 100644 --- a/source/_integrations/http.markdown +++ b/source/_integrations/http.markdown @@ -1,14 +1,16 @@ --- -title: "HTTP" -description: "Offers a web framework to serve files." -logo: http.png +title: HTTP +description: Offers a web framework to serve files. ha_category: - Other - Binary Sensor - Sensor ha_release: pre 0.7 ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: http --- The `http` integration serves all files and data required for the Home Assistant frontend. You only need to add this to your configuration file if you want to change any of the default settings. @@ -20,7 +22,7 @@ There is currently support for the following device types within Home Assistant:
    -Don't use option `server_host` on a Hass.io installation! +The option option `server_host` should only be used on a Home Assistant Core installation!
    @@ -30,10 +32,6 @@ http: ``` {% configuration %} -api_password: - description: "**Deprecated since 0.90 release. Configuration moved to [Legacy API password auth provider](/docs/authentication/providers/#legacy-api-password).** Protect the Home Assistant API with a password - this password can also be used to log in to the frontend. Where your client or other software supports it, you should use [long lasting access token](/docs/authentication/#your-account-profile) instead, as [shown in the REST API](https://developers.home-assistant.io/docs/en/external_api_rest.html) and [websocket API](https://developers.home-assistant.io/docs/en/external_api_websocket.html) documentation." - required: false - type: string server_host: description: "Only listen to incoming requests on specific IP/host. By default it will accept all IPv4 connections. Use `server_host: ::0` if you want to listen to (and only) IPv6." required: false @@ -62,7 +60,7 @@ ssl_key: required: false type: string cors_allowed_origins: - description: "A list of origin domain names to allow [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) requests from. Enabling this will set the `Access-Control-Allow-Origin` header to the Origin header if it is found in the list, and the `Access-Control-Allow-Headers` header to `Origin, Accept, X-Requested-With, Content-type, Authorization`. You must provide the exact Origin, i.e. `https://www.home-assistant.io` will allow requests from `https://www.home-assistant.io` but __not__ `http://www.home-assistant.io`." + description: "A list of origin domain names to allow [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) requests from. Enabling this will set the `Access-Control-Allow-Origin` header to the Origin header if it is found in the list, and the `Access-Control-Allow-Headers` header to `Origin, Accept, X-Requested-With, Content-type, Authorization`. You must provide the exact Origin, i.e., `https://www.home-assistant.io` will allow requests from `https://www.home-assistant.io` but __not__ `http://www.home-assistant.io`." required: false type: [string, list] use_x_forwarded_for: @@ -156,7 +154,7 @@ Please note, that sources from `trusted_networks` won't be banned automatically. ## Hosting files -If you want to use Home Assistant to host or serve static files then create a directory called `www` under the configuration path (`/config` on Hass.io, `.homeassistant` elsewhere). The static files in `www/` can be accessed by the following URL `http://your.domain:8123/local/`, for example `audio.mp3` would be accessed as `http://your.domain:8123/local/audio.mp3`. +If you want to use Home Assistant to host or serve static files then create a directory called `www` under the configuration path (`/config`). The static files in `www/` can be accessed by the following URL `http://your.domain:8123/local/`, for example `audio.mp3` would be accessed as `http://your.domain:8123/local/audio.mp3`.
    @@ -164,6 +162,12 @@ If you want to use Home Assistant to host or serve static files then create a di
    +
    + + Files served from the `www`/`local` folder, aren't protected by the Home Assistant authentication. Files stored in this folder, if the URL is known, can be accessed by anybody without authentication. + +
    + ## Binary Sensor The HTTP binary sensor is dynamically created with the first request that is made to its URL. You don't have to define it in the configuration first. @@ -222,9 +226,13 @@ As already shown on the [API](/developers/rest_api/) page, it's very simple to u ```python response = requests.post( - 'http://localhost:8123/api/states/binary_sensor.radio', - headers={'Authorization': 'Bearer LONG_LIVED_ACCESS_TOKEN', 'content-type': 'application/json'}, - data=json.dumps({'state': 'on', 'attributes': {'friendly_name': 'Radio'}})) + "http://localhost:8123/api/states/binary_sensor.radio", + headers={ + "Authorization": "Bearer LONG_LIVED_ACCESS_TOKEN", + "content-type": "application/json", + }, + data=json.dumps({"state": "on", "attributes": {"friendly_name": "Radio"}}), +) print(response.text) ``` diff --git a/source/_integrations/htu21d.markdown b/source/_integrations/htu21d.markdown index 2037c37b6523..083bcd5a95fb 100644 --- a/source/_integrations/htu21d.markdown +++ b/source/_integrations/htu21d.markdown @@ -1,11 +1,11 @@ --- -title: "HTU21D Temperature and humidity sensor" -description: "Instructions on how to integrate a HTU21D Temperature and humidity sensor into Home Assistant." -logo: raspberry-pi.png +title: HTU21D(F) Sensor +description: Instructions on how to integrate a HTU21D Temperature and humidity sensor into Home Assistant. ha_category: - DIY ha_release: 0.48 ha_iot_class: Local Push +ha_domain: htu21d --- The `htu21d` sensor platform allows you to read the temperature and humidity from a [HTU21D sensor](https://cdn-shop.adafruit.com/datasheets/1899_HTU21D.pdf) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). @@ -75,7 +75,7 @@ $ sudo raspi-config Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. -Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: +Install dependencies for use the `smbus-cffi` module and enable your `homeassistant` user to join the _i2c_ group: ```bash # pi user environment: Install i2c dependencies and utilities diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index 4a8b8585f7cb..7082e43c0dbd 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -1,15 +1,19 @@ --- -title: "Huawei LTE" -description: "Instructions on how to integrate Huawei LTE router and modem devices with Home Assistant." -logo: huawei.svg +title: Huawei LTE +description: Instructions on how to integrate Huawei LTE router and modem devices with Home Assistant. ha_category: - Network - Presence Detection - Notifications - Sensor - Switch + - Binary Sensor ha_release: 0.79 ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@scop' +ha_domain: huawei_lte --- The Huawei LTE router and modem integration for Home Assistant allows you to observe and control [Huawei LTE devices](https://consumer.huawei.com/en/smart-home/). @@ -20,6 +24,7 @@ There is currently support for the following platforms within Home Assistant: - Notifications - via SMS - Sensors - device, signal, and traffic information - Switch - mobile data on/off +- Binary sensor - mobile connection status ## Configuration @@ -44,6 +49,7 @@ default: - WAN IP address sensor - LTE signal sensors RSRQ, RSRP, RSSI, and SINR - mobile data switch +- mobile connection binary sensor - device tracker entries The rest are added to the entity registry, but disabled by default. @@ -100,13 +106,56 @@ notify: required: false type: map keys: + name: + description: Name of the notification service. + default: "`huawei_lte`" + required: false + type: string recipient: description: The phone number of a default recipient or a list with multiple recipients. required: false type: [string, list] {% endconfiguration %} -### Tested devices +## Services + +The following router action services are available. When invoked by a user, administrator access is required. + +### Service `huawei_lte.clear_traffic_statistics` + +Clear traffic statistics. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +### Service `huawei_lte.reboot` + +Reboot router. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +### Service `huawei_lte.suspend_integration` + +Suspend integration. Suspending logs the integration out from the router, and stops accessing it. +Useful e.g., if accessing the router web interface from another source such as a web browser is temporarily required. +Invoke the `huawei_lte.resume_integration` service to resume. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +### Service `huawei_lte.resume_integration` + +Resume suspended integration. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +## Tested devices Devices we know to be working with this integration based on the [documentation of used libraries](https://github.com/Salamek/huawei-lte-api/#huawei-lte-api) and reports by users: diff --git a/source/_integrations/huawei_router.markdown b/source/_integrations/huawei_router.markdown index c64969923091..e869c312e0d7 100644 --- a/source/_integrations/huawei_router.markdown +++ b/source/_integrations/huawei_router.markdown @@ -1,15 +1,17 @@ --- -title: "Huawei Router" -description: "Instructions on how to integrate Huawei Routers into Home Assistant." -logo: huawei.svg +title: Huawei Router +description: Instructions on how to integrate Huawei Routers into Home Assistant. ha_category: - Presence Detection ha_release: 0.51 +ha_codeowners: + - '@abmantis' +ha_domain: huawei_router --- The `huawei` device tracker platform offers presence detection by looking at connected devices to a [Huawei router](http://m.huawei.com/enmobile/enterprise/products/network/access/pon-one/hw-371813.htm). -Currently, this was only tested with the Huawei HG8247H and HG8247Q Smart Router (used by Vodafone Portugal). +Currently, this was only tested with the Huawei HG8247H, HS8247W and HG8247Q Smart Router (used by Vodafone Portugal). ## Configuration diff --git a/source/_integrations/hue.markdown b/source/_integrations/hue.markdown index b1e36814b1bb..764620f7a22a 100644 --- a/source/_integrations/hue.markdown +++ b/source/_integrations/hue.markdown @@ -1,30 +1,33 @@ --- -title: "Philips Hue" -description: "Instructions on setting up Philips Hue within Home Assistant." -logo: philips_hue.png +title: Philips Hue +description: Instructions on setting up Philips Hue within Home Assistant. ha_category: - Hub - Light ha_iot_class: Local Polling -ha_qa_scale: platinum featured: true -ha_release: "0.60" +ha_release: '0.60' +ha_config_flow: true +ha_quality_scale: platinum +ha_codeowners: + - '@balloob' +ha_domain: hue --- -Philips Hue support is integrated into Home Assistant as a hub that can drive the light and sensor platforms. The preferred way to set up the Philips Hue platform is by enabling the [discovery component](/integrations/discovery/). +The Philips Hue integration allows you to control and monitor the lights and motion sensors connected to your Hue bridge. The preferred way to set up the Philips Hue integration is by enabling [discovery](/integrations/discovery/). There is currently support for the following device types within Home Assistant: - Lights - Motion sensors (including temperature and light level sensors) -Once discovered, if you have a custom default view, locate `configurator.philips_hue` in the States developer tool ( < > ) and add it to a group in `configuration.yaml`. Restart Home Assistant so that the configurator is visible in the Home Assistant dashboard. Once Home Assistant is restarted, locate and click on `configurator.philips_hue` to bring up the initiation dialog. This will prompt you to press the Hue button to register the Hue bridge in Home Assistant. Once complete, the configurator entity isn't needed anymore and can be removed from any visible group in `configuration.yaml`. +To set up this integration, click Configuration in the sidebar and then click Integrations. You should see "Philips Hue" in the discovered section (if you do not, click the + icon in the lower right and find Philips Hue). Click configure and you will be presented with the initiation dialog. This will prompt you to press the button on your Hue bridge to register the hub with Home Assistant. After you click submit, you will have the opportunity to select the area that your bridge is located. When you configure the Hue bridge from Home Assistant, it writes a token to a file in your Home Assistant [configuration directory](/docs/configuration/). That token authenticates the communication with the Hue bridge. This token uses the IP address of the bridge. If the IP address for the bridge changes, you will need to register it with Home Assistant again. To avoid this, you may set up a DHCP reservation on your router for your Hue bridge so that it always has the same IP address. Once registration is complete you should see the Hue lights listed as `light` entities, the Hue motion sensors listed as `binary_sensor` entities, and the Hue temperature and light level sensors (which are built in to the motion sensors) listed as `sensor` entities. If you don't, you may have to restart Home Assistant once more. -If you want to enable the integration without relying on the [discovery component](/integrations/discovery/), add the following lines to your `configuration.yaml` file: +If you want to enable the integration without relying on [discovery](/integrations/discovery/), add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -43,15 +46,11 @@ allow_unreachable: required: false type: boolean default: false -filename: - description: Make this unique if specifying multiple Hue bridges. - required: false - type: string allow_hue_groups: description: Disable this to stop Home Assistant from importing the groups defined on the Hue bridge. required: false type: boolean - default: true + default: false {% endconfiguration %} ## Examples @@ -67,18 +66,14 @@ hue: ### Multiple Hue bridges -Multiple Hue bridges work transparently with discovery, so you don't have to do anything special to set them up. If you prefer to configure them manually and use multiple Hue bridges, then you need to provide a configuration file for every bridge. The bridges can't share a single configuration file. - -Add `filename` to your Hue configuration entry in your `configuration.yaml` file: +Multiple Hue bridges work transparently with discovery, so you don't have to do anything special to set them up. ```yaml # Example configuration.yaml entry hue: bridges: - host: BRIDGE1_IP_ADDRESS - filename: phue.conf - host: BRIDGE2_IP_ADDRESS - filename: phue2.conf ``` ### Using Hue Groups in Home Assistant @@ -97,7 +92,7 @@ To create a `LightGroup` named `Ceiling lights` that contains the lights 1, 2, a $ curl -XPOST -d '{"name": "Ceiling lights", "lights": ["1", "2", "3"]}' http:///api//groups ``` -The `` is the string that is used to register Home Assistant on the bridge. You can find it in the `core.config_entries` file in your configuration\.storage path. `` is the IP address or hostname of your Hue bridge. +The `` is the string that is used to register Home Assistant with the bridge. You can find it in the `core.config_entries` file in `/PATH-TO-YOUR-CONFIGURATION/.storage/`. `` is the IP address or hostname of your Hue bridge. You can find the IDs of your lights by executing the following command: @@ -115,9 +110,9 @@ More information can be found on the [Philips Hue API documentation](https://www ### Using Hue Scenes in Home Assistant -The Hue platform has its own concept of scenes for setting the colors of a group of lights at once. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them—many that you've never used, and almost all very poorly named. +The Hue platform has its own concept of scenes for setting the colors of a group of lights simultaneously. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them—many that you've never used, and almost all very poorly named. -To avoid user interface overload, we don't expose scenes directly. Instead there is a hue.hue_activate_scene service which can be used by `automation` or `script` components. +To avoid user interface overload, we don't expose scenes directly. Instead there is a `hue.hue_activate_scene` service which can be used in an automation or script. This will have all the bulbs transitioned at once, instead of one at a time like when using standard scenes in Home Assistant. For instance: @@ -132,25 +127,23 @@ script: scene_name: "Porch Orange" ``` -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `group_name` | no | The group/room name of the lights. Find this in the official Hue app. -| `scene_name` | no | The name of the scene. Find this in the official Hue app. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------- | +| `group_name` | no | The group/room name of the lights. Find this in the official Hue app. | +| `scene_name` | no | The name of the scene. Find this in the official Hue app. | -*Note*: `group_name` is not a reference to a Home Assistant group name. It can only be the name of a group/room in the Hue app. +_Note_: `group_name` is not a reference to a Home Assistant group name. It can only be the name of a group/room in the Hue app. ### Finding Group and Scene Names -How do you find these names? - -The easiest way to do this is to only use the scenes from the 2nd generation Hue app, which is organized by room (group) and scene name. Use the values of room name and scene name that you see in the app. You can test that these work by using the `dev-service` console of your Home Assistant instance. +The easiest way to find Hue scene names is to only use the scenes from the 2nd generation Hue app, which are organized by room (group) and scene name. Use the room name and scene name that you see in the app. You can test that these work at Developer Tools > Services in your Home Assistant instance. -Alternatively, you can dump all rooms and scene names using this [gist](https://gist.github.com/sdague/5479b632e0fce931951c0636c39a9578). This does **not** tell you which groups and scenes work together, but it is sufficient to get values that you can test in the `dev-service` console. +Alternatively, you can dump all rooms and scene names using this [gist](https://gist.github.com/sdague/5479b632e0fce931951c0636c39a9578). This does **not** tell you which groups and scenes work together, but it is sufficient to get values that you can test at Developer Tools > Services. ### Caveats -The Hue API doesn't activate scenes directly; rather, they must be associated with a Hue group (typically rooms, especially if using the 2nd gen app). But Hue scenes don't actually reference their group. So heuristic matching is used. +The Hue API doesn't activate scenes directly; rather, they must be associated with a Hue group (typically rooms, especially if using the 2nd generation Hue app). But Hue scenes don't actually reference their group, so heuristic matching is used. Neither group names nor scene names are guaranteed unique in Hue. If you are observing unexpected behavior from calling Hue scenes in Home Assistant, make the names of your Hue scenes more specific in the Hue app. -The Hue hub has limited space for scenes and will delete scenes if new ones get created that would overflow that space. The API docs say this is based on the scenes that are "least recently used." +The Hue hub has limited space for scenes and will delete scenes if new ones get created that would overflow that space. The API documentation says this is based on the scenes that are "least recently used." diff --git a/source/_integrations/hunterdouglas_powerview.markdown b/source/_integrations/hunterdouglas_powerview.markdown index 6a231a79af5b..a02ca235614f 100644 --- a/source/_integrations/hunterdouglas_powerview.markdown +++ b/source/_integrations/hunterdouglas_powerview.markdown @@ -1,10 +1,11 @@ --- -title: "PowerView Scenes" -description: "Instructions on how to setup Hunter Douglas PowerView scenes within Home Assistant." +title: Hunter Douglas PowerView +description: Instructions on how to setup Hunter Douglas PowerView scenes within Home Assistant. logo: hunter-douglas-powerview.png ha_category: - Scene ha_release: 0.15 +ha_domain: hunterdouglas_powerview --- Implements the [Hunter Douglas PowerView](https://www.hunterdouglas.com/operating-systems/powerview-motorization/support) platform scene control. It queries the PowerView Hub and Home Assistant displays them as scenes. @@ -24,3 +25,15 @@ address: required: true type: string {% endconfiguration %} + +## Example Automations + +``` yaml +- alias: "blinds closed at night" + trigger: + platform: time + at: "18:00:00" + action: + - service: scene.turn_on + entity_id: scene.10877 +``` diff --git a/source/_integrations/hydrawise.markdown b/source/_integrations/hydrawise.markdown index 58a12fcc8509..6f82a4821813 100644 --- a/source/_integrations/hydrawise.markdown +++ b/source/_integrations/hydrawise.markdown @@ -1,6 +1,6 @@ --- -title: "Hunter Hydrawise" -description: "Instructions on how to integrate your Hunter Hydrawise Wi-Fi irrigation control system within Home Assistant." +title: Hunter Hydrawise +description: Instructions on how to integrate your Hunter Hydrawise Wi-Fi irrigation control system within Home Assistant. logo: hydrawise_logo.png ha_category: - Irrigation @@ -9,6 +9,7 @@ ha_category: - Switch ha_release: 0.71 ha_iot_class: Cloud Polling +ha_domain: hydrawise --- The `hydrawise` integration allows you to integrate your [Hunter Hydrawise](https://hydrawise.com) Wi-Fi irrigation controller system in Home Assistant. diff --git a/source/_integrations/hyperion.markdown b/source/_integrations/hyperion.markdown index 1d6424fdfe0f..836366442a72 100644 --- a/source/_integrations/hyperion.markdown +++ b/source/_integrations/hyperion.markdown @@ -1,11 +1,11 @@ --- -title: "Hyperion" -description: "Instructions on how to integrate Hyperion into Home Assistant." -logo: hyperion.png +title: Hyperion +description: Instructions on how to integrate Hyperion into Home Assistant. ha_category: - Light ha_release: 0.7.6 ha_iot_class: Local Polling +ha_domain: hyperion --- The `hyperion` platform allows you to integrate your [Hyperion](https://hyperion-project.org/wiki) into Home Assistant. Hyperion is an open source Ambilight implementation which runs on many platforms. @@ -76,7 +76,7 @@ automation: effect: "Full color mood blobs" ``` -To have the lights playing an effect when pausing, idle or turn off a media player like plex you can use this example: +To have the lights playing an effect when pausing, idle or turn off a media player like Plex you can use this example: ```yaml - alias: Set hyperion effect after playback diff --git a/source/_integrations/ialarm.markdown b/source/_integrations/ialarm.markdown index 91a194f674ee..e66a83f94154 100644 --- a/source/_integrations/ialarm.markdown +++ b/source/_integrations/ialarm.markdown @@ -1,10 +1,11 @@ --- -title: "Antifurto365 iAlarm Control Panel" -description: "Instructions on how to integrate iAlarms alarms into Home Assistant." +title: Antifurto365 iAlarm +description: Instructions on how to integrate iAlarms alarms into Home Assistant. logo: antifurto365-ialarm.png ha_category: - Alarm -ha_release: "0.60" +ha_release: '0.60' +ha_domain: ialarm --- The `ialarm` platform provides connectivity with the [Antifurto365](https://www.antifurtocasa365.it/) iAlarm alarm systems. diff --git a/source/_integrations/iammeter.markdown b/source/_integrations/iammeter.markdown new file mode 100644 index 000000000000..f2dd913ac292 --- /dev/null +++ b/source/_integrations/iammeter.markdown @@ -0,0 +1,85 @@ +--- +title: IamMeter +description: Instructions on how to integrate IAMMETER sensor within Home Assistant. +logo: iammeter-logo.png +ha_category: + - Energy + - Sensor +ha_release: 0.107 +ha_iot_class: Local Polling +ha_domain: iammeter +ha_codeowners: + - '@lewei50' +--- + +`iammeter` provides real-time readings of single-phase (WEM3080, WEM3162) and three-phase (WEM3080T) meters from [IAMMETER](https://www.iammeter.com) over Wi-Fi. + +## Configuration + +To use this sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: iammeter + host: IP_ADDRESS_OF_HOST +``` + +{% configuration %} +host: + description: The IP address of your IAMMETER. + required: true + type: string +port: + description: port of your IAMMETER. + required: false + default: 80 + type: integer +name: + description: Name for the sensor entity. + required: false + type: string + default: IamMeter +{% endconfiguration %} + +## Sensors + +Sensors available in the library: + +### Single-phase energy meter (WEM3080/WEM3162) + +| name | Unit | Description | +|--------------------|------|:-----------------------------------------------------------------------------| +| wem3080_voltage | V | Voltage. | +| wem3080_current | A | current. | +| wem3080_power | W | active power. | +| wem3080_importenergy | kWh | Energy consumption from gird | +| wem3080_exportgrid | kWh | Energy export to grid | + +### Three-phase energy meter (WEM3080T) + +| name | Unit | Description | +|--------------------|------|:-----------------------------------------------------------------------------| +| wem3080t_voltage_a | V | A phase voltage | +| wem3080t_current_a | A | A phase current | +| wem3080t_power_a | W | A phase active power | +| wem3080t_importenergy_a | kWh | A phase import energy | +| wem3080t_exportgrid_a | kWh | A phase export energy | +| wem3080t_frequency_a | kWh | A phase frequency | +| wem3080t_pf_a | kWh | A phase power factor | +| | | | +| wem3080t_voltage_b | V | B phase voltage | +| wem3080t_current_b | A | B phase current | +| wem3080t_power_b | W | B phase active power | +| wem3080t_importenergy_b | kWh | B phase import energy | +| wem3080t_exportgrid_b | kWh | B phase export energy | +| wem3080t_frequency_b | kWh | B phase frequency | +| wem3080t_pf_b | kWh | B phase power factor | +| | | | +| wem3080t_voltage_c | V | C phase voltage | +| wem3080t_current_c | A | C phase current | +| wem3080t_power_c | W | C phase active power | +| wem3080t_importenergy_c | kWh | C phase import energy | +| wem3080t_exportgrid_c | kWh | C phase export energy | +| wem3080t_frequency_c | kWh | C phase frequency | +| wem3080t_pf_c | kWh | C phase power factor | diff --git a/source/_integrations/iaqualink.markdown b/source/_integrations/iaqualink.markdown index 22c2c0620774..4e16dc4fd692 100644 --- a/source/_integrations/iaqualink.markdown +++ b/source/_integrations/iaqualink.markdown @@ -1,7 +1,6 @@ --- -title: "Jandy iAqualink" -description: "Instructions on how to configure Jandy iAqualink integration." -logo: iaqualink.png +title: Jandy iAqualink +description: Instructions on how to configure Jandy iAqualink integration. ha_category: - Binary Sensor - Climate @@ -10,6 +9,10 @@ ha_category: - Switch ha_release: 0.99 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@flz' +ha_domain: iaqualink --- [iAqualink](https://www.iaqualink.com/) by [Jandy](https://www.jandy.com/) allows you to control your pool anytime, anywhere. diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index 1f8fdb602f9a..0893565f23c8 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -1,70 +1,124 @@ --- -title: "iCloud" -description: "Instructions on how to use iCloud to track devices in Home Assistant." -logo: icloud.png +title: Apple iCloud +description: Instructions on how to use iCloud to track devices in Home Assistant. ha_category: - Presence Detection -ha_release: "0.10" + - Sensor +ha_iot_class: Cloud Polling +ha_release: '0.10' +ha_config_flow: true +ha_codeowners: + - '@Quentame' +ha_domain: icloud --- +The `icloud` integration allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. -The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. +There is currently support for the following platforms within Home Assistant: -It does require that your device is registered with "Find My iPhone". +- [Device Tracker](#device-tracker) +- [Sensor](#sensor) -To integrate iCloud in Home Assistant, add the following section to your `configuration.yaml` file: +It does require that your devices are registered with the [Find My](https://www.apple.com/uk/icloud/find-my/) service. + +## Setup the integration + +There is two ways to integrate iCloud in Home Assistant + +### Via the frontend + +Menu: *Configuration* -> *Integrations*. Search for "iCloud", add your credentials, click submit. + +If you add the integration for the first time for an account: +1. Choose a trusted device from the list and submit. +2. It will send you a text message on your trusted device, add the received code to the next form and submit (if you missed the right code, you will be back to the previous step, and retry). +3. You are done! + +If you already added the integration before, you are done! + +### Via the configuration file + +Add the following section to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry -device_tracker: - - platform: icloud - username: USERNAME +icloud: + - username: USERNAME password: PASSWORD - account_name: accountname ``` {% configuration %} username: - description: The username for the iCloud account. + description: Your iCloud account email. required: true type: string password: - description: The password for your given username. + description: Your iCloud account password. required: true type: string -account_name: - description: The friendly name for the account_name. If this isn't given, it will use the account_name of the username (so the part before the `@` in the email address). +with_family: + description: If you want to fetch your family devices. required: false - type: string + default: false + type: boolean max_interval: - description: Maximum interval in minutes between subsequent location upates. This tracker uses dynamic intervals for requesting location updates. When iphone is stationary, interval will eventually be set to `max_interval` to save battery. When iphone starts moving again interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Minimum value is 1 min. + description: Maximum interval in minutes between subsequent location updates. This tracker uses dynamic intervals for requesting location updates. When the iPhone is stationary, the interval will eventually be set to `max_interval` to save battery. When the iPhone starts moving again, the interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Minimum value is 1 min. required: false default: 30 type: integer gps_accuracy_threshold: - description: iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows more precise location monitoring and fewer false positive zone changes. + description: iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows for more precise location monitoring and fewer false-positive zone changes. required: false - default: 1000 + default: 500 type: integer {% endconfiguration %}
    - Low `max_interval` may cause battery drainage as it wakes up your device to get the current location. -
    -You may receive an email from Apple stating that someone has logged into your account. +You may receive an email and a notification from Apple saying that someone has logged into your account. + +For the notification, press "Allow", then "OK".
    -To disable the drainage of the battery, a dynamic interval is being used for each individual device instead of a fixed interval for all devices linked to one account. The dynamic interval is based on the current zone of a device, the distance towards home and the battery level of the device. +If two-step authentication is enabled for your iCloud account, some time after Home Assistant startup the integration will ask which device you want to use as the Trusted Device via a notification in the Home Assistant UI. The integration will send an SMS prompt to that device with the auth code to enter in Home Assistant. The duration of this authentication is determined by Apple, but is currently 2 months, so you will only need to verify your account every two months. + +2 Factor Authentication is the improved version of two-step authentication and is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet. + +To prevent excessive battery drainage, a dynamic interval is used for each individual device instead of a fixed interval for all devices linked to one account. The dynamic interval is based on the current zone of a device, the distance towards home and the battery level of the device. + +## In case of troubleshooting + +Go into your Home Assistant configuration `.storage` folder and delete the "icloud" folder, then retry. + +## Platforms + +### Device Tracker + +The iCloud integration will track available devices on your iCloud account. + +### Sensor + +The iCloud integration will add a battery sensor for each iCloud devices available on your iCloud account. + +## Services + +4 services are available: + +### Service `icloud.update` + +This service can be used to ask an update of a certain iDevice or all devices linked to an iCloud account. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iPhone location. It can be used in automations when a manual location update is needed, e.g., to check if anyone is home when a door been opened. + +### Service `icloud.play_sound` + +This service will play the Lost iPhone sound on your iDevice. It will still ring if you are on "Mute" or "Do not disturb" mode. + +### Service `icloud.display_message` + +This service will display a message on your iDevice. It can also ring your device. -If 2 Step Authentication is enabled for your iCloud account. The integration will ask which device you want to use as Trusted Device and integration will send a prompt to that device with the code which you can enter in Home Assistant. The duration of this authentication is determined by Apple, but is now at 2 months, so you will only need to verify your account each two months. -2 Factor Authentication is the improved version of 2 Step Authentication, this is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet. +### Service `icloud.lost_device` -4 services are available for this component: -- **icloud_update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iphone location. Can be used in automations when manual location update is needed, e.g., to check if anyone is home when door's been opened. -- **icloud_lost_iphone**: This service will play the Lost iPhone sound on a certain iDevice. The `account_name` and `device_name` are optional. -- **icloud_set_interval**: This service will change the dynamic interval of an iDevice. The `account_name` and `device_name` are optional. If `interval` is used in the service_data, the iDevice will be updated with that new interval. That interval will be fixed until the iDevice changes zone or if this service is called again. If `interval` isn't used in the service_data, the interval for that iDevice will revert back to its default dynamic interval based on its current zone, its distance towards home and its battery level. -- **icloud_reset_account**: This service can be used to reset an iCloud account. This is helpful when not all devices are found by the integration or if you have added a new iDevice to your account. The `account_name` is optional. +This service will put your iDevice on "lost" mode (compatible devices only). You have to provide a phone number with a suffixed [country code](https://en.wikipedia.org/wiki/List_of_country_calling_codes) and a message. diff --git a/source/_integrations/idteck_prox.markdown b/source/_integrations/idteck_prox.markdown index 8c744ad54cec..70e7c22b3b72 100644 --- a/source/_integrations/idteck_prox.markdown +++ b/source/_integrations/idteck_prox.markdown @@ -1,11 +1,11 @@ --- -title: "IDTECK Prox Card Reader" -description: "How to use IDTECK proximity card readers." -logo: idteck.jpg +title: IDTECK Proximity Reader +description: How to use IDTECK proximity card readers. ha_category: - Other ha_release: 0.85 ha_iot_class: Local Push +ha_domain: idteck_prox --- [IDTECK](http://www.idteck.com) makes ID systems used to control access and identify users. This integration works with [Proximity Readers](http://www.idteck.com/en/products/proximity-reader-__-card-%26-tag-__125khz) (RFID card readers). The device is connected to Home Assistant through a serial to ethernet converter (NPort). diff --git a/source/_integrations/ifttt.markdown b/source/_integrations/ifttt.markdown index 200679092841..c7af255d885d 100644 --- a/source/_integrations/ifttt.markdown +++ b/source/_integrations/ifttt.markdown @@ -1,19 +1,20 @@ --- -title: "IFTTT" -description: "Instructions on how to setup IFTTT within Home Assistant." -logo: ifttt.png +title: IFTTT +description: Instructions on how to setup IFTTT within Home Assistant. ha_category: - Automation featured: true ha_iot_class: Cloud Push -ha_release: 0.80 +ha_release: 0.8 +ha_config_flow: true +ha_domain: ifttt --- [IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so-called "Applets". With the IFTTT component, you can trigger applets through the **"Webhooks"** service (which was previously the **"Maker"** channel). ## Sending events from IFTTT to Home Assistant -To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP integration ([docs](/integrations/http/#base_url)). +To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web and you need to have the `base_url` configured for the HTTP integration ([documentation](/integrations/http/#base_url)). ### Setting up the integration @@ -99,7 +100,7 @@ Service Data | `{"event": "EventName", "value1": "Hello World"}` When your screen looks like this, click the 'call service' button.

    -By default the trigger is sent to all the api keys from `configuration.yaml`. If you +By default, the trigger is sent to all the API keys from `configuration.yaml`. If you want to send the trigger to a specific key use the `target` field: Field | Value diff --git a/source/_integrations/iglo.markdown b/source/_integrations/iglo.markdown index 9edbcfe3e8d2..93ee75fc2c1a 100644 --- a/source/_integrations/iglo.markdown +++ b/source/_integrations/iglo.markdown @@ -1,11 +1,12 @@ --- -title: "iGlo" -description: "Instructions on how to integrate iGlo lights into Home Assistant." +title: iGlo +description: Instructions on how to integrate iGlo lights into Home Assistant. logo: iglo.png ha_category: - Light ha_iot_class: Local Polling ha_release: 0.61 +ha_domain: iglo --- The `iglo` platform allows you to integrate your [iGlo Lights](https://www.youtube.com/watch?v=oHTS9ji_v-s) into Home Assistant. diff --git a/source/_integrations/ign_sismologia.markdown b/source/_integrations/ign_sismologia.markdown index ed9d46b4c33f..2c976e214628 100644 --- a/source/_integrations/ign_sismologia.markdown +++ b/source/_integrations/ign_sismologia.markdown @@ -1,11 +1,13 @@ --- -title: "IGN Sismología" -description: "Instructions on how to integrate the Instituto Geográfico Nacional Sismología (Earthquakes) Feed feed into Home Assistant." -logo: ign-sismologia.png +title: IGN Sismología +description: Instructions on how to integrate the Instituto Geográfico Nacional Sismología (Earthquakes) Feed feed into Home Assistant. ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.92 +ha_codeowners: + - '@exxamalte' +ha_domain: ign_sismologia --- The `ign_sismologia` platform lets you integrate a GeoRSS feed provided by the diff --git a/source/_integrations/ihc.markdown b/source/_integrations/ihc.markdown index 398e547b8597..d89995039f90 100644 --- a/source/_integrations/ihc.markdown +++ b/source/_integrations/ihc.markdown @@ -1,7 +1,6 @@ --- -title: "IHC" -description: "Instructions on how to integrate the IHC integrations with Home Assistant" -logo: ihc.png +title: IHC Controller +description: Instructions on how to integrate the IHC integrations with Home Assistant ha_category: - Hub - Binary Sensor @@ -10,6 +9,7 @@ ha_category: - Switch ha_release: 0.62 ha_iot_class: Local Push +ha_domain: ihc --- IHC Controller integration for Home Assistant allows you to connect the LK IHC controller to Home Assistant. The controller is sold under other names in different countries - "ELKO Living system" in Sweden and Norway. @@ -327,4 +327,4 @@ switch: type: string {% endconfiguration %} -The resource id should be a boolean resource (On/Off). For more information about IHC resource ids see [Manual Setup](#manual-setup). \ No newline at end of file +The resource id should be a boolean resource (On/Off). For more information about IHC resource ids see [Manual Setup](#manual-setup). diff --git a/source/_integrations/image_processing.markdown b/source/_integrations/image_processing.markdown index e145b03883a9..dcb253a0102a 100644 --- a/source/_integrations/image_processing.markdown +++ b/source/_integrations/image_processing.markdown @@ -1,14 +1,15 @@ --- -title: "Image Processing" -description: "Instructions on how to setup image processing with Home Assistant." +title: Image Processing +description: Instructions on how to setup image processing with Home Assistant. ha_release: 0.36 +ha_domain: image_processing --- Image processing enables Home Assistant to process images from [cameras](/integrations/#camera). Only camera entities are supported as sources.
    -If you are running Home Assistant over SSL or from within a container, you will have to setup a base URL (`base_url`) inside the [http component](/integrations/http/). +If you are running Home Assistant over SSL or from within a container, you will have to setup a base URL (`base_url`) inside the [HTTP component](/integrations/http/).
    @@ -54,9 +55,9 @@ automation: The following event attributes will be present (platform-dependent): `entity_id`, `name`, `confidence`, `age`, `gender`, `motion`, `glasses` -## scan_interval and Optimising Resources +## scan_interval and optimizing Resources -Image processing integrations process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your config `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. +Image processing integrations process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your configuration `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. ```yaml # Example configuration.yaml diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index 418ddab91764..69ab4df1c7d7 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -1,11 +1,11 @@ --- -title: "IMAP Unread E-mail" -description: "Instructions on how to integrate IMAP unread email into Home Assistant." -logo: smtp.png +title: IMAP +description: Instructions on how to integrate IMAP unread email into Home Assistant. ha_category: - Mailbox ha_release: 0.25 ha_iot_class: Cloud Push +ha_domain: imap --- The `imap` integration is observing your [IMAP server](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol) and reporting the amount of unread emails. diff --git a/source/_integrations/imap_email_content.markdown b/source/_integrations/imap_email_content.markdown index c4bce26f23e1..343ae525e98a 100644 --- a/source/_integrations/imap_email_content.markdown +++ b/source/_integrations/imap_email_content.markdown @@ -1,11 +1,11 @@ --- -title: "IMAP Email Content" -description: "Instructions on how to integrate IMAP email content sensor into Home Assistant." -logo: smtp.png +title: IMAP Email Content +description: Instructions on how to integrate IMAP email content sensor into Home Assistant. ha_category: - Mailbox ha_iot_class: Cloud Push ha_release: 0.25 +ha_domain: imap_email_content --- The `imap_email_content` integration will read emails from an IMAP email server and report them as a state change within Home Assistant. This is useful if you have a device that only reports its state via email. @@ -73,7 +73,7 @@ value_template: description: The date and time the email was sent. {% endconfiguration %} -## Example +## Example - keyword spotting The following example shows the usage of the IMAP email content sensor to scan the subject of an email for text, in this case, an email from the APC SmartConnect service which tells whether the UPS is running on battery or not. @@ -98,3 +98,46 @@ sensor: {% endraw %} The same template structure can scan the date, body or sender for matching text before setting the state of the sensor. + +## Example - extracting formatted text from an email using template sensors + +This example shows how to extract numbers or other formatted data from an email to change the value of a template sensor to a value extracted from the email. In this example, we will be extracting energy use, cost, and billed amount from an email (from Georgia Power) and putting it into sensor values using a template sensor that runs against our IMAP email sensor already set up. A sample of the body of the email used is below: + +```text +Yesterday's Energy Use: 76 kWh +Yesterday's estimated energy cost: $8 +Monthly Energy use-to-date for 23 days: 1860 kWh +Monthly estimated energy cost-to-date for 23 days: $198 + +To view your account for details about your energy use, please click here. +``` + +Below is the template sensor which extracts the information from the body of the email in our IMAP email sensor (named sensor.energy_email) into 3 sensors for the energy use, daily cost, and billing cycle total. + +{% raw %} +```yaml +sensor: + - platform: template + sensors: + previous_day_energy_use: + friendly_name: Previous Day Energy Use + unit_of_measurement: kWh + value_template: > + {{ state_attr('sensor.energy_email','body') + |regex_findall_index("\*Yesterday's Energy Use:\* ([0-9]+) kWh") }} + previous_day_cost: + friendly_name: Previous Day Cost + unit_of_measurement: $ + value_template: > + {{ state_attr('sensor.energy_email', 'body') + |regex_findall_index("\*Yesterday's estimated energy cost:\* \$([0-9.]+)") }} + billing_cycle_total: + friendly_name: Billing Cycle Total + unit_of_measurement: $ + value_template: > + {{ state_attr('sensor.energy_email', 'body') + |regex_findall_index("\ days:\* \$([0-9.]+)") }} +``` +{% endraw %} + +By making small changes to the regular expressions defined above, a similar structure can parse other types of data out of the body of other emails. diff --git a/source/_integrations/incomfort.markdown b/source/_integrations/incomfort.markdown index 40b9743e5da7..b287a7ce2fb9 100644 --- a/source/_integrations/incomfort.markdown +++ b/source/_integrations/incomfort.markdown @@ -1,7 +1,6 @@ --- -title: "Intergas InComfort" -description: "Instructions on how to integrate an Intergas Lan2RF gateway with Home Assistant." -logo: incomfort.png +title: Intergas InComfort/Intouch Lan2RF gateway +description: Instructions on how to integrate an Intergas Lan2RF gateway with Home Assistant. ha_category: - Water Heater - Climate @@ -9,6 +8,9 @@ ha_category: - Binary Sensor ha_release: 0.93 ha_iot_class: Local Polling +ha_codeowners: + - '@zxdavb' +ha_domain: incomfort --- The `incomfort` integration links Home Assistant with your Intergas Lan2RF gateway, including the boiler and any room thermostats attached to it. @@ -52,7 +54,7 @@ Other properties are available via each device's attributes. ## Configuration -To set up this integration, add one of the following to your **configuration.yaml** file: +To set up this integration, add one of the following to your `configuration.yaml` file: The hub does not have to be in the same network as HA, but must be reachable via port 80/HTTP. diff --git a/source/_integrations/influxdb.markdown b/source/_integrations/influxdb.markdown index 80ecdaf708e3..636852852f22 100644 --- a/source/_integrations/influxdb.markdown +++ b/source/_integrations/influxdb.markdown @@ -1,15 +1,18 @@ --- -title: "InfluxDB" -description: "Record events in InfluxDB." +title: InfluxDB +description: Record events in InfluxDB. logo: influxdb.png ha_category: - History - Sensor ha_release: 0.9 ha_iot_class: Configurable +ha_codeowners: + - '@fabaff' +ha_domain: influxdb --- -The `influxdb` integration makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. See the [official installation documentation](https://docs.influxdata.com/influxdb/v1.7/introduction/installation/) for how to set up an InfluxDB database, or if you're using Hass.io, [there is a community add-on](https://community.home-assistant.io/t/community-hass-io-add-on-influxdb/54491) available. +The `influxdb` integration makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. See the [official installation documentation](https://docs.influxdata.com/influxdb/v1.7/introduction/installation/) for how to set up an InfluxDB database, or [there is a community add-on](https://community.home-assistant.io/t/community-hass-io-add-on-influxdb/54491) available. There is currently support for the following device types within Home Assistant: @@ -58,12 +61,12 @@ database: default: home_assistant ssl: type: boolean - description: Use https instead of http to connect. + description: Use HTTPS instead of HTTP to connect. required: false default: false verify_ssl: type: boolean - description: Verify SSL certificate for https request. + description: Verify SSL certificate for HTTPS request. required: false default: true max_retries: @@ -192,7 +195,7 @@ sensor: {% configuration %} host: - description: IP address of your database host, e.g. 192.168.1.10. + description: IP address of your database host, e.g., 192.168.1.10. required: false default: localhost type: string @@ -210,12 +213,12 @@ password: required: false type: string ssl: - description: Use https instead of http to connect. + description: Use HTTPS instead of HTTP to connect. required: false default: false type: boolean verify_ssl: - description: Verify SSL certificate for https request. + description: Verify SSL certificate for HTTP request. required: false default: false type: boolean @@ -241,7 +244,7 @@ queries: required: true type: string value_template: - description: Defines a [template](/docs/configuration/templating/#processing incoming data) to extract a value from the payload. + description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. required: false type: template database: diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index fb559e5df5d4..6aeecdc95032 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -1,11 +1,13 @@ --- -title: "Input Boolean" -description: "Instructions on how to integrate the Input Boolean integration into Home Assistant." -logo: home-assistant.png +title: Input Boolean +description: Instructions on how to integrate the Input Boolean integration into Home Assistant. ha_category: - Automation -ha_qa_scale: internal ha_release: 0.11 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: input_boolean --- The `input_boolean` integration allows the user to define boolean values that can be controlled via the frontend and can be used within conditions of automation. This can for example be used to disable or enable certain automations. @@ -42,9 +44,21 @@ input_boolean: type: icon {% endconfiguration %} +### Services + +This integration provides the following services to modify the state of the `input_boolean` and a service to reload the +configuration without restarting Home Assistant itself. + +| Service | Data | Description | +| ------- | ---- | ----------- | +| `turn_on` | `entity_id(s)`
    `area_id(s)` | Set the value of specific `input_boolean` entities to `on` +| `turn_off` | `entity_id(s)`
    `area_id(s)` | Set the value of specific `input_boolean` entities to `off` +| `toggle` | `entity_id(s)`
    `area_id(s)` | Toggle the value of specific `input_boolean` entities +| `reload` | | Reload `input_boolean` configuration | + ### Restore State -This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ## Automation Examples diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index 4486c0c83926..3fe4fb11592a 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -1,11 +1,13 @@ --- -title: "Input Datetime" -description: "Instructions on how to integrate the Input Datetime integration into Home Assistant." -logo: home-assistant.png +title: Input Datetime +description: Instructions on how to integrate the Input Datetime integration into Home Assistant. ha_category: - Automation ha_release: 0.55 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: input_datetime --- The `input_datetime` integration allows the user to define date and time values @@ -61,7 +63,7 @@ input_datetime: description: Set the initial value of this input, depending on `has_time` and `has_date`. required: false type: [datetime, time, date] - default: 1970-01-01 00:00 | 1970-01-01 | 00:00 + default: 1970-01-01 00:00 | 00:00 | 1970-01-01 {% endconfiguration %} ### Attributes @@ -78,13 +80,11 @@ automations and templates. ### Restore State -This integration will automatically restore the state it had prior to Home -Assistant stopping as long as your entity does **not** have a set value for -`initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ### Services -Available service: `input_datetime.set_datetime`. +Available service: `input_datetime.set_datetime` and `input_datetime.reload`. Service data attribute | Format String | Description -|-|- @@ -94,6 +94,8 @@ Service data attribute | Format String | Description To set both the date and time in the same call, use `date` and `time` together, or use `datetime` by itself. Using `datetime` has the advantage that both can be set using one template. +`input_dateteime.reload` service allows one to reload `input_datetime`'s configuration without restarting Home Assistant itself. + ## Automation Examples The following example shows the usage of the `input_datetime` as a trigger in an @@ -117,34 +119,39 @@ automation: To dynamically set the `input_datetime` you can call `input_datetime.set_datetime`. The values for `date` and `time` must be in a certain format for the call to be successful. (See service description above.) If you have a `datetime` object you can use its `strftime` method. Of if you have a timestamp you can use the `timestamp_custom` filter. -The following example can be used in an automation rule: +The following example shows the different methods in an automation rule: {% raw %} ```yaml # Example configuration.yaml entry -# Sets input_datetime to '05:30' when an input_boolean is turned on. +# Shows different ways to set input_datetime when an input_boolean is turned on automation: trigger: platform: state entity_id: input_boolean.example to: 'on' action: + # Sets time to '05:30:00 - service: input_datetime.set_datetime entity_id: input_datetime.bedroom_alarm_clock_time data: time: '05:30:00' + # Sets time to time from datetime object (current time in this example) - service: input_datetime.set_datetime entity_id: input_datetime.another_time data_template: time: "{{ now().strftime('%H:%M:%S') }}" + # Sets date to date from timestamp (current date in this example) - service: input_datetime.set_datetime entity_id: input_datetime.another_date data_template: date: "{{ as_timestamp(now())|timestamp_custom('%Y-%m-%d') }}" + # Sets date and time to date and time from datetime object (current date and time in this example) - service: input_datetime.set_datetime entity_id: input_datetime.date_and_time data_template: datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}" + # Sets date and time to date and time from timestamp (current date and time in this example) - service: input_datetime.set_datetime data_template: entity_id: input_datetime.date_and_time diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 3e46a5bdcfb5..598fb08b5528 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -1,11 +1,13 @@ --- -title: "Input Number" -description: "Instructions on how to integrate the Input Number integration into Home Assistant." -logo: home-assistant.png +title: Input Number +description: Instructions on how to integrate the Input Number integration into Home Assistant. ha_category: - Automation ha_release: 0.55 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: input_number --- 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. @@ -54,7 +56,7 @@ input_number: type: float default: The value at shutdown step: - description: Step value for the slider. Smallest value `0.001`. + description: Step value. Smallest value `0.001`. required: false type: float default: 1 @@ -73,9 +75,21 @@ input_number: type: icon {% endconfiguration %} +### Services + +This integration provides the following services to modify the state of the `input_number` and a service to reload the +configuration without restarting Home Assistant itself. + +| Service | Data | Description | +| ------- | ---- | ----------- | +| `decrement` | `entity_id(s)`
    `area_id(s)` | Decrement the value of specific `input_number` entities by `step` +| `increment` | `entity_id(s)`
    `area_id(s)` | Increment the value of specific `input_number` entities by `step` +| `reload` | | Reload `input_number` configuration | +| `set_value` | `value`
    `entity_id(s)`
    `area_id(s)` | Set the value of specific `input_number` entities + ### Restore State -This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ### Scenes diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index dadf14dd5465..7bb89b970955 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -1,11 +1,13 @@ --- -title: "Input Select" -description: "Instructions on how to integrate the Input Select integration into Home Assistant." -logo: home-assistant.png +title: Input Select +description: Instructions on how to integrate the Input Select integration into Home Assistant. ha_category: - Automation ha_release: 0.13 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: input_select --- The `input_select` integration allows the user to define a list of values that can be selected via the frontend and can be used within conditions of automation. When a user selects a new item, a state transition event is generated. This state event can be used in an `automation` trigger. @@ -62,11 +64,11 @@ Because YAML defines [booleans](https://yaml.org/type/bool.html) as equivalent, ### Restore State -This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ### Services -This integrations provide three services to modify the state of the `input_select`. +This integration provides three services to modify the state of the `input_select`. | Service | Data | Description | | ------- | ---- | ----------- | @@ -74,6 +76,7 @@ This integrations provide three services to modify the state of the `input_selec | `set_options` | `options`
    `entity_id(s)` | Set the options for specific `input_select` entities. | `select_previous` | | Select the previous option. | `select_next` | | Select the next option. +| `reload` | | Reload `input_select` configuration | ### Scenes diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index 1cda4f554e55..c27bd6a013fc 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -1,11 +1,13 @@ --- -title: "Input Text" -description: "Instructions on how to integrate the Input Text integration into Home Assistant." -logo: home-assistant.png +title: Input Text +description: Instructions on how to integrate the Input Text integration into Home Assistant. ha_category: - Automation ha_release: 0.53 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: input_text --- The `input_text` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the value stored in the text box generate state events. These state events can be utilized as `automation` triggers as well. It can also be configured in password mode (obscured text). @@ -52,13 +54,12 @@ input_text: description: Initial value when Home Assistant starts. 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. + description: Regex pattern for client-side validation. required: false type: string default: empty @@ -71,15 +72,16 @@ input_text: ### Services -This integration provides a single service to modify the state of the `input_text`. +This integration provides a service to modify the state of the `input_text` and a service to reload the `input_text` configuration without restarting Home Assistant itself. | Service | Data | Description | | ------- | ---- | ----------- | | `set_value` | `value`
    `entity_id(s)` | Set the value for specific `input_text` entities. +| `reload` | | Reload `input_text` configuration | ### Restore State -This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ### Scenes diff --git a/source/_integrations/insteon.markdown b/source/_integrations/insteon.markdown index 65687710a49e..1603cdec73ee 100644 --- a/source/_integrations/insteon.markdown +++ b/source/_integrations/insteon.markdown @@ -1,6 +1,6 @@ --- -title: "Insteon" -description: "Instructions on how to set up an Insteon Modem (PLM or Hub) locally within Home Assistant." +title: Insteon +description: Instructions on how to set up an Insteon Modem (PLM or Hub) locally within Home Assistant. logo: insteon.png ha_category: - Hub @@ -12,6 +12,7 @@ ha_category: - Switch ha_iot_class: Local Push ha_release: 0.39 +ha_domain: insteon --- This integration adds "local push" support for INSTEON Modems allowing linked INSTEON devices to be used within Home Assistant. @@ -96,7 +97,7 @@ host: required: false type: string ip_port: - description: The IP port number of the Hub. For Hub model [2245] (i.e. Hub version 2) the default port is 25105. For the Hub model [2242] (i.e. Hub version 1) the default port is 9761. Use the Insteon app to find the port number for your specific Hub. Optional with Hub. + description: The IP port number of the Hub. For Hub model [2245] (i.e., Hub version 2) the default port is 25105. For the Hub model [2242] (i.e., Hub version 1) the default port is 9761. Use the Insteon app to find the port number for your specific Hub. Optional with Hub. required: true type: integer username: @@ -270,10 +271,10 @@ Mini-Remote devices do not appear as Home Assistant entities, they generate even - **insteon.button_on** - **address**: (required) The Insteon device address in lower case without dots (e.g., 1a2b3c) - - **button**: (Optional) The button id in lower case. For a 4-button remote the values are `a` to `d`. For an 8 button remote the values are `a` to `g`. For a one-button remote this field is not used. + - **button**: (Optional) The button id in lower case. For a 4-button remote the values are `a` to `d`. For an 8 button remote the values are `a` to `h`. For a one-button remote this field is not used. - **insteon.button_off** - **address**: (required) The Insteon device address in lower case without dots (e.g., 1a2b3c) - - **button**: (Optional) The button id in lower case. For a 4-button remote the values are a to d. For an 8 button remote the values are `a` to `g`. For a one-button remote this field is not used. + - **button**: (Optional) The button id in lower case. For a 4-button remote the values are a to d. For an 8 button remote the values are `a` to `h`. For a one-button remote this field is not used. This allows the mini-remotes to be configured as triggers for automations. Here is an example of how to use these events for automations: diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown index f2bd8fbf0864..1f08e847cc3f 100644 --- a/source/_integrations/integration.markdown +++ b/source/_integrations/integration.markdown @@ -1,16 +1,19 @@ --- -title: "Integration Sensor" -description: "Instructions on how to integrate Integration Sensor into Home Assistant." +title: Integration - Riemann sum integral +description: Instructions on how to integrate Integration Sensor into Home Assistant. ha_category: - Utility - Energy ha_release: 0.87 ha_iot_class: Local Push logo: integral.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@dgomes' +ha_domain: integration --- -The `integration` platform provides the [Riemann sum](https://en.wikipedia.org/wiki/Riemann_sum) of the values provided by a source sensor. The Riemann sum is an approximation of an **integral** by a finite sum. The integration sensors is updated upon changes of the the **source**. Fast sampling source sensors provide better results. In this implementation, the default is the Trapezoidal method, but Left and Right methods can optionally be used. +The `integration` platform provides the [Riemann sum](https://en.wikipedia.org/wiki/Riemann_sum) of the values provided by a source sensor. The Riemann sum is an approximation of an **integral** by a finite sum. The integration sensors is updated upon changes of the **source**. Fast sampling source sensors provide better results. In this implementation, the default is the Trapezoidal method, but Left and Right methods can optionally be used. ## Configuration @@ -25,7 +28,7 @@ sensor: {% configuration %} source: - description: The entity ID of the sensor providing numeric readings + description: The entity ID of the sensor providing numeric readings. required: true type: string name: @@ -39,27 +42,27 @@ round: default: 3 type: integer unit_prefix: - description: Metric unit to prefix the integration result. Available units are k, M, G, T. + description: "Metric unit to prefix the integration result. Available units are `k`, `M`, `G` and `T`." required: false default: None type: string unit_time: - description: SI unit of time to integrate over. Available units are s, min, h, d. + description: "SI unit of time to integrate over. Available units are `s`, `min`, `h` and `d`." required: false default: h type: string unit: - description: Unit of Measurement to be used for the integration. + description: Unit of measurement to be used for the integration. required: false type: string method: - description: Riemann sum method to be used. Available methods are trapezoidal, left, right. + description: Riemann sum method to be used. Available methods are `trapezoidal`, `left` and `right`." required: false type: string default: trapezoidal {% endconfiguration %} -If 'unit' is set then 'unit_prefix' and 'unit_time' are ignored. +In case you have an appliance which produces spikey consumption (like an on/off electrical boiler) you should opt for the `left` method to get accurate readings. If `unit` is set then `unit_prefix` and `unit_time` are ignored. ## Energy diff --git a/source/_integrations/intent_script.markdown b/source/_integrations/intent_script.markdown index 46d04c02b96e..48d66bfb9601 100644 --- a/source/_integrations/intent_script.markdown +++ b/source/_integrations/intent_script.markdown @@ -1,11 +1,11 @@ --- -title: "Intent Script" -description: "Instructions on how to setup scripts to run on intents." -logo: home-assistant.png +title: Intent Script +description: Instructions on how to setup scripts to run on intents. ha_category: - Intent -ha_release: "0.50" -ha_qa_scale: internal +ha_release: '0.50' +ha_quality_scale: internal +ha_domain: intent_script --- The `intent_script` integration allows users to configure actions and responses to intents. Intents can be fired by any integration that supports it. Examples are [Alexa](/integrations/alexa/) (Amazon Echo), [Dialogflow](/integrations/dialogflow/) (Google Assistant) and [Snips](/integrations/snips/). diff --git a/source/_integrations/intesishome.markdown b/source/_integrations/intesishome.markdown new file mode 100644 index 000000000000..22152b91f954 --- /dev/null +++ b/source/_integrations/intesishome.markdown @@ -0,0 +1,57 @@ +--- +title: IntesisHome +description: Instructions how to integrate IntesisHome AC devices with Home Assistant +logo: intesishome.png +ha_category: Climate +ha_release: 0.104 +ha_iot_class: Cloud Push +ha_codeowners: + - '@jnimmo' +ha_domain: intesishome +--- + +The `IntesisHome` climate platform lets you control [IntesisHome](https://www.intesishome.com) and [Airconwithme](https://www.airconwithme.com) devices. IntesisHome provides integrations with air conditioners, including Panasonic, Daikin, Fujitsu, Toshiba, LG and more. + +Note: IntesisHome products are a separate product line to IntesisBox. This platform does not support IntesisBox devices (which can be controlled locally using the WMP protocol). + +## Configuration + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +climate: + - platform: intesishome + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: "Your username for [IntesisHome.com](https://user.intesishome.com) / [Airconwithme](https://user.airconwithme.com)" + required: true + type: string +password: + description: Your password for IntesisHome + required: true + type: string +device: + description: "`IntesisHome` or `airconwithme`." + required: false + default: IntesisHome + type: string +{% endconfiguration %} + +This component opens a TCP connection with the IntesisHome API to receive temperature and status updates, and to issue commands. +By default, the component will be named using the friendly device name from the IntesisHome website or application. +If internet connectivity is lost, the device will be marked as unavailable after 5 minutes. + +### Supported services + +Available services: + +- `climate.set_temperature` +- `climate.set_fan_mode` +- `climate.set_operation_mode` +- `climate.set_swing_mode` +- `climate.turn_on` +- `climate.turn_off` diff --git a/source/_integrations/ios.markdown b/source/_integrations/ios.markdown index 449d57d8b634..4aeefb507491 100644 --- a/source/_integrations/ios.markdown +++ b/source/_integrations/ios.markdown @@ -1,11 +1,14 @@ --- -title: "iOS" -description: "Instructions on how to use the iOS companion app with Home Assistant." -logo: apple.png +title: Apple iOS +description: Instructions on how to use the iOS companion app with Home Assistant. ha_category: - Hub ha_release: 0.31 ha_iot_class: Configurable +ha_config_flow: true +ha_codeowners: + - '@robbiet480' +ha_domain: ios --- The `ios` integration is the Home Assistant part for using the iOS companion app. For further details please check the [iOS section](/docs/ecosystem/ios/) in the documentation for further details. diff --git a/source/_integrations/iota.markdown b/source/_integrations/iota.markdown index 607de0487986..67bbc7448178 100644 --- a/source/_integrations/iota.markdown +++ b/source/_integrations/iota.markdown @@ -1,12 +1,13 @@ --- -title: "IOTA" -description: "Instructions on how to integrate IOTA wallets with Home Assistant." +title: IOTA +description: Instructions on how to integrate IOTA wallets with Home Assistant. logo: iota.png ha_category: - Finance - Sensor ha_release: 0.62 ha_iot_class: Cloud Polling +ha_domain: iota --- [IOTA](https://iota.org/) is a new blockless distributed ledger which is scalable, lightweight and makes it possible to transfer value without any fees. diff --git a/source/_integrations/iperf3.markdown b/source/_integrations/iperf3.markdown index 5513ccb726bd..b00362a38c7d 100644 --- a/source/_integrations/iperf3.markdown +++ b/source/_integrations/iperf3.markdown @@ -1,17 +1,19 @@ --- -title: "Iperf3 Sensor" -description: "How to use Iperf3 within Home Assistant to measure your network bandwidth." -logo: iperf3.png +title: Iperf3 +description: How to use Iperf3 within Home Assistant to measure your network bandwidth. ha_category: - System Monitor - Sensor ha_release: 0.71 ha_iot_class: Local Polling +ha_codeowners: + - '@rohankapoorcom' +ha_domain: iperf3 --- The `iperf3` sensor integration allows you to measure network bandwidth performance against a private or public [Iperf3](https://software.es.net/iperf/index.html) server. -Enabling this integration will automatically create the Iperf3 sensors for the monitored conditions (below). By default, it will run every hour. The user can change the update frequency in the config by defining the `scan_interval` for a Iperf3 test to run. +Enabling this integration will automatically create the Iperf3 sensors for the monitored conditions (below). By default, it will run every hour. The user can change the update frequency in the configuration by defining the `scan_interval` for a Iperf3 test to run. ## Setup @@ -96,7 +98,7 @@ scan_interval: milliseconds: 0 ``` -You can find a list of public Iperf3 servers [here](https://iperf.fr/iperf-servers.php). You can also start your own Iperf3 server using the [mlabbe/iperf3's](https://hub.docker.com/r/mlabbe/iperf3/) docker image or just refer to your `iperf3` command's man page. +You can find a list of public Iperf3 servers [here](https://iperf.fr/iperf-servers.php). You can also start your own Iperf3 server using the [mlabbe/iperf3's](https://hub.docker.com/r/mlabbe/iperf3/) Docker image or just refer to your `iperf3` command's man page. The frequency when the test will be automatically triggered can be adjusted by setting the value `scan_interval` in seconds. @@ -109,14 +111,10 @@ You can use the service `sensor.iperf3_update` to trigger a manual speed test fo Once loaded, the `iperf3` integration will expose a service (`iperf3.speedtest`) that can be called to run a speed test on demand. This can be useful if you have enabled manual mode. | Service data attribute | Description | -| `host` | String that point at a configured `host` from configuration.yaml. Otherwise, tests will be run against all configured hosts. +| `host` | String that point at a configured `host` from `configuration.yaml`. Otherwise, tests will be run against all configured hosts. Example Service data: ```json {"host": "192.168.0.121"} ``` - -## Notes - -- When running on Raspberry Pi, just note that the maximum speed is limited by its 100 Mbit/s LAN adapter. diff --git a/source/_integrations/ipma.markdown b/source/_integrations/ipma.markdown index 0edf8d6f9c9e..0f6620dc02f7 100644 --- a/source/_integrations/ipma.markdown +++ b/source/_integrations/ipma.markdown @@ -1,11 +1,16 @@ --- -title: "IPMA" -description: "Instructions on how to integrate Instituto Português do Mar e Atmosfera weather conditions into Home Assistant." +title: Instituto Português do Mar e Atmosfera (IPMA) +description: Instructions on how to integrate Instituto Português do Mar e Atmosfera weather conditions into Home Assistant. logo: ipma.png ha_category: - Weather ha_release: 0.72 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@dgomes' + - '@abmantis' +ha_domain: ipma --- The `ipma` weather platform uses the [Instituto Português do Mar e Atmosfera](https://www.ipma.pt/) as a source for current and forecast meteorological data. @@ -36,4 +41,9 @@ longitude: required: false type: string default: Home Assistant global longitude configuration +mode: + description: "The forecast type. Can be `hourly` or `daily`." + required: false + type: string + default: "`daily`" {% endconfiguration %} diff --git a/source/_integrations/iqvia.markdown b/source/_integrations/iqvia.markdown index b496ee3bb3fb..805ebd272a1e 100644 --- a/source/_integrations/iqvia.markdown +++ b/source/_integrations/iqvia.markdown @@ -1,11 +1,14 @@ --- -title: "IQVIA" -description: "Instructions on how to use IQVIA data within Home Assistant" -logo: iqvia.png +title: IQVIA +description: Instructions on how to use IQVIA data within Home Assistant ha_category: - Health ha_release: 0.63 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@bachya' +ha_domain: iqvia --- The `iqvia` sensor platform collects and displays allergy, asthma and disease @@ -20,21 +23,11 @@ Data measured includes: ## Configuring the Platform To integrate `iqvia` into Home Assistant, add the following section to your -`configuration.yaml` file (adjusting the `monitored_conditions` list to your -liking): +`configuration.yaml` file: ```yaml iqvia: zip_code: "00544" - monitored_conditions: - - allergy_average_forecasted - - allergy_index_today - - allergy_index_tomorrow - - asthma_average_forecasted - - asthma_index_today - - asthma_index_tomorrow - - disease_average_forecasted - - disease_index_today ``` {% configuration %} @@ -42,27 +35,6 @@ zip_code: description: The U.S. ZIP code to gather data for (as a quoted string). required: true type: string -monitored_conditions: - description: The metric types to monitor. - required: true - type: list - keys: - allergy_average_forecasted: - description: "The average forecasted allergy index over the next 5 days." - allergy_index_today: - description: "The allergy index for today." - allergy_index_tomorrow: - description: "The allergy index for tomorrow." - asthma_average_forecasted: - description: "The average forecasted asthma index over the next 5 days." - asthma_index_today: - description: "The asthma index for today." - asthma_index_tomorrow: - description: "The asthma index for tomorrow." - disease_average_forecasted: - description: "The average forecasted cold/flu index over the next 5 days." - disease_index_today: - description: "The cold/flu index for today." {% endconfiguration %}
    diff --git a/source/_integrations/irish_rail_transport.markdown b/source/_integrations/irish_rail_transport.markdown index 96e6fd4244dd..1c3011e35ee9 100644 --- a/source/_integrations/irish_rail_transport.markdown +++ b/source/_integrations/irish_rail_transport.markdown @@ -1,11 +1,14 @@ --- -title: "Irish Rail Transport" -description: "Instructions on how to integrate timetable data for traveling on Irish Rail within Home Assistant." +title: Irish Rail Transport +description: Instructions on how to integrate timetable data for traveling on Irish Rail within Home Assistant. logo: irishrail.png ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.57 +ha_codeowners: + - '@ttroy50' +ha_domain: irish_rail_transport --- The `irish_rail_transport` sensor will give you the time until the next two departures (within 90 minutes) from an Irish Rail station using the RTPI information. diff --git a/source/_integrations/islamic_prayer_times.markdown b/source/_integrations/islamic_prayer_times.markdown index 0e310132f118..dc46065bdfaf 100644 --- a/source/_integrations/islamic_prayer_times.markdown +++ b/source/_integrations/islamic_prayer_times.markdown @@ -1,10 +1,11 @@ --- -title: "Islamic Prayer Times" -description: "Instructions on how to integrate the Islamic Prayer Times sensor within Home Assistant." +title: Islamic Prayer Times +description: Instructions on how to integrate the Islamic Prayer Times sensor within Home Assistant. ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.85 +ha_domain: islamic_prayer_times --- The Islamic Prayer Times (`islamic_prayer_times`) sensor platform displays the various prayer times for Muslims as sensors. diff --git a/source/_integrations/iss.markdown b/source/_integrations/iss.markdown index d1e605bc316c..4db2a0a5bda2 100644 --- a/source/_integrations/iss.markdown +++ b/source/_integrations/iss.markdown @@ -1,10 +1,10 @@ --- -title: "International Space Station" -description: "Know if or when ISS will be above your home location" -logo: nasa.png +title: International Space Station (ISS) +description: Know if or when ISS will be above your home location ha_category: - Binary Sensor ha_release: 0.36 +ha_domain: iss --- The `iss` platform uses the diff --git a/source/_integrations/isy994.markdown b/source/_integrations/isy994.markdown index 9bde4e8c6d18..179e66c56e11 100644 --- a/source/_integrations/isy994.markdown +++ b/source/_integrations/isy994.markdown @@ -1,6 +1,6 @@ --- -title: "ISY994 Controller" -description: "Instructions on how to setup the ISY994 controller within Home Assistant." +title: Universal Devices ISY994 +description: Instructions on how to setup the ISY994 controller within Home Assistant. logo: universal_devices.png ha_category: - Hub @@ -13,6 +13,7 @@ ha_category: - Switch ha_release: 0.28 ha_iot_class: Local Push +ha_domain: isy994 --- The ISY994 is a home automation controller that is capable of controlling Insteon and X10 devices. Some models of the ISY994 can even control Z-Wave devices. diff --git a/source/_integrations/itach.markdown b/source/_integrations/itach.markdown index df89a06320c2..34707e82c133 100644 --- a/source/_integrations/itach.markdown +++ b/source/_integrations/itach.markdown @@ -1,11 +1,12 @@ --- -title: "iTach Remote" -description: "Instructions on how to integrate a Global Caché iTach IP2IR gateway into Home Assistant." +title: Global Caché iTach TCP/IP to IR +description: Instructions on how to integrate a Global Caché iTach IP2IR gateway into Home Assistant. logo: globalcache.png ha_category: - Remote ha_iot_class: Assumed State ha_release: 0.39 +ha_domain: itach --- The `itach` remote platform allows you to control IR devices with a [Global Caché iTach Device](https://www.globalcache.com/products/itach/ip2irspecs) and GC-100 devices. The Global Cache IR API are similar across their product line. See API documentation links at the end of this page. diff --git a/source/_integrations/itunes.markdown b/source/_integrations/itunes.markdown index 315d59af9597..eef80440d253 100644 --- a/source/_integrations/itunes.markdown +++ b/source/_integrations/itunes.markdown @@ -1,14 +1,13 @@ --- -title: "iTunes" -description: "Instructions on how to integrate iTunes into Home Assistant." -logo: itunes.png +title: Apple iTunes +description: Instructions on how to integrate iTunes into Home Assistant. ha_category: - Media Player ha_release: 0.7.3 ha_iot_class: Local Polling +ha_domain: itunes --- - The `itunes` media player platform allows you to control [iTunes](https://apple.com/itunes/) from Home Assistant. It uses a 3rd party server that you run on your Mac called [itunes-api](https://github.com/maddox/itunes-api). Play, pause or skip songs remotely on iTunes running on your Mac. In addition to controlling iTunes, your available AirPlay endpoints will be added as media players as well. You can then individually address them and turn them on, turn them off or adjust their volume. diff --git a/source/_integrations/izone.markdown b/source/_integrations/izone.markdown index ace8b1bff1bb..57d4bece130a 100644 --- a/source/_integrations/izone.markdown +++ b/source/_integrations/izone.markdown @@ -1,10 +1,14 @@ --- -title: "iZone climate control" -description: "Instructions on how to integrate iZone climate control devices with Home Assistant." +title: iZone +description: Instructions on how to integrate iZone climate control devices with Home Assistant. ha_category: - Climate -ha_release: "0.100" +ha_release: '0.100' ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - '@Swamp-Ig' +ha_domain: izone --- The `iZone` integration allows access of control of a local [iZone](https://izone.com.au/) ducted reverse-cycle climate control devices. These are largely available in Australia. diff --git a/source/_integrations/jewish_calendar.markdown b/source/_integrations/jewish_calendar.markdown index 1fd34e689fbb..066efb965c53 100644 --- a/source/_integrations/jewish_calendar.markdown +++ b/source/_integrations/jewish_calendar.markdown @@ -1,10 +1,13 @@ --- -title: "Jewish Calendar" -description: "Instructions on how to integrate the Jewish Calendar integration within Home Assistant." +title: Jewish Calendar +description: Instructions on how to integrate the Jewish Calendar integration within Home Assistant. ha_category: - Calendar ha_iot_class: Local Polling ha_release: 0.79 +ha_codeowners: + - '@tsvi' +ha_domain: jewish_calendar --- The Jewish Calendar (`jewish_calendar`) sensor platform displays a variety of information related to the Jewish Calendar as a variety of sensors. @@ -58,6 +61,7 @@ havdalah_minutes_after_sunset: - weekly_portion: Shows the weekly portion (parshat hashavu'a). - holiday: If it is a holiday, shows the name of the holiday _(see below for more info)_. - omer_count: An integer sensor indicating the day of the Omer (1-49) or 0 if it is not currently the Omer. +- daf_yomi: Shows the date's daf yomi page. ### Time sensors @@ -67,12 +71,18 @@ Time sensor states are represented as ISO8601 formatted *UTC time*. For easier use in automations, all time sensors have a `timestamp` attribute, which returns the UNIX timestamp. - first_light: First light of dawn (Alot Hashachar - עלות השחר). -- gra_end_shma: Last time for reading of the Shma according to the GR"A. +- talit: Earliest time for tallit and tefillin +- gra_end_shma: Last time for reading of the Shma according to the Gr"a. - mga_end_shma: Last time for reading of the Shma according to the MG"A. +- gra_end_tefilla: Last time for full shacharit according to the Gr"a. +- mga_end_tefilla: Last time for full shacharit according to the MG"A. +- big_mincha: Earliest time for Mincha (Mincha Gedola) +- little_mincha: Preferable earliest time for Mincha (Mincha Ketana) - plag_mincha: Time of the Plag Hamincha. -- first_stars: Time at which the first stars are visible (Tset Hakochavim - צאת הכוכבים). +- sunset: Sunset (Shkiya) +- first_stars: Time at which the first stars are visible (Tseit Hakochavim - צאת הכוכבים). - upcoming_shabbat_candle_lighting: The time of candle lighting for either the current Shabbat (if it is currently Shabbat) or the immediately upcoming Shabbat. -- upcoming_shabbat_havdalah: The time of havdalah for either the current Shabbat (if it is currently Shabbat) or the immediately upcoming Shabbat. If it is currently a three-day holiday, this value *could* be None (i.e. if holiday is Sat./Sun./Mon. and it's Saturday, there will be no shabbat_havdalah value. See comments in hdate library for details.) +- upcoming_shabbat_havdalah: The time of havdalah for either the current Shabbat (if it is currently Shabbat) or the immediately upcoming Shabbat. If it is currently a three-day holiday, this value *could* be None (i.e., if holiday is Sat./Sun./Mon. and it's Saturday, there will be no shabbat_havdalah value. See comments in hdate library for details.) - upcoming_candle_lighting: The time of candle lighting for either the current Shabbat OR Yom Tov, or the immediately upcoming Shabbat OR Yom Tov. If, for example, today is Sunday, and Rosh Hashana is Monday night through Wednesday night, this reports the candle lighting for Rosh Hashana on Monday night. This avoids a situation of triggering pre-candle-lighting automations while it is currently Yom Tov. To always get the Shabbat times, use the upcoming_shabbat_candle_lighting sensor. - upcoming_havdalah: The time of havdalah for either the current Shabbat OR Yom Tov, or the immediately upcoming Shabbat OR Yom Tov. If, for example, today is Sunday, and Rosh Hashana is Monday night through Wednesday night, this reports the havdalah for Rosh Hashana on Wednesday night. To always get the Shabbat times, use the upcoming_shabbat_havdalah sensor. @@ -82,53 +92,54 @@ For easier use in automations, all time sensors have a `timestamp` attribute, wh ### Holiday sensor -The holiday sensor includes two attibutes: *type* and *id*. +The holiday sensor includes 3 attributes: *type*, *type_id* and *id*. +The *type_id* is useful for cases to condition automations based on a range of types. The following is the list of holidays the sensor knows about with their selected type: -| ID | English | Hebrew | Type | -|----------------------|----------------------------|-----------------------|---------------------------| -| erev_rosh_hashana | Erev Rosh Hashana | ערב ראש השנה | EREV_YOM_TOV | -| rosh_hashana_i | Rosh Hashana I | א' ראש השנה | YOM_TOV | -| rosh_hashana_ii | Rosh Hashana II | ב' ראש השנה | YOM_TOV | -| tzom_gedaliah | Tzom Gedaliah | צום גדליה | FAST_DAY | -| erev_yom_kippur | Erev Yom Kippur | עיוה"כ | EREV_YOM_TOV | -| yom_kippur | Yom Kippur | יום הכפורים | YOM_TOV | -| erev_sukkot | Erev Sukkot | ערב סוכות | EREV_YOM_TOV | -| sukkot | Sukkot | סוכות | YOM_TOV | -| hol_hamoed_sukkot | Hol hamoed Sukkot | חול המועד סוכות | HOL_HAMOED | -| hoshana_raba | Hoshana Raba | הושענא רבה | EREV_YOM_TOV | -| simchat_torah | Simchat Torah | שמחת תורה | YOM_TOV | -| chanukah | Chanukah | חנוכה | MELACHA_PERMITTED_HOLIDAY | -| asara_btevet | Asara B'Tevet | צום עשרה בטבת | FAST_DAY | -| tu_bshvat | Tu B'Shvat | ט"ו בשבט | MINOR_HOLIDAY | -| taanit_esther | Ta'anit Esther | תענית אסתר | FAST_DAY | -| purim | Purim | פורים | MELACHA_PERMITTED_HOLIDAY | -| shushan_purim | Shushan Purim | שושן פורים | MELACHA_PERMITTED_HOLIDAY | -| erev_pesach | Erev Pesach | ערב פסח | EREV_YOM_TOV | -| pesach | Pesach | פסח | YOM_TOV | -| hol_hamoed_pesach | Hol hamoed Pesach | חול המועד פסח | HOL_HAMOED | -| pesach_vii | Pesach VII | שביעי פסח | YOM_TOV | -| yom_haatzmaut | Yom HaAtzma'ut | יום העצמאות | MODERN_HOLIDAY | -| lag_bomer | Lag B'Omer | ל"ג בעומר | MINOR_HOLIDAY | -| erev_shavuot | Erev Shavuot | ערב שבועות | EREV_YOM_TOV | -| shavuot | Shavuot | שבועות | YOM_TOV | -| tzom_tammuz | Tzom Tammuz | צום שבעה עשר בתמוז | FAST_DAY | -| tisha_bav | Tish'a B'Av | תשעה באב | FAST_DAY | -| tu_bav | Tu B'Av | ט"ו באב | MINOR_HOLIDAY | -| yom_hashoah | Yom HaShoah | יום השואה | MEMORIAL_DAY | -| yom_hazikaron | Yom HaZikaron | יום הזכרון | MEMORIAL_DAY | -| yom_yerushalayim | Yom Yerushalayim | יום ירושלים | MODERN_HOLIDAY | -| shmini_atzeret | Shmini Atzeret | שמיני עצרת | YOM_TOV | -| pesach_viii | Pesach VIII | אחרון של פסח | YOM_TOV | -| shavuot_ii | Shavuot II | שני של שבועות | YOM_TOV | -| sukkot_ii | Sukkot II | שני של סוכות | YOM_TOV | -| pesach_ii | Pesach II | שני של פסח | YOM_TOV | -| family_day | Family Day | יום המשפחה | ISRAEL_NATIONAL_HOLIDAY | -| memorial_day_unknown | Memorial day for fallen whose place of burial is unknown | יום זכרון... | MEMORIAL_DAY | -| rabin_memorial_day | Yitzhak Rabin memorial day | יום הזכרון ליצחק רבין | MEMORIAL_DAY | -| zeev_zhabotinsky_day | Zeev Zhabotinsky day | יום ז'בוטינסקי | MEMORIAL_DAY | +| ID | English | Hebrew | Type | +|----------------------|----------------------------|-----------------------|--------------------------------| +| erev_rosh_hashana | Erev Rosh Hashana | ערב ראש השנה | EREV_YOM_TOV (2) | +| rosh_hashana_i | Rosh Hashana I | א' ראש השנה | YOM_TOV (1) | +| rosh_hashana_ii | Rosh Hashana II | ב' ראש השנה | YOM_TOV (1) | +| tzom_gedaliah | Tzom Gedaliah | צום גדליה | FAST_DAY (5) | +| erev_yom_kippur | Erev Yom Kippur | עיוה"כ | EREV_YOM_TOV (2) | +| yom_kippur | Yom Kippur | יום הכפורים | YOM_TOV (1) | +| erev_sukkot | Erev Sukkot | ערב סוכות | EREV_YOM_TOV (2) | +| sukkot | Sukkot | סוכות | YOM_TOV (1) | +| hol_hamoed_sukkot | Hol hamoed Sukkot | חול המועד סוכות | HOL_HAMOED (3) | +| hoshana_raba | Hoshana Raba | הושענא רבה | EREV_YOM_TOV (2) | +| simchat_torah | Simchat Torah | שמחת תורה | YOM_TOV (1) | +| chanukah | Chanukah | חנוכה | MELACHA_PERMITTED_HOLIDAY (4) | +| asara_btevet | Asara B'Tevet | צום עשרה בטבת | FAST_DAY (5) | +| tu_bshvat | Tu B'Shvat | ט"ו בשבט | MINOR_HOLIDAY (7) | +| taanit_esther | Ta'anit Esther | תענית אסתר | FAST_DAY (5) | +| purim | Purim | פורים | MELACHA_PERMITTED_HOLIDAY (4) | +| shushan_purim | Shushan Purim | שושן פורים | MELACHA_PERMITTED_HOLIDAY (4) | +| erev_pesach | Erev Pesach | ערב פסח | EREV_YOM_TOV (2) | +| pesach | Pesach | פסח | YOM_TOV (1) | +| hol_hamoed_pesach | Hol hamoed Pesach | חול המועד פסח | HOL_HAMOED (3) | +| pesach_vii | Pesach VII | שביעי פסח | YOM_TOV (1) | +| yom_haatzmaut | Yom HaAtzma'ut | יום העצמאות | MODERN_HOLIDAY (6) | +| lag_bomer | Lag B'Omer | ל"ג בעומר | MINOR_HOLIDAY (7) | +| erev_shavuot | Erev Shavuot | ערב שבועות | EREV_YOM_TOV (2) | +| shavuot | Shavuot | שבועות | YOM_TOV (1) | +| tzom_tammuz | Tzom Tammuz | צום שבעה עשר בתמוז | FAST_DAY (5) | +| tisha_bav | Tish'a B'Av | תשעה באב | FAST_DAY (5) | +| tu_bav | Tu B'Av | ט"ו באב | MINOR_HOLIDAY (7) | +| yom_hashoah | Yom HaShoah | יום השואה | MEMORIAL_DAY (8) | +| yom_hazikaron | Yom HaZikaron | יום הזכרון | MEMORIAL_DAY (8) | +| yom_yerushalayim | Yom Yerushalayim | יום ירושלים | MODERN_HOLIDAY (6) | +| shmini_atzeret | Shmini Atzeret | שמיני עצרת | YOM_TOV (1) | +| pesach_viii | Pesach VIII | אחרון של פסח | YOM_TOV (1) | +| shavuot_ii | Shavuot II | שני של שבועות | YOM_TOV (1) | +| sukkot_ii | Sukkot II | שני של סוכות | YOM_TOV (1) | +| pesach_ii | Pesach II | שני של פסח | YOM_TOV (1) | +| family_day | Family Day | יום המשפחה | ISRAEL_NATIONAL_HOLIDAY (9) | +| memorial_day_unknown | Memorial day for fallen whose place of burial is unknown | יום זכרון... | MEMORIAL_DAY (8) | +| rabin_memorial_day | Yitzhak Rabin memorial day | יום הזכרון ליצחק רבין | MEMORIAL_DAY (8) | +| zeev_zhabotinsky_day | Zeev Zhabotinsky day | יום ז'בוטינסקי | MEMORIAL_DAY (8) | ## Full configuration sample diff --git a/source/_integrations/joaoapps_join.markdown b/source/_integrations/joaoapps_join.markdown index 06fbffeff2d8..f9b73fcdc39e 100644 --- a/source/_integrations/joaoapps_join.markdown +++ b/source/_integrations/joaoapps_join.markdown @@ -1,11 +1,11 @@ --- -title: "Joaoapps Join" -description: "Instructions for how to integrate the Join by Joaoapps service within Home Assistant." -logo: joaoapps_join.png +title: Joaoapps Join +description: Instructions for how to integrate the Join by Joaoapps service within Home Assistant. ha_category: - Hub - Notifications ha_release: 0.24 +ha_domain: joaoapps_join --- The `joaoapps_join` integration exposes services from @@ -14,8 +14,8 @@ divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the component allows us to access the other special features that Join offers. When in doubt, you can reference the [API documentation](https://joaoapps.com/join/api/) this is based on. -In the `configuration.yaml` file you need to provide the api key and device id -or name of the target device. You can find your device id and api key +In the `configuration.yaml` file you need to provide the API key and device id +or name of the target device. You can find your device id and API key [here](https://joinjoaomgcd.appspot.com/). To set it up, add the following information to your `configuration.yaml` file: diff --git a/source/_integrations/juicenet.markdown b/source/_integrations/juicenet.markdown index 15fca05b5ac1..2eec56c6ca45 100644 --- a/source/_integrations/juicenet.markdown +++ b/source/_integrations/juicenet.markdown @@ -1,6 +1,6 @@ --- -title: "Juicenet" -description: "Instructions on how to setup WiFi-equipped Juicenet charging stations with Home Assistant." +title: JuiceNet +description: Instructions on how to setup WiFi-equipped Juicenet charging stations with Home Assistant. logo: juicenet.png ha_category: - Car @@ -9,9 +9,12 @@ ha_category: - Switch ha_iot_class: Cloud Polling ha_release: 0.47 +ha_codeowners: + - '@jesserockz' +ha_domain: juicenet --- -The `juicenet` sensor platform pulls data from a [JuiceNet](https://emotorwerks.com/products/juicenet/) charging station equipped with a wifi connection. It will access and make available all of the devices attached to your account. It also exposes a switch allowing you to charge your car now instead of waiting for the pre-set schedule. +The `juicenet` sensor platform pulls data from a [JuiceNet](https://emotorwerks.com/products/juicenet/) charging station equipped with a Wi-Fi connection. It will access and make available all of the devices attached to your account. It also exposes a switch allowing you to charge your car now instead of waiting for the pre-set schedule. ## Configuration @@ -36,7 +39,7 @@ The `juicenet` sensor platform allows you to get data from your [JuiceNet](https ### Added sensors -These sensors will be added for each juicenet device in your account: +These sensors will be added for each JuiceNet device in your account: - Status - Temperature (inside the device) diff --git a/source/_integrations/kaiterra.markdown b/source/_integrations/kaiterra.markdown index 0ff306b15387..ec9626cb431c 100644 --- a/source/_integrations/kaiterra.markdown +++ b/source/_integrations/kaiterra.markdown @@ -1,11 +1,13 @@ --- -title: "Kaiterra" -description: "Instructions on how to integrate your Kaiterra device into Home Assistant." -logo: kaiterra.svg +title: Kaiterra +description: Instructions on how to integrate your Kaiterra device into Home Assistant. ha_iot_class: Cloud Polling ha_category: - Health -ha_release: "0.100" +ha_release: '0.100' +ha_codeowners: + - '@Michsior14' +ha_domain: kaiterra --- The `kaiterra` integration allows you to view the readings from your Laser Egg or Sensedge device using the [Kaiterra REST API](https://www.kaiterra.com/dev/). diff --git a/source/_integrations/kankun.markdown b/source/_integrations/kankun.markdown index 8c7c92c05c5d..7dc3aa4f7c08 100644 --- a/source/_integrations/kankun.markdown +++ b/source/_integrations/kankun.markdown @@ -1,13 +1,14 @@ --- -title: "Kankun SP3 Wifi Switch" -description: "Instructions for the Kankun SP3 Wifi switch" +title: Kankun +description: Instructions for the Kankun SP3 Wifi switch ha_category: - Switch ha_release: 0.36 ha_iot_class: Local Polling +ha_domain: kankun --- -The `kankun` switch platform allows you to toggle customized Kankun SP3 Wifi switches. Switches are +The `kankun` switch platform allows you to toggle customized Kankun SP3 Wi-Fi switches. Switches are modified to include the [json.cgi](https://github.com/homedash/kankun-json/blob/master/cgi-bin/json.cgi) script to provide an HTTP API. Details of the necessary modifications can be found [here](http://www.homeautomationforgeeks.com/openhab_http.shtml#kankun) (be sure to install the JSON version diff --git a/source/_integrations/keba.markdown b/source/_integrations/keba.markdown index 07ba54e7cbb9..fd41c73073cb 100644 --- a/source/_integrations/keba.markdown +++ b/source/_integrations/keba.markdown @@ -1,15 +1,18 @@ --- -title: "Keba Charging Station" -description: "Instructions on how to setup your Keba charging station with Home Assistant." +title: Keba Charging Station +description: Instructions on how to setup your Keba charging station with Home Assistant. logo: keba.png ha_category: - Binary Sensor - Lock - Sensor ha_release: 0.98 +ha_codeowners: + - '@dannerph' +ha_domain: keba --- -The `keba` integrates your Keba charging station (wallbox) into your home assistant instance. It was tested with a BMW Wallbox but should also work with a Keba P20/P30 according to the developers [manual](https://www.keba.com/web/downloads/e-mobility/KeContact_P20_P30_UDP_ProgrGuide_en.pdf). The fetching interval to the charging station is set to 5 seconds, same as in the official mobile app. +The `keba` integrates your Keba charging station (wallbox) into your Home Assistant instance. It was tested with a BMW Wallbox but should also work with a Keba P20/P30 according to the developers [manual](https://www.keba.com/web/downloads/e-mobility/KeContact_P20_P30_UDP_ProgrGuide_en.pdf). The fetching interval to the charging station is set to 5 seconds, same as in the official mobile app. This component provides the following platforms: @@ -44,7 +47,7 @@ keba: type: string default: "00845500" failsafe: - description: Enable failsafe mode at home assistant startup. + description: Enable failsafe mode at Home Assistant startup. required: false type: boolean default: false diff --git a/source/_integrations/keenetic_ndms2.markdown b/source/_integrations/keenetic_ndms2.markdown index edafdf0b1cd1..ed6e47b195c8 100644 --- a/source/_integrations/keenetic_ndms2.markdown +++ b/source/_integrations/keenetic_ndms2.markdown @@ -1,10 +1,13 @@ --- -title: "Keenetic NDMS2 Routers" -description: "Instructions on how to integrate Keenetic NDMS2 Routers into Home Assistant." +title: Keenetic NDMS2 Routers +description: Instructions on how to integrate Keenetic NDMS2 Routers into Home Assistant. logo: keenetic.png ha_category: - Presence Detection ha_release: 0.54 +ha_codeowners: + - '@foxel' +ha_domain: keenetic_ndms2 --- This integration offers presence detection by examining devices connected to a [Keenetic](https://keenetic.net/) diff --git a/source/_integrations/kef.markdown b/source/_integrations/kef.markdown new file mode 100644 index 000000000000..fddf9941b9b0 --- /dev/null +++ b/source/_integrations/kef.markdown @@ -0,0 +1,95 @@ +--- +title: KEF +description: Instructions on how to integrate KEF Speakers into Home Assistant. +ha_category: + - Media Player +ha_iot_class: Local Polling +ha_release: 0.104 +ha_codeowners: + - '@basnijholt' +ha_domain: kef +--- + +The `kef` platform allows you to control the [KEF LS50 Wireless](https://international.kef.com/products/ls50-wireless) and [KEF LSX](https://international.kef.com/products/lsx) speakers from Home Assistant. + +Supported devices: + +- KEF LS50 Wireless +- KEF LSX + +To add KEF Speakers to your installation, add the following to your `configuration.yaml` file: + +## Configuration + +```yaml +# Example configuration.yaml entry +media_player: + - platform: kef + host: IP_ADDRESS + type: LS50 +``` + +{% configuration %} +host: + description: "IP address of the device. Example: 192.168.1.32" + required: true + type: string +type: + description: The speaker type, either `LS50` or `LSX`. + required: true + type: string +name: + description: The name of the device + required: false + default: KEF + type: string +port: + description: The port of the device + required: false + default: 50001 + type: integer +maximum_volume: + description: Maximum volume allowed. Number between 0 and 1. + required: false + default: 0.5 + type: float +volume_step: + description: Volume step when increasing volume. + required: false + default: 0.05 + type: float +inverse_speaker_mode: + description: Switch channels from L/R to R/L. + required: false + default: false + type: boolean +standby_time: + description: The speakers automatically turn to standby mode after either `20` or `60` minutes. Leave out for the speaker to never go into standby mode. + required: false + type: integer +supports_on: + description: LS50 Wireless with a serial number below LS50W13074K24L/R2G do not support turning on the speakers over the network. Set this to false if you have an older model. + default: true + required: false + type: integer +{% endconfiguration %} + +## Advanced configuration example + +```yaml +# Example configuration.yaml entry +media_player: + - platform: kef + host: IP_ADDRESS + type: LS50 + name: My KEF speakers + maximum_volume: 0.6 + volume_step: 0.05 +``` + +Notes: + +- The LS50 Wireless was tested with the latest firmware of 19-11-2019: `p6.3001902221.105039422` and older firmware: `p6.2101809171.105039422` +- The LSX Wireless was tested with the latest firmware of 10-10-2019 v4.1: `p20.4101909240.105243` + +[KEF Speakers]: /integrations/kef/ diff --git a/source/_integrations/keyboard.markdown b/source/_integrations/keyboard.markdown index 9443bd255fef..8c4a4bf91f61 100644 --- a/source/_integrations/keyboard.markdown +++ b/source/_integrations/keyboard.markdown @@ -1,10 +1,10 @@ --- -title: "Keyboard" -description: "Instructions on how to simulate key presses with Home Assistant." -logo: keyboard.png +title: Keyboard +description: Instructions on how to simulate key presses with Home Assistant. ha_category: - Automation ha_release: pre 0.7 +ha_domain: keyboard --- The `keyboard` integration simulates key presses on the host machine. It currently offers the following Buttons as a Service (BaaS): @@ -34,4 +34,4 @@ pip3 install [package name] x64 Windows users may have trouble installing pywin through pip. Using an [executable installer](https://sourceforge.net/projects/pywin32/files/pywin32/) should work around this issue. -[Similar installers](https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook) (unofficial) for pyhook have been ported to python 3.4 and should help with x64 pip issues with pyhook. +[Similar installers](https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook) (unofficial) for pyhook have been ported to Python 3.4 and should help with x64 pip issues with pyhook. diff --git a/source/_integrations/keyboard_remote.markdown b/source/_integrations/keyboard_remote.markdown index 39a040962ca6..7dd54f8c307d 100644 --- a/source/_integrations/keyboard_remote.markdown +++ b/source/_integrations/keyboard_remote.markdown @@ -1,11 +1,13 @@ --- -title: "Keyboard Remote" -description: "Instructions on how to use a keyboard to remote control Home Assistant." -logo: keyboard.png +title: Keyboard Remote +description: Instructions on how to use a keyboard to remote control Home Assistant. ha_category: - Other ha_release: 0.29 ha_iot_class: Local Push +ha_codeowners: + - '@bendavid' +ha_domain: keyboard_remote --- Receive signals from a keyboard and use it as a remote control. @@ -50,7 +52,7 @@ device_name: type: string {% endconfiguration %} -Either `device_name` or `device_descriptor` must be present in the configuration entry. Indicating a device name is useful in case of repeating disconnections and re-connections of the device (for example, a bluetooth keyboard): the local input device file might change, thus breaking the configuration, while the name remains the same. +Either `device_name` or `device_descriptor` must be present in the configuration entry. Indicating a device name is useful in case of repeating disconnections and re-connections of the device (for example, a Bluetooth keyboard): the local input device file might change, thus breaking the configuration, while the name remains the same. In case of presence of multiple devices of the same model, `device_descriptor` must be used. A list of possible device descriptors and names is reported in the debug log at startup when the device indicated in the configuration entry could not be found. @@ -94,7 +96,7 @@ automation: entity_id: light.all ``` -`device_descriptor` or `device_name` may be specificed in the trigger so the automation will be fired only for that keyboard. This is especially useful if you wish to use several bluetooth remotes to control different devices. Omit them to ensure the same key triggers the automation for all keyboards/remotes. +`device_descriptor` or `device_name` may be specificed in the trigger so the automation will be fired only for that keyboard. This is especially useful if you wish to use several Bluetooth remotes to control different devices. Omit them to ensure the same key triggers the automation for all keyboards/remotes. ## Disconnections diff --git a/source/_integrations/kira.markdown b/source/_integrations/kira.markdown index 3e5eb9c3ece7..b469a682be4c 100644 --- a/source/_integrations/kira.markdown +++ b/source/_integrations/kira.markdown @@ -1,12 +1,13 @@ --- -title: "Kira" -description: "Instructions on how to integrate Keene Electronics IR over IP modules (Kira) into Home Assistant." +title: Kira +description: Instructions on how to integrate Keene Electronics IR over IP modules (Kira) into Home Assistant. logo: keene.png ha_category: - Hub - Remote - Sensor ha_release: 0.45 +ha_domain: kira --- The `kira` integration is the main integration to integrate Keene Electronics IR over IP [Kira](https://www.keene.co.uk/keene-ir-anywhere-single-worldwide.html) modules with Home Assistant. diff --git a/source/_integrations/kiwi.markdown b/source/_integrations/kiwi.markdown index 9aaa8cf58048..521da6710339 100644 --- a/source/_integrations/kiwi.markdown +++ b/source/_integrations/kiwi.markdown @@ -1,11 +1,11 @@ --- -title: "KIWI Lock" -description: "Instructions on how to integrate KIWI Smart Lock and Smart Entry." -logo: kiwi.png +title: KIWI +description: Instructions on how to integrate KIWI Smart Lock and Smart Entry. ha_category: - Lock ha_release: 0.72 ha_iot_class: Cloud Polling +ha_domain: kiwi --- The `KIWI` platform allows you to open your KIWI Smart Locks and Smart Entry Devices. diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index e1cbe9097254..cf0e0a9e67f6 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -1,11 +1,13 @@ --- -title: "KNX" -description: "Instructions on how to integrate KNX components with Home Assistant." -logo: knx.png +title: KNX +description: Instructions on how to integrate KNX components with Home Assistant. ha_category: - Hub ha_release: 0.24 ha_iot_class: Local Push +ha_codeowners: + - '@Julius2342' +ha_domain: knx --- The [KNX](https://www.knx.org) integration for Home Assistant allows you to connect to a KNX/IP devices. @@ -41,6 +43,7 @@ Optional, recommended for large KNX installations (>100 devices) and/or if you w knx: config_file: '/path/to/xknx.yaml' ``` + {% configuration %} config_file: description: The path for XKNX configuration file. @@ -106,11 +109,11 @@ fire_event: type: boolean default: false fire_event_filter: - description: If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HOme Assistant event bus. + description: If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the Home Assistant event bus. required: inclusive type: [list, string] state_updater: - description: The integration will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behavior. + description: The integration will collect the current state of each configured device from the KNX bus to display it correctly within Home Assistant. Set this option to False to prevent this behavior. required: false default: true type: boolean @@ -135,7 +138,7 @@ payload: type: [integer, list] {% endconfiguration %} -### Exposing sensor values or time to knx bus +### Exposing sensor values or time to KNX bus KNX integration is able to expose time or sensor values to KNX bus. The integration will broadcast any change of the exposed value to the KNX bus and answer read requests to the specified group address: diff --git a/source/_integrations/kodi.markdown b/source/_integrations/kodi.markdown index 01e48287370a..ccddd381eca3 100644 --- a/source/_integrations/kodi.markdown +++ b/source/_integrations/kodi.markdown @@ -1,12 +1,15 @@ --- -title: "Kodi" -description: "Instructions on how to integrate Kodi into Home Assistant." +title: Kodi +description: Instructions on how to integrate Kodi into Home Assistant. logo: kodi.png ha_category: - Notifications - Media Player ha_release: pre 0.7 ha_iot_class: Local Push +ha_codeowners: + - '@armills' +ha_domain: kodi --- The `kodi` platform allows you to control a [Kodi](https://kodi.tv/) multimedia system from Home Assistant. @@ -85,7 +88,7 @@ timeout: #### Service `kodi.add_to_playlist` -Add music to the default playlist (i.e. playlistid=0). +Add music to the default playlist (i.e., playlistid=0). | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -97,17 +100,17 @@ Add music to the default playlist (i.e. playlistid=0). #### Service `kodi.call_method` -Call a [Kodi JSONRPC API](https://kodi.wiki/?title=JSON-RPC_API) method with optional parameters. Results of the Kodi API call will be redirected in a Home Assistant event: `kodi_call_method_result`. +Call a [Kodi JSON-RPC API](https://kodi.wiki/?title=JSON-RPC_API) method with optional parameters. Results of the Kodi API call will be redirected in a Home Assistant event: `kodi_call_method_result`. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | Name(s) of the Kodi entities where to run the API method. | -| `method` | yes | Name of the Kodi JSONRPC API method to be called. | +| `method` | yes | Name of the Kodi JSON-RPC API method to be called. | | any other parameter | no | Optional parameters for the Kodi API call. | ### Event triggering -When calling the `kodi.call_method` service, if the Kodi JSONRPC API returns data, when received by Home Assistant it will fire a `kodi_call_method_result` event on the event bus with the following `event_data`: +When calling the `kodi.call_method` service, if the Kodi JSON-RPC API returns data, when received by Home Assistant it will fire a `kodi_call_method_result` event on the event bus with the following `event_data`: ```yaml entity_id: "" @@ -122,7 +125,7 @@ With the `turn_on_action` and `turn_off_action` parameters you can run any combi #### Turn on Kodi with Wake on LAN -With this configuration, when calling `media_player/turn_on` on the Kodi device, a _magic packet_ will be sent to the specified MAC address. To use this service, first you need to config the [`wake_on_lan`](/integrations/wake_on_lan) integration in Home Assistant, which is achieved simply by adding `wake_on_lan:` to your `configuration.yaml`. +With this configuration, when calling `media_player/turn_on` on the Kodi device, a _magic packet_ will be sent to the specified MAC address. To use this service, first you need to configuration the [`wake_on_lan`](/integrations/wake_on_lan) integration in Home Assistant, which is achieved simply by adding `wake_on_lan:` to your `configuration.yaml`. ```yaml media_player: @@ -235,7 +238,7 @@ media_player:
    -This example and the following requires to have the [script.json-cec](https://github.com/joshjowen/script.json-cec) plugin installed on your kodi player. It'll also expose the endpoints standby, toggle and activate without authentication on your kodi player. Use this with caution. +This example and the following requires to have the [script.json-cec](https://github.com/joshjowen/script.json-cec) plugin installed on your Kodi player. It'll also expose the endpoints standby, toggle and activate without authentication on your Kodi player. Use this with caution.
    @@ -275,6 +278,26 @@ script: ``` {% endraw %} +#### Simple script to play a smart playlist + +{% raw %} +```yaml +script: + play_kodi_smp: + alias: Turn on the silly box with random Firefighter Sam episode + sequence: + - alias: TV on + service: media_player.turn_on + data: + entity_id: media_player.kodi + - service: media_player.play_media + data: + entity_id: media_player.kodi + media_content_type: DIRECTORY + media_content_id: special://profile/playlists/video/feuerwehrmann_sam.xsp +``` +{% endraw %} + #### Trigger a Kodi video library update ```yaml @@ -318,7 +341,7 @@ port: default: 8080 type: integer proxy_ssl: - description: Connect to kodi with HTTPS. Useful if Kodi is behind an SSL proxy. + description: Connect to Kodi with HTTPS. Useful if Kodi is behind an SSL proxy. required: false default: "`false`" type: boolean @@ -363,7 +386,7 @@ data: type: map keys: icon: - description: "Kodi comes with 3 default icons: `info`, `warning` and `error`, an URL to an image is also valid." + description: "Kodi comes with 3 default icons: `info`, `warning` and `error`, a URL to an image is also valid." required: false default: "`info`" type: string diff --git a/source/_integrations/konnected.markdown b/source/_integrations/konnected.markdown index 4d537224d014..8849ee4be7a6 100644 --- a/source/_integrations/konnected.markdown +++ b/source/_integrations/konnected.markdown @@ -1,37 +1,93 @@ --- -title: "Konnected" -description: "Connect wired alarm sensors and siren using the NodeMCU based Konnected Alarm Panel" +title: Konnected +description: Connect wired alarm sensors and siren using the NodeMCU based Konnected Alarm Panel logo: konnected.png ha_category: - Alarm - Binary Sensor - Switch - Sensor -ha_release: "0.70" +ha_release: '0.70' +ha_codeowners: + - '@heythisisnate' + - '@kit-klein' +ha_config_flow: true +ha_domain: konnected --- -The `konnected` integration lets you connect wired sensors and switches to a NodeMCU ESP8226 based device running the [open source Konnected software](https://github.com/konnected-io/konnected-security). Reuse the wired sensors and siren from an old or pre-wired alarm system installation and integrate them directly into Home Assistant. +The `konnected` integration lets you connect wired sensors and switches to a Konnected Alarm Panel, or NodeMCU ESP8226 based device running the [open source Konnected software](https://github.com/konnected-io/konnected-security). Reuse the wired sensors and siren from an old or pre-wired alarm system installation and integrate them directly into Home Assistant. Visit the [Konnected.io website](https://konnected.io) for more information about the Konnected Alarm Panel board and compatible hardware. +
    + +Always ensure your panel is running the [latest firmware](https://help.konnected.io/support/solutions/folders/32000035066) before connecting it to Home Assistant. + +
    + The integration currently supports the following device types in Home Assistant: - Binary Sensor: Wired door and window sensors, motion detectors, glass-break detectors, leak sensors, smoke & CO detectors or any open/close switch. - Switch: Actuate a siren, strobe, buzzer or relay module. - Sensor: Periodic measurements from DHT temperature/humidity sensors and DS18B20 temperature sensors. -This integration uses the [`discovery`](/integrations/discovery) component, which must be enabled for device discovery to work. If you don't want to use discovery, set the _host_ and _port_ for each device in the description. +This integration uses the [SSDP](/integrations/ssdp) integration, which must be enabled for device discovery to work. If you don't want to use SSDP you'll need to manually provide the IP and Port information for each Konnected Panel. The IP/Port info can be found using the Konnected mobile app.
    -Konnected devices communicate with Home Assistant over your local LAN -- there is no cloud component! For best performance we recommend allowing unsecured HTTP API traffic between Konnected devices and Home Assistant on your LAN. This means that you should not use the `http` integration to serve SSL/TLS certificates. Instead, use a proxy like Nginx or Caddy to serve SSL/TLS. [Read more.](https://help.konnected.io/support/solutions/articles/32000023964-set-up-hass-io-with-secure-remote-access-using-duckdns-and-nginx-proxy) +Konnected devices communicate with Home Assistant over your local LAN -- there is no cloud component! For best performance we recommend allowing unsecured HTTP API traffic between Konnected devices and Home Assistant on your LAN. This means that you should not use the `http` integration to serve SSL/TLS certificates. Instead, use a proxy like NGINX or Caddy to serve SSL/TLS. [Read more.](https://help.konnected.io/support/solutions/articles/32000023964-set-up-hass-io-with-secure-remote-access-using-duckdns-and-nginx-proxy)
    -### Configuration +## Configuration + +### Web Interface + +Starting with 0.106.0 Home Assistant requires UI based configuration of Konnected via **Configuration** -> **Integrations** in the Home Assistant (web) frontend. If you have Konnected Alarm Panels on your LAN, or in your configuration.yaml, you will see one or more **Konnected.io** entries appear in the **Discovered** integrations list. + +Selecting one of these discovered panels will guide you through connecting and configuring the panel. If your panel was discovered via SSDP, you shouldn't need any information to complete configuration - simply confirm that the information displayed is correct. If the UI prompts you for IP/Port, you'll need to enter it. IP/Port info can be found using the Konnected mobile app. + +
    + +If you have an existing `configuration.yaml` completing the UI configuration will do a one time import of the settings contained in `configuration.yaml`. Once the import creates a **Configured** integration the Konnected section of the `configuration.yaml` is no longer used - it is recommended to remove the `konnected` section of `configuration.yaml` and after the import occurs. Any future changes to settings should occur via the settings provided in the Home Assistant web interface. + +If you want to retain `configuration.yaml` and need to re-import any changes or updates you will need to delete the entry in **Configuration** -> **Integrations** -> **Configured** and repeat the UI configuration for that device. + +
    -A `konnected` section must be present in the `configuration.yaml` file that specifies the Konnected devices on the network and the sensors or actuators attached to them: +Once configuration is completed you'll see a Konnected.io entry in **Configuration** -> **Integrations** => **Configured**. If you imported settings from `configuration.yaml` you are now done! If you are setting up a new Konnected Alarm Panel or modifying settings, you'll need to utilize the settings UI to configure zone behavior. +#### Using Settings UI to Configure Zone Behavior + +The settings for each panel can be accessed by selecting the entry in **Configuration** -> **Integrations** => **Configured** and then clicking on the gear icon in the upper right corner. You can reconfigure these settings at any time and once completed the settings will be immediately applied. + +The settings UI starts by having you configure the general behavior of each zone. You need to specify `Disabled`, `Binary Sensor`, `Digital Sensor`, or `Switchable Output` for each zone. After that, you'll be prompted, for each zone that is not disabled, to configure details of the zones' behavior. All zones will allow entry of a Name. Additional fields depend on how you configured the general behavior of the zone. + +##### Binary Sensor: + +**Binary Sensor Type:** The type of sensor connected to the zone. +**Name (optional)** The friendly name for the entity associated with the zone. +**Invert the open/close state:** Inverts the open/closed meaning of a binary sensor circuit. Commonly needed for normally open wired smoke alarm circuits. + +##### Digital Sensor: + +**Sensor Type:** The type of sensor connected to the zone - either `dht` or `ds18b20`. +**Name (optional)** The friendly name for the entities associated with the zone. +**Poll Interval (optional):** How often in minutes to poll the sensor for updates. + +##### Switchable Output: + +**Name: (optional)** The friendly name for the entity associated with the zone. +**Output when on:** The state of the switch when activated. +**Pulse Duration (optional):** The duration in ms to pulse the switch once activated. +**Pause between pulses (optional):** The duration in ms to wait between pulses when activated. +**Times to repeat (optional):** The number of times to repeat the pulse each time the switch is activated. + +### YAML Configuration + +If you prefer you can utilize a `konnected` section in the `configuration.yaml` file that specifies the Konnected devices on the network and the sensors or actuators attached to them. If using `configuration.yaml` the configuration will be one-time imported when going through the Configuration Flow for the panel. **Note that you must still complete the UI based setup before the integration will be configured and entities created/accessible.** + +Details of the configuration fields and values can be found below. ```yaml # Example configuration.yaml entry konnected: @@ -67,7 +123,7 @@ devices: type: list keys: id: - description: The MAC address of the NodeMCU WiFi module with colons/punctuation removed, for example `68c63a8bcd53`. You can usually find the mac address in your router's client list. Or, check the home-assistant.log for log messages from automatically discovered devices. + description: The MAC address of the Konnected device with colons/punctuation removed, for example, `68c63a8bcd53`. You can usually find the mac address in your router's client list. Or, check the `home-assistant.log` for log messages from automatically discovered devices. required: true type: string binary_sensors: @@ -76,10 +132,10 @@ devices: type: list keys: pin: - description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are `1`, `2`, `5`, `6`, `7` and `9`. + description: See [Configuration Notes](#configuration-notes). required: exclusive zone: - description: The number corresponding to the labeled zone on the [Konnected Alarm Panel](https://konnected.io) board. Valid values are `1`, `2`, `3`, `4`, `5` and `6`. + description: See [Configuration Notes](#configuration-notes). required: exclusive type: description: Any [binary sensor](/integrations/binary_sensor/) class, typically `door`, `window`, `motion` or `smoke`. @@ -99,10 +155,10 @@ devices: type: list keys: pin: - description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values for sensors are `1`, `2`, `5`, `6`, `7` and `9`. + description: See [Configuration Notes](#configuration-notes). required: exclusive zone: - description: The number corresponding to the labeled zone on the [Konnected Alarm Panel](https://konnected.io) board. Valid values for sensors are `1`, `2`, `3`, `4`, `5` and `6`. + description: See [Configuration Notes](#configuration-notes). required: exclusive name: description: The name of the device used in the front end. @@ -122,10 +178,10 @@ devices: type: list keys: pin: - description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are 1, 2, 5, 6, 7 and 8. + description: See [Configuration Notes](#configuration-notes). required: exclusive zone: - description: The number corresponding to the labeled zone on the [Konnected Alarm Panel](https://konnected.io) board or the word `out` to specify the dedicated ALARM/OUT terminal on the Konnected board. Valid values are `1`, `2`, `3`, `4`, `5` and `out`. + description: See [Configuration Notes](#configuration-notes). required: exclusive name: description: The name of the device used in the front end. @@ -144,7 +200,7 @@ devices: repeat: description: Number of times to repeat a momentary pulse. Set to `-1` to make an infinite repeat. This is useful as an alarm or warning when used with a piezo buzzer. required: false - host: + host: type: string required: false description: Optionally specify the Konnected device's IP address or hostname to set up without discovery. @@ -165,12 +221,15 @@ devices: {% endconfiguration%} -#### Configuration Notes +### Configuration Notes -- Either **pin** or **zone** is required for each actuator or sensor. Do not use both in the same definition. +- Either `pin` or `zone` is required for each actuator or sensor. Do not use both in the same definition. +- `pin` represents the number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are `1`, `2`, `5`, `6`, `7`, `8`, and `9`. Pin based configuration is only allowed with ESP8266 based devices. - Pin `D8` or the `out` zone will only work when activation is set to high (the default). +- `zone` represents the value corresponding to the labeled zone on the [Konnected Alarm Panel](https://konnected.io) boards. Valid zone values are `1`, `2`, `3`, `4`, `5`, `6`, and `out` for the Konnected Alarm Panel (`out` represents the dedicated ALARM/OUT terminal) and `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `out1`, `alarm1`, and `alarm2_out2` for the Konnected Alarm Panel Pro. +- **The Konnected Alarm Panel Pro does not support configuration via `pin`.** -### Extended Configuration +## Extended Configuration ```yaml # Example configuration.yaml entry @@ -221,10 +280,9 @@ konnected: - pin: 6 name: Kitchen type: dht - ``` -### Unique IDs and the Entity Registry +## Unique IDs and the Entity Registry Beginning in Home Assistant release 0.90, unique IDs are generated for each sensor or switch entity. This enables end users to modify the entity names and entity IDs through the Home Assistant UI on the _Entity Registry_ page (under _Configuration_). @@ -240,60 +298,64 @@ Unique IDs are internally generated as follows: \* Switches are identified by a unique hash including the pin number, `momentary`, `pause`, and `repeat` values. If these values are modified, a new entity will be created and the old entity must be removed manually from the _Entity Registry_. -### Pin Mapping +## Pin Mapping + +Konnected runs on an ESP8266 board with the NodeMCU firmware. It is commonly used with the NodeMCU dev kit Wi-Fi module and optionally Konnected's Alarm Panel hardware. The following table shows the pin mapping between the Konnected hardware labeled zones, the NodeMCU labeled pins and the ESP8266 GPIO pins. + +| Konnected Alarm Panel Zone | NodeMCU pin | IO Index | ESP8266 GPIO | +| -------------------------- | ----------- | -------- | ------------ | +| 1 | D1 | 1 | GPIO5 | +| 2 | D2 | 2 | GPIO4 | +| 3 | D5 | 5 | GPIO14 | +| 4 | D6 | 6 | GPIO12 | +| 5 | D7 | 7 | GPIO13 | +| 6 | RX | 9 | GPIO3 | +| ALARM or OUT | D8 | 8 | GPIO15 | -Konnected runs on an ESP8266 board with the NodeMCU firmware. It is commonly used with the NodeMCU dev kit WiFi module and optionally Konnected's Alarm Panel hardware. The following table shows the pin mapping between the Konnected hardware labeled zones, the NodeMCU labeled pins and the ESP8266 GPIO pins. +## Revision History -| Konnected Alarm Panel Zone | NodeMCU pin | IO Index | ESP8266 GPIO | -|---|---|---|---| -| 1 | D1 | 1 | GPIO5 | -| 2 | D2 | 2 | GPIO4 | -| 3 | D5 | 5 | GPIO14 | -| 4 | D6 | 6 | GPIO12 | -| 5 | D7 | 7 | GPIO13 | -| 6 | RX | 9 | GPIO3 | -| ALARM or OUT | D8 | 8 | GPIO15 | +### 0.106 -### Revision History +- Added information on configuration and options flow. Mention that alarm panel FW should be updated before connecting. -#### 0.91 +### 0.91 - Improved Unique ID generation for Konnected switches -#### 0.90 +### 0.90 - Added support for `dht` and `ds18b20` temperature sensors - Added Unique IDs -#### 0.80 +### 0.80 - Added ability to specify `host` and `port` to set up devices without relying on discovery. -- Added `discovery` and `blink` config options to enable/disable these features. +- Added `discovery` and `blink` configuration options to enable/disable these features. -#### 0.79 +### 0.79 - Added `inverse` configuration option for binary sensors. -#### 0.77 +### 0.77 - Added support for momentary and beep/blink switches. [[#15973](https://github.com/home-assistant/home-assistant/pull/15973)] - Decouple entity initialization from discovery, enabling devices to recover faster after a Home Assistant reboot. [[#16146](https://github.com/home-assistant/home-assistant/pull/16146)] - **Breaking change:** Device `id` in `configuration.yaml` must now be the full 12-character device MAC address. Previously, omitting the first 6 characters was allowed. -#### 0.72 +### 0.72 - Adds `api_host` configuration option [[#14896](https://github.com/home-assistant/home-assistant/pull/14896)] -#### 0.70 +### 0.70 - Initial release -### Binary Sensor +## Binary Sensor -The `konnected` binary sensor allows you to monitor wired door sensors, window sensors, motion sensors, smoke detectors, CO detectors, glass-break sensors, water leak sensors or any other simple wired open/close circuit attached to a NodeMCU ESP8266 WiFi module running the [open source Konnected software](https://github.com/konnected-io/konnected-security). +The `konnected` binary sensor allows you to monitor wired door sensors, window sensors, motion sensors, smoke detectors, CO detectors, glass-break sensors, water leak sensors or any other simple wired open/close circuit attached to a NodeMCU ESP8266 Wi-Fi module running the [open source Konnected software](https://github.com/konnected-io/konnected-security). This integration supports all of the built-in device classes of the generic [Binary Sensor](/integrations/binary_sensor/) component. -### Switch +## Switch -The `konnected` switch platform allows you to actuate an alarm system siren, strobe light, buzzer or any other wired device using a [Konnected Alarm Panel board](https://konnected.io) or relay module and a NodeMCU ESP8266 WiFi module running the [open source Konnected software](https://github.com/konnected-io/konnected-security). \ No newline at end of file +The `konnected` switch platform allows you to actuate an alarm system siren, strobe light, buzzer or any other wired device using a [Konnected Alarm Panel board](https://konnected.io) or relay module and a NodeMCU ESP8266 Wi-Fi module running the [open source Konnected software](https://github.com/konnected-io/konnected-security). diff --git a/source/_integrations/kwb.markdown b/source/_integrations/kwb.markdown index fca974262504..3ba769a4e5ba 100644 --- a/source/_integrations/kwb.markdown +++ b/source/_integrations/kwb.markdown @@ -1,11 +1,11 @@ --- -title: "KWB Easyfire Sensor" -description: "Instructions on how to integrate the KWB Easyfire sensor into Home Assistant." -logo: kwb.png +title: KWB Easyfire +description: Instructions on how to integrate the KWB Easyfire sensor into Home Assistant. ha_category: - Sensor ha_iot_class: Local Polling -ha_release: "0.40" +ha_release: '0.40' +ha_domain: kwb --- The `kwb` integration integrates the sensors of KWB Easyfire pellet central heating units with the Comfort3 controller (https://www.kwb.net/produkte/) into Home Assistant. diff --git a/source/_integrations/lacrosse.markdown b/source/_integrations/lacrosse.markdown index 0d6a6a36f61d..a9350f3a47c0 100644 --- a/source/_integrations/lacrosse.markdown +++ b/source/_integrations/lacrosse.markdown @@ -1,11 +1,11 @@ --- -title: "LaCrosse Sensor" -description: "Instructions on how to integrate LaCrosse sensor data received from Jeelink into Home Assistant." -logo: home-assistant.png +title: LaCrosse +description: Instructions on how to integrate LaCrosse sensor data received from Jeelink into Home Assistant. ha_category: - DIY ha_release: 0.58 ha_iot_class: Local Polling +ha_domain: lacrosse --- The `lacrosse` sensor platform is using the data provided by a [Jeelink](https://www.digitalsmarties.net/products/jeelink) USB dongle or this [Arduino sketch](https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/36_LaCrosse-LaCrosseITPlusReader.zip). @@ -23,6 +23,12 @@ Since the sensor change their ID after each powercycle/battery change you can ch sudo pylacrosse -d /dev/ttyUSB0 scan ``` +Or, when using Docker containers: + +```bash +docker exec -it pylacrosse -d /dev/ttyUSB0 scan +``` + ## Configuration To use your `lacrosse` compatible sensor in your installation, add the following to your `configuration.yaml` file: @@ -90,7 +96,7 @@ sensor: ## Examples -To setup a lacrosse sensor with multiple sensors, add the following to your `configuration.yaml` file: +To setup a LaCrosse sensor with multiple sensors, add the following to your `configuration.yaml` file: {% raw %} ```yaml diff --git a/source/_integrations/lametric.markdown b/source/_integrations/lametric.markdown index 18879c0155ed..bf920d155ddb 100644 --- a/source/_integrations/lametric.markdown +++ b/source/_integrations/lametric.markdown @@ -1,11 +1,14 @@ --- -title: "LaMetric" -description: "Instructions on how to integrate LaMetric with Home Assistant." +title: LaMetric +description: Instructions on how to integrate LaMetric with Home Assistant. logo: lametric.png ha_category: - Hub - Notifications ha_release: 0.49 +ha_codeowners: + - '@robbiet480' +ha_domain: lametric --- [LaMetric Time](https://lametric.com/) is a smart clock that can be used to access applications, listen to web radio and display notifications. diff --git a/source/_integrations/lannouncer.markdown b/source/_integrations/lannouncer.markdown index 075a1ab45b19..576f996bc66a 100644 --- a/source/_integrations/lannouncer.markdown +++ b/source/_integrations/lannouncer.markdown @@ -1,10 +1,11 @@ --- -title: "Lannouncer" -description: "Instructions on how to add Lannouncer notifications to Home Assistant." +title: LANnouncer +description: Instructions on how to add Lannouncer notifications to Home Assistant. logo: lannouncer.png ha_category: - Notifications ha_release: 0.36 +ha_domain: lannouncer --- The `lannouncer` notification platform allows you to play spoken messages (TTS) or sounds on an Android device running [Lannouncer](https://www.keybounce.com/lannouncer/). This can be useful when you have a wall mounted Android tablet, or an Android device that is permanently powered and turned on and want to use that to play notifications. @@ -48,7 +49,7 @@ More information can be found [here](https://www.keybounce.com/lannouncer/config Lannouncer supports two types of messages. -Spoken messages is the default method (`speak`). You just invoke the `notify` service with the following json and the device will speak out the specified message. +Spoken messages is the default method (`speak`). You just invoke the `notify` service with the following JSON and the device will speak out the specified message. ```json { diff --git a/source/_integrations/lastfm.markdown b/source/_integrations/lastfm.markdown index 307ace299091..45348a13d7b2 100644 --- a/source/_integrations/lastfm.markdown +++ b/source/_integrations/lastfm.markdown @@ -1,11 +1,12 @@ --- -title: "Last.fm" -description: "Instructions on how to integrate Last.fm sensors into Home Assistant." +title: Last.fm +description: Instructions on how to integrate Last.fm sensors into Home Assistant. logo: lastfm.png ha_category: - Social ha_iot_class: Cloud Polling -ha_release: "0.20" +ha_release: '0.20' +ha_domain: lastfm --- The `lastfm` sensor platform will allow you to see whenever a user starts scrobbling, their play count, last song played, and top song played on [Last.fm](https://www.last.fm/). diff --git a/source/_integrations/launch_library.markdown b/source/_integrations/launch_library.markdown index dba4672fe7e2..c823e0dc73ea 100644 --- a/source/_integrations/launch_library.markdown +++ b/source/_integrations/launch_library.markdown @@ -1,11 +1,14 @@ --- -title: "Space Launch sensor" -description: "Instructions on how to integrate space launch information within Home Assistant." +title: Launch Library +description: Instructions on how to integrate space launch information within Home Assistant. logo: rocket.png ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.83 +ha_codeowners: + - '@ludeeus' +ha_domain: launch_library --- The `launch_library` sensor will provide you with information about the next planned space launch. diff --git a/source/_integrations/lcn.markdown b/source/_integrations/lcn.markdown index 32e73f417ebe..d39547064dc1 100644 --- a/source/_integrations/lcn.markdown +++ b/source/_integrations/lcn.markdown @@ -1,6 +1,6 @@ --- -title: "LCN" -description: "Instructions on how to integrate LCN components with Home Assistant." +title: LCN +description: Instructions on how to integrate LCN components with Home Assistant. logo: lcn.png ha_category: - Hub @@ -13,6 +13,9 @@ ha_category: - Switch ha_release: 0.85 ha_iot_class: Local Push +ha_codeowners: + - '@alengwenus' +ha_domain: lcn --- The `lcn` integration for Home Assistant allows you to connect to [LCN](https://www.lcn.eu/) hardware devices. @@ -42,7 +45,7 @@ There is currently support for the following device types within Home Assistant: To use your LCN system in your installation, add the following lines to your `configuration.yaml` file. You have to specify at least one IP/port with login credentials for a PCHK host. -Consider to store your credentials in a [secrets.yaml](/docs/configuration/secrets). +Consider to store your credentials in a [`secrets.yaml`](/docs/configuration/secrets). ```yaml lcn: @@ -575,12 +578,12 @@ data: ### Service `led` -Set the led status. +Set the LED status. | Service data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------- | ------ | | `address` | No | [LCN address](#lcn-addresses) | -| `state` | No | Led state as string | [LED_STATE](#states) | +| `state` | No | LED state as string | [LED_STATE](#states) | Example: diff --git a/source/_integrations/lg_netcast.markdown b/source/_integrations/lg_netcast.markdown index 9ea27c033901..891a963883a4 100644 --- a/source/_integrations/lg_netcast.markdown +++ b/source/_integrations/lg_netcast.markdown @@ -1,11 +1,12 @@ --- -title: "LG Netcast TV" -description: "Instructions on how to integrate a LG TV (Netcast 3.0 & 4.0) within Home Assistant." +title: LG Netcast +description: Instructions on how to integrate a LG TV (Netcast 3.0 & 4.0) within Home Assistant. logo: lg.png ha_category: - Media Player ha_iot_class: Local Polling -ha_release: "0.20" +ha_release: '0.20' +ha_domain: lg_netcast --- The `lg_netcast` platform allows you to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). For the new LG WebOS TV's use the [webostv](/integrations/webostv#media-player) platform. @@ -16,7 +17,7 @@ To add a LG TV to your installation, add the following to your `configuration.ya # Example configuration.yaml entry media_player: - platform: lg_netcast - host: 192.168.0.20 + host: IP_ADDRESS ``` {% configuration %} @@ -33,6 +34,10 @@ name: required: false default: LG TV Remote type: string +turn_on_action: + description: Defines an [action](/docs/automation/action/) to turn the TV on. + required: false + type: string {% endconfiguration %} To get the access token for your TV configure the `lg_netcast` platform in Home Assistant without the `access_token`. @@ -40,5 +45,20 @@ After starting Home Assistant the TV will display the access token on screen. Just add the token to your configuration and restart Home Assistant and the media player integration for your LG TV will show up.
    -The access token will not change until you factory reset your TV. + The access token will not change until you factory reset your TV.
    + +## Advanced configuration + +The example below shows how you can use the `turn_on_action` + +```yaml +# Example configuration.yaml entry +media_player: + - platform: lg_netcast + host: 192.168.0.20 + turn_on_action: + service: switch.turn_on + data: + entity_id: switch.tv_switch +``` diff --git a/source/_integrations/lg_soundbar.markdown b/source/_integrations/lg_soundbar.markdown index 53d251a50aeb..fe38a9c748ea 100644 --- a/source/_integrations/lg_soundbar.markdown +++ b/source/_integrations/lg_soundbar.markdown @@ -1,11 +1,12 @@ --- -title: "LG Soundbars" -description: "Instructions on how to integrate LG Soundbars into Home Assistant." +title: LG Soundbars +description: Instructions on how to integrate LG Soundbars into Home Assistant. logo: lg.png ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.81 +ha_domain: lg_soundbar --- The `lg_soundbar` platform allows you to control [LG Soundbars](https://www.lg.com/us/sound-bars) from Home Assistant. diff --git a/source/_integrations/life360.markdown b/source/_integrations/life360.markdown index f11c4dd1ee3d..a0cc57b0b752 100644 --- a/source/_integrations/life360.markdown +++ b/source/_integrations/life360.markdown @@ -1,12 +1,15 @@ --- -title: "Life360" -description: "Instructions how to use Life360 to track devices in Home Assistant." +title: Life360 +description: Instructions how to use Life360 to track devices in Home Assistant. logo: life360.png ha_release: 0.95 ha_config_flow: true ha_category: - Presence Detection ha_iot_class: Cloud Polling +ha_codeowners: + - '@pnbruckner' +ha_domain: life360 --- The `life360` integration allows you to detect presence using the [unofficial API](#disclaimer) of [Life360](https://www.life360.com/). @@ -17,7 +20,13 @@ 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. 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. +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. + +After configuring, it is expected for the Life360 integration page to show "This integration has no devices". You should see a new Life360 device tracker entity showing up on the States page. If it does not: + +- Check the [device tracker documentation](/integrations/device_tracker), especially the `new_device_defaults` setting. +- Check your `known_devices.yaml`; `tracking` should be `true` for your Life360 device. +- In the Life360 app, Location Sharing should be enabled. {% configuration %} accounts: @@ -101,18 +110,18 @@ warning_threshold: ## Additional attributes -Attribute | Description --|- -address | Address of the current location, or `none`. -at_loc_since | Date and time when first at current location (in UTC.) -battery_charging | Device is charging (`true`/`false`.) -driving | Device movement indicates driving (`true`/`false`.) -last_seen | Date and time when Life360 last updated device location (in UTC.) -moving | Device is moving (`true`/`false`.) -place | Name of Life360 Place where the device is located, or `none` if not located within one. -raw_speed | "Raw" speed value provided by Life360 server. (Units unknown.) -speed | Estimated speed of device (in MPH or KPH depending on Home Assistant's unit system configuration.) -wifi_on | Device WiFi is turned on (`true`/`false`.) +| Attribute | Description | +| ---------------- | -------------------------------------------------------------------------------------------------- | +| address | Address of the current location, or `none`. | +| at_loc_since | Date and time when first at current location (in UTC.) | +| battery_charging | Device is charging (`true`/`false`.) | +| driving | Device movement indicates driving (`true`/`false`.) | +| last_seen | Date and time when Life360 last updated device location (in UTC.) | +| moving | Device is moving (`true`/`false`.) | +| place | Name of Life360 Place where the device is located, or `none` if not located within one. | +| raw_speed | "Raw" speed value provided by Life360 server. (Units unknown.) | +| speed | Estimated speed of device (in MPH or KPH depending on Home Assistant's unit system configuration.) | +| wifi_on | Device Wi-Fi is turned on (`true`/`false`.) | ## Filtering @@ -134,7 +143,7 @@ Normally Home Assistant device trackers are "Home" when they enter `zone.home`. ## Home Assistant Zones & Life360 Places -See [Zone documentation](/integrations/zone/#home-zone) for details about how HA zones are defined. If you'd like to create HA zones from Life360 Places (e.g., to make HA's `zone.home` be identical to Life360's "Home Place"), make sure `logger` is set to `debug`. Then when HA starts the details of all the Places defined in the included Circles will be written to `home-assistant.log` in a format that can be copied into your configuration under `zone:`. E.g., you would see something like this: +See [Zone documentation](/integrations/zone/#home-zone) for details about how Home Assistant zones are defined. If you'd like to create Home Assistant zones from Life360 Places (e.g., to make Home Assistant's `zone.home` be identical to Life360's "Home Place"), make sure `logger` is set to `debug`. Then when Home Assistant starts the details of all the Places defined in the included Circles will be written to `home-assistant.log` in a format that can be copied into your configuration under `zone:`. E.g., you would see something like this: ```text 2019-05-31 12:16:58 DEBUG (SyncWorker_3) [homeassistant.components.life360.device_tracker] My Family Circle: will be included, id=xxxxx @@ -156,6 +165,7 @@ Therefore, an optional filtering mechanism has been implemented to prevent incon ### Typical configuration {% raw %} + ```yaml life360: # MPH, assuming imperial units. @@ -174,11 +184,13 @@ life360: warning_threshold: 2 error_threshold: 3 ``` + {% endraw %} ### Circle and Member Filtering Example {% raw %} + ```yaml life360: # Only track Members that are in these Circles. @@ -188,22 +200,26 @@ life360: members: exclude: John Doe ``` + {% endraw %} ### Entering accounts in configuration {% raw %} + ```yaml life360: accounts: - username: LIFE360_USERNAME password: LIFE360_PASSWORD ``` + {% endraw %} ### Example overdue update automations {% raw %} + ```yaml automation: - alias: Life360 Overdue Update @@ -234,6 +250,7 @@ automation: trigger.event.data.entity_id }} restored after {{ trigger.event.data.wait }}. ``` + {% endraw %} ## Disclaimer diff --git a/source/_integrations/lifx.markdown b/source/_integrations/lifx.markdown index badbf351f59f..19108162ed4a 100644 --- a/source/_integrations/lifx.markdown +++ b/source/_integrations/lifx.markdown @@ -1,18 +1,20 @@ --- -title: "LIFX" -description: "Instructions on how to integrate LIFX into Home Assistant." +title: LIFX +description: Instructions on how to integrate LIFX into Home Assistant. logo: lifx.png ha_category: - Light ha_iot_class: Local Polling ha_release: 0.81 +ha_config_flow: true +ha_domain: lifx --- The `lifx` integration allows you to integrate your [LIFX](https://www.lifx.com) into Home Assistant. _Please note, the `lifx` integration does not support Windows. The `lifx_legacy` light platform (supporting basic functionality) can be used instead._ -You can configure the LIFX integration by going to the integrations page inside the config panel. +You can configure the LIFX integration by going to the integrations page inside the configuration panel. ## Set state @@ -20,13 +22,13 @@ The LIFX bulbs allow a change of color and brightness even when they are turned The normal `light.turn_on` call cannot be used for this because it always turns the power on. Thus, LIFX has its own service call that allows color changes without affecting the current power state. -### Service `light.lifx_set_state` +### Service `lifx.set_state` Change the light to a new state. | Service data attribute | Description | | ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `entity_id` | String or list of strings that point at `entity_id`s of lights. Use `entity_id: all` to target all. | `transition` | Duration (in seconds) for the light to fade to the new state. | `zones` | List of integers for the zone numbers to affect (each LIFX Z strip has 8 zones, starting at 0). | `infrared` | Automatic infrared level (0..255) when light brightness is low (for compatible bulbs). @@ -54,7 +56,7 @@ script: colorloop_start: alias: 'Start colorloop' sequence: - - service: light.lifx_effect_colorloop + - service: lifx.effect_colorloop data: entity_id: group.livingroom brightness: 255 @@ -65,13 +67,13 @@ script: The available light effects and their options are listed below. -### Service `light.lifx_effect_pulse` +### Service `lifx.effect_pulse` Run a flash effect by changing to a color and then back. | Service data attribute | Description | | ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `entity_id` | String or list of strings that point at `entity_id`s of lights. Use `entity_id: all` to target all. | `color_name` | A color name such as `red` or `green`. | `rgb_color` | A list containing three integers representing the RGB color you want the light to be. | `brightness` | Integer between 0 and 255 for how bright the color should be. @@ -80,13 +82,13 @@ Run a flash effect by changing to a color and then back. | `mode` | The way to change between colors. Valid modes: `blink` (default - direct transition to new color for 'period' time with original color between cycles), `breathe` (color fade transition to new color and back to original), `ping` (short pulse of new color), `strobe` (light turns off between color changes), `solid`(light does not return to original color between cycles). | `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). -### Service `light.lifx_effect_colorloop` +### Service `lifx.effect_colorloop` Run an effect with colors looping around the color wheel. All participating lights will coordinate to keep similar (but not identical) colors. | Service data attribute | Description | | ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `entity_id` | String or list of strings that point at `entity_id`s of lights. Use `entity_id: all` to target all. | `brightness` | Number between 0 and 255 indicating brightness of the effect. Leave this out to maintain the current brightness of each participating light. | `period` | Duration (in seconds) between starting a new color change. | `transition` | Duration (in seconds) where lights are actively changing color. @@ -94,13 +96,13 @@ Run an effect with colors looping around the color wheel. All participating ligh | `spread` | Maximum color difference between participating lights, in degrees on a color wheel (ranges from 0 to 359). | `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). -### Service `light.lifx_effect_stop` +### Service `lifx.effect_stop` Run an effect that does nothing, thereby stopping any other effect that might be running. | Service data attribute | Description | | ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `entity_id` | String or list of strings that point at `entity_id`s of lights. Use `entity_id: all` to target all. ## Advanced configuration diff --git a/source/_integrations/lifx_cloud.markdown b/source/_integrations/lifx_cloud.markdown index 97d8b109e141..992047dd37f1 100644 --- a/source/_integrations/lifx_cloud.markdown +++ b/source/_integrations/lifx_cloud.markdown @@ -1,10 +1,11 @@ --- -title: "LIFX Cloud Scenes" -description: "Instructions on using native LIFX scenes with Home Assistant." +title: LIFX Cloud +description: Instructions on using native LIFX scenes with Home Assistant. logo: lifx.png ha_category: - Scene ha_release: 0.43 +ha_domain: lifx_cloud --- The `lifx_cloud` scene platform allows you to activate the scenes that LIFX smartphone apps store in the LIFX cloud. diff --git a/source/_integrations/light.group.markdown b/source/_integrations/light.group.markdown index 4b044f225adb..4be4de0486c0 100644 --- a/source/_integrations/light.group.markdown +++ b/source/_integrations/light.group.markdown @@ -5,8 +5,8 @@ ha_category: - Light ha_release: 0.65 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: group --- The group light platform lets you combine multiple lights into one entity. All child lights of a light group can still be used as usual, but controlling the state of the grouped light will forward the command to each child light. diff --git a/source/_integrations/light.knx.markdown b/source/_integrations/light.knx.markdown index f47b8233d39a..05caf7841c1b 100644 --- a/source/_integrations/light.knx.markdown +++ b/source/_integrations/light.knx.markdown @@ -1,11 +1,11 @@ --- title: "KNX Light" description: "Instructions on how to integrate KNX lights with Home Assistant." -logo: knx.png ha_category: - Light ha_release: 0.44 ha_iot_class: Local Push +ha_domain: knx ---
    @@ -14,7 +14,7 @@ The `knx` integration must be configured correctly to use this integration, see
    -The `knx light` integration is used as an interface to control knx actuators for lighting applications such as: +The `knx light` integration is used as an interface to control KNX actuators for lighting applications such as: - switching actuators - dimming actuators @@ -98,7 +98,7 @@ Many KNX devices can change their state internally without a message to the swit For switching/light actuators that are only controlled by a single group address and don't have dedicated state communication objects you can set `state_address` to the same value as `address`. -*Note on tunable white:* Home-Assistant uses Mireds as the unit for color temperature, whereas KNX typically uses Kelvin. The Kelvin/Mireds relationship is reciprocal, not linear, therefore the color temperature pickers (sliders) in Home-Assistant may not align with ones of KNX visualizations. This is the expected behavior. +*Note on tunable white:* Home Assistant uses Mireds as the unit for color temperature, whereas KNX typically uses Kelvin. The Kelvin/Mireds relationship is reciprocal, not linear, therefore the color temperature pickers (sliders) in Home Assistant may not align with ones of KNX visualizations. This is the expected behavior. ## Extended configuration example diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index 0e623c64b0ac..895b943ed9ea 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -1,11 +1,11 @@ --- -title: "Light" -description: "Instructions on how to setup your lights with Home Assistant." -logo: home-assistant.png +title: Light +description: Instructions on how to setup your lights with Home Assistant. ha_category: - Light -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal +ha_domain: light --- This integration allows you to track and control various light bulbs. Read the integration documentation for your particular light hardware to learn how to enable it. @@ -24,7 +24,7 @@ Most lights do not support all attributes. You can check the integration documen | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `entity_id` | no | String or list of strings that point at `entity_id`s of lights. To target all the lights use all as `entity_id`. | `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/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. @@ -36,6 +36,8 @@ Most lights do not support all attributes. You can check the integration documen | `color_name` | yes | A human-readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/css-color-3/#svg-color) are supported. | `brightness` | yes | Integer between 0 and 255 for how bright the light should be, where 0 means the light is off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. | `brightness_pct`| yes | Alternatively, you can specify brightness in percent (a number between 0 and 100), where 0 means the light is off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. +| `brightness_step` | yes | Change brightness by an amount. Should be between -255..255. +| `brightness_step_pct` | yes | Change brightness by a percentage. Should be between -100..100. | `flash` | yes | Tell light to flash, can be either value `short` or `long`. | `effect`| yes | Applies an effect such as `colorloop` or `random`. @@ -82,13 +84,11 @@ Turns one or multiple lights off. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `entity_id` | no | String or list of strings that point at `entity_id`s of lights. To target all the lights use all as `entity_id`. | `transition` | yes | Integer that represents the time the light should take to transition to the new state in seconds. ### Service `light.toggle` -Toggles the state of one or multiple lights using [groups]({{site_root}}/integrations/group/). -Takes the same arguments as [`turn_on`](#service-lightturn_on) service. - -*Note*: If `light.toggle` is used for a group of lights, it will toggle the individual state of each light. +Toggles the state of one or multiple lights. Takes the same arguments as [`turn_on`](#service-lightturn_on) service. +*Note*: If `light.toggle` is used for a group of lights, it will toggle the individual state of each light. If you want the lights to be treated as a single light, use [Light Groups](/integrations/light.group/) instead. diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown index 99405735d26c..2712d5d1a788 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -1,14 +1,14 @@ --- title: "MQTT Light" description: "Instructions on how to setup MQTT lights using default schema within Home Assistant." -logo: mqtt.png ha_category: - Light ha_iot_class: Configurable ha_release: 0.8 +ha_domain: mqtt --- -The `mqtt` light platform lets you control your MQTT enabled lights through one of the supported message schemas. +The `mqtt` light platform lets you control your MQTT enabled lights through one of the supported message schemas, `default`, `json` or `template`. ## Comparison of light MQTT schemas @@ -45,25 +45,16 @@ light: ``` {% configuration %} -name: - description: The name of the light. - required: false - type: string - default: MQTT Light -unique_id: - description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false type: string -command_topic: - description: The MQTT topic to publish commands to change the switch state. - required: true - type: string brightness_command_topic: description: The MQTT topic to publish commands to change the light’s brightness. required: false type: string brightness_scale: - description: "Defines the maximum brightness value (i.e. 100%) of the MQTT device." + description: "Defines the maximum brightness value (i.e., 100%) of the MQTT device." required: false type: integer default: 255 @@ -91,10 +82,47 @@ color_temp_value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the color temperature value." required: false type: string +command_topic: + description: The MQTT topic to publish commands to change the switch state. + required: true + type: string +device: + description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: [string, list] + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string effect_command_topic: description: "The MQTT topic to publish commands to change the light's effect state." required: false type: string +effect_list: + description: The list of effects the light supports. + required: false + type: [string, list] effect_state_topic: description: The MQTT topic subscribed to receive effect state updates. required: false @@ -103,10 +131,6 @@ effect_value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the effect value." required: false type: string -effect_list: - description: The list of effects the light supports. - required: false - type: [string, list] hs_command_topic: description: "The MQTT topic to publish commands to change the light's color state in HS format (Hue Saturation). Range for Hue: 0° .. 360°, Range of Saturation: 0..100. @@ -122,6 +146,19 @@ hs_value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the HS value." required: false type: string +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." + required: false + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string +name: + description: The name of the light. + required: false + type: string + default: MQTT Light on_command_type: description: "Defines when on the payload_on is sent. Using `last` (the default) will send any style (brightness, color, etc) topics first and then a `payload_on` to the `command_topic`. Using `first` will send the `payload_on` and then any style topics. Using `brightness` will only send brightness commands instead of the `payload_on` to turn the light on." required: false @@ -131,16 +168,26 @@ optimistic: required: false type: boolean default: "`true` if no state topic defined, else `false`." -payload_on: - description: The payload that represents enabled state. +payload_available: + description: The payload that represents the available state. required: false type: string - default: "ON" + default: online +payload_not_available: + description: The payload that represents the unavailable state. + required: false + type: string + default: offline payload_off: description: The payload that represents disabled state. required: false type: string default: "OFF" +payload_on: + description: The payload that represents enabled state. + required: false + type: string + default: "ON" qos: description: The maximum QoS level of the state topic. required: false @@ -167,6 +214,11 @@ rgb_value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the RGB value." required: false type: string +schema: + description: The schema to use. Must be `default` or omitted to select the default schema". + required: false + type: string + default: default state_topic: description: The MQTT topic subscribed to receive state updates. required: false @@ -175,12 +227,16 @@ state_value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the state value. The template should match the payload `on` and `off` values, so if your light uses `power on` to turn on, your `state_value_template` string should return `power on` when the switch is on. For example if the message is just `on`, your `state_value_template` should be `power {{ value }}`." required: false type: string +unique_id: + description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. + required: false + type: string white_value_command_topic: description: "The MQTT topic to publish commands to change the light's white value." required: false type: string white_value_scale: - description: "Defines the maximum white value (i.e. 100%) of the MQTT device." + description: "Defines the maximum white value (i.e., 100%) of the MQTT device." required: false type: integer default: 255 @@ -204,57 +260,6 @@ xy_value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the XY value." required: false type: string -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. - required: false - type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." - required: false - type: template -device: - description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' - required: false - type: map - keys: - identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' - required: false - type: [string, list] - connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' - required: false - type: list - manufacturer: - description: 'The manufacturer of the device.' - required: false - type: string - model: - description: 'The model of the device.' - required: false - type: string - name: - description: 'The name of the device.' - required: false - type: string - sw_version: - description: 'The firmware version of the device.' - required: false - type: string {% endconfiguration %}
    @@ -335,7 +340,7 @@ light: ## Default schema - Implementations -- A [basic example](https://github.com/mertenats/open-home-automation/tree/master/ha_mqtt_light) using a nodeMCU board (ESP8266) to control its built-in LED (on/off). +- A [basic example](https://github.com/mertenats/open-home-automation/tree/master/ha_mqtt_light) using a NodeMCU board (ESP8266) to control its built-in LED (on/off). - Another [example](https://github.com/mertenats/open-home-automation/tree/master/ha_mqtt_rgb_light) to control a RGB LED (on/off, brightness, and colors). - [Integration guide](https://github.com/xoseperez/espurna/wiki/HomeAssistant) for the ESPUrna firmware (ESP8285/ESP8266). @@ -382,26 +387,17 @@ light: ``` {% configuration %} -name: - description: The name of the light. +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false type: string - default: MQTT JSON Light -unique_id: - description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. - required: false - type: string -command_topic: - description: The MQTT topic to publish commands to change the light’s state. - required: true - type: string brightness: description: Flag that defines if the light supports brightness. required: false type: boolean default: false brightness_scale: - description: "Defines the maximum brightness value (i.e. 100%) of the MQTT device." + description: "Defines the maximum brightness value (i.e., 100%) of the MQTT device." required: false type: integer default: 255 @@ -410,6 +406,39 @@ color_temp: required: false type: boolean default: false +command_topic: + description: The MQTT topic to publish commands to change the light’s state. + required: true + type: string +device: + description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: [string, list] + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string effect: description: Flag that defines if the light supports effects. required: false @@ -429,11 +458,39 @@ flash_time_short: required: false type: integer default: 2 +hs: + description: Flag that defines if the light supports HS colors. + required: false + type: boolean + default: false +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." + required: false + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string +name: + description: The name of the light. + required: false + type: string + default: MQTT JSON Light optimistic: description: Flag that defines if the light works in optimistic mode. required: false type: boolean default: "`true` if no state topic defined, else `false`." +payload_available: + description: The payload that represents the available state. + required: false + type: string + default: online +payload_not_available: + description: The payload that represents the unavailable state. + required: false + type: string + default: offline qos: description: The maximum QoS level of the state topic. required: false @@ -449,10 +506,19 @@ rgb: required: false type: boolean default: false +schema: + description: The schema to use. Must be `json` to select the JSON schema". + required: false + type: string + default: default state_topic: description: The MQTT topic subscribed to receive state updates. required: false type: string +unique_id: + description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. + required: false + type: string white_value: description: Flag that defines if the light supports white values. required: false @@ -463,62 +529,6 @@ xy: required: false type: boolean default: false -hs: - description: Flag that defines if the light supports HS colors. - required: false - type: boolean - default: false -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. - required: false - type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." - required: false - type: template -device: - description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' - required: false - type: map - keys: - identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' - required: false - type: [string, list] - connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' - required: false - type: list - manufacturer: - description: 'The manufacturer of the device.' - required: false - type: string - model: - description: 'The model of the device.' - required: false - type: string - name: - description: 'The name of the device.' - required: false - type: string - sw_version: - description: 'The firmware version of the device.' - required: false - type: string {% endconfiguration %}
    @@ -640,7 +650,7 @@ light: - A full example of custom lighting using this platform and an ESP8266 microcontroller can be found [here](https://github.com/corbanmailloux/esp-mqtt-rgb-led). It supports on/off, brightness, transitions, RGB colors, and flashing. -- There is also another implementation forked from the above repo, it supports all the same features but is made for addressable LED strips using FastLED on a NodeMCU V3 it can be found [here](https://github.com/JammyDodger231/nodemcu-mqtt-rgb-led). +- There is also another implementation forked from the above repository, it supports all the same features but is made for addressable LED strips using FastLED on a NodeMCU V3 it can be found [here](https://github.com/JammyDodger231/nodemcu-mqtt-rgb-led). - [McLighting](https://github.com/toblum/McLighting) is another ESP8266 firmware for WS2812 addressable LEDs. @@ -648,14 +658,14 @@ light: - [ESPHome](https://esphome.io) implements the JSON schema for MQTT based installs and supports [MQTT discovery](/docs/mqtt/discovery/). -- [AiLight](https://github.com/stelgenhof/AiLight) is a custom firmware for the Ai-Thinker (and equivalent) RGBW WiFi light bulbs that has an ESP8266 onboard and controlled by the MY9291 LED driver. It implements the [MQTT JSON light](/integrations/light.mqtt) platform and supports ON/OFF, RGBW colours, brightness, colour temperature, flashing and transitions. Also it includes [MQTT Auto Discovery](/docs/mqtt/discovery/)) and the MQTT Last Will and Testament is enabled as well. +- [AiLight](https://github.com/stelgenhof/AiLight) is a custom firmware for the Ai-Thinker (and equivalent) RGBW WiFi light bulbs that has an ESP8266 onboard and controlled by the MY9291 LED driver. It implements the [MQTT JSON light](/integrations/light.mqtt) platform and supports ON/OFF, RGBW colours, brightness, color temperature, flashing and transitions. Also it includes [MQTT Auto Discovery](/docs/mqtt/discovery/)) and the MQTT Last Will and Testament is enabled as well. -- [h801-mqtt-json](https://github.com/starkillerOG/h801-mqtt-json) is a custom firmware for the H801 LED dimmer, a 5 channel (RGBWWCW) WiFi LED strip controller for 12V LED strips. The firmware is meant to control the 5 channels of the H801 to simultaneously control an RGB and a Warm-white/Cold-white Led strip such as an 5050 RGB LED strip and a 5025 Dual White strip. It implements the [MQTT JSON light](/integrations/light.mqtt) platform and supports ON/OFF, RGBW colours (RGB strip), brightness, color temperature (CW/WW strip) and transitions. +- [h801-mqtt-json](https://github.com/starkillerOG/h801-mqtt-json) is a custom firmware for the H801 LED dimmer, a 5 channel (RGBWWCW) WiFi LED strip controller for 12V LED strips. The firmware is meant to control the 5 channels of the H801 to simultaneously control an RGB and a Warm-white/Cold-white LED strip such as a 5050 RGB LED strip and a 5025 Dual White strip. It implements the [MQTT JSON light](/integrations/light.mqtt) platform and supports ON/OFF, RGBW colours (RGB strip), brightness, color temperature (CW/WW strip) and transitions. ## Template schema The `mqtt` light platform with template schema lets you control a MQTT-enabled light that receive commands on a command topic and optionally sends status update on a state topic. -It is format-agnostic so you can use any data format you want (i.e. string, JSON), just configure it with templating. +It is format-agnostic so you can use any data format you want (i.e., string, JSON), just configure it with templating. This schema supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing, effects and white values. @@ -678,81 +688,93 @@ light: ``` {% configuration %} -name: - description: The name of the light. +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false type: string - default: MQTT Template Light -unique_id: - description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. - required: false - type: string -effect_list: - description: List of possible effects. +blue_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract blue color from the state payload value." required: false - type: [string, list] -command_topic: - description: The MQTT topic to publish commands to change the light’s state. - required: true type: string -state_topic: - description: The MQTT topic subscribed to receive state updates. +brightness_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract brightness from the state payload value." + required: false + type: string +color_temp_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract color temperature from the state payload value." required: false type: string +command_off_template: + description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *off* state changes. Available variables: `state` and `transition`." + required: true + type: string command_on_template: description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *on* state changes. Available variables: `state`, `brightness`, `red`, `green`, `blue`, `white_value`, `flash`, `transition` and `effect`." required: true type: string -command_off_template: - description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *off* state changes. Available variables: `state` and `transition`." +command_topic: + description: The MQTT topic to publish commands to change the light’s state. required: true type: string -state_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract state from the state payload value." +device: + description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' required: false - type: string -brightness_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract brightness from the state payload value." + type: map + keys: + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: [string, list] + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string +effect_list: + description: List of possible effects. required: false - type: string -red_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract red color from the state payload value." + type: [string, list] +effect_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract effect from the state payload value." required: false type: string green_template: description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract green color from the state payload value." required: false type: string -blue_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract blue color from the state payload value." - required: false - type: string -color_temp_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract color temperature from the state payload value." +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." required: false - type: string -effect_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract effect from the state payload value." + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. required: false type: string -white_value_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract white value from the state payload value." +name: + description: The name of the light. required: false type: string + default: MQTT Template Light optimistic: description: Flag that defines if the light works in optimistic mode. required: false type: string default: "`true` if no state topic or state template is defined, else `false`." -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string payload_available: description: The payload that represents the available state. required: false @@ -763,43 +785,36 @@ payload_not_available: required: false type: string default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. +qos: + description: The maximum QoS level of the state topic. + required: false + type: integer + default: 0 +red_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract red color from the state payload value." required: false type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." +schema: + description: The schema to use. Must be `template` to select the template schema". required: false - type: template -device: - description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + type: string + default: default +state_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract state from the state payload value." required: false - type: map - keys: - identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' - required: false - type: [string, list] - connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' - required: false - type: list - manufacturer: - description: 'The manufacturer of the device.' - required: false - type: string - model: - description: 'The model of the device.' - required: false - type: string - name: - description: 'The name of the device.' - required: false - type: string - sw_version: - description: 'The firmware version of the device.' - required: false - type: string + type: string +state_topic: + description: The MQTT topic subscribed to receive state updates. + required: false + type: string +unique_id: + description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. + required: false + type: string +white_value_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract white value from the state payload value." + required: false + type: string {% endconfiguration %}
    diff --git a/source/_integrations/light.mysensors.markdown b/source/_integrations/light.mysensors.markdown index 4cfa6de14037..468a7c6a420e 100644 --- a/source/_integrations/light.mysensors.markdown +++ b/source/_integrations/light.mysensors.markdown @@ -1,39 +1,39 @@ --- title: "MySensors Light" description: "Instructions on how to integrate MySensors lights into Home Assistant." -logo: mysensors.png ha_category: - DIY - Light ha_release: 0.13 ha_iot_class: Local Push +ha_domain: mysensors --- -Integrates MySensors lights into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors lights into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following actuator types are supported: -##### MySensors version 1.4 +## MySensors version 1.4 -S_TYPE | V_TYPE ----------|-------------- -S_DIMMER | V_DIMMER\*, V_LIGHT\* +| S_TYPE | V_TYPE | +| -------- | --------------------- | +| S_DIMMER | V_DIMMER\*, V_LIGHT\* | -##### MySensors version 1.5 and higher +## MySensors version 1.5 and higher -S_TYPE | V_TYPE -------------|------------- -S_DIMMER | [V_DIMMER\* or V_PERCENTAGE\*], [V_LIGHT\* or V_STATUS\*] -S_RGB_LIGHT | V_RGB*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] -S_RGBW_LIGHT | V_RGBW*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] +| S_TYPE | V_TYPE | +| ------------ | -------------------------------------------------------------- | +| S_DIMMER | [V_DIMMER\* or V_PERCENTAGE\*], [V_LIGHT\* or V_STATUS\*] | +| S_RGB_LIGHT | V_RGB*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] | +| S_RGBW_LIGHT | V_RGBW*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] | V_TYPES with a star (\*) denote V_TYPES that should be sent at sketch startup. For an S_DIMMER, send both a V_DIMMER/V_PERCENTAGE and a V_LIGHT/V_STATUS message. For an S_RGB_LIGHT, send both a V_RGB and a V_LIGHT/V_STATUS message with a V_DIMMER/V_PERCENTAGE message being optional. Same principal applies for S_RGBW_LIGHT and V_RGBW. Sketch should acknowledge a command sent from controller with the same type. If command invokes a change to off state (including a V_PERCENTAGE, V_RGB, or V_RGBW message of zero), only a V_STATUS of zero message should be sent. See sketches below for examples. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. -### MySensors 1.x example sketch +## MySensors 1.x example sketch ```cpp /* @@ -108,7 +108,7 @@ void incomingMessage(const MyMessage &message) { } ``` -### MySensors 2.x example sketch +## MySensors 2.x example sketch ```cpp /* @@ -241,6 +241,3 @@ void send_status_message() } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/light.rflink.markdown b/source/_integrations/light.rflink.markdown index 054831cffc76..89170dc512f3 100644 --- a/source/_integrations/light.rflink.markdown +++ b/source/_integrations/light.rflink.markdown @@ -6,6 +6,7 @@ ha_category: - Light ha_release: 0.38 ha_iot_class: Assumed State +ha_domain: rflink --- The `rflink` integration supports devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). @@ -99,18 +100,6 @@ devices: required: false default: true type: boolean - aliasses: - description: (**deprecated**) Alternative RFLink ID's this device is known by. - required: false - type: [list, string] - group_aliasses: - description: "(**deprecated**) `aliases` which only respond to group commands." - required: false - type: [list, string] - no_group_aliasses: - description: "(**deprecated**) `aliases` which do not respond to group commands." - required: false - type: [list, string] {% endconfiguration %} ### Light state diff --git a/source/_integrations/light.rfxtrx.markdown b/source/_integrations/light.rfxtrx.markdown index 031e27cd9457..9a782a63764a 100644 --- a/source/_integrations/light.rfxtrx.markdown +++ b/source/_integrations/light.rfxtrx.markdown @@ -1,16 +1,16 @@ --- title: "RFXtrx Light" description: "Instructions on how to integrate RFXtrx lights into Home Assistant." -logo: rfxtrx.png ha_category: - Light ha_release: 0.7.5 ha_iot_class: Assumed State +ha_domain: rfxtrx --- The `rfxtrx` platform support lights that communicate in the frequency range of 433.92 MHz. -First you have to set up your [rfxtrx hub](/integrations/rfxtrx/). +First you have to set up your [RFXtrx hub](/integrations/rfxtrx/). The easiest way to find your lights is to add this to your `configuration.yaml`: diff --git a/source/_integrations/light.switch.markdown b/source/_integrations/light.switch.markdown index 8ddacb048a02..4b6457b8c513 100644 --- a/source/_integrations/light.switch.markdown +++ b/source/_integrations/light.switch.markdown @@ -5,8 +5,8 @@ ha_category: - Light ha_release: 0.83 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: light --- The light switch platform lets you control an existing switch, allowing you diff --git a/source/_integrations/light.template.markdown b/source/_integrations/light.template.markdown index d125b5687897..9ed60901d726 100644 --- a/source/_integrations/light.template.markdown +++ b/source/_integrations/light.template.markdown @@ -5,8 +5,8 @@ ha_category: - Light ha_release: 0.46 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: template --- The `template` platform creates lights that combine integrations and provides the @@ -25,8 +25,10 @@ light: lights: theater_lights: friendly_name: "Theater Lights" - level_template: "{{ sensor.theater_brightness.attributes.lux|int }}" - value_template: "{{ sensor.theater_brightness.attributes.lux|int > 0 }}" + level_template: "{{ state_attr('sensor.theater_brightness', 'lux')|int }}" + value_template: "{{ state_attr('sensor.theater_brightness', 'lux')|int > 0 }}" + temperature_template: "{{states('input_number.temperature_input') | int}}" + color_template: "({{states('input_number.h_input') | int}}, {{states('input_number.s_input') | int}})" turn_on: service: script.theater_lights_on turn_off: @@ -35,6 +37,20 @@ light: service: script.theater_lights_level data_template: brightness: "{{ brightness }}" + set_temperature: + service: input_number.set_value + data_template: + value: "{{ color_temp }}" + entity_id: input_number.temperature_input + set_color: + - service: input_number.set_value + data_template: + value: "{{ h }}" + entity_id: input_number.h_input + - service: input_number.set_value + data_template: + value: "{{ s }}" + entity_id: input_number.s_input ``` {% endraw %} @@ -63,8 +79,18 @@ light: required: false type: template default: optimistic + temperature_template: + description: Defines a template to get the color temperature of the light. + required: false + type: template + default: optimistic + color_template: + description: Defines a template to get the color of the light. Must render a tuple (hue, saturation) + required: false + type: template + default: optimistic icon_template: - description: Defines a template for an icon or picture, e.g. showing a different icon for different states. + description: Defines a template for an icon or picture, e.g., showing a different icon for different states. required: false type: template availability_template: @@ -84,6 +110,14 @@ light: description: Defines an action to run when the light is given a brightness command. required: false type: action + set_temperature: + description: Defines an action to run when the light is given a color temperature command. + required: false + type: action + set_color: + description: Defines an action to run when the light is given a color command. + required: false + type: action {% endconfiguration %} ## Considerations diff --git a/source/_integrations/light.xiaomi_aqara.markdown b/source/_integrations/light.xiaomi_aqara.markdown index c8940c38a69b..4989d4c6cf06 100644 --- a/source/_integrations/light.xiaomi_aqara.markdown +++ b/source/_integrations/light.xiaomi_aqara.markdown @@ -1,15 +1,15 @@ --- title: "Xiaomi Light" description: "Instructions on how to setup the Xiaomi light within Home Assistant." -logo: xiaomi.png ha_category: - Light ha_release: "0.50" ha_iot_class: Local Push +ha_domain: xiaomi_aqara --- -The `xiaomi aqara` light platform allows you to control the internal light of the xiaomi gateway. The integration will be loaded automatically and provides a device called `light.gateway_light_28ffffffffff`. +The `xiaomi aqara` light platform allows you to control the internal light of the Xiaomi gateway. The integration will be loaded automatically and provides a device called `light.gateway_light_28ffffffffff`. The requirement is that you have setup [Xiaomi aqara](/integrations/xiaomi_aqara/). diff --git a/source/_integrations/light.xiaomi_miio.markdown b/source/_integrations/light.xiaomi_miio.markdown index f6b160f17989..833d6dceb5f4 100644 --- a/source/_integrations/light.xiaomi_miio.markdown +++ b/source/_integrations/light.xiaomi_miio.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Philips Light" description: "Instructions on how to integrate your Xiaomi Philips Lights within Home Assistant." -logo: philips.png ha_category: - Light ha_iot_class: Local Polling ha_release: 0.53 +ha_domain: xiaomi_miio --- The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips Zhirui LED Bulb E14 Candle Lamp, Xiaomi Philips Zhirui Downlight, Xiaomi Philips LED Ceiling Lamp, Xiaomi Philips Eyecare Lamp 2, Xiaomi Philips Moonlight Bedside Lamp and Philips Zhirui Desk Lamp. @@ -98,7 +98,7 @@ Supported models: `philips.light.moonlight` Please follow the instructions on [Retrieving the Access Token](/integrations/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. -To add a Xiaomi Philips Light to your installation, add the following to your configuration.yaml file: +To add a Xiaomi Philips Light to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entries @@ -132,7 +132,7 @@ model: ## Platform Services -### Service `light.xiaomi_miio_set_scene` +### Service `xiaomi_miio.light_set_scene` Set one of the 4 available fixed scenes. @@ -141,7 +141,7 @@ Set one of the 4 available fixed scenes. | `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` +### Service `xiaomi_miio.light_set_delayed_turn_off` Delayed turn off. @@ -150,7 +150,7 @@ Delayed turn off. | `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) +### Service `xiaomi_miio.light_reminder_on` (Eyecare Smart Lamp 2 only) Enable the eye fatigue reminder/notification. @@ -158,7 +158,7 @@ Enable the eye fatigue reminder/notification. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | -### Service `light.xiaomi_miio_reminder_off` (Eyecare Smart Lamp 2 only) +### Service `xiaomi_miio.light_reminder_off` (Eyecare Smart Lamp 2 only) Disable the eye fatigue reminder/notification. @@ -166,7 +166,7 @@ Disable the eye fatigue reminder/notification. |---------------------------|----------|-------------------------------------------------------| | `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) +### Service `xiaomi_miio.light_night_light_mode_on` (Eyecare Smart Lamp 2 only) Turn the smart night light mode on. @@ -174,7 +174,7 @@ Turn the smart night light mode on. |---------------------------|----------|-------------------------------------------------------| | `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) +### Service `xiaomi_miio.light_night_light_mode_off` (Eyecare Smart Lamp 2 only) Turn the smart night light mode off. @@ -182,7 +182,7 @@ Turn the smart night light mode off. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | -### Service `light.xiaomi_miio_eyecare_mode_on` (Eyecare Smart Lamp 2 only) +### Service `xiaomi_miio.light_eyecare_mode_on` (Eyecare Smart Lamp 2 only) Turn the eyecare mode on. @@ -190,7 +190,7 @@ Turn the eyecare mode on. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | -### Service `light.xiaomi_miio_eyecare_mode_off` (Eyecare Smart Lamp 2 only) +### Service `xiaomi_miio.light_eyecare_mode_off` (Eyecare Smart Lamp 2 only) Turn the eyecare mode off. diff --git a/source/_integrations/lightwave.markdown b/source/_integrations/lightwave.markdown index 393cb671659d..e0c3fc385145 100644 --- a/source/_integrations/lightwave.markdown +++ b/source/_integrations/lightwave.markdown @@ -1,6 +1,6 @@ --- -title: "Lightwave" -description: "Instructions on how to integrate Lightwave devices with Home Assistant." +title: Lightwave +description: Instructions on how to integrate Lightwave devices with Home Assistant. logo: lightwave.png ha_category: - Hub @@ -8,6 +8,7 @@ ha_category: - Switch ha_release: 0.84 ha_iot_class: Assumed State +ha_domain: lightwave --- The `lightwave` integration links Home Assistant with your Lightwave WiFi link for controlling Lightwave lights and switches. diff --git a/source/_integrations/limitlessled.markdown b/source/_integrations/limitlessled.markdown index b1e336b01460..d94d5800f9d0 100644 --- a/source/_integrations/limitlessled.markdown +++ b/source/_integrations/limitlessled.markdown @@ -1,14 +1,15 @@ --- -title: "LimitlessLED" -description: "Instructions on how to setup LimitlessLED within Home Assistant." +title: LimitlessLED +description: Instructions on how to setup LimitlessLED within Home Assistant. logo: limitlessled_logo.png ha_category: - Light ha_iot_class: Assumed State ha_release: pre 0.7 +ha_domain: limitlessled --- -`limitlessled` can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, [MiLight](https://www.milight.com/), LEDme, dekolight, or iLight. +`limitlessled` can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, MiLight, LEDme, dekolight, or iLight. LimitlessLED bulbs are controlled via groups, so you can only control an individual bulb via the bridge if it is in a group by itself. @@ -16,9 +17,9 @@ Note: you can assign an `rgbw`, `rgbww`, `white` and `dimmer` group to the same An archive of the extensive API can be found [here](https://github.com/Fantasmos/LimitlessLED-DevAPI). -### Setup +## Setup -Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Next, discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [iTunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). +Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Next, discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([Android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [iTunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). To add `limitlessled` to your installation, add the following to your `configuration.yaml` file: @@ -84,7 +85,7 @@ bridges: required: true type: string type: - description: Type of group. Choose either `rgbww`, `rgbw`, `white`, `bridge-led` or `dimmer`. Use `bridge-led` to control the built-in LED of newer WiFi bridges. + description: Type of group. Choose either `rgbww`, `rgbw`, `white`, `bridge-led` or `dimmer`. Use `bridge-led` to control the built-in LED of newer Wi-Fi bridges. required: false default: rgbw type: string @@ -123,14 +124,14 @@ Refer to the [light]({{site_root}}/integrations/light/) documentation for genera - *Brightness*: There are 101 brightness steps. - **RGBW** - *Color*: There are 256 color possibilities along the LimitlessLED color spectrum. Color properties like saturation and lightness cannot be used - only Hue can. The only exception is white (which may be warm or cold depending on the type of RGBW bulb). If you select a color with saturation or lightness, Home Assistant will calculate the nearest valid LimitlessLED color. - - *Brightness*: Wifi bridge v6 supports 101 brightness steps; older versions only 25. + - *Brightness*: Wi-Fi bridge v6 supports 101 brightness steps; older versions only 25. - **White** - - When using a legacy WiFi bridge (before v6), you can observe on the MiLight mobile application, you can not select a specific brightness or temperature - you can only step each property up or down. There is no indication of which step you are on. This restriction, combined with the unreliable nature of LimitlessLED transmissions, means that setting white bulb properties is done on a best-effort basis. The only very reliable settings are the minimum and maximum of each property. - - *Temperature*: Wifi bridge v6 supports 101 temperature steps; older versions only 10. - - *Brightness*: Wifi bridge v6 supports 101 brightness steps; older versions only 10. + - When using a legacy Wi-Fi bridge (before v6), you can observe on the MiLight mobile application, you can not select a specific brightness or temperature - you can only step each property up or down. There is no indication of which step you are on. This restriction, combined with the unreliable nature of LimitlessLED transmissions, means that setting white bulb properties is done on a best-effort basis. The only very reliable settings are the minimum and maximum of each property. + - *Temperature*: Wi-Fi bridge v6 supports 101 temperature steps; older versions only 10. + - *Brightness*: Wi-Fi bridge v6 supports 101 brightness steps; older versions only 10. - **Dimmer** (Only supported on v6 bridges) - - This type is for a single color LED dimmer like the 1CH MiLight dimmer module or similar. This type is only supported by the version 6 Wifi bridges. - - *Brightness*: Wifi bridge v6 supports 101 brightness steps. + - This type is for a single color LED dimmer like the 1CH MiLight dimmer module or similar. This type is only supported by the version 6 Wi-Fi bridges. + - *Brightness*: Wi-Fi bridge v6 supports 101 brightness steps. - **Transitions** - If a transition time is set, the group will transition between the current settings and the target settings for the duration specified. Transitions from or to white are not possible - the color will change immediately. diff --git a/source/_integrations/linksys_smart.markdown b/source/_integrations/linksys_smart.markdown index 673e6a23ea94..db84d9879314 100644 --- a/source/_integrations/linksys_smart.markdown +++ b/source/_integrations/linksys_smart.markdown @@ -1,13 +1,14 @@ --- -title: "Linksys Smart Wifi Router" -description: "Instructions on how to integrate Linksys Smart Wifi Router into Home Assistant." +title: Linksys Smart Wi-Fi +description: Instructions on how to integrate Linksys Smart Wi-Fi Router into Home Assistant. ha_category: - Presence Detection logo: linksys.png ha_release: 0.48 +ha_domain: linksys_smart --- -The `linksys_smart` platform offers presence detection by looking at connected devices to a Linksys Smart Wifi based router. +The `linksys_smart` platform offers presence detection by looking at connected devices to a Linksys Smart Wi-Fi based router. Tested routers: @@ -20,7 +21,7 @@ For this platform to work correctly, it is necessary to disable the "Access via ## Configuration -To use a Linksys Smart Wifi Router in your Home Assistant installation, add the following to your `configuration.yaml` file: +To use a Linksys Smart Wi-Fi Router in your Home Assistant installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/linky.markdown b/source/_integrations/linky.markdown index 059187b9d349..7361f19dc451 100644 --- a/source/_integrations/linky.markdown +++ b/source/_integrations/linky.markdown @@ -1,12 +1,15 @@ --- -title: "Linky Sensor" -description: "Instructions on how to integrate Linky consumption data within Home Assistant." -logo: enedis.png +title: Enedis Linky +description: Instructions on how to integrate Linky consumption data within Home Assistant. ha_release: 0.79 ha_category: - Energy - Sensor ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@Quentame' +ha_domain: linky --- The `linky` sensor platform is retrieving the consumption of your home from the [Linky electric meter](https://www.enedis.fr/linky-compteur-communicant). diff --git a/source/_integrations/linode.markdown b/source/_integrations/linode.markdown index 097b925111fb..885aa55f0f59 100644 --- a/source/_integrations/linode.markdown +++ b/source/_integrations/linode.markdown @@ -1,13 +1,13 @@ --- -title: "Linode" -description: "Instructions on how to set up Linode within Home Assistant." +title: Linode +description: Instructions on how to set up Linode within Home Assistant. ha_category: - System Monitor - Binary Sensor - Switch -logo: linode.png ha_release: 0.57 ha_iot_class: Cloud Polling +ha_domain: linode --- The `linode` integration allows you to access the information about your [Linode](https://linode.com) systems from Home Assistant. diff --git a/source/_integrations/linux_battery.markdown b/source/_integrations/linux_battery.markdown index 63d5ecc4395a..e12d119bccc3 100644 --- a/source/_integrations/linux_battery.markdown +++ b/source/_integrations/linux_battery.markdown @@ -1,11 +1,14 @@ --- -title: "Linux Battery" -description: "Instructions on how to integrate Linux Battery information into Home Assistant." +title: Linux Battery +description: Instructions on how to integrate Linux Battery information into Home Assistant. logo: linux_battery.png ha_category: - System Monitor ha_release: 0.28 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' +ha_domain: linux_battery --- The `linux_battery` sensor platform is using the information stored in `/sys/class/power_supply/` on your local Linux system to display details about the current state of your battery. diff --git a/source/_integrations/lirc.markdown b/source/_integrations/lirc.markdown index 43507b1df036..16352ee48620 100644 --- a/source/_integrations/lirc.markdown +++ b/source/_integrations/lirc.markdown @@ -1,11 +1,12 @@ --- -title: "LIRC" -description: "Instructions on how to integrate IR remotes with LIRC into Home Assistant." +title: LIRC +description: Instructions on how to integrate IR remotes with LIRC into Home Assistant. logo: lirc.gif ha_category: - Automation ha_release: 0.21 ha_iot_class: Local Push +ha_domain: lirc --- [LIRC](http://www.lirc.org/) integration for Home Assistant allows you to receive signals from an infrared remote control and control actions based on the buttons you press. You can use them to set scenes or trigger any other [automation](/integrations/automation/). @@ -22,7 +23,7 @@ sudo apt-get install lirc liblircclient-dev
    -If you are configuring on a Raspberry Pi, there are excellent instructions with GPIO schematics and driver configurations [here](http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/). Take notice, the instructions in this blog are valid for Raspian Jesse where lirc 0.9.0 was included in the debian package. In Raspian Stretch lirc 0.9.4 is included in the Debian package. +If you are configuring on a Raspberry Pi, there are excellent instructions with GPIO schematics and driver configurations [here](http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/). Take notice, the instructions in this blog are valid for Raspian Jesse where lirc 0.9.0 was included in the Debian package. In Raspian Stretch lirc 0.9.4 is included in the Debian package. The configuration is slightly different : - The `hardware.conf` file is not supported, obsoleted by a new `lirc_options.conf` file and systemd unit definitions. diff --git a/source/_integrations/litejet.markdown b/source/_integrations/litejet.markdown index 15ad5dc2e131..751bdbeb688d 100644 --- a/source/_integrations/litejet.markdown +++ b/source/_integrations/litejet.markdown @@ -1,13 +1,13 @@ --- -title: "LiteJet" -description: "Instructions on how to setup the LiteJet hub within Home Assistant." -logo: centralite.svg +title: LiteJet +description: Instructions on how to setup the LiteJet hub within Home Assistant. ha_category: - Light - Scene - Switch ha_iot_class: Local Push ha_release: 0.32 +ha_domain: litejet --- LiteJet is a centralized lighting system that predates most home automation technology. All lights and wall switches are wired to a central panel. This central panel has a serial port interface that allows a computer to control the system via LiteJet's third party protocol. diff --git a/source/_integrations/liveboxplaytv.markdown b/source/_integrations/liveboxplaytv.markdown deleted file mode 100644 index 26353a990a14..000000000000 --- a/source/_integrations/liveboxplaytv.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Orange Livebox Play TV" -description: "Instructions on how to integrate a Livebox Play TV appliance into Home Assistant." -logo: orange.png -ha_category: - - Media Player -ha_release: 0.38 -ha_iot_class: Local Polling ---- - -The `liveboxplaytv` platform allows you to control [Orange Livebox Play TV appliances](https://boutique.orange.fr/internet/decodeur-tv-livebox). - -## Configuration - -To add an Orange Livebox Play TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: liveboxplaytv - host: 192.168.1.3 -``` - -{% configuration %} -host: - description: The IP address or hostname of the Orange Livebox Play TV appliance. - required: true - type: string -name: - description: The name to use in the frontend. - required: false - default: "`Livebox Play TV`" - type: string -port: - description: The port on which the Livebox is listening on. - required: false - default: 8080 - type: integer -{% endconfiguration %} - -## Full configuration - -A full configuration example for an Orange TV appliance can look like this: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: liveboxplaytv - host: 192.168.1.3 - port: 8080 - name: Orange Livebox Play TV -``` diff --git a/source/_integrations/llamalab_automate.markdown b/source/_integrations/llamalab_automate.markdown index 6aa652104fb4..6e367dd1a7f4 100644 --- a/source/_integrations/llamalab_automate.markdown +++ b/source/_integrations/llamalab_automate.markdown @@ -1,10 +1,10 @@ --- -title: "LlamaLab Automate" -description: "Instructions on how to add user notifications to Home Assistant." -logo: llamalab_automate.png +title: LlamaLab Automate +description: Instructions on how to add user notifications to Home Assistant. ha_category: - Notifications ha_release: 0.27 +ha_domain: llamalab_automate --- The `llamalab_automate` platform uses Googles Cloud Messaging Services to push messages from Home Assistant to your Android device running the LlamaLab [Automate](https://llamalab.com/automate/) app. This can serve as an alternative to Tasker + AutoRemote. diff --git a/source/_integrations/local_file.markdown b/source/_integrations/local_file.markdown index d6e4e223f3ab..c1437eb277ac 100644 --- a/source/_integrations/local_file.markdown +++ b/source/_integrations/local_file.markdown @@ -1,11 +1,11 @@ --- -title: "Local File" -description: "Instructions how to use Local File as a Camera within Home Assistant." -logo: file.png +title: Local File +description: Instructions how to use Local File as a Camera within Home Assistant. ha_category: - Camera ha_iot_class: Local Polling ha_release: 0.22 +ha_domain: local_file --- The `local_file` camera platform allows you to integrate an image file from disk into Home Assistant as a camera. If the image is updated on the file system the image displayed in Home Assistant will also be updated. The service `local_file_update_file_path` can be used to update the image using an automation. @@ -34,7 +34,7 @@ name: type: string {% endconfiguration %} -### Service `camera.local_file_update_file_path` +### Service `local_file.update_file_path` Use this service to change the file displayed by the camera. diff --git a/source/_integrations/local_ip.markdown b/source/_integrations/local_ip.markdown new file mode 100644 index 000000000000..d6d12b3623d5 --- /dev/null +++ b/source/_integrations/local_ip.markdown @@ -0,0 +1,31 @@ +--- +title: Local IP Address +description: Instructions on how to integrate the Local IP Address sensor into Home Assistant. +ha_category: + - Network +ha_iot_class: Local Polling +ha_release: 0.104 +ha_config_flow: true +ha_codeowners: + - '@issacg' +ha_domain: local_ip +--- + +The `local_ip` sensor will expose the local (LAN) IP address of your Home Assistant instance. This can be useful when your instance has a static public hostname (for example, if you use the Nabu Casa service), but have a dynamically allocated local LAN address (for example, configured via DHCP). + +The sensor can be added via the user interface or using the `configuration.yaml` file. To enable this sensor, via the `configuration.yaml` file, add the following minimal configuration: + +```yaml +# Example configuration.yaml entry +local_ip: +``` + +To configure via the user interface, select the `Local IP Address` integration. + +{% configuration %} +name: + description: Friendly name of the sensor. + required: false + type: string + default: local_ip +{% endconfiguration %} diff --git a/source/_integrations/locative.md b/source/_integrations/locative.md index e8fcfd49e7d2..e07784c79143 100644 --- a/source/_integrations/locative.md +++ b/source/_integrations/locative.md @@ -6,6 +6,7 @@ ha_category: - Presence Detection ha_release: 0.86 ha_iot_class: Cloud Push +ha_domain: locative --- This platform allows you to detect presence using [Locative](https://www.locative.io/). Locative is an open source app for [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4) that allows users to set up a `GET` or `POST` request when a geofence is entered or exited. This can be configured with Home Assistant to update your location. diff --git a/source/_integrations/lock.markdown b/source/_integrations/lock.markdown index 175a7389c3f9..187ce2f915f7 100644 --- a/source/_integrations/lock.markdown +++ b/source/_integrations/lock.markdown @@ -1,11 +1,11 @@ --- -title: "Locks" -description: "Instructions on how to setup your locks with Home Assistant." -logo: home-assistant.png +title: Lock +description: Instructions on how to setup your locks with Home Assistant. ha_category: - Lock -ha_qa_scale: internal ha_release: 0.9 +ha_quality_scale: internal +ha_domain: lock --- Keeps track which locks are in your environment, their state and allows you to control them. @@ -61,4 +61,4 @@ Go to the **Developer Tools**, then to **Call Service** in the frontend, and cho | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on specific lock. Else targets all. +| `entity_id` | yes | Only act on specific lock. Use `entity_id: all` to target all. diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown index ecb714eaeeba..f4eae2dc7eea 100644 --- a/source/_integrations/lock.mqtt.markdown +++ b/source/_integrations/lock.mqtt.markdown @@ -1,11 +1,11 @@ --- title: "MQTT Lock" description: "Instructions on how to integrate MQTT locks into Home Assistant." -logo: mqtt.png ha_category: - Lock ha_release: 0.15 ha_iot_class: Configurable +ha_domain: mqtt --- The `mqtt` lock platform lets you control your MQTT enabled locks. @@ -28,12 +28,49 @@ lock: ``` {% configuration %} +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. + required: false + type: string command_topic: description: The MQTT topic to publish commands to change the lock state. required: true type: string -state_topic: - description: The MQTT topic subscribed to receive state updates. +device: + description: 'Information about the device this lock is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: [string, list] + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." + required: false + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. required: false type: string name: @@ -41,21 +78,31 @@ name: required: false type: string default: MQTT Lock +optimistic: + description: Flag that defines if lock works in optimistic mode. + required: false + type: string + default: "`true` if no `state_topic` defined, else `false`." +payload_available: + description: The payload that represents the available state. + required: false + type: string + default: online payload_lock: description: The payload that represents enabled/locked state. required: false type: string default: LOCK +payload_not_available: + description: The payload that represents the unavailable state. + required: false + type: string + default: offline payload_unlock: description: The payload that represents disabled/unlocked state. required: false type: string default: UNLOCK -optimistic: - description: Flag that defines if lock works in optimistic mode. - required: false - type: string - default: "`true` if no `state_topic` defined, else `false`." qos: description: The maximum QoS level of the state topic. required: false @@ -66,65 +113,28 @@ retain: required: false type: boolean default: false -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." +state_locked: + description: The value that represents the lock to be in locked state required: false type: string -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. + default: LOCKED +state_topic: + description: The MQTT topic subscribed to receive state updates. required: false type: string - default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. +state_unlocked: + description: The value that represents the lock to be in unlocked state required: false type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." - required: false - type: template + default: UNLOCKED unique_id: description: An ID that uniquely identifies this lock. If two locks have the same unique ID, Home Assistant will raise an exception. required: false type: string -device: - description: 'Information about the device this lock is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." required: false - type: map - keys: - identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' - required: false - type: [string, list] - connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' - required: false - type: list - manufacturer: - description: 'The manufacturer of the device.' - required: false - type: string - model: - description: 'The model of the device.' - required: false - type: string - name: - description: 'The name of the device.' - required: false - type: string - sw_version: - description: 'The firmware version of the device.' - required: false - type: string + type: string {% endconfiguration %}
    diff --git a/source/_integrations/lock.template.markdown b/source/_integrations/lock.template.markdown index 74e67c1a2ee0..81a597977ee4 100644 --- a/source/_integrations/lock.template.markdown +++ b/source/_integrations/lock.template.markdown @@ -5,8 +5,8 @@ ha_category: - Lock ha_release: 0.81 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: template --- The `template` platform creates locks that combines components. diff --git a/source/_integrations/lock.xiaomi_aqara.markdown b/source/_integrations/lock.xiaomi_aqara.markdown index 2e5773ea1d9c..07ed1573f5d2 100644 --- a/source/_integrations/lock.xiaomi_aqara.markdown +++ b/source/_integrations/lock.xiaomi_aqara.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Aqara Lock" description: "Instructions on how to setup the Xiaomi Aqara Lock within Home Assistant." -logo: xiaomi.png ha_category: - Lock ha_release: 0.71 ha_iot_class: Local Push +ha_domain: xiaomi_aqara --- diff --git a/source/_integrations/lockitron.markdown b/source/_integrations/lockitron.markdown index 045e314c8f5f..80e5224fe096 100644 --- a/source/_integrations/lockitron.markdown +++ b/source/_integrations/lockitron.markdown @@ -1,11 +1,12 @@ --- -title: "Lockitron Lock" -description: "Instructions on how to integrate Lockitron locks into Home Assistant." +title: Lockitron +description: Instructions on how to integrate Lockitron locks into Home Assistant. logo: lockitron.png ha_category: - Lock ha_iot_class: Cloud Polling ha_release: 0.42 +ha_domain: lockitron --- The `lockitron` platform allows you to control your [Lockitron](https://lockitron.com/) lock from within Home Assistant. diff --git a/source/_integrations/logbook.markdown b/source/_integrations/logbook.markdown index 72c4c7263c3e..69c0dafe39d1 100644 --- a/source/_integrations/logbook.markdown +++ b/source/_integrations/logbook.markdown @@ -1,10 +1,10 @@ --- -title: "Logbook" -description: "Instructions on how to enable the logbook integration for Home Assistant." -logo: logbook.png +title: Logbook +description: Instructions on how to enable the logbook integration for Home Assistant. ha_category: - History ha_release: 0.7 +ha_domain: logbook --- @@ -65,7 +65,6 @@ logbook: - sensor.date domains: - sun - - weblink ``` In case you just want to see messages from some specific entities or domains use diff --git a/source/_integrations/logentries.markdown b/source/_integrations/logentries.markdown index f6b9092429bd..ab62a2148df0 100644 --- a/source/_integrations/logentries.markdown +++ b/source/_integrations/logentries.markdown @@ -1,10 +1,10 @@ --- -title: "Logentries" -description: "Send events to Logentries." -logo: logentries.png +title: Logentries +description: Send events to Logentries. ha_category: - History ha_release: 0.13 +ha_domain: logentries --- The `logentries` integration makes it possible to log all state changes to [Logentries](http://logentries.com/) using Logentries Webhook endpoint. @@ -25,4 +25,3 @@ token: required: true type: string {% endconfiguration %} - diff --git a/source/_integrations/logger.markdown b/source/_integrations/logger.markdown index 2d59c0b2384a..8bca5f4fcbad 100644 --- a/source/_integrations/logger.markdown +++ b/source/_integrations/logger.markdown @@ -1,11 +1,13 @@ --- -title: "Logger" -description: "Instructions on how to enable the logger integration for Home Assistant." -logo: home-assistant.png +title: Logger +description: Instructions on how to enable the logger integration for Home Assistant. ha_category: - Utility -ha_qa_scale: internal ha_release: 0.8 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: logger --- The `logger` integration lets you define the level of logging activities in Home @@ -41,10 +43,16 @@ logger: logs: # log level for HA core homeassistant.core: fatal - + # log level for MQTT integration homeassistant.components.mqtt: warning - + + # log level for all python scripts + homeassistant.components.python_script: warning + + # individual log level for this python script + homeassistant.components.python_script.my_new_script.py: debug + # log level for SmartThings lights homeassistant.components.smartthings.light: info @@ -61,7 +69,7 @@ logger: The log entries are in the form *timestamp* *log-level* *thread* [**namespace**] *message* -where **namespace** is the ** currently logging. +where **namespace** is the ** currently logging. {% configuration %} default: @@ -79,9 +87,13 @@ where **namespace** is the ** currently logging. type: string {% endconfiguration %} -In the example, do note the difference between 'glances_api' and 'homeassistant.components.glances' namespaces, +In the example, do note the difference between 'glances_api' and 'homeassistant.components.glances' namespaces, both of which are at root. They are logged by different APIs. +If you want to know the namespaces in your own environment then check your log files on startup. +You will see INFO log messages from homeassistant.loader stating `loaded from `. +Those are the namespaces available for you to set a `log level` against. + ### Log Levels Possible log severity levels, listed in order from most severe to least severe, are: @@ -132,9 +144,17 @@ The log information are stored in the and you can read it with the command-line tool `cat` or follow it dynamically with `tail -f`. -If you are a Hass.io user, you can use the example below, when logged in through -the [SSH add-on](/addons/ssh/): +You can use the example below, when logged in through the [SSH add-on](/addons/ssh/): ```bash -$ tail -f /config/home-assistant.log +tail -f /config/home-assistant.log ``` + +On Docker you can use your host command line directly - follow the logs dynamically with: + +```bash +# follow the log dynamically +docker logs --follow MY_CONTAINER_ID +``` + +To see other options use `--help` instead, or simply leave with no options to display the entire log. diff --git a/source/_integrations/logi_circle.markdown b/source/_integrations/logi_circle.markdown index a2359ab1cbec..e252a8d592d1 100644 --- a/source/_integrations/logi_circle.markdown +++ b/source/_integrations/logi_circle.markdown @@ -1,12 +1,15 @@ --- -title: "Logi Circle" -description: "Instructions on how to integrate your Logi Circle cameras within Home Assistant." -logo: logi_circle.png +title: Logi Circle +description: Instructions on how to integrate your Logi Circle cameras within Home Assistant. ha_category: - Camera - Sensor ha_release: 0.79 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@evanjd' +ha_domain: logi_circle --- The `logi_circle` implementation allows you to integrate your [Logi Circle](https://circle.logi.com/) cameras in Home Assistant. To connect Logi Circle, you will have to [sign up for API access](#requesting-api-access) and get a `client_id`, `client_secret` and `api_key`. @@ -112,9 +115,9 @@ sensor: recording: description: The camera's recording mode. If false, the camera will not capture activities. signal_strength_category: - description: Return the WiFi signal level from the camera. + description: Return the Wi-Fi signal level from the camera. signal_strength_percentage: - description: Return the WiFi signal percentage from the camera. + description: Return the Wi-Fi signal percentage from the camera. streaming: description: The soft on/off status of the camera. {% endconfiguration %} diff --git a/source/_integrations/london_air.markdown b/source/_integrations/london_air.markdown index 2fc19f24c746..a658cd136df4 100644 --- a/source/_integrations/london_air.markdown +++ b/source/_integrations/london_air.markdown @@ -1,18 +1,18 @@ --- -title: "London Air Quality" -description: "Display the current status of London air quality by area and pollution type." -logo: waqi.png +title: London Air +description: Display the current status of London air quality by area and pollution type. ha_category: - Health ha_iot_class: Cloud Polling ha_release: 0.52 +ha_domain: london_air --- The `london_air` integration [queries](https://api.erg.kcl.ac.uk/AirQuality/Hourly/MonitoringIndex/GroupName=London/Json) the London air quality [data feed](https://www.londonair.org.uk/LondonAir/API/) provided by Kings College London. A single sensor will be added for each `location` ([local authority district or borough](https://en.wikipedia.org/wiki/List_of_London_boroughs)) specified in the configuration file. The state of each sensor is the overall air quality in that borough. Note that only 28 of the 32 boroughs have data available. Boroughs can have multiple monitoring sites at different geographical positions within the borough, and each of those sites can monitor up to six different kinds of pollutant. The pollutants are described [here](https://api.erg.kcl.ac.uk/AirQuality/Information/Species/Json) and are Carbon Monoxide ([CO2](https://www.londonair.org.uk/LondonAir/guide/WhatIsCO.aspx)), Nitrogen Dioxide ([NO2](https://www.londonair.org.uk/LondonAir/guide/WhatIsNO2.aspx)), Ozone ([O3](https://www.londonair.org.uk/LondonAir/guide/WhatIsO3.aspx)), Sulfur Dioxide ([SO2](https://www.londonair.org.uk/LondonAir/guide/WhatIsSO2.aspx)), PM2.5 & PM10 [particulates](https://www.londonair.org.uk/LondonAir/guide/WhatIsPM.aspx). The `latitude` and `longitude` of each site is accessible through a `data` attribute of the sensor, as are details about the pollutants monitored at that site. The `sites` attribute of a sensor displays how many monitoring sites that sensor covers. The `updated` attribute of a sensor states when the data was last published. Nominally data is published hourly, but in my experience this can vary. To limit the number of requests made by the sensor, a single API request is made every 30 minutes. -To add sensors to Home-assistant for all possible areas/boroughs add the following to your `configuration.yaml` file: +To add sensors to Home Assistant for all possible areas/boroughs add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry for a single sensor @@ -56,7 +56,7 @@ locations: type: list {% endconfiguration %} -To explore the data available within the `data` attribute of a sensor use the `dev-template` tool on the Home-assistant frontend. `data` contains a list of monitored sites, where the number of monitored sites are given by the `sites` attribute. If a sensor has four sites, access the fourth site by indexing the list of sites using data[3]. Each site is a dictionary with multiple fields, with entries for the `latitude` and `longitude` of that site, a `pollution_status`, `site_code`, `site_name` and `site_type`. The field `number_of_pollutants` states how many pollutants are monitored (of the possible six) and the field `pollutants` returns a list with data for each pollutant. To access the first pollutant in the list for site zero use `attributes.data[0].pollutants[0]`. Each entry in `pollutants` is a dictionary with fields for the pollutant `code`, `description`, `index`, `quality` and a `summary`. [Template sensors](/integrations/template) can then be added to display these attributes, for example: +To explore the data available within the `data` attribute of a sensor use the `dev-template` tool on the Home Assistant frontend. `data` contains a list of monitored sites, where the number of monitored sites are given by the `sites` attribute. If a sensor has four sites, access the fourth site by indexing the list of sites using data[3]. Each site is a dictionary with multiple fields, with entries for the `latitude` and `longitude` of that site, a `pollution_status`, `site_code`, `site_name` and `site_type`. The field `number_of_pollutants` states how many pollutants are monitored (of the possible six) and the field `pollutants` returns a list with data for each pollutant. To access the first pollutant in the list for site zero use `attributes.data[0].pollutants[0]`. Each entry in `pollutants` is a dictionary with fields for the pollutant `code`, `description`, `index`, `quality` and a `summary`. [Template sensors](/integrations/template) can then be added to display these attributes, for example: ```yaml # Example template sensors diff --git a/source/_integrations/london_underground.markdown b/source/_integrations/london_underground.markdown index 0e459945455f..fbbb898bafb7 100644 --- a/source/_integrations/london_underground.markdown +++ b/source/_integrations/london_underground.markdown @@ -1,11 +1,11 @@ --- -title: "London Underground" -description: "Display the current status of London underground & overground lines within Home Assistant." -logo: london_underground.png +title: London Underground +description: Display the current status of London underground & overground lines within Home Assistant. ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.49 +ha_domain: london_underground --- The `london_underground` sensor will display the status of London underground lines, as well as the Overground, DLR and Tfl rail. diff --git a/source/_integrations/loopenergy.markdown b/source/_integrations/loopenergy.markdown index d452f03e15bb..30fc4c5e7fef 100644 --- a/source/_integrations/loopenergy.markdown +++ b/source/_integrations/loopenergy.markdown @@ -1,11 +1,11 @@ --- -title: "Loop Energy" -description: "Instructions on how to integrate Loop Energy devices within Home Assistant." -logo: loop.png +title: Loop Energy +description: Instructions on how to integrate Loop Energy devices within Home Assistant. ha_category: - Energy ha_release: 0.17 ha_iot_class: Cloud Push +ha_domain: loopenergy --- Integrate your [Loop Energy](https://www.your-loop.com/) meter information into Home Assistant. To use this sensor you need the client serial number and secret keys for your devices. diff --git a/source/_integrations/luci.markdown b/source/_integrations/luci.markdown index 776607e3718e..f5b25501e19c 100644 --- a/source/_integrations/luci.markdown +++ b/source/_integrations/luci.markdown @@ -1,21 +1,17 @@ --- -title: "OpenWRT (luci)" -description: "Instructions on how to integrate OpenWRT routers into Home Assistant." +title: OpenWRT (luci) +description: Instructions on how to integrate OpenWRT routers into Home Assistant. logo: openwrt.png ha_category: - Presence Detection ha_release: pre 0.7 +ha_codeowners: + - '@fbradyirl' + - '@mzdrale' +ha_domain: luci --- -_This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/integrations/openwrt/)._ - -This is a presence detection scanner for OpenWRT using [luci](https://openwrt.org/docs/techref/luci). - -
    - -This integration requires a [workaround](https://github.com/home-assistant/home-assistant/issues/1258#issuecomment-252469880) when using luci with HTTPS and a self-signed certificate. - -
    +This is a presence detection scanner for OpenWrt using [luci](https://openwrt.org/docs/techref/luci). Before this scanner can be used you have to install the luci RPC package on OpenWRT: @@ -61,11 +57,11 @@ verify_ssl: See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. -This device tracker provides a number of additional attributes for each tracked device (if it is at home): `flags`, `ip`, `device`, and `host`. The first three attributes are taken from the ARP table returned by the luci RPC. The `host` attribute is taken from the platform configuration and can be used to distinguish in which router a device is logged in, if you are using multiple OpenWRT routers. +This device tracker provides a number of additional attributes for each tracked device (if it is at home): `flags`, `ip`, `device`, and `host`. The first three attributes are taken from the ARP table returned by the luci RPC. The `host` attribute is taken from the platform configuration and can be used to distinguish in which router a device is logged in, if you are using multiple OpenWrt routers.
    Some installations have [a small bug](https://github.com/openwrt/luci/issues/576). The timeout for luci RPC calls is not set and this makes the call fail. -If you want to locally fix your OpenWRT installation, you can apply the change manually to `/usr/lib/lua/luci/controller/rpc.lua`, or simply set a fixed timeout. The default is 3600. +If you want to locally fix your OpenWrt installation, you can apply the change manually to `/usr/lib/lua/luci/controller/rpc.lua`, or simply set a fixed timeout. The default is 3600.
    diff --git a/source/_integrations/luftdaten.markdown b/source/_integrations/luftdaten.markdown index 45e442ae7178..442b57fd1b66 100644 --- a/source/_integrations/luftdaten.markdown +++ b/source/_integrations/luftdaten.markdown @@ -1,13 +1,16 @@ --- -title: "Luftdaten" -description: "Instructions on how to setup Luftdaten sensors in Home Assistant." -logo: luftdaten.png +title: Luftdaten +description: Instructions on how to setup Luftdaten sensors in Home Assistant. ha_category: - Health - Sensor ha_release: 0.82 ha_iot_class: Cloud Polling -ha_qa_scale: gold +ha_config_flow: true +ha_quality_scale: gold +ha_codeowners: + - '@fabaff' +ha_domain: luftdaten --- The `luftdaten` integration will query the open data API of [luftdaten.info](https://luftdaten.info/) to monitor air quality and other weather data from a specific (self build) sensor station. diff --git a/source/_integrations/lupusec.markdown b/source/_integrations/lupusec.markdown index f23d4eee5f9d..86f9b84d3d8b 100644 --- a/source/_integrations/lupusec.markdown +++ b/source/_integrations/lupusec.markdown @@ -1,6 +1,6 @@ --- -title: "Lupus Electronics Home Security" -description: "Instructions on integrating Lupusec home security with Home Assistant." +title: Lupus Electronics LUPUSEC +description: Instructions on integrating Lupusec home security with Home Assistant. logo: lupusec.png ha_category: - Hub @@ -9,6 +9,9 @@ ha_category: - Switch ha_release: 0.83 ha_iot_class: Local Polling +ha_codeowners: + - '@majuss' +ha_domain: lupusec --- The `lupusec` integration allows the user to integrate their Lupusec alarm control panel and ultimately all connected sensors and other devices. For more information about the LUPUS-Electronics security system please visit their [website](https://www.lupus-electronics.de). diff --git a/source/_integrations/lutron.markdown b/source/_integrations/lutron.markdown index e1c8c7b65b8c..f9d810e697dd 100644 --- a/source/_integrations/lutron.markdown +++ b/source/_integrations/lutron.markdown @@ -1,6 +1,6 @@ --- -title: "Lutron" -description: "Instructions on how to use Lutron devices with Home Assistant." +title: Lutron +description: Instructions on how to use Lutron devices with Home Assistant. logo: lutron.png ha_category: - Hub @@ -10,6 +10,9 @@ ha_category: - Switch ha_release: 0.37 ha_iot_class: Local Polling +ha_codeowners: + - '@JonGilmore' +ha_domain: lutron --- [Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches/dimmers, occupancy sensors, HVAC controls, etc. The `lutron` integration in Home Assistant is responsible for communicating with the main hub for these systems. @@ -72,7 +75,7 @@ After setup, scenes will appear in Home Assistant using the area, keypad and but ## Occupancy Sensors -Any configured Powr Savr occuancy sensors will be added as occupancy binary sensors. Lutron reports occupancy for an area, rather than reporting individual sensors. Sensitivity and timeouts are controlled on the sensors themselves, not in software. +Any configured Powr Savr occupancy sensors will be added as occupancy binary sensors. Lutron reports occupancy for an area, rather than reporting individual sensors. Sensitivity and timeouts are controlled on the sensors themselves, not in software. ## Example Automations diff --git a/source/_integrations/lutron_caseta.markdown b/source/_integrations/lutron_caseta.markdown index 36f20244baad..a815ef68e441 100644 --- a/source/_integrations/lutron_caseta.markdown +++ b/source/_integrations/lutron_caseta.markdown @@ -1,6 +1,6 @@ --- -title: "Lutron Caseta" -description: "Instructions on how to use Lutron Caseta devices with Home Assistant." +title: Lutron Caseta +description: Instructions on how to use Lutron Caseta devices with Home Assistant. logo: lutron.png ha_category: - Hub @@ -8,20 +8,25 @@ ha_category: - Light - Scene - Switch + - Fan + - Binary Sensor ha_release: 0.41 ha_iot_class: Local Polling +ha_domain: lutron_caseta --- -[Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches, dimmers, occupancy sensors, HVAC controls, etc. The `lutron_caseta` integration in Home Assistant is responsible for communicating with the Lutron Caseta Smart Bridge for the [Caseta](https://www.casetawireless.com/) product line of dimmers, switches and shades. +[Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches, dimmers, occupancy sensors, HVAC controls, etc. The `lutron_caseta` integration in Home Assistant is responsible for communicating with the Lutron Caseta Smart Bridge for the [Caseta](https://www.casetawireless.com/) product line of dimmers, switches, shades, and sensors. It will also communicate with the Lutron Radio RA2 Main Repeater for the [RA2 Select](http://www.lutron.com/en-US/Products/Pages/WholeHomeSystems/RA2Select/Overview.aspx) product line of dimmers, switches, shades, and sensors. -This integration only supports the [Caseta](https://www.casetawireless.com/) line of products. Both Smart Bridge (L-BDG2-WH) and Smart Bridge PRO (L-BDGPRO2-WH) models are supported. For the RadioRA 2 product line, see the [Lutron component](/integrations/lutron/). +This integration only supports the [Caseta](https://www.casetawireless.com/) line of products. The Smart Bridge (L-BDG2-WH), Smart Bridge PRO (L-BDGPRO2-WH), and RA2 Select (RR-SEL-REP2-BL) models are supported. For the RadioRA 2 and HomeWorks QS product lines, see the [Lutron component](/integrations/lutron/). -The currently supported Caseta devices are: +The currently supported Caseta and RA2 Select devices are: - Wall and plug-in dimmers as [lights](#light) - Wall switches as [switches](#switch) - Scenes as [scenes](#scene) - Lutron shades as [covers](#cover) +- Lutron smart [fan](#fan) speed control +- Lutron Occupancy/Vacancy [sensors](#sensor) When configured, the `lutron_caseta` integration will automatically discover the currently supported devices as setup in the Lutron Smart Bridge. The name assigned in the Lutron mobile app will be used to form the `entity_id` used in Home Assistant. e.g., a dimmer called 'Lamp' in a room called 'Bedroom' becomes `light.bedroom_lamp` in Home Assistant. @@ -104,3 +109,25 @@ For dimmable lights including wall and plug-in dimmers, see the light section on For more information on working with switches in Home Assistant, see the [Switches component](/integrations/switch/). Available services: `switch.turn_on` and `switch.turn_off`. + +## Fan + +After setup, fans will appear in Home Assistant using an `entity_id` based on the name used in the Lutron mobile app. For example, a light switch called 'Master Bathroom Vanity' will appear in Home Assistant as `fan.master_bedroom_ceiling_fan`. + +For more information on working with fans in Home Assistant, see the [Fans component](/components/fan/). + +Available services: `fan.turn_on`, `fan.turn_off`, and `fan.set_speed`. + +## Sensor + +Occupancy sensors can be added to a Lutron Caseta system to trigger events when an area becomes vacant and, optionally, occupied. However, Lutron systems report occupancy and vacancy statuses only in *occupancy groups* -- that is, groups of one or more sensors. + +Occupancy groups will appear in Home Assistant using an `entity_id` based on the area name in which the first sensor of the group is located. For example, one or more sensors in the Master Bathroom will appear in Home Assistant as `binary_sensor.master_bathroom_occupancy`. + +An occupancy group is considered occupied if any of the sensors in the group are currently in an "occupied" state. Specifically, this means that motion has been detected more recently than that sensor's particular timeout setting. Only after all sensors in an occupancy group report being vacant does the occupancy group itself report being vacant. + +Lutron Caseta occupancy sensors support 4 different timeouts and 3 different sensitivity levels, but those are only controllable from the devices themselves and cannot be set from either Home Assistant or even the Caseta mobile app. + +Because Lutron Caseta devices automatically report state to Home Assistant (rather than relying on polling), occupancy status updates occur almost instantaneously. + +For more information on working with binary sensors in Home Assistant, see the [Binary Sensors Component](/components/binary_sensor/) diff --git a/source/_integrations/lw12wifi.markdown b/source/_integrations/lw12wifi.markdown index 8fb1875028c9..00baebaf9d62 100644 --- a/source/_integrations/lw12wifi.markdown +++ b/source/_integrations/lw12wifi.markdown @@ -1,11 +1,12 @@ --- -title: "Lagute LW-12" -description: "Instructions on how to setup Lagute LW-12 Wifi LED controller within Home Assistant." +title: LAGUTE LW-12 +description: Instructions on how to setup Lagute LW-12 Wifi LED controller within Home Assistant. ha_category: - Light ha_iot_class: Local Polling logo: lagute.png ha_release: 0.71 +ha_domain: lw12wifi --- The `lw12wifi` light platform supports Lagute LW-12 Wifi LED controller. @@ -37,4 +38,3 @@ name: type: string default: LW-12 FC {% endconfiguration %} - diff --git a/source/_integrations/lyft.markdown b/source/_integrations/lyft.markdown index 44ac42bb65dd..afd295bd80c0 100644 --- a/source/_integrations/lyft.markdown +++ b/source/_integrations/lyft.markdown @@ -1,11 +1,11 @@ --- -title: "Lyft Sensor" -description: "How to integrate Lyft in Home Assistant" -logo: lyft.png +title: Lyft +description: How to integrate Lyft in Home Assistant ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.41 +ha_domain: lyft --- The `lyft` sensor will give you time and price estimates for all available [Lyft](https://lyft.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as vehicle capacity and fare rates. If an `end_latitude` and `end_longitude` are specified, a price estimate will also be provided. One sensor will be created for each product at the given `start` location, for pickup time. A second sensor for each product, for estimated price, will be created if a destination is specified. The sensor is powered by the official Lyft [API](https://developer.lyft.com/reference/). diff --git a/source/_integrations/magicseaweed.markdown b/source/_integrations/magicseaweed.markdown index 7c4821d71395..a1827e9ace7c 100644 --- a/source/_integrations/magicseaweed.markdown +++ b/source/_integrations/magicseaweed.markdown @@ -1,11 +1,12 @@ --- -title: "Magicseaweed Sensor" -description: "How to integrate Magicseaweed within Home Assistant." +title: Magicseaweed +description: How to integrate Magicseaweed within Home Assistant. logo: magicseaweed.png ha_category: - Sensor ha_release: 0.75 ha_iot_class: Cloud Polling +ha_domain: magicseaweed --- The `magicseaweed` platform uses the [Magicseaweed Forecast API](https://magicseaweed.com/developer/forecast-api) as a source for surf forecasting data for the surf spots of your choice. diff --git a/source/_integrations/mailbox.markdown b/source/_integrations/mailbox.markdown index 9ce6fdbaa374..b59f062feb1f 100644 --- a/source/_integrations/mailbox.markdown +++ b/source/_integrations/mailbox.markdown @@ -1,7 +1,8 @@ --- -title: "Mailbox" -description: "Instructions on how to setup your mailboxes with Home Assistant." +title: Mailbox +description: Instructions on how to setup your mailboxes with Home Assistant. ha_release: 0.51 +ha_domain: mailbox --- Mailboxes provide a list of messages with short information about each. Mailbox messages appear on a separate panel in the frontend. diff --git a/source/_integrations/mailgun.markdown b/source/_integrations/mailgun.markdown index 8d9ea72236dd..e4414ce93704 100644 --- a/source/_integrations/mailgun.markdown +++ b/source/_integrations/mailgun.markdown @@ -1,17 +1,19 @@ --- -title: "Mailgun" -description: "Instructions on how to add Mailgun mail notifications to Home Assistant." +title: Mailgun +description: Instructions on how to add Mailgun mail notifications to Home Assistant. logo: mailgun.png ha_category: - Notifications ha_release: 0.38 +ha_config_flow: true +ha_domain: mailgun --- -To be able to receive webhooks from Mailgun, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP integration ([docs](/integrations/http/#base_url)). +To be able to receive webhooks from Mailgun, your Home Assistant instance needs to be accessible from the web and you need to have the `base_url` configured for the HTTP integration ([documentation](/integrations/http/#base_url)). To set it up, go to the integrations page in the configuration screen and find Mailgun. Click on configure. Follow the instructions on the screen to configure Mailgun. -You will get a URL of the following format: `https:///api/webhook/9940e99a26fae4dcf6fe0a478124b6b58b578ea4c55c9a584beb1c9f5057bb91`. To receive webhooks from Mailgun, you need to provide that url as a callback URL in the Webhooks tab of the Mailgun Control Panel. +You will get a URL of the following format: `https:///api/webhook/9940e99a26fae4dcf6fe0a478124b6b58b578ea4c55c9a584beb1c9f5057bb91`. To receive webhooks from Mailgun, you need to provide that URL as a callback URL in the Webhooks tab of the Mailgun Control Panel. There is currently support for the following device types within Home Assistant: @@ -116,4 +118,4 @@ automation: images: - /home/pi/pic_test1.png - /home/pi/pic_test2.png -``` \ No newline at end of file +``` diff --git a/source/_integrations/manual.markdown b/source/_integrations/manual.markdown index 233b2c91f989..ed33d84527cc 100644 --- a/source/_integrations/manual.markdown +++ b/source/_integrations/manual.markdown @@ -1,11 +1,11 @@ --- -title: "Manual Alarm Control Panel" -description: "Instructions on how to integrate manual alarms into Home Assistant." -logo: home-assistant.png +title: Manual +description: Instructions on how to integrate manual alarms into Home Assistant. ha_category: - Alarm ha_release: 0.7.6 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: manual --- The `manual` alarm control panel platform enables you to set manual alarms in Home Assistant. @@ -124,7 +124,7 @@ be used for example to sound the siren for a shorter time during the night. ## Examples -In the config example below: +In the configuration example below: - the disarmed state never triggers the alarm; - the armed_home state will leave no time to leave the building or disarm the alarm; diff --git a/source/_integrations/manual_mqtt.markdown b/source/_integrations/manual_mqtt.markdown index eeb69babf4ef..89e89943fed2 100644 --- a/source/_integrations/manual_mqtt.markdown +++ b/source/_integrations/manual_mqtt.markdown @@ -1,10 +1,10 @@ --- -title: "Manual Alarm Control Panel with MQTT Support" -description: "Instructions on how to integrate manual alarms into Home Assistant with MQTT support." -logo: home-assistant.png +title: Manual MQTT +description: Instructions on how to integrate manual alarms into Home Assistant with MQTT support. ha_category: - Alarm -ha_release: "0.50" +ha_release: '0.50' +ha_domain: manual_mqtt --- The `mqtt` platform extends the [manual alarm](/integrations/manual) by adding support for MQTT control of the alarm by a remote device. It can be used to create external keypads which simply change the state of the manual alarm in Home Assistant. diff --git a/source/_integrations/map.markdown b/source/_integrations/map.markdown index 294f544bbc80..33c096743c6a 100644 --- a/source/_integrations/map.markdown +++ b/source/_integrations/map.markdown @@ -1,11 +1,11 @@ --- -title: "Map" -description: "Offers a map to show tracked devices." -logo: home-assistant.png +title: Map +description: Offers a map to show tracked devices. ha_category: - Other -ha_qa_scale: internal ha_release: 0.56 +ha_quality_scale: internal +ha_domain: map --- This offers a map on the frontend to display the location of tracked devices. To set up tracked devices, look at the [device tracker](/integrations/device_tracker/) documentation. This integration is by default enabled, unless you've disabled or removed the [`default_config:`](https://www.home-assistant.io/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: @@ -18,3 +18,7 @@ map:
    Devices that are currently at home won't show on the map.
    + +
    +This map always shows the location of all tracked devices. If you want to hide certain entities, you should look into the [Map Card](/lovelace/map). +
    diff --git a/source/_integrations/marytts.markdown b/source/_integrations/marytts.markdown index 84a13c4c6a4b..b7afa22c8d4b 100644 --- a/source/_integrations/marytts.markdown +++ b/source/_integrations/marytts.markdown @@ -1,10 +1,11 @@ --- -title: "MaryTTS" -description: "Instructions on how to setup MaryTTS with Home Assistant." +title: MaryTTS +description: Instructions on how to setup MaryTTS with Home Assistant. logo: marytts.png ha_category: - Text-to-speech ha_release: 0.43 +ha_domain: marytts --- The `marytts` text-to-speech platform uses [MaryTTS](http://mary.dfki.de/) Text-to-Speech engine to read a text with natural sounding voices. @@ -31,24 +32,34 @@ port: type: integer default: 59125 codec: - description: "The audio codec. Supported codecs are `aiff`, `au` and `wav`." + description: "The audio codec. Supported codecs are `AIFF_FILE`, `AU_FILE` and `WAVE_FILE`." required: false type: string - default: "`wav`" + default: "`WAVE_FILE`" voice: description: The speaker voice. required: false type: string default: "`cmu-slt-hsmm`" language: - description: "The language to use. Supported languages are `de`, `en-GB`, `en-US`, `fr`, `it`, `lb`, `ru`, `sv`, `te` and `tr`." + description: "The language to use. Supported languages are `de`, `en_GB`, `en_US`, `fr`, `it`, `lb`, `ru`, `sv`, `te` and `tr`." required: false type: string - default: "`en-US`" + default: "`en_US`" +effect: + description: "A dictionary of effects which should be applied to the speech output." + required: false + type: map {% endconfiguration %} See [documentation](http://mary.dfki.de/documentation/index.html) for details. +## Speech effects + +For more information about the different effects take a look at the demo page of your MaryTTS installation (`http://localhost:59125/`). + +There you can read about each effect and also test them on the fly. + ## Full configuration example A full configuration sample including optional variables: @@ -59,7 +70,19 @@ tts: - platform: marytts host: 'localhost' port: 59125 - codec: 'wav' + codec: 'WAVE_FILE' voice: 'cmu-slt-hsmm' - language: 'en-US' + language: 'en_US' + effect: + Volume: "amount:2.0;", + TractScaler: "amount:1.5;", + F0Scale: "f0Scale:2.0;", + F0Add: "f0Add:50.0;", + Rate: "durScale:1.5;", + Robot: "amount:100.0;", + Whisper: "amount:100.0;", + Stadium: "amount:100.0", + Chorus: "delay1:466;amp1:0.54;delay2:600;amp2:-0.10;delay3:250;amp3:0.30", + FIRFilter: "type:3;fc1:500.0;fc2:2000.0", + JetPilot: "" ``` diff --git a/source/_integrations/mastodon.markdown b/source/_integrations/mastodon.markdown index d779b7ab17f4..54af064ebe9a 100644 --- a/source/_integrations/mastodon.markdown +++ b/source/_integrations/mastodon.markdown @@ -1,10 +1,12 @@ --- -title: "Mastodon" -description: "Instructions on how to add Instapush notifications to Home Assistant." -logo: mastodon.png +title: Mastodon +description: Instructions on how to add Instapush notifications to Home Assistant. ha_category: - Notifications ha_release: 0.67 +ha_codeowners: + - '@fabaff' +ha_domain: mastodon --- The `mastodon` platform uses [Mastodon](https://joinmastodon.org/) to deliver notifications from Home Assistant. diff --git a/source/_integrations/matrix.markdown b/source/_integrations/matrix.markdown index 08f0877f0e33..dea7dbda4037 100644 --- a/source/_integrations/matrix.markdown +++ b/source/_integrations/matrix.markdown @@ -1,11 +1,14 @@ --- -title: "Matrix" -description: "Matrix chatbot support" +title: Matrix +description: Matrix chatbot support logo: matrix.png ha_category: - Hub - Notifications ha_release: 0.69 +ha_codeowners: + - '@tinloaf' +ha_domain: matrix --- This integration allows you to send messages to matrix rooms, as well as to react to messages in matrix rooms. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. @@ -63,7 +66,7 @@ commands: required: false type: string expression: - description: "Specifies a regular expression (in python regexp syntax) that the bot should listen to. The bot will react to any message that matches the regular expression." + description: "Specifies a regular expression (in Python regexp syntax) that the bot should listen to. The bot will react to any message that matches the regular expression." required: false type: string name: @@ -71,7 +74,7 @@ commands: required: true type: string rooms: - description: "A list of rooms that the bot should listen for this command in. If this is not given, the *rooms* list from the main config is used. Please note that every room in this list must also be in the main *room* config." + description: "A list of rooms that the bot should listen for this command in. If this is not given, the *rooms* list from the main configuration is used. Please note that every room in this list must also be in the main *room* configuration." required: false type: [string] default: empty @@ -167,4 +170,4 @@ default_room: The target room has to be precreated, the room id can be obtained from the rooms settings dialog. Rooms by default have a canonical id of the form `"!:homeserver.tld"`, but can also be allocated aliases like `"#roomname:homeserver.tld"`. Make sure to use quotes around the room id or alias to escape special characters (`!`, and `#`) in YAML. The notifying account may need to be invited to the room, depending on the individual rooms policies. -To use notifications, please see the [getting started with automation page](/getting-started/automation/). \ No newline at end of file +To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_integrations/maxcube.markdown b/source/_integrations/maxcube.markdown index 5916c4398204..f76aa4ab07ae 100644 --- a/source/_integrations/maxcube.markdown +++ b/source/_integrations/maxcube.markdown @@ -1,12 +1,13 @@ --- -title: "eQ-3 MAX! Cube" -description: "Instructions on how to integrate eQ-3 MAX! components with Home Assistant via eQ-3 MAX! Cube." +title: eQ-3 MAX! +description: Instructions on how to integrate eQ-3 MAX! components with Home Assistant via eQ-3 MAX! Cube. logo: maxcube.png ha_category: - Climate - Binary Sensor -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Local Polling +ha_domain: maxcube --- [eQ-3 MAX!](https://www.eq-3.com/products/max.html) integration for Home Assistant allows you to connect eQ-3 MAX! components via the eQ-3 MAX! Cube. The components connects to the eQ-3 MAX! Cube via TCP and automatically makes all supported integrations available in Home Assistant. The name for each device is created by concatenating the MAX! room and device names. diff --git a/source/_integrations/mcp23017.markdown b/source/_integrations/mcp23017.markdown index 4991a3c7d679..0b6ff164661d 100644 --- a/source/_integrations/mcp23017.markdown +++ b/source/_integrations/mcp23017.markdown @@ -1,19 +1,23 @@ --- -title: "MCP23017 I2C GPIO expander" -description: "Instructions on how to integrate the MCP23017 GPIO pin expander with I2C interface into Home Assistant." -logo: raspberry-pi.png +title: MCP23017 I/O Expander +description: Instructions on how to integrate the MCP23017 GPIO pin expander with I2C interface into Home Assistant. ha_category: - DIY - Binary Sensor - Switch ha_release: 0.94 ha_iot_class: Local Polling +ha_codeowners: + - '@jardiamj' +ha_domain: mcp23017 --- The `mcp23017` integration is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the integration itself, for the platforms please check their corresponding sections. For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017). +If you are using the Home Assistant Operating System you can’t use existing methods to enable the I2C bus on a Raspberry Pi, you will have to [enable the I2C interface manually](https://github.com/home-assistant/hassos/blob/dev/Documentation/boards/raspberrypi.md#i2c) using a USB stick. To accomplish that, follow this step by step instructions: [Enable Home Assistant Operating System i2c](https://www.home-assistant.io/hassio/enable_i2c). + ## Binary Sensor The `mcp23017` binary sensor platform allows you to read sensor values from the I/O pins of your [MCP23017 I2C I/O expander](https://www.adafruit.com/product/732). diff --git a/source/_integrations/media_extractor.markdown b/source/_integrations/media_extractor.markdown index 5aeabfe89ba9..3c5bf9069620 100644 --- a/source/_integrations/media_extractor.markdown +++ b/source/_integrations/media_extractor.markdown @@ -1,11 +1,11 @@ --- -title: "Media Extractor" -description: "Instructions on how to integrate the Media Extractor into Home Assistant." -logo: home-assistant.png +title: Media Extractor +description: Instructions on how to integrate the Media Extractor into Home Assistant. ha_category: - Media Player ha_release: 0.49 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: media_extractor --- The `media_extractor` integration gets a stream URL and sends it to a media player entity. This integration can extract entity specific streams if configured accordingly. diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown index 36cf0868c362..3c72259e7d9d 100644 --- a/source/_integrations/media_player.markdown +++ b/source/_integrations/media_player.markdown @@ -1,11 +1,11 @@ --- -title: "Media Player" -description: "Instructions on how to setup your media players with Home Assistant." -logo: home-assistant.png +title: Media Player +description: Instructions on how to setup your media players with Home Assistant. ha_category: - Media Player -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_domain: media_player --- Interacts with media players on your network. @@ -13,38 +13,38 @@ Interacts with media players on your network. ## Services ### Media control services -Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, `volume_set`, `volume_mute`, `media_play_pause`, `media_play`, `media_pause`, `media_stop`, `media_next_track`, `media_previous_track`, `clear_playlist`, `shuffle_set` +Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, `volume_set`, `volume_mute`, `media_play_pause`, `media_play`, `media_pause`, `media_stop`, `media_next_track`, `media_previous_track`, `clear_playlist`, `shuffle_set`, `play_media`, `select_source`, `select_sound_mode` | Service data attribute | Optional | Description | | ---------------------- | -------- | ------------------------------------------------ | -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | #### Service `media_player.volume_mute` | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------| -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | | `is_volume_muted` | no | True/false for mute/unmute | #### Service `media_player.volume_set` | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------| -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | yes | Target a specific media player. To target all media players, use `all`. | | `volume_level` | no | Float for volume level. Range 0..1 | #### Service `media_player.media_seek` | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------------| -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | | `seek_position` | no | Position to seek to. The format is platform dependent. | #### Service `media_player.play_media` | Service data attribute | Optional | Description | | -----------------------| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | | `media_content_id` | no | A media identifier. The format of this is integration dependent. For example, you can provide URLs to Sonos and Cast but only a playlist ID to iTunes. | | `media_content_type` | no | A media type. Must be one of `music`, `tvshow`, `video`, `episode`, `channel` or `playlist`. For example, to play music you would set `media_content_type` to `music`. | @@ -52,7 +52,7 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------- | -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | | `source` | no | Name of the source to switch to. Platform dependent. | #### Service `media_player.select_sound_mode` @@ -66,11 +66,16 @@ Currently only supported on [Denon AVR](/integrations/denonavr/) and [Songpal]( #### Service `media_player.shuffle_set` -Currently only supported on [Spotify](/integrations/spotify), [MPD](/integrations/mpd), [Kodi](/integrations/kodi), [Squeezebox](/integrations/squeezebox) and [Universal](/integrations/universal). +Currently only supported on [Sonos](/integrations/sonos), [Spotify](/integrations/spotify), [MPD](/integrations/mpd), [Kodi](/integrations/kodi), [Squeezebox](/integrations/squeezebox) and [Universal](/integrations/universal). | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------- | | `entity_id` | no | Target a specific media player. For example `media_player.spotify`| | `shuffle` | no | `true`/`false` for enabling/disabling shuffle | +### Device Class +The way media players are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for media players: + +- `tv`: Device is a television type device. +- `speaker`: Device is speaker or stereo type device. diff --git a/source/_integrations/mediaroom.markdown b/source/_integrations/mediaroom.markdown index 49ca190d24e8..6c83e6c02e57 100644 --- a/source/_integrations/mediaroom.markdown +++ b/source/_integrations/mediaroom.markdown @@ -1,11 +1,13 @@ --- -title: "Mediaroom" -description: "Instructions on how to integrate Mediaroom Set-Top Boxes into Home Assistant." -logo: mediaroom.png +title: Mediaroom +description: Instructions on how to integrate Mediaroom Set-Top Boxes into Home Assistant. ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.63 +ha_codeowners: + - '@dgomes' +ha_domain: mediaroom --- The `mediaroom` integration allows you to control a [Mediaroom](https://en.wikipedia.org/wiki/Ericsson_Mediaroom) Set-Top Box (STB) from Home Assistant. diff --git a/source/_integrations/melcloud.markdown b/source/_integrations/melcloud.markdown new file mode 100644 index 000000000000..0b3432a16f05 --- /dev/null +++ b/source/_integrations/melcloud.markdown @@ -0,0 +1,112 @@ +--- +title: MELCloud +description: MELCloud integration +ha_category: + - Climate +ha_release: 0.106 +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@vilppuvuorinen' +ha_domain: melcloud +--- + +The `melcloud` integration integrates Mitsubishi Electric's [MELCloud](https://www.melcloud.com/) enabled devices into Home Assistant. + +## Device support + +- Air-to-Air heat pumps, e.g., AC units - **Supported** +- Air-to-Water heat pumps - **Supported** +- Energy recovery ventilators - **Not supported** +- Other - **Not supported** + +## Configuration + +The integration should be configured through the user interface ("Configurations -> Integrations") using the MELCloud login details. While not optimal, **the provided password is not stored**. + +An expired token needs to be updated manually by adding the MELCloud integration again with the same email address. + +Configuration is also possible through `configuration.yaml`. The required authentication token can be found in `X-MitsContextKey` header when logged into the MELCloud. The language needs to be set to English and the "Remember me" option needs to be selected. + +```yaml +melcloud: + username: xxxx@xxxxxxx + token: xxxxxxxxxxxxxxxxxxx +``` + +{% configuration %} +username: + description: Email address used to login to MELCloud + required: true + type: string +token: + description: X-MitsContextKey access token + required: true + type: string +{% endconfiguration %} + +## Air-to-Air device + +An Air-to-Air heat pump provides `climate` and `sensor` platforms. Device capabilities can limit the available parameters and sensors. + +### Climate + +The following parameters can be controlled for the `climate` platform entities: + +- Power (using HVAC mode) +- Target temperature +- Operation mode (HVAC mode) +- Fan speed + +### Sensor + +The following attributes are available for `sensor` platform entities: + +- Room temperature +- Energy - The total consumed energy in kWh. **Not supported by all models.** + +## Air-to-Water device + +An Air-to-Water device provides `water_heater`, `climate` and `sensor` platforms. + +### Climate + +A `climate` platform entity is provided for each radiator zone in the air-to-water system. The following parameters can be controlled: + +- Target room temperature + +The radiators need to be configured to run in room temperature control mode either through the local HMI or MELCloud. Flow temperature and curve modes are not supported. + +Some air-to-water devices allow cooling using the radiator zones. This feature has not been implemented due to the lack of sample devices. + +The system cannot be turned on/off through the `climate` entities. + +#### State attributes + +|Attribute|Description|Example| +|---------|-----------|-------| +|`status` |Current operation status|`idle`| + +### Sensor + +The following attributes are available for `sensor` platform entities: + +- Room temperature for each zone +- Tank water temperature +- Outside temperature - 1°C precision, polled every 1-2 hours. + +Unlike air-to-air devices, air-to-water devices do not report energy consumption in an easily accessible manner. + +### Water heater + +The following parameters can be controlled for the `water_heater` platform entities: + +- Power - Controls the entire system. +- Target tank temperature +- Operation mode + +#### State attributes + +|Attribute|Description|Example| +|---------|-----------|-------| +|`status` |Current operation status|`heat`| diff --git a/source/_integrations/melissa.markdown b/source/_integrations/melissa.markdown index 9f3303f53fe7..40e25593c067 100644 --- a/source/_integrations/melissa.markdown +++ b/source/_integrations/melissa.markdown @@ -1,12 +1,15 @@ --- -title: "Melissa" -description: "Instructions on how to integrate Melissa Climate into Home Assistant." +title: Melissa +description: Instructions on how to integrate Melissa Climate into Home Assistant. logo: mclimate.png ha_category: - Hub - Climate ha_release: 0.63 ha_iot_class: Cloud Polling +ha_codeowners: + - '@kennedyshead' +ha_domain: melissa --- The `melissa` integration is the main integration to connect to a [Melissa Climate](https://seemelissa.com/) A/C control. diff --git a/source/_integrations/meraki.markdown b/source/_integrations/meraki.markdown index 0991e80739cd..0c25fd67ca1d 100644 --- a/source/_integrations/meraki.markdown +++ b/source/_integrations/meraki.markdown @@ -1,10 +1,11 @@ --- -title: "Meraki" -description: "Instructions on how to integrate Meraki-based presence detection into Home Assistant." +title: Meraki +description: Instructions on how to integrate Meraki-based presence detection into Home Assistant. logo: meraki.png ha_category: - Presence Detection -ha_release: "0.60" +ha_release: '0.60' +ha_domain: meraki --- Use your Meraki AP as device tracker. Note that Meraki will see all devices, not only connected to the network. diff --git a/source/_integrations/message_bird.markdown b/source/_integrations/message_bird.markdown index 62f25187aba7..4bf0975be1f0 100644 --- a/source/_integrations/message_bird.markdown +++ b/source/_integrations/message_bird.markdown @@ -1,10 +1,11 @@ --- -title: "MessageBird" -description: "Instructions on how to add user notifications to Home Assistant." +title: MessageBird +description: Instructions on how to add user notifications to Home Assistant. logo: message_bird.png ha_category: - Notifications ha_release: 0.16 +ha_domain: message_bird --- The `MessageBird` notification platform sends notifications as SMS messages using [MessageBird](https://www.messagebird.com/) to your mobile phone. diff --git a/source/_integrations/met.markdown b/source/_integrations/met.markdown index 12d8428ca3e5..6a1340ccc3d4 100644 --- a/source/_integrations/met.markdown +++ b/source/_integrations/met.markdown @@ -1,42 +1,16 @@ --- -title: "Met.no" -description: "Instructions on how to integrate Met.no within Home Assistant." -logo: metno.png +title: Meteorologisk institutt (Met.no) +description: Instructions on how to integrate Met.no within Home Assistant. ha_category: - Weather ha_release: 0.79 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@danielhiversen' +ha_domain: met --- The `met` platform uses the [Met.no](https://met.no/) web service as a source for meteorological data for your location. The weather forecast is delivered by the Norwegian Meteorological Institute and the NRK. -
    - Configuration of the Met.no platform via configuration.yaml is deprecated from version 0.95 -
    - -## Configuration - -To add Met.no to your installation, go to Configuration >> Integrations in the UI and enable the Met.no integration. By default the values will be taken from the Home Assistant configuration. - -{% configuration %} -name: - description: Manually specify Name. - required: true - type: string - default: Provided by Home Assistant configuration -latitude: - description: Manually specify latitude. - required: true - type: float - default: Provided by Home Assistant configuration -longitude: - description: Manually specify longitude. - required: true - type: float - default: Provided by Home Assistant configuration -altitude: - description: Manually specify altitude. - required: false - type: integer - default: Provided by Home Assistant configuration -{% endconfiguration %} +To add Met.no to your installation, go to Configuration >> Integrations in the UI and enable the Met.no integration. diff --git a/source/_integrations/meteo_france.markdown b/source/_integrations/meteo_france.markdown index a412eb6c4c6b..7cd3dec3012a 100644 --- a/source/_integrations/meteo_france.markdown +++ b/source/_integrations/meteo_france.markdown @@ -1,25 +1,39 @@ --- -title: "Météo-France" -description: "Instructions on how to integrate Météo-France within Home Assistant." -logo: meteo-france.png +title: Météo-France +description: Instructions on how to integrate Météo-France within Home Assistant. ha_release: 0.89 ha_iot_class: Cloud Polling ha_category: - - Hub - Sensor - Weather +ha_codeowners: + - '@victorcerutti' + - '@oncleben31' + - '@Quentame' +ha_config_flow: true +ha_domain: meteo_france --- The `meteo_france` integration uses the [Météo-France](http://www.meteofrance.com/) web service as a source for meteorological data for your location. The location is based on the `city` configured in your `configuration.yaml` file. -There is currently support for the following device types within Home Assistant: +There is currently support for the following platforms within Home Assistant: -- Sensor +- [Sensor](#sensor) - Weather -It displays the current weather along with a 4 days forecast and can create sensors based on the `monitored_conditions` set in your `configuration.yaml` file, including weather alerts from [Vigilance Météo-France](https://vigilance.meteofrance.com/) +It displays the current weather along with a 4 days forecast and create sensors, including weather alerts from [Vigilance Météo-France](https://vigilance.meteofrance.com/) -## Configuration +## Setup the integration + +There are two ways to integrate Météo-France in Home Assistant. + +### Via the frontend + +Menu: *Configuration* -> *Integrations* + +Search for "Météo-France", add your city, click submit, you are done! + +### Via the configuration file To add Météo-France to your installation, add the following to your `configuration.yaml` file: @@ -31,34 +45,9 @@ meteo_france: {% configuration %} city: - description: Name of the city ([see below](#about-city-configuration)). + description: French postal code or name of the city ([see below](#about-city-configuration)). required: true type: string - monitored_conditions: - description: The conditions types to monitor. - required: true - type: list - keys: - temperature: - description: The current temperature. - weather: - description: A human-readable text summary of the current conditions. - wind_speed: - description: The wind speed. - uv: - description: The current UV index. - next_rain: - description: Time to the next rain if happening for the next hour ([see note below](#about-next_rain-condition-sensor)). - freeze_chance: - description: Probability of temperature below 0°C for the day. - rain_chance: - description: Probability of rain for the day. - snow_chance: - description: Probability of snow for the day. - thunder_chance: - description: Probability of thunderstorm for the day. - weather_alert: - description: Weather alert status. {% endconfiguration %} ### About `city` configuration @@ -78,6 +67,20 @@ meteo_france: - city: 'montreal,amerique' ``` +## Sensor + +All these sensors will be created : +- `temperature`: The current temperature. +- `weather`: A human-readable text summary of the current conditions. +- `wind_speed`: The wind speed. +- `uv`: The current UV index. +- `next_rain`: Time to the next rain if happening for the next hour ([see note below](#about-next_rain-condition-sensor)). +- `freeze_chance`: Probability of temperature below 0°C for the day. +- `rain_chance`: Probability of rain for the day. +- `snow_chance`: Probability of snow for the day. +- `thunder_chance`: Probability of thunderstorm for the day. +- `weather_alert`: Weather alert status ([see note below](#about-weather_alert-sensor)). + ### About `next_rain` condition sensor
    @@ -110,25 +113,12 @@ The sensor attributes give access to each type of alerts and date of the bulleti ### Complete example -This is an example for 3 cities forecast with different monitored conditions: +This is an example for 3 cities forecast: ```yaml # Complete example configuration.yaml entry meteo_france: + - city: '69004' - city: 'Rouen' - monitored_conditions: - - rain_chance - - freeze_chance - - thunder_chance - - snow_chance - - weather - - next_rain - - wind_speed - - temperature - - uv - - weather_alert - city: 'Oslo, norvege' - monitored_conditions: - - temperature - - city: '51100' ``` diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown index af0ac9d08951..e9923e082cf2 100644 --- a/source/_integrations/meteoalarm.markdown +++ b/source/_integrations/meteoalarm.markdown @@ -1,10 +1,13 @@ --- -title: MeteoAlarm Sensor -description: "Instructions on how to set up MeteoAlarm binary sensors within Home Assistant." +title: MeteoAlarm +description: Instructions on how to set up MeteoAlarm binary sensors within Home Assistant. logo: meteoalarm.png ha_category: Binary Sensor ha_release: 0.93 ha_iot_class: Local Polling +ha_codeowners: + - '@rolfberkenbosch' +ha_domain: meteoalarm --- The `MeteoAlarm` platform allows one to watch for weather alerts in europe from [MeteoAlarm](https://www.meteoalarm.eu) (EUMETNET). To use this binary sensor, you need the two digits of your country and the province name from [MeteoAlarm](https://www.meteoalarm.eu). Please note that you need to write the exact details from the website with capitals. diff --git a/source/_integrations/metoffice.markdown b/source/_integrations/metoffice.markdown index 937aecb7f32f..8a24816d5629 100644 --- a/source/_integrations/metoffice.markdown +++ b/source/_integrations/metoffice.markdown @@ -1,11 +1,11 @@ --- -title: "Met Office" -description: "Instructions on how to integrate Met Office weather conditions into Home Assistant." -logo: metoffice.jpg +title: Met Office +description: Instructions on how to integrate Met Office weather conditions into Home Assistant. ha_category: - Weather ha_release: 0.42 ha_iot_class: Cloud Polling +ha_domain: metoffice --- The `metoffice` weather platform uses the Met Office's [DataPoint API](https://www.metoffice.gov.uk/datapoint) for weather data. diff --git a/source/_integrations/mfi.markdown b/source/_integrations/mfi.markdown index e3506cd10f3e..ad369ac77b05 100644 --- a/source/_integrations/mfi.markdown +++ b/source/_integrations/mfi.markdown @@ -1,6 +1,6 @@ --- -title: "mFi" -description: "Instructions on how to integrate mFi within Home Assistant." +title: Ubiquiti mFi mPort +description: Instructions on how to integrate mFi within Home Assistant. logo: ubiquiti.png ha_category: - Network @@ -8,6 +8,7 @@ ha_category: - Switch ha_iot_class: Local Polling ha_release: 0.13 +ha_domain: mfi --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/mhz19.markdown b/source/_integrations/mhz19.markdown index 640da7dfd268..3f0b078666c4 100644 --- a/source/_integrations/mhz19.markdown +++ b/source/_integrations/mhz19.markdown @@ -1,11 +1,11 @@ --- -title: "MH-Z19 CO2 Sensor" -description: "Instructions on how to integrate the MH-Z19 CO2 sensor with Home Assistant." -logo: mhz19_logo.png +title: MH-Z19 CO2 Sensor +description: Instructions on how to integrate the MH-Z19 CO2 sensor with Home Assistant. ha_category: - DIY ha_release: 0.27 ha_iot_class: Local Polling +ha_domain: mhz19 --- The MH-Z19 is a small non-dispersive infrared sensor that can measure CO2 level. High CO2 levels can lead to drowsiness, poor concentration, loss of attention or increased heart rate. The CO2 level outside is around 400ppm, but inside levels can reach between 1000 and 5000 ppm. High CO2 levels indicate that you should increase ventilation. @@ -32,6 +32,7 @@ sensor: - **temperature** Full example: + ```yaml sensor: - platform: mhz19 @@ -42,7 +43,7 @@ sensor: - temperature ``` -## Raspberry Pi 3(+) GPIO UART and Hass.io +## Raspberry Pi GPIO UART and the Home Assistant Operating System To directly connect the sensor on the GPIO pins of a RPi, first append the following to `config.txt` in the boot directory: @@ -53,7 +54,7 @@ enable_uart=1 Then (after a reboot): you can setup the sensor using: ```yaml - serial_device: /dev/tty.S0 + serial_device: /dev/ttyS0 ``` ## Calibration diff --git a/source/_integrations/microsoft.markdown b/source/_integrations/microsoft.markdown index 1d2556defbe2..8768d3d42816 100644 --- a/source/_integrations/microsoft.markdown +++ b/source/_integrations/microsoft.markdown @@ -1,10 +1,10 @@ --- -title: "Microsoft Text-to-Speech" -description: "Instructions on how to set up Microsoft Text-to-Speech with Home Assistant." -logo: microsoft.png +title: Microsoft Text-to-Speech (TTS) +description: Instructions on how to set up Microsoft Text-to-Speech with Home Assistant. ha_category: - Text-to-speech ha_release: 0.57 +ha_domain: microsoft --- The `microsoft` text-to-speech platform uses [Microsoft Text-to-Speech engine](https://docs.microsoft.com/en-us/azure/cognitive-services/speech/home) to read a text with natural sounding voices. This integration uses an API that is part of the Cognitive Services offering and is known as the Bing Speech API. diff --git a/source/_integrations/microsoft_face.markdown b/source/_integrations/microsoft_face.markdown index 02f1c347e314..21661f1b54b5 100644 --- a/source/_integrations/microsoft_face.markdown +++ b/source/_integrations/microsoft_face.markdown @@ -1,10 +1,10 @@ --- -title: "Microsoft Face" -description: "Instructions on how to integrate Microsoft Face integration into Home Assistant." -logo: microsoft.png +title: Microsoft Face +description: Instructions on how to integrate Microsoft Face integration into Home Assistant. ha_category: - Image Processing ha_release: 0.37 +ha_domain: microsoft_face --- The `microsoft_face` integration platform is the main integration for Microsoft diff --git a/source/_integrations/microsoft_face_detect.markdown b/source/_integrations/microsoft_face_detect.markdown index c8956eb5a200..55147bcedc43 100644 --- a/source/_integrations/microsoft_face_detect.markdown +++ b/source/_integrations/microsoft_face_detect.markdown @@ -1,10 +1,10 @@ --- -title: "Microsoft Face Detect" -description: "Instructions on how to integrate Microsoft Face Detect into Home Assistant." -logo: microsoft.png +title: Microsoft Face Detect +description: Instructions on how to integrate Microsoft Face Detect into Home Assistant. ha_category: - Image Processing ha_release: 0.38 +ha_domain: microsoft_face_detect --- The `microsoft_face_detect` image processing platform allows you to use the diff --git a/source/_integrations/microsoft_face_identify.markdown b/source/_integrations/microsoft_face_identify.markdown index 52fe8e5a3058..7612453d49df 100644 --- a/source/_integrations/microsoft_face_identify.markdown +++ b/source/_integrations/microsoft_face_identify.markdown @@ -1,10 +1,10 @@ --- -title: "Microsoft Face Identify" -description: "Instructions on how to integrate Microsoft Face Identify into Home Assistant." -logo: microsoft.png +title: Microsoft Face Identify +description: Instructions on how to integrate Microsoft Face Identify into Home Assistant. ha_category: - Image Processing ha_release: 0.37 +ha_domain: microsoft_face_identify --- The `microsoft_face_identify` image processing platform lets you use diff --git a/source/_integrations/miflora.markdown b/source/_integrations/miflora.markdown index 7bb32eeb2ffc..e1037cca244b 100644 --- a/source/_integrations/miflora.markdown +++ b/source/_integrations/miflora.markdown @@ -1,11 +1,15 @@ --- -title: "Mi Flora plant sensor" -description: "Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant." +title: Mi Flora +description: Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant. logo: miflora.png ha_category: - Environment ha_release: 0.29 ha_iot_class: Local Polling +ha_codeowners: + - '@danielhiversen' + - '@ChristianKuehnel' +ha_domain: miflora --- The `miflora` sensor platform allows one to monitor plant soil and air conditions. The [Mi Flora plant sensor](https://gadget-freakz.com/product/xiaomi-mi-flora-plant-sensor/) is a small Bluetooth Low Energy device that monitors the moisture and conductivity of the soil as well as ambient light and temperature. Since only one BLE device can be polled at a time, the library implements locking to prevent polling more than one device at a time. @@ -16,12 +20,12 @@ There are "Chinese" and "International" versions available and there is a [repor Before configuring Home Assistant you need a Bluetooth backend and the MAC address of your sensor. Depending on your operating system, you may have to configure the proper Bluetooth backend for your system: -- On [Hass.io](/hassio/installation/): Miflora will work out of the box. -- On a [generic Docker installation](/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. +- On [Home Assistant](/hassio/installation/): Miflora will work out of the box. +- On [Home Assistant Core on Docker](/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. - On other Linux systems: - Preferred solution: Install the `bluepy` library (via pip). When using a virtual environment, make sure to install the library in the right one.  - Fallback solution: Install `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth`, `bluez-deprecated` -- On Windows and MacOS there is currently no support for the [miflora library](https://github.com/open-homeautomation/miflora/). +- On Windows and macOS there is currently no support for the [miflora library](https://github.com/open-homeautomation/miflora/). ## Scan for devices @@ -80,7 +84,7 @@ monitored_conditions: conductivity: description: Conductivity in the soil. battery: - description: Battery details. + description: Battery details. Cached and only updated once a day. name: description: The name displayed in the frontend. required: false @@ -99,6 +103,11 @@ adapter: required: false default: hci0 type: string +go_unavailable_timeout: + description: "Timeout to report this device as unavailable. This option hides a bad link quality" + required: false + default: 7200 + type: integer {% endconfiguration %}
    @@ -117,8 +126,9 @@ sensor: - platform: miflora mac: 'xx:xx:xx:xx:xx:xx' name: Flower 1 - force_update: true + force_update: true median: 3 + go_unavailable_timeout: 43200 monitored_conditions: - moisture - light @@ -126,3 +136,18 @@ sensor: - conductivity - battery ``` +An automation example to report a battery failure: + +```yaml +- id: flower1_moisture_unavailable_check + alias: Flower 1 sensors available + trigger: + - entity_id: sensor.flower1_moisture + for: 24:00:00 + platform: state + to: unavailable + action: + - data_template: + message: "Flower 1 moisture is unavailable for more than 24 hours" + service: notify.notifier_telegram_someone +``` diff --git a/source/_integrations/mikrotik.markdown b/source/_integrations/mikrotik.markdown index 3f04f43c66f6..3ad46a5651a5 100644 --- a/source/_integrations/mikrotik.markdown +++ b/source/_integrations/mikrotik.markdown @@ -1,11 +1,15 @@ --- -title: "MikroTik" -description: "Instructions on how to integrate MikroTik/RouterOS based devices into Home Assistant." +title: Mikrotik +description: Instructions on how to integrate MikroTik/RouterOS based devices into Home Assistant. logo: mikrotik.png ha_category: - Hub - Presence Detection ha_release: 0.44 +ha_codeowners: + - '@engrbm87' +ha_config_flow: true +ha_domain: mikrotik --- The `mikrotik` platform offers presence detection by looking at connected devices to a [MikroTik RouterOS](https://mikrotik.com) based router. @@ -27,22 +31,28 @@ set api disabled=no port=8728 Web Frontend: -Go to **IP** -> **Services** -> **api** and enable it. +Go to **IP** -> **Services** -> **API** and enable it. Make sure that port 8728 or the port you choose is accessible from your network. - -To use a MikroTik router in your installation, add the following to your `configuration.yaml` file: +Home Assistant offers MikroTik integration through **Configuration** -> **Integrations** -> **MikroTik**. +It also allows importing from the `configuration.yaml` file: ```yaml # Example configuration.yaml entry mikrotik: - - host: IP_ADDRESS + - name: Mikrotik + host: IP_ADDRESS username: ROUTEROS_USERNAME password: ROUTEROS_PASSWORD ``` {% configuration %} +name: + description: The name of your MikroTik device. + required: true + default: Mikrotik + type: string host: description: The IP address of your MikroTik device. required: true @@ -55,42 +65,33 @@ password: description: The password of the given user account on the MikroTik device. required: true type: string -login_method: - description: The login method to use on the MikroTik device. The `plain` method is used by default, if you have an older RouterOS Version than 6.43, use `token` as the login method. - required: false - type: string - options: plain, token - default: plain port: description: RouterOS API port. required: false default: 8728 (or 8729 if SSL is enabled) type: integer -ssl: +verify_ssl: description: Use SSL to connect to the API. required: false default: false type: boolean -method: - description: Override autodetection of device scanning method. Can be `wireless` to use local wireless registration, `capsman` for capsman wireless registration, or `dhcp` for DHCP leases. - required: false - type: string arp_ping: description: Use ARP ping with DHCP method for device scanning. required: false default: false type: boolean +force_dhcp: + description: Force use of DHCP server list for devices to be tracked. + required: false + default: false + type: boolean +detection_time: + description: How long since the last seen time before the device is marked away, specified in seconds. + required: false + default: 300 + type: integer {% endconfiguration %} -
    - - As of version 6.43 of RouterOS Mikrotik introduced a new login method (plain) in addition to the old login method (token). With Version 6.45.1 the old token login method got deprecated. - In order to support both login mechanisms, the new config option `login_method` has been introduced. If this option is not set, the component will try to login with the plain method first and the token method if that fails. - That can cause log entries on the router like `login failure for user homeassistant from 192.168.23.10 via api` but doesn't keep the component from working. - To get rid of these entries, set the `login_method` to `plain` for Routers with OS versions > 6.43 or `token` for routers with OS versions < 6.43. - -
    - ## Use a certificate To use SSL to connect to the API (via `api-ssl` instead of `api` service) further configuration is required at RouterOS side. You have to upload or generate a certificate and configure `api-ssl` service to use it. Here is an example of a self-signed certificate: @@ -102,7 +103,7 @@ To use SSL to connect to the API (via `api-ssl` instead of `api` service) furthe /ip service enable api-ssl ``` -Then add `ssl: true` to `mikrotik` device tracker entry in your `configuration.yaml` file. +Then add `verify_ssl: true` to `mikrotik` device tracker entry in your `configuration.yaml` file. If everything is working fine you can disable the pure `api` service in RouterOS: @@ -120,25 +121,15 @@ To use this device tracker you need restricted privileges only. To enhance the s /user set password="YOUR_PASSWORD" homeassistant ``` -## Using the additional configuration to the `mikrotik` entry in your `configuration.yaml` file: +## Using the additional configuration to the `mikrotik` entry in your `configuration.yaml` file ```yaml mikrotik: - host: 192.168.88.1 username: homeassistant password: YOUR_PASSWORD - ssl: true + verify_ssl: true arp_ping: true - method: dhcp - track_devices: true - - - host: 192.168.88.2 - username: homeassistant - password: YOUR_PASSWORD - ssl: true - port: 8729 - method: capsman - track_devices: true + force_dhcp: true + detection_time: 30 ``` - -See the [device tracker integration page](/integrations/device_tracker/) for instructions on how to configure the people to be tracked. diff --git a/source/_integrations/mill.markdown b/source/_integrations/mill.markdown index bf05c29224e1..5ef94e83975f 100644 --- a/source/_integrations/mill.markdown +++ b/source/_integrations/mill.markdown @@ -1,11 +1,13 @@ --- -title: "Mill heater" -description: "Instructions on how to integrate Mill heater into Home Assistant." -logo: mill.png +title: Mill +description: Instructions on how to integrate Mill heater into Home Assistant. ha_category: - Climate ha_release: 0.81 ha_iot_class: Cloud Polling +ha_codeowners: + - '@danielhiversen' +ha_domain: mill --- Integrates Mill heater into Home Assistant. @@ -36,7 +38,7 @@ password: This platform supports a service to set the temperature for the room connected to heater in the Mill app: -`climate.mill_set_room_temperature` +`mill.set_room_temperature` | Service data attribute | Optional | Description | diff --git a/source/_integrations/min_max.markdown b/source/_integrations/min_max.markdown index 7c445df0cb49..09a610c1e284 100644 --- a/source/_integrations/min_max.markdown +++ b/source/_integrations/min_max.markdown @@ -1,12 +1,14 @@ --- -title: "Min/max Sensor" -description: "Instructions on how to integrate min/max sensors into Home Assistant." -logo: home-assistant.png +title: Min/Max +description: Instructions on how to integrate min/max sensors into Home Assistant. ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.31 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: min_max --- The `min_max` sensor platform consumes the state from other sensors to determine the minimum, maximum, latest (last) and the mean of the collected states. The sensor will always show you the lowest/highest/latest value which was received from all monitored sensors. If you have spikes in your values, it's recommended to filter/equalize your values with a [statistics sensor](/integrations/statistics) first. diff --git a/source/_integrations/minecraft_server.markdown b/source/_integrations/minecraft_server.markdown new file mode 100644 index 000000000000..ddb57fc7b2a9 --- /dev/null +++ b/source/_integrations/minecraft_server.markdown @@ -0,0 +1,41 @@ +--- +title: Minecraft Server +description: Instructions on how to integrate a Minecraft server into Home Assistant. +ha_release: 0.106 +ha_category: + - Binary Sensor + - Sensor +ha_iot_class: Local Polling +ha_quality_scale: silver +ha_config_flow: true +ha_codeowners: + - '@elmurato' +ha_domain: minecraft_server +--- + +Minecraft servers allow players to play the sandbox video game [Minecraft](https://www.minecraft.net) by [Mojang AB](https://www.mojang.com) online or via a local area network with other players. The `Minecraft Server` integration lets you retrieve information from a Minecraft server (Java edition) within Home Assistant. + +
    +The server must be version 1.7 or higher, since older versions don't expose any information. +
    + +## Configuration via the frontend + +In the settings go to `Integrations`, click on the `+` sign to add an integration and click on **Minecraft Server**. +After completing the configuration flow, the Minecraft Server integration will be available. + +## Binary sensors + +This integration provides a binary sensor for the following information from a Minecraft server: + +- Connection status + +## Sensors + +This integration provides sensors for the following information from a Minecraft server: + +- Latency time +- Version +- Protocol version +- Number of online players (player names are available in state attributes) +- Number of maximum players diff --git a/source/_integrations/minio.markdown b/source/_integrations/minio.markdown index e4bba03e2ea5..3c9d486cec6f 100644 --- a/source/_integrations/minio.markdown +++ b/source/_integrations/minio.markdown @@ -1,14 +1,16 @@ --- -title: "Minio" -description: "Integration for interacting with Minio object storage." -logo: minio.png +title: Minio +description: Integration for interacting with Minio object storage. ha_category: Utility ha_iot_class: Cloud Push ha_release: 0.98 +ha_codeowners: + - '@tkislan' +ha_domain: minio --- This integration adds interaction with [Minio](https://min.io). -Also enables to listen for bucket notifications: [watch docs](https://docs.min.io/docs/minio-client-complete-guide.html#watch) +It also enables listening for bucket notifications: [see documentation](https://docs.min.io/docs/minio-client-complete-guide.html#watch) To download or upload files, folders must be added to [whitelist_external_dirs](/docs/configuration/basic/). @@ -43,7 +45,7 @@ secret_key: required: true type: string secure: - description: Whether to use http or https connection + description: Whether to use HTTP or HTTPS connection required: true type: boolean default: false diff --git a/source/_integrations/mitemp_bt.markdown b/source/_integrations/mitemp_bt.markdown index 88551f45fa37..353c28a14d7f 100644 --- a/source/_integrations/mitemp_bt.markdown +++ b/source/_integrations/mitemp_bt.markdown @@ -1,11 +1,11 @@ --- -title: "Xiaomi BLE Temperature and Humidity sensor" -description: "Instructions on how to integrate MiTemp BLE temperature and humidity sensor with Home Assistant." -logo: xiaomi.png +title: Xiaomi Mijia BLE Temperature and Humidity Sensor +description: Instructions on how to integrate MiTemp BLE temperature and humidity sensor with Home Assistant. ha_category: - DIY ha_release: 0.69 ha_iot_class: Local Polling +ha_domain: mitemp_bt --- The `mitemp_bt` sensor platform allows one to monitor room temperature and humidity. The [Xiaomi Mijia BLE Temperature and Humidity sensor with LCD](https://www.amazon.com/Temperature-Humidity-Xiaomi-Bluetooth-Screen-Remote/dp/B079L6N6PC) is a small Bluetooth Low Energy device that monitors the room temperature and humidity. As only a single BLE device can be polled at the same time, the library employs locking to make sure this is the case. @@ -14,12 +14,12 @@ The `mitemp_bt` sensor platform allows one to monitor room temperature and humid Depending on the operating system you're running, you have to configure the proper Bluetooth backend on your system: -- On [Hass.io](/hassio/installation/): `mitemp_bt` will work out of the box as long as the host supports Bluetooth (like the Raspberry Pi does). -- On a [generic Docker installation](/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. +- On [Home Assistant](/hassio/installation/): `mitemp_bt` will work out of the box as long as the host supports Bluetooth (like the Raspberry Pi does). +- On a [Home Assistant Core on Docker](/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. - On other Linux systems: - Preferred solution: Install the `bluepy` and `btlewrap` library (via pip). When using a virtual environment, make sure to use install the library in the right one. - Fallback solution: Install `btlewrap` library (via pip) and `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth` or `bluez-deprecated`. -- Windows and MacOS are currently not supported by the `btlewrap` library. +- Windows and macOS are currently not supported by the `btlewrap` library. ## Configuration diff --git a/source/_integrations/mjpeg.markdown b/source/_integrations/mjpeg.markdown index 33383a680613..f27adfb474f7 100644 --- a/source/_integrations/mjpeg.markdown +++ b/source/_integrations/mjpeg.markdown @@ -1,11 +1,11 @@ --- -title: "Generic MJPEG IP Camera" -description: "Instructions on how to integrate IP cameras within Home Assistant." -logo: home-assistant.png +title: MJPEG IP Camera +description: Instructions on how to integrate IP cameras within Home Assistant. ha_category: - Camera ha_release: pre 0.7 ha_iot_class: Configurable +ha_domain: mjpeg --- The `mjpeg` camera platform allows you to integrate IP cameras which are capable @@ -50,7 +50,7 @@ authentication: type: string default: basic verify_ssl: - description: Validate the ssl certificate for this camera. + description: Validate the SSL certificate for this camera. required: false type: boolean default: true diff --git a/source/_integrations/mobile_app.markdown b/source/_integrations/mobile_app.markdown index ff2053ee5732..4ca7b318007b 100644 --- a/source/_integrations/mobile_app.markdown +++ b/source/_integrations/mobile_app.markdown @@ -1,11 +1,14 @@ --- -title: "Mobile App" -description: "The Mobile App integration allows a generic platform for integrating with mobile apps." -logo: home-assistant.png +title: Home Assistant Mobile App Support +description: The Mobile App integration allows a generic platform for integrating with mobile apps. ha_category: - - "Other" + - Other ha_release: 0.89 -ha_qa_scale: internal +ha_config_flow: true +ha_quality_scale: internal +ha_codeowners: + - '@robbiet480' +ha_domain: mobile_app --- The Mobile App integration allows Home Assistant mobile apps to easily integrate with Home Assistant. @@ -22,3 +25,12 @@ This integration is by default enabled, unless you've disabled or removed the [` # Example configuration.yaml entry mobile_app: ``` + +## Apps that use Mobile App + +- [Home Assistant for iOS](https://apps.apple.com/us/app/home-assistant/id1099568401?ls=1) (official) +- [Home Assistant for Android](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android) (official) + +## Mobile App Documentation + +- [Companion documentation](https://companion.home-assistant.io/) diff --git a/source/_integrations/mochad.markdown b/source/_integrations/mochad.markdown index d704396e930a..f0a9f561c197 100644 --- a/source/_integrations/mochad.markdown +++ b/source/_integrations/mochad.markdown @@ -1,11 +1,12 @@ --- -title: "Mochad" -description: "Instructions on how to integrate Mochad into Home Assistant." +title: Mochad +description: Instructions on how to integrate Mochad into Home Assistant. ha_category: - Hub - Light - Switch ha_release: 0.32 +ha_domain: mochad --- The `mochad` integration is the main integration to integrate all X10 platforms being controlled by [mochad](https://sourceforge.net/projects/mochad/). Besides this integration you will have to setup your X10 devices separately. @@ -115,4 +116,4 @@ comm_type: required: false default: pl type: string -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 33617d0fc2d5..fa6950f7eccf 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -1,14 +1,15 @@ --- -title: "Modbus" -description: "Instructions on how to integrate Modbus within Home Assistant." -logo: modbus.png +title: Modbus +description: Instructions on how to integrate Modbus within Home Assistant. ha_category: - Hub ha_release: pre 0.7 ha_iot_class: Local Push +ha_codeowners: + - '@adamchengtkc' +ha_domain: modbus --- - [Modbus](http://www.modbus.org/) is a serial communication protocol to control PLCs (Programmable logic controller). It currently supports sensors and switches which can be controlled over serial, TCP, and UDP connections. @@ -149,5 +150,6 @@ modbus: ## Building on top of Modbus - [Modbus Binary Sensor](/integrations/binary_sensor.modbus/) + - [Modbus Climate](/integrations/climate.modbus/) - [Modbus Sensor](/integrations/sensor.modbus/) - [Modbus Switch](/integrations/switch.modbus/) diff --git a/source/_integrations/modem_callerid.markdown b/source/_integrations/modem_callerid.markdown index cf395ee921e0..1e17a6766007 100644 --- a/source/_integrations/modem_callerid.markdown +++ b/source/_integrations/modem_callerid.markdown @@ -1,10 +1,11 @@ --- -title: "Caller ID Sensor" -description: "Instructions on how to integrate the Caller ID sensor into Home Assistant." +title: Modem Caller ID +description: Instructions on how to integrate the Caller ID sensor into Home Assistant. ha_category: - Sensor -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Local Polling +ha_domain: modem_callerid --- The `modem_callerid` integration uses an available modem for collecting caller ID information. It requires a Hayes AT compatible modem that supports caller ID detection (via AT+VCID=1). diff --git a/source/_integrations/mold_indicator.markdown b/source/_integrations/mold_indicator.markdown index c714613d7fa1..3c8755b24fdb 100644 --- a/source/_integrations/mold_indicator.markdown +++ b/source/_integrations/mold_indicator.markdown @@ -1,12 +1,12 @@ --- -title: "Mold Indicator" -description: "How to use the mold growth indication integration in Home Assistant" -logo: home-assistant.png +title: Mold Indicator +description: How to use the mold growth indication integration in Home Assistant ha_category: - Environment -ha_release: "0.20" +ha_release: '0.20' ha_iot_class: Local Polling -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: mold_indicator --- The Mold Indicator sensor integration consumes information of two temperature sensors and a humidity sensor to give an indication for possible mold growth in your home. In case of bad ventilation and insulation, the indoor humidity may lead to condensation on cold surfaces as the windows or even walls. Condensation or a high relative humidity near those cold surfaces leads to a higher risk for mold growth. This sensor integration estimates the temperature at a pre-calibrated critical point in the room (the coldest surface) and calculates the relative humidity of the air at that point. If the sensor value rises above approximately 70 percent, mold growth might occur and the room should be ventilated. At 100%, the air humidity condensates at the critical point. diff --git a/source/_integrations/monoprice.markdown b/source/_integrations/monoprice.markdown index fd8cb8ed387f..7afb9dcafafd 100644 --- a/source/_integrations/monoprice.markdown +++ b/source/_integrations/monoprice.markdown @@ -1,62 +1,35 @@ --- -title: "Monoprice 6-Zone Amplifier" -description: "Instructions on how to integrate Monoprice 6-Zone Home Audio Controller into Home Assistant." -logo: monoprice.svg +title: Monoprice 6-Zone Amplifier +description: Instructions on how to integrate Monoprice 6-Zone Home Audio Controller into Home Assistant. ha_category: - Media Player ha_release: 0.56 +ha_config_flow: true ha_iot_class: Local Polling +ha_codeowners: + - '@etsinko' +ha_domain: monoprice --- The `monoprice` platform allows you to control [Monoprice 6-Zone Amplifier](https://www.monoprice.com/product?p_id=10761) using a serial connection. -To add a Monoprice device to your installation, add the following to your `configuration.yaml` file: +## Configuration -```yaml -# Example configuration.yaml entry -media_player: - - platform: monoprice - port: /dev/ttyUSB0 - zones: - 11: - name: Main Bedroom - 12: - name: Living Room - 13: - name: Kitchen - 14: - name: Bathroom - 15: - name: Dining Room - 16: - name: Guest Bedroom - sources: - 1: - name: Sonos - 5: - name: Chromecast -``` +Menu: **Configuration** -> **Integrations**. -{% configuration %} -port: - description: The serial port to which Monoprice amplifier is connected. - required: true - type: string -zones: - description: This is the list of zones available. Valid zones are 11, 12, 13, 14, 15 or 16. In case multiple Monoprice devices are stacked together the list of valid zones is extended by 21, 22, 23, 24, 25 or 26 for the second device and 31, 32, 33, 34, 35 or 36 for the third device. Each zone must have a name assigned to it. - required: true - type: integer -sources: - description: The list of sources available. Valid source numbers are 1, 2, 3, 4, 5 or 6. Each source number corresponds to the input number on the Monoprice amplifier. Similar to zones, each source must have a name assigned to it. - required: true - type: integer -{% endconfiguration %} +Click on the `+` sign to add an integration and click on **Monoprice**. +Select the serial port to which Monoprice amplifier is connected, and name the six sources (leave sources you're not using empty). -### Service `snapshot` +Sources can also be later edited from the integration options (gear icon in the top right when selecting the integration). In order to remove an existing source, you'll need to replace it with a space (simply removing its name will still keep it in place). Note that editing sources will remove the snapshot you may have saved. -Take a snapshot of one or more zones' states. This service, and the following one are useful if you want to play a doorbell or notification sound and resume playback afterward. If no `entity_id` is provided, all zones are snapshotted. +## Services + +### Service `monoprice.snapshot` + +Take a snapshot of one or more zones' states. This service, and the following one are useful if you want to play a doorbell or notification sound and resume playback afterward. If `entity_id` is `all`, all zones are snapshotted. The following attributes are stored in a snapshot: + - Power status (On/Off) - Mute status (On/Off) - Volume level @@ -66,9 +39,9 @@ The following attributes are stored in a snapshot: | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`s of zones. -### Service `restore` +### Service `monoprice.restore` -Restore a previously taken snapshot of one or more speakers. If no `entity_id` is provided, all zones are restored. +Restore a previously taken snapshot of one or more speakers. If `entity_id` is `all`, all zones are restored. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | diff --git a/source/_integrations/moon.markdown b/source/_integrations/moon.markdown index 494a66bdcf96..562843002d0b 100644 --- a/source/_integrations/moon.markdown +++ b/source/_integrations/moon.markdown @@ -1,12 +1,14 @@ --- -title: "Moon Sensor" -description: "Instructions on how to integrate the moon sensor into Home Assistant." -logo: home-assistant.png +title: Moon +description: Instructions on how to integrate the moon sensor into Home Assistant. ha_category: - Environment ha_iot_class: Local Polling ha_release: 0.38 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: moon --- The `moon` integration tracks the phases of the moon. diff --git a/source/_integrations/mopar.markdown b/source/_integrations/mopar.markdown deleted file mode 100644 index 22d6a67af75f..000000000000 --- a/source/_integrations/mopar.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Mopar" -description: "Instructions on how to integrate Mopar vehicles into Home Assistant." -logo: mopar.png -ha_category: - - Car - - Sensor - - Switch - - Lock -ha_release: 0.53 -ha_iot_class: Cloud Polling ---- - -The `mopar` integration provides the following for owners of FCA vehicles with a uConnect subscription: - -- Sensor per vehicle with vehicle health report and other meta-data -- Lock per vehicle allowing to lock/unlock the vehicle -- Switch per vehicle allowing to turn the engine on and off -- A service for running the horn & lights - -## Setup - -Be sure you have a [mopar.com](http://mopar.com) account with your vehicle(s) registered by VIN. You must also have a current uConnect subscription. - -## Configuration - -To enable this component, add the following lines to your `configuration.yaml`. All platforms will be automatically loaded. - -```yaml -# Example configuration.yaml entry -mopar: - username: YOUR_USERNAME - password: YOUR_PASSWORD - pin: YOUR_UCONNECT_PIN -``` - -{% configuration %} -username: - description: Your mopar.com username. - required: true - type: string -password: - description: Your mopar.com password. - required: true - type: string -pin: - description: The pin for your account. - required: true - type: string -{% endconfiguration %} - -## Service - -Call the `mopar.sound_horn` service to sound the horn and flash the lights on your vehicle. - -| Service data attribute | Description | -| `vehicle_index` | The index of the vehicle to trigger. This is exposed in the sensor's device attributes. | - -Example data: - -```json -{ - "vehicle_index": 0 -} -``` diff --git a/source/_integrations/mpchc.markdown b/source/_integrations/mpchc.markdown index f0877c57fe42..b0e105ec25ca 100644 --- a/source/_integrations/mpchc.markdown +++ b/source/_integrations/mpchc.markdown @@ -1,14 +1,13 @@ --- -title: "MPC-HC" -description: "Instructions on how to integrate MPC-HC into Home Assistant." -logo: mpchc.png +title: Media Player Classic Home Cinema (MPC-HC) +description: Instructions on how to integrate MPC-HC into Home Assistant. ha_category: - Media Player ha_release: 0.25 ha_iot_class: Local Polling +ha_domain: mpchc --- - The `mpchc` platform allows you to connect a [Media Player Classic Home Cinema](https://mpc-hc.org/) to Home Assistant. It will allow you to see the current playing item, and respond to changes in the player's state. For this integration to function, you will need to enable the Web Interface in the MPC-HC options dialog. diff --git a/source/_integrations/mpd.markdown b/source/_integrations/mpd.markdown index 754a5f697db2..6661ced5b3d2 100644 --- a/source/_integrations/mpd.markdown +++ b/source/_integrations/mpd.markdown @@ -1,14 +1,15 @@ --- -title: "Music Player Daemon (MPD)" -description: "Instructions on how to integrate Music Player Daemon into Home Assistant." -logo: mpd.png +title: Music Player Daemon (MPD) +description: Instructions on how to integrate Music Player Daemon into Home Assistant. ha_category: - Media Player ha_release: pre 0.7 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' +ha_domain: mpd --- - The `mpd` platform allows you to control a [Music Player Daemon](https://www.musicpd.org/) from Home Assistant. Unfortunately you will not be able to manipulate the playlist (add or delete songs) or add transitions between the songs. Even though no playlist manipulation is possible, it is possible to use the play_media service to load an existing saved playlist as part of an automation or scene. @@ -61,4 +62,3 @@ relaxdeck: ``` This platform works with [Music Player Daemon](https://www.musicpd.org/) and [mopidy](https://www.mopidy.com/) with [Mopidy-MPD](https://docs.mopidy.com/en/latest/ext/mpd/) as used by [Pi MusicBox](https://www.pimusicbox.com/). - diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 7e710f048d57..290d2d79b536 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -1,12 +1,15 @@ --- -title: "MQTT" -description: "Instructions on how to setup MQTT within Home Assistant." -logo: mqtt.png +title: MQTT +description: Instructions on how to setup MQTT within Home Assistant. ha_category: - Hub featured: true ha_release: pre 0.7 ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - '@home-assistant/core' +ha_domain: mqtt --- MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things" connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport. @@ -41,9 +44,8 @@ This allows you to connect to the MQTT broker with user `homeassistant` and pass - [Certificate](/docs/mqtt/certificate/) - [Discovery](/docs/mqtt/discovery/) -- [Publish service](/docs/mqtt/service/) +- [Publish & Dump services](/docs/mqtt/service/) - [Birth and last will messages](/docs/mqtt/birth_will/) - [Testing your setup](/docs/mqtt/testing/) - [Logging](/docs/mqtt/logging/) - [Processing JSON](/docs/mqtt/processing_json/) - diff --git a/source/_integrations/mqtt_eventstream.markdown b/source/_integrations/mqtt_eventstream.markdown index b4216bf71c3a..ce6eab477bb0 100644 --- a/source/_integrations/mqtt_eventstream.markdown +++ b/source/_integrations/mqtt_eventstream.markdown @@ -1,11 +1,12 @@ --- -title: "MQTT Eventstream" -description: "Instructions on how to setup MQTT eventstream within Home Assistant." +title: MQTT Eventstream +description: Instructions on how to setup MQTT eventstream within Home Assistant. logo: mqtt.png ha_category: - Other ha_release: 0.11 ha_iot_class: Configurable +ha_domain: mqtt_eventstream --- The `mqtt_eventstream` integration connects two Home Assistant instances via MQTT. diff --git a/source/_integrations/mqtt_json.markdown b/source/_integrations/mqtt_json.markdown index 651a77f443eb..0ab8730c6c6e 100644 --- a/source/_integrations/mqtt_json.markdown +++ b/source/_integrations/mqtt_json.markdown @@ -1,11 +1,12 @@ --- -title: "JSON MQTT Device Tracker" -description: "Instructions on how to use JSON MQTT to track devices in Home Assistant." +title: MQTT JSON +description: Instructions on how to use JSON MQTT to track devices in Home Assistant. logo: mqtt.png ha_category: - Presence Detection ha_iot_class: Configurable ha_release: 0.44 +ha_domain: mqtt_json --- The `mqtt_json` device tracker platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device. diff --git a/source/_integrations/mqtt_room.markdown b/source/_integrations/mqtt_room.markdown index 55d3a044adcc..93e7f3d563e8 100644 --- a/source/_integrations/mqtt_room.markdown +++ b/source/_integrations/mqtt_room.markdown @@ -1,11 +1,12 @@ --- -title: "MQTT Room Presence" -description: "Instructions on how to track room presence within Home Assistant." +title: MQTT Room Presence +description: Instructions on how to track room presence within Home Assistant. logo: mqtt.png ha_category: - Presence Detection ha_release: 0.27 ha_iot_class: Configurable +ha_domain: mqtt_room --- The `mqtt_room` sensor platform allows you to detect the indoor location of devices using MQTT clients. diff --git a/source/_integrations/mqtt_statestream.markdown b/source/_integrations/mqtt_statestream.markdown index 2a4d185eb470..2e1453a60381 100644 --- a/source/_integrations/mqtt_statestream.markdown +++ b/source/_integrations/mqtt_statestream.markdown @@ -1,11 +1,12 @@ --- -title: "MQTT Statestream" -description: "Instructions on how to setup MQTT Statestream within Home Assistant." +title: MQTT Statestream +description: Instructions on how to setup MQTT Statestream within Home Assistant. logo: mqtt.png ha_category: - Other ha_release: 0.54 ha_iot_class: Configurable +ha_domain: mqtt_statestream --- The `mqtt_statestream` integration publishes state changes in Home Assistant to individual MQTT topics. diff --git a/source/_integrations/msteams.markdown b/source/_integrations/msteams.markdown index 69ae8cb6c9d4..aa9694e235bf 100644 --- a/source/_integrations/msteams.markdown +++ b/source/_integrations/msteams.markdown @@ -1,10 +1,12 @@ --- -title: "Microsoft Teams" -description: "Instructions on how to send a notification to a Microsoft Teams channel." -logo: msteams.jpg +title: Microsoft Teams +description: Instructions on how to send a notification to a Microsoft Teams channel. ha_category: - Notifications ha_release: 0.101 +ha_codeowners: + - '@peroyvind' +ha_domain: msteams --- The `Microsoft Teams` platform allows you to send notifications from Home Assistant to a team channel in [Microsoft Teams](https://products.office.com/en-us/microsoft-teams/group-chat-software). diff --git a/source/_integrations/mvglive.markdown b/source/_integrations/mvglive.markdown index 27ce2cf4de0a..9b9e66fc2e91 100644 --- a/source/_integrations/mvglive.markdown +++ b/source/_integrations/mvglive.markdown @@ -1,11 +1,12 @@ --- -title: "MVG" -description: "Instructions on how to integrate Munich public transport departure times into Home Assistant." +title: MVG +description: Instructions on how to integrate Munich public transport departure times into Home Assistant. logo: mvg.png ha_category: - Transport ha_release: 0.42 ha_iot_class: Cloud Polling +ha_domain: mvglive --- The `mvglive` sensor will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Munich public transport network. Additional details such as the line number and destination are present in the attributes. @@ -24,7 +25,7 @@ sensor: {% configuration %} station: - description: Name of the stop or station. Visit [the MVG live web site](https://www.mvg-live.de/) to find valid names. + description: Name of the stop or station. Visit [the MVG live web site](https://www.mvg-live.de/ims/dfiStaticAuswahl.svc) to find valid names. Be aware, that not all data of interest might be available (i.e., bus departure-times in Haar). required: true type: string destinations: diff --git a/source/_integrations/mychevy.markdown b/source/_integrations/mychevy.markdown index 5827c3e2f48e..d7759022563a 100644 --- a/source/_integrations/mychevy.markdown +++ b/source/_integrations/mychevy.markdown @@ -1,11 +1,12 @@ --- -title: "MyChevy" -description: "Instructions on how to integrate Chevy Bolt car into Home Assistant." +title: myChevrolet +description: Instructions on how to integrate Chevy Bolt car into Home Assistant. logo: chevy.png ha_category: - Car ha_release: 0.62 ha_iot_class: Cloud Polling +ha_domain: mychevy --- The `mychevy` integration communicates with the [my.chevrolet](https://my.chevrolet.com) website using the javascript API that the website uses (as of Dec 2018). The MyChevy website has been known to be both unstable (interfaces changing somewhat willy nilly) and has substantial outages. So be forwarned in using this component. diff --git a/source/_integrations/mycroft.markdown b/source/_integrations/mycroft.markdown index b8de2f32a96b..23934118d83f 100644 --- a/source/_integrations/mycroft.markdown +++ b/source/_integrations/mycroft.markdown @@ -1,11 +1,12 @@ --- -title: "Mycroft" -description: "Instructions on how to setup Mycroft AI within Home Assistant." +title: Mycroft +description: Instructions on how to setup Mycroft AI within Home Assistant. logo: mycroft.png ha_category: - Voice - Notifications ha_release: 0.53 +ha_domain: mycroft --- [Mycroft](https://mycroft.ai) is an open source voice assistant that allows you to send notifications and more to Mycroft from Home Assistant. @@ -29,4 +30,4 @@ host: description: The IP address of your Mycroft instance. required: true type: string -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/myq.markdown b/source/_integrations/myq.markdown index 54bb961895a6..f0a0a105add6 100644 --- a/source/_integrations/myq.markdown +++ b/source/_integrations/myq.markdown @@ -1,18 +1,24 @@ --- -title: "MyQ Cover" -description: "Instructions on how to integrate MyQ-Enabled garage door covers into Home Assistant." +title: MyQ +description: Instructions on how to integrate MyQ-Enabled garage door covers into Home Assistant. logo: myq.png ha_category: - Cover ha_release: 0.39 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@bdraco' +ha_domain: myq --- The `myq` cover platform lets you control MyQ-Enabled garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your MyQ Device mobile app. ## Configuration -To use your MyQ cover in your installation, add the following to your `configuration.yaml` file: +To add `MyQ` cover to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **MyQ**. + +Alternatively, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -32,4 +38,3 @@ password: required: true type: string {% endconfiguration %} - diff --git a/source/_integrations/mysensors.markdown b/source/_integrations/mysensors.markdown index 5a0009858715..d4b4319ca924 100644 --- a/source/_integrations/mysensors.markdown +++ b/source/_integrations/mysensors.markdown @@ -1,16 +1,18 @@ --- -title: "MySensors" -description: "Instructions on how to integrate MySensors sensors into Home Assistant." -logo: mysensors.png +title: MySensors +description: Instructions on how to integrate MySensors sensors into Home Assistant. ha_category: - DIY ha_iot_class: Local Push ha_release: 0.73 +ha_codeowners: + - '@MartinHjelmare' +ha_domain: mysensors --- The [MySensors](https://www.mysensors.org) project combines devices like Arduino, ESP8266, Raspberry Pi, NRF24L01+ and RFM69 to build affordable sensor networks. This integration will automatically add all available devices to Home Assistant, after [presentation](#presentation) is done. That is, you do not need to add anything to your configuration for the devices for them to be added. Go to the **states** section of the developer tools to find the devices that have been identified. -### Configuration +## Configuration Integrate your Serial, Ethernet (LAN) or MQTT MySensors Gateway by adding the following to your `configuration.yaml` file: @@ -57,7 +59,7 @@ mysensors: type: string default: '' nodes: - description: A mapping of node ids to node settings, e.g. custom name. + description: A mapping of node ids to node settings, e.g., custom name. required: false type: map keys: @@ -94,7 +96,7 @@ Not all features of MySensors 2.x are supported by Home Assistant yet. As more f If you are using an original Arduino as a serial gateway, the port will be named `ttyACM*`. The exact number can be determined with the command shown below. ```bash -$ ls /dev/ttyACM* +ls /dev/ttyACM* ``` If you are using the MQTT gateway, you also need to have the [MQTT component](/integrations/mqtt/) configured in Home Assistant. See below for a minimum MQTT configuration: @@ -241,13 +243,14 @@ In MySensors version 2.2 the serial API changed from using `I_HEARTBEAT_RESPONSE Messages sent to or from Home Assistant from or to a MySensors device will be validated according to the MySensors [serial API](https://www.mysensors.org/download/serial_api_20). If a message doesn't pass validation, it will be dropped and not be passed forward either to or from Home Assistant. Make sure you follow the serial API for your version of MySensors when writing your Arduino sketch. -The log should warn you of messages that failed validation or if a child value is missing that is required for a certain child type. Home Assistant will log failed validations of child values at warning level if e.g. one required value type for a platform has been received, but other required value types are missing. +The log should warn you of messages that failed validation or if a child value is missing that is required for a certain child type. Home Assistant will log failed validations of child values at warning level if e.g., one required value type for a platform has been received, but other required value types are missing. Message validation was introduced in version 0.52 of Home Assistant. ### Debug logging -If you experience dropped messages or that a device is not added to Home Assistant, please turn on debug logging for the `mysensors` integration and the `mysensors` package. This will help you see what is going on. Make sure you use these logging settings to collect a log sample if you report an issue about the `mysensors` integration in our github issue tracker. +If you experience dropped messages or that a device is not added to Home Assistant, please turn on debug logging for the `mysensors` integration and the `mysensors` package. This will help you see what is going on. Make sure you use these logging settings to collect a log sample if you report an issue about the `mysensors` integration in our GitHub issue tracker. + ```yaml logger: default: info @@ -256,7 +259,6 @@ logger: mysensors: debug ``` - Visit the [library API][MySensors library api] of MySensors for more information. [MySensors library API]: https://www.mysensors.org/download diff --git a/source/_integrations/mystrom.markdown b/source/_integrations/mystrom.markdown index 11fc8fec72c8..09c5d3cd284a 100644 --- a/source/_integrations/mystrom.markdown +++ b/source/_integrations/mystrom.markdown @@ -1,13 +1,15 @@ --- -title: "myStrom WiFi Bulb" -description: "Instructions on how to integrate myStrom WiFi Bulbs into Home Assistant." -logo: mystrom.png +title: myStrom +description: Instructions on how to integrate myStrom WiFi Bulbs into Home Assistant. ha_category: - Light - Binary Sensor - Switch ha_release: 0.43 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' +ha_domain: mystrom --- The `mystrom` light platform allows you to control your [myStrom](https://mystrom.ch/en/) WiFi Bulbs. @@ -213,4 +215,4 @@ sensor: unit_of_measurement: "W" value_template: "{{ state_attr('switch.office', 'current_power_w') }}" ``` -{% endraw %} \ No newline at end of file +{% endraw %} diff --git a/source/_integrations/mythicbeastsdns.markdown b/source/_integrations/mythicbeastsdns.markdown index b2e771163c00..b8ac18df2106 100644 --- a/source/_integrations/mythicbeastsdns.markdown +++ b/source/_integrations/mythicbeastsdns.markdown @@ -1,11 +1,12 @@ --- -title: "Mythic Beasts DNS" -description: "Keep your mythic beasts DNS updated" +title: Mythic Beasts DNS +description: Keep your mythic beasts DNS updated ha_category: - Network ha_release: 0.85 ha_iot_class: Cloud Push logo: mythic_beasts.png +ha_domain: mythicbeastsdns --- With the `mythicbeastsdns` integration you can automatically update your dynamic DNS entry at [Mythic Beasts](https://www.mythic-beasts.com/). diff --git a/source/_integrations/n26.markdown b/source/_integrations/n26.markdown index 4842c2529c2a..9495093fe880 100644 --- a/source/_integrations/n26.markdown +++ b/source/_integrations/n26.markdown @@ -1,13 +1,13 @@ --- -title: "N26" -description: "Instructions on how to integrate N26 integration within Home Assistant." -logo: n26.png +title: N26 +description: Instructions on how to integrate N26 integration within Home Assistant. ha_category: - Finance - Sensor - Switch ha_release: 0.92 ha_iot_class: Cloud Polling +ha_domain: n26 --- The [N26](https://n26.com) integration for Home Assistant allows you to track your N26 account. diff --git a/source/_integrations/nad.markdown b/source/_integrations/nad.markdown index 64a25c3922c6..e3b9f7a3bc16 100644 --- a/source/_integrations/nad.markdown +++ b/source/_integrations/nad.markdown @@ -1,11 +1,11 @@ --- -title: "NAD" -description: "Instructions on how to integrate NAD receivers into Home Assistant." -logo: nad.png +title: NAD +description: Instructions on how to integrate NAD receivers into Home Assistant. ha_category: - Media Player ha_release: 0.36 ha_iot_class: Local Polling +ha_domain: nad --- The `nad` platform allows you to control a [NAD receiver](https://nadelectronics.com/) through RS232, TCP and Telnet from Home Assistant. @@ -76,7 +76,7 @@ The min_volume and max_volume are there to protect you against misclicks on the
    -On linux the user running home-assistant needs `dialout` permissions to access the serial port. +On Linux the user running Home Assistant needs `dialout` permissions to access the serial port. This can be added to the user by doing `sudo usermod -a -G dialout `. Be aware that the user might need to logout and logon again to activate these permissions. diff --git a/source/_integrations/namecheapdns.markdown b/source/_integrations/namecheapdns.markdown index c103b04796fd..e22d5fa65868 100644 --- a/source/_integrations/namecheapdns.markdown +++ b/source/_integrations/namecheapdns.markdown @@ -1,10 +1,10 @@ --- -title: "NamecheapDNS" -description: "Keep your namecheap dynamic DNS up to date" -logo: namecheap.png +title: Namecheap FreeDNS +description: Keep your namecheap dynamic DNS up to date ha_category: - Network ha_release: 0.56 +ha_domain: namecheapdns --- With the `namecheapdns` integration you can automatically update your dynamic DNS entry at [namecheapdns](https://www.namecheap.com/store/domains/freedns/). diff --git a/source/_integrations/nanoleaf.markdown b/source/_integrations/nanoleaf.markdown index 3b22cf1b9ede..2fd39e57b03b 100644 --- a/source/_integrations/nanoleaf.markdown +++ b/source/_integrations/nanoleaf.markdown @@ -1,11 +1,12 @@ --- -title: "Nanoleaf Light Panel" -description: "Instructions how to integrate Nanoleaf Light Panels into Home Assistant." +title: Nanoleaf +description: Instructions how to integrate Nanoleaf Light Panels into Home Assistant. logo: nanoleaf_light.png ha_category: - Light ha_iot_class: Local Polling ha_release: 0.67 +ha_domain: nanoleaf --- ### Configuration Sample diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown index 4443feb0d08b..4beffd87bf9c 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -1,14 +1,19 @@ --- -title: "Neato Robotics" -description: "Instructions on how to integrate your Neato within Home Assistant." +title: Neato Botvac +description: Instructions on how to integrate your Neato within Home Assistant. logo: neato.png ha_category: - Camera - Sensor - Switch - Vacuum +ha_iot_class: Cloud Polling ha_release: 0.33 ha_config_flow: true +ha_codeowners: + - '@dshokouhi' + - '@Santobert' +ha_domain: neato --- The `neato` integration allows you to control your [Neato Botvac Connected Robots](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/). @@ -22,7 +27,7 @@ Menu: *Configuration* -> *Integrations* Search for or select **Neato** from the list and configure the integration. You will need to enter your username and password and whether you are using a Neato or Vorwerk device. After that, all the entities will automatically show up in Home Assistant. -## Setup the integration via configuration.yaml +## Setup the integration via `configuration.yaml` Add the following to your configuration.yaml: @@ -77,11 +82,11 @@ Currently supported services are: And a specific Platform Service: -- `vacuum.neato_custom_cleaning` +- `neato.custom_cleaning` ### Platform Services -#### Service `vacuum.neato_custom_cleaning` +#### Service `neato.custom_cleaning` Starts a custom cleaning of your house. You can set the various options like in the mobile application (mode, map usage, navigation mode, zone). @@ -97,8 +102,8 @@ Some information about the capabilities might be found on the [Neato Developer P | `entity_id` | no | Only act on a specific robot | | `mode` | yes | Set the cleaning mode: 1 for eco and 2 for turbo. Defaults to turbo if not set. | | `navigation` | yes | Set the navigation mode: 1 for normal, 2 for extra care, 3 for deep. Defaults to normal if not set. Deep cleaning is only supported on the Botvac D7. | -| `category` | yes | Whether to use a persistent map or not for cleaning (i.e. No go lines): 2 for no map, 4 for map. Default to using map if not set (and fallback to no map if no map is found). | -| `zone` | yes | Only supported on the Botvac D7. Name of the zone to clean from the Neato app. Use unique names for the zones to avoid the wrong zone from running. Defaults to no zone i.e. complete house cleanup. | +| `category` | yes | Whether to use a persistent map or not for cleaning (i.e., No go lines): 2 for no map, 4 for map. Default to using map if not set (and fallback to no map if no map is found). | +| `zone` | yes | Only supported on the Botvac D7. Name of the zone to clean from the Neato app. Use unique names for the zones to avoid the wrong zone from running. Defaults to no zone i.e., complete house cleanup. | ## Camera diff --git a/source/_integrations/nederlandse_spoorwegen.markdown b/source/_integrations/nederlandse_spoorwegen.markdown index 7534e3d697a0..fff91654d827 100644 --- a/source/_integrations/nederlandse_spoorwegen.markdown +++ b/source/_integrations/nederlandse_spoorwegen.markdown @@ -1,25 +1,27 @@ --- -title: "Nederlandse Spoorwegen" -description: "Instructions on how to integrate timetable data for traveling by train in the Netherlands within Home Assistant." +title: Nederlandse Spoorwegen (NS) +description: Instructions on how to integrate timetable data for traveling by train in the Netherlands within Home Assistant. logo: nederlandse_spoorwegen.png ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.57 +ha_codeowners: + - '@YarmoM' +ha_domain: nederlandse_spoorwegen --- This sensor will provide you with time table information of the [Nederlandse Spoorwegen](https://www.ns.nl/) train service in the Netherlands. -You must create an application [here](https://www.ns.nl/ews-aanvraagformulier/) to obtain a `password`. +To obtain an API key, create an account on the [NS API-Portaal](https://apiportal.ns.nl/) and obtain an API key for the `Reisinformatie` API which is part of the `Ns-App` product. -Add the data to your `configuration.yaml` file as shown in the example: +The `nederlandse_spoorwegen` integration can be configured using `configuration.yaml` as shown below: ```yaml # Example configuration.yaml entry sensor: - platform: nederlandse_spoorwegen - email: you@example.com - password: !secret ns_password + api_key: NS_API_KEY routes: - name: Rotterdam-Amsterdam from: Rtd @@ -28,19 +30,19 @@ sensor: from: Gn to: Mt via: Zl + - name: 'AlmereBuiten-Duivendrecht-the-08h06m-train' + from: Almb + to: Dvd + time: '08:06:00' ``` {% configuration %} -email: - description: The email address you used to request the API password. - required: true - type: string -password: - description: The API password provided by the Nederlandse Spoorwegen. +api_key: + description: The API key provided by the Nederlandse Spoorwegen. required: true type: string routes: - description: List of traveling routes. + description: List of travel routes. required: false type: list keys: @@ -49,19 +51,38 @@ routes: required: true type: string from: - description: The start station. + description: The departure station. required: true type: string to: - description: Direction of the traveling. + description: The arrival station. required: true type: string via: - description: Optional other station you wish to visit in between. + description: A station the route needs to pass through. required: false type: string + time: + description: Optional time to search for a specific train. + required: false + type: time {% endconfiguration %} -The data are coming from [Nederlandse Spoorwegen](https://www.ns.nl/). +### Station codes Station codes must be used and can be looked up [here](https://nl.wikipedia.org/wiki/Lijst_van_spoorwegstations_in_Nederland). + +### Searching a specific train vs. the next train + +The default behavior (without configuration variable `time`) gives you the information about the *next* train that fits the criteria (`from`, `to`, `via`). +When using the configuration variable `time`, you can search for a specific train. +This is convenient when searching for the next train doesn't give you enough time to base an automation on. +E.g., when you normally take the 08h06m train and want to get information about this train, but there is another train +that's departing just minutes before your train, your time window to warn you on a delay might be too small. + +Using `time` only updates the route sensor during a time window around the chosen time. +Outside this window, the route sensor's state is `unknown`. +The window is from half an hour before the chosen time until half an hour after the chosen time. +In this way, you can have multiple routes with specific trains before hitting the FUP threshold for using NS API. + +The data are coming from [Nederlandse Spoorwegen](https://www.ns.nl/). diff --git a/source/_integrations/nello.markdown b/source/_integrations/nello.markdown index b6f189168fae..8664d2d366b3 100644 --- a/source/_integrations/nello.markdown +++ b/source/_integrations/nello.markdown @@ -1,18 +1,16 @@ --- -title: "Nello Lock" -description: "Instructions on how to integrate Nello intercom devices." +title: Nello +description: Instructions on how to integrate Nello intercom devices. logo: nello.png ha_category: - Lock - ha_release: 0.52 ha_iot_class: Cloud Polling +ha_codeowners: + - '@pschmitt' +ha_domain: nello --- -
    -Locumi Labs, the manufacturer of Nello, went bankrupt on 2 October 2019. Since Nello One locks require this cloud service, the locks will no longer work if the Nello shuts down the servers, which according to the official announcement should not happen for the time being. Nello has promised existing users via email that they will work on an alternative to use the lock without a server. -
    - 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). diff --git a/source/_integrations/ness_alarm.markdown b/source/_integrations/ness_alarm.markdown index 19f1f8b276de..91fb30324d40 100644 --- a/source/_integrations/ness_alarm.markdown +++ b/source/_integrations/ness_alarm.markdown @@ -1,12 +1,14 @@ --- -title: "Ness Alarm" -description: "Instructions on how to integrate a Ness D8x/D16x alarm system with Home Assistant." -logo: ness.png +title: Ness Alarm +description: Instructions on how to integrate a Ness D8x/D16x alarm system with Home Assistant. ha_category: - Alarm - Binary Sensor ha_release: 0.85 ha_iot_class: Local Push +ha_codeowners: + - '@nickw444' +ha_domain: ness_alarm --- The `ness_alarm` integration will allow Home Assistant users who own a Ness D8x/D16x alarm system to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a IP232 module that must be connected to the alarm. @@ -110,4 +112,3 @@ Trigger a panic | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `code` | No | The user code to use to trigger the panic. - diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 94a3648114d3..4370256db98a 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -1,6 +1,6 @@ --- -title: "Nest" -description: "Instructions on how to integrate Nest into Home Assistant." +title: Nest +description: Instructions on how to integrate Nest into Home Assistant. logo: nest.png ha_category: - Hub @@ -10,6 +10,10 @@ ha_category: - Sensor ha_iot_class: Cloud Push ha_release: 0.7 +ha_config_flow: true +ha_codeowners: + - '@awarecan' +ha_domain: nest --- The Nest integration is the main integration to integrate all [Nest](https://nest.com/) related platforms. To connect Nest, you will have to [sign up for a developer account](https://developers.nest.com/products) and get a `client_id` and `client_secret`. @@ -305,26 +309,26 @@ monitored_conditions: The following conditions are available by device: - Nest Home: - - eta: Estimated time of arrival. - - security\_state: `ok` or `deter`. [Security State](#security-state). Only available when Nest Camera exists. + - `eta`: Estimated time of arrival. + - `security_state`: `ok` or `deter`. [Security State](#security-state). Only available when Nest Camera exists. - Nest Thermostat: - - humidity - - preset\_mode - - temperature - - target - - hvac\_state: The currently active state of the HVAC system, `heat`, `cool` or `off` (previously `heating`, `cooling` or `off`). + - `humidity` + - `preset_mode` + - `temperature` + - `target` + - `hvac_state`: The currently active state of the HVAC system, `heat`, `cool` or `off` (previously `heating`, `cooling` or `off`). - Nest Protect: - - co\_status: `Ok`, `Warning` or `Emergency` - - smoke\_status: `Ok`, `Warning` or `Emergency` - - battery\_health: `Ok` or `Replace` - - color\_status: `gray`, `green`, `yellow` or `red`. Indicates device status by color in the Nest app UI. It is an aggregate condition for battery+smoke+CO states, and reflects the actual color indicators displayed in the Nest app. + - `co_status`: `Ok`, `Warning` or `Emergency` + - `smoke_status`: `Ok`, `Warning` or `Emergency` + - `battery_health`: `Ok` or `Replace` + - `color_status`: `gray`, `green`, `yellow` or `red`. Indicates device status by color in the Nest app UI. It is an aggregate condition for battery+smoke+CO states, and reflects the actual color indicators displayed in the Nest app. - Nest Camera: none ## Security State
    -This feature is not designed to transfer your Home Assistant to a security system, neither Home Assistant nor Nest be liable to You for damages, +This feature is not designed to transform your Home Assistant into a security system, neither Home Assistant nor Nest be liable to You for damages, or consequential damages of any character arising as a result of use this feature. This feature does not depend on the [Nest Secure alarm system](https://nest.com/alarm-system/overview/) and is not a reflection of the status of that system, diff --git a/source/_integrations/netatmo.markdown b/source/_integrations/netatmo.markdown index 5e4b34ffed73..24e50cfe73d6 100644 --- a/source/_integrations/netatmo.markdown +++ b/source/_integrations/netatmo.markdown @@ -1,24 +1,25 @@ --- -title: "Netatmo" -description: "Instructions on how to integrate Netatmo integration into Home Assistant." -logo: netatmo.png +title: Netatmo +description: Instructions on how to integrate Netatmo integration into Home Assistant. ha_category: - Hub - Environment - Weather - - Binary Sensor - Sensor - Climate - Camera -ha_release: "0.20" +ha_release: '0.20' ha_iot_class: Cloud Polling +ha_codeowners: + - '@cgtobi' +ha_config_flow: true +ha_domain: netatmo --- The `netatmo` integration platform is the main integration to integrate all Netatmo related platforms. There is currently support for the following device types within Home Assistant: -- [Binary Sensor](#binary-sensor) - [Camera](#camera) - [Climate](#climate) - [Sensor](#sensor) @@ -30,45 +31,27 @@ To enable the Netatmo component, add the following lines to your `configuration. ```yaml # Example configuration.yaml entry netatmo: - api_key: YOUR_CLIENT_ID - secret_key: YOUR_CLIENT_SECRET - username: YOUR_USERNAME - password: YOUR_PASSWORD + client_id: YOUR_CLIENT_ID + client_secret: YOUR_CLIENT_SECRET ``` {% configuration %} -api_key: +client_id: description: The `client id` from your Netatmo app. required: true type: string -secret_key: +client_secret: description: The `client secret` from your Netatmo app. required: true - type: integer -username: - description: Username for the Netatmo account. - required: true - type: string -password: - description: Password for the Netatmo account. - required: true type: string -discovery: - description: Whether to discover Netatmo devices automatically. Set it to False, if you want to choose which Netatmo device you want to add. Do not use discovery and manual configuration at the same time. - required: false - type: boolean - default: true -webhooks: - description: Enable webhooks for instant events of the Welcome and Presence cameras. - required: false - type: boolean - default: false {% endconfiguration %} +**After the client_id and client_secret is added to your `configuration.yaml` you must enable Netatmo through the integrations page.** + ### Get API and Secret Key To get your API credentials, you have to declare a new application in the [Netatmo Developer Page](https://dev.netatmo.com/). Sign in using your username and password from your regular Netatmo account. -Click on 'Create an App' at the top of the page. +Open the [app creator](https://dev.netatmo.com/apps/createanapp#form) form.

    @@ -85,315 +68,23 @@ That's it. You can copy and paste your new `client id` and `client secret` in yo

    -### Webhooks - -The Welcome and Presence cameras can send instant events to Home Assistant by using webhooks. There are different types of events, each with slightly different data attached. To enable the webhooks add `webhooks: true` to your configuration. It is also required to have your camera enabled in Home Assistant. You can do this either by manually setting up the [platform](/integrations/netatmo#camera) or by enabeling [discovery](/integrations/netatmo/#discovery). - -To be able to receive events from Netatmo, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the base_url configured for the HTTP integration ([docs](/integrations/http/#base_url)). - -Events coming in from Netatmo will be available as events in Home Assistant and are fired as netatmo_*, along with their data. You can use this event to trigger automations. - -#### Events - -The following events are available: - -- netatmo_person (Welcome) -- netatmo_movement (Welcome & Presence) -- netatmo_human (Presence) -- netatmo_animal (Presence) -- netatmo_vehicle (Presence) -- netatmo_other (Welcome & Presence) - -All events (except `netatmo_other`) contain the following attributes: - -| Attribute | Description | -| --------- | ----------- | -| event_type | Type of event. E.G. `movement`. -| home_name | Name of the home the camera belongs to. -| camera_id | MAC address of the camera. -| message | Message describing what has been seen by the camera. - -The Presence camera additionally has these attributes: - -| Attribute | Description | -| --------- | ----------- | -| snapshot_url | URL to a picture of the full frame of the event. -| vignette_url | URL to a picture cropped down to the area of interest. - -The Welcome camera additionally has these attributes for `netatmo_person` events: - -| Attribute | Description | -| --------- | ----------- | -| id | ID of the person that has been seen. -| name | Name of the person that has been seen. -| is_known | Boolean value if the person is known. -| face_url | URL to a picture of the person. - -The `netatmo_other` event passes all the webhook data through for all webhook events that don't match any of the above. Set the [level of logging](/integrations/logger/) for the `netatmo` integration to `debug` to view the data in the Home Assistant logs. - -### Services (only for webhooks) - -There are two services to manually add and drop the webhooks. This might be useful if your webhook has been banned and you want to readd the webhook without restarting Home Assistant. - -| Service | Description | -| ------- | ----------- | -| addwebhook | Subscribe to webhooks. By default the automatically generated URL will be used. But you can pass `{"url": "https://yourdomain.com/yourwebhook/"}` as service data to the service call if you want to use a manually created [webhook trigger](/docs/automation/trigger/#webhook-trigger). In this case you have to manually process the data that is sent by Netatmo. -| dropwebhook | Unsubscribe existing webhooks. - -## Binary Sensor - -This integration allows you to get the latest event seen by the camera. - -### Binary Sensor Advanced configuration - -If you want to select a specific sensor, -set discovery to `false` for [netatmo](/integrations/netatmo/) -and add the following lines to your `configuration.yaml`: - -{% configuration %} -home: - description: Will use the cameras of this home only. - required: false - type: string -timeout: - description: > - The Welcome/Presence binary sensors will - stay on for X seconds after detection. - required: false - type: integer - default: 90 -cameras: - description: List of cameras entity IDs to display. - required: false - type: list -welcome_sensors: - description: > - List of monitored conditions. Possible values are - 'Someone known', 'Someone unknown' and 'Motion'. - required: false - type: list -presence_sensors: - description: > - List of monitored conditions. Possible values are 'Outdoor motion', - 'Outdoor human', 'Outdoor animal' and 'Outdoor vehicle'. - required: false - type: list -{% endconfiguration %} - -```yaml -# Example configuration.yaml entry -binary_sensor: - platform: netatmo - home: home_name - timeout: 90 - cameras: - - camera_name1 - welcome_sensors: - - Someone known - - Someone unknown - - Motion - presence_sensors: - - Outdoor motion - - Outdoor human - - Outdoor animal - - Outdoor vehicle -``` - -If **home** and **cameras** is not provided, all cameras will be used. -If multiple cameras are available then each monitored conditions -will create a specific sensor for each camera - ## Camera -The `netatmo` camera platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) camera. This integration allows you to view the current photo created by the Camera. - -### Camera Advanced configuration - -If you want to select a specific camera, -set discovery to `false` for [netatmo](/integrations/netatmo/) -and add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -camera: - - platform: netatmo -``` - -{% configuration %} -home: - description: Will display the cameras of this home only. - required: false - type: string -cameras: - description: Cameras to use. Multiple entities allowed. - required: false - type: list - keys: - camera_name: - description: Name of the camera to display. -quality: - description: Quality of the live stream. (`'high'`, `'medium'`, `'low'` or `'poor'`) - required: false - type: string - default: high -{% endconfiguration %} - -If **home** and **cameras** are not provided, all cameras will be displayed. For more control over your cameras check the configuration sample below. - -```yaml -# Example configuration.yaml entry -camera: - platform: netatmo - home: home_name - quality: medium - cameras: - - camera_name1 - - camera_name2 -``` - -### Services (only for camera) - -The services below permit to control whether the camera should monitor and alert on motion detection. Also, it allows to control the status of the flood light (only for Presence model). - -| Service | Description | -| ------- | ----------- | -| enable_motion_detection | Enable motion detection and alert. -| disable_motion_detection | Disable motion detection and alert. -| set_light_auto | Presence model only : Set flood light on automatic mode. -| set_light_on | Presence model only : Set flood light on. -| set_light_off | Presence model only : Set flood light off. +The `netatmo` camera platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) camera. This integration allows you to view the current live stream created by the Camera. ## Climate The `netatmo` thermostat platform is consuming the information provided by a [Netatmo Smart Thermostat](https://www.netatmo.com/product/energy/thermostat) thermostat. This integration allows you to view the current temperature and setpoint. -### Camera Advanced configuration - -If you want to select specific homes or specific rooms, -set discovery to `false` for [netatmo](/integrations/netatmo/) -and add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -climate: - - platform: netatmo -``` - -{% configuration %} -homes: - description: Will display the thermostats of the homes listed. - required: false - type: list - keys: - name: - required: true - description: The home name. - rooms: - description: Rooms to be displayed. Multiple entities allowed. - required: false - type: [list, string] - description: List of the names of the rooms to be displayed. -{% endconfiguration %} - -If **homes** and **rooms** are not provided, all thermostats will be displayed. - -```yaml -# Example configuration.yaml entry -climate: - platform: netatmo - homes: - - name: home1_name - rooms: - - room1_name - - room2_name - - name: home2_name - rooms: - - room3_name - - room4_name - - room5_name -``` - ## Sensor -The `netatmo` sensor platform is consuming the information provided by a [Netatmo Weather Station](https://www.netatmo.com/en-us/weather/weatherstation), a -[Netatmo Home Coach](https://www.netatmo.com/en-us/aircare/homecoach) [Netatmo](https://www.netatmo.com) device or the public sensors of others available via the [Netatmo API](https://weathermap.netatmo.com/) even if you don't own a Netatmo device. - -Public sensors have to be set up manually. - -## Advanced sensor configuration - -If you want to select a specific sensor, set discovery to False for [netatmo](/integrations/netatmo/) and add the following lines to your `configuration.yaml`: +The `netatmo` sensor platform is consuming the information provided by a [Netatmo Weather Station](https://www.netatmo.com/en-us/weather/weatherstation) or a +[Netatmo Home Coach](https://www.netatmo.com/en-us/aircare/homecoach) [Netatmo](https://www.netatmo.com) device. -```yaml -# Example configuration.yaml entry -sensor: - # Personal sensors - - platform: netatmo - station: STATION_NAME - modules: - - module_name1 - - module_name2 - - # Public sensor - - platform: netatmo - areas: - - lat_ne: 40.719 - lon_ne: -73.735 - lat_sw: 40.552 - lon_sw: -74.105 -``` - -{% configuration %} -station: - required: false - description: The name of the weather station. Needed if several stations are associated with the account. - type: string -modules: - required: false - description: Modules to use. Multiple entries allowed. Please check the next section about how to retrieve the module names. - type: list - keys: - module_name: - type: list - required: true - description: Name of the module. -areas: - description: The list contains one or more areas to add as sensors. - required: false - type: map - keys: - lat_ne: - description: Latitude of north-eastern corner of area. - required: true - type: string - lon_ne: - description: Longitude of north-eastern corner of area. - required: true - type: string - lat_sw: - description: Latitude of south-western corner of area. - required: true - type: string - lon_sw: - description: Longitude of south-western corner of area. - required: true - type: string - name: - description: Name of the sensor. - required: false - type: string - default: Netatmo Public Data - mode: - description: "How to calculate the value of the sensor if there are multiple stations reporting data. Accepts `max` or `avg`." - required: false - type: string - default: avg -{% endconfiguration %} +## Webhooks -## Find your modules name +The smart indoor and outdoor cameras, as well as the smart smoke alarm, send instant events to Home Assistant by using webhooks. It is required to have your camera enabled in Home Assistant. -You can find your modules name in your [online NetAtmo account](https://my.netatmo.com/app/station). These names can be found and changed in parameters. You have to provide these name in your Home Assistant `configuration.yaml` file. +To be able to receive events from Netatmo, your Home Assistant instance needs to be accessible from the web. To achieve this you can either use your Nabu Casa account or ([Home Assistant instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP integration ([documentation](/integrations/http/#base_url)). -

    - -

    +Events coming in from Netatmo will be available as an event in Home Assistant and are fired as `netatmo_event`, along with their data. You can use these events to trigger automations. diff --git a/source/_integrations/netdata.markdown b/source/_integrations/netdata.markdown index 20136cdcb33d..a687df529910 100644 --- a/source/_integrations/netdata.markdown +++ b/source/_integrations/netdata.markdown @@ -1,11 +1,13 @@ --- -title: "Netdata" -description: "Instructions on how to integrate Netdata within Home Assistant." -logo: netdata.png +title: Netdata +description: Instructions on how to integrate Netdata within Home Assistant. ha_category: - System Monitor ha_release: 0.35 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' +ha_domain: netdata --- The `netdata` sensor platform allows you to display information collected by [Netdata](https://my-netdata.io/). @@ -60,7 +62,7 @@ Alternatively you can browse to the built in Netdata API in your browser `http:/ }, ``` -Once the `data_group` "system.load" and the `element` "load15" have been identified from the JSON it can be configured in your configuration.yaml like the example below. +Once the `data_group` "system.load" and the `element` "load15" have been identified from the JSON it can be configured in your `configuration.yaml` like the example below. ## Configuration diff --git a/source/_integrations/netgear.markdown b/source/_integrations/netgear.markdown index bae63c3fda05..46ec42f856a6 100644 --- a/source/_integrations/netgear.markdown +++ b/source/_integrations/netgear.markdown @@ -1,14 +1,15 @@ --- -title: "Netgear" -description: "Instructions on how to integrate Netgear routers into Home Assistant." +title: NETGEAR +description: Instructions on how to integrate NETGEAR routers into Home Assistant. logo: netgear.png ha_category: - Presence Detection ha_iot_class: Local Polling ha_release: pre 0.7 +ha_domain: netgear --- -This platform allows you to detect presence by looking at connected devices to a [Netgear](https://www.netgear.com/) device. +This platform allows you to detect presence by looking at connected devices to a [NETGEAR](https://www.netgear.com/) device.
    @@ -49,7 +50,7 @@ password: required: true type: string devices: - description: If provided only specified devices will be reported. Can be MAC address or the device name as reported in the Netgear UI. + description: If provided only specified devices will be reported. Can be MAC address or the device name as reported in the NETGEAR UI. required: false type: list exclude: @@ -67,7 +68,9 @@ When `accesspoints` is specified an extra device will be reported for each devic The use of `devices` or `exclude` is recommended when using `accesspoints` to avoid having a lot of entries. List of models that are known to use port 80: + - Nighthawk X4S - AC2600 (R7800) - Orbi +- XR500 See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_integrations/netgear_lte.markdown b/source/_integrations/netgear_lte.markdown index 65351a5ef47c..bfb0e56f9b90 100644 --- a/source/_integrations/netgear_lte.markdown +++ b/source/_integrations/netgear_lte.markdown @@ -1,6 +1,6 @@ --- -title: "Netgear LTE" -description: "Instructions on how to integrate your Netgear LTE modem within Home Assistant." +title: NETGEAR LTE +description: Instructions on how to integrate your NETGEAR LTE modem within Home Assistant. logo: netgear.png ha_release: 0.72 ha_category: @@ -9,9 +9,10 @@ ha_category: - Sensor - Binary Sensor ha_iot_class: Local Polling +ha_domain: netgear_lte --- -The Netgear LTE integration for Home Assistant allows you to observe and control [Netgear LTE modems](https://www.netgear.com/home/products/mobile-broadband/lte-modems/default.aspx). +The NETGEAR LTE integration for Home Assistant allows you to observe and control [NETGEAR LTE modems](https://www.netgear.com/home/products/mobile-broadband/lte-modems/default.aspx). There is currently support for the following device types within Home Assistant: @@ -27,7 +28,6 @@ Splitting of long SMS messages is not supported so notifications can contain a m
    - ## Configuration To enable the integration, add the following lines to your `configuration.yaml` file: @@ -71,7 +71,7 @@ notify: name: description: The name of the notification service. required: false - default: notify + default: "`netgear_lte`" type: string sensor: description: Configuration options for sensors. @@ -93,7 +93,7 @@ sensor: current_band: description: The radio band used, e.g., "LTE B3". current_ps_service_type: - description: The service type, e.g. "LTE". + description: The service type, e.g., "LTE". radio_quality: description: A number with the radio quality in percent, e.g., "55" register_network_display: @@ -184,6 +184,7 @@ This service can set modem configuration options (otherwise available in the mod The following automation example processes incoming SMS messages with the [Conversation](/integrations/conversation/) integration and then deletes the message from the inbox. {% raw %} + ```yaml automation: - alias: SMS conversation @@ -199,4 +200,5 @@ automation: host: '{{ trigger.event.data.host }}' sms_id: '{{ trigger.event.data.sms_id }}' ``` + {% endraw %} diff --git a/source/_integrations/netio.markdown b/source/_integrations/netio.markdown index 72a54a80a1b0..97f5fd696b4b 100644 --- a/source/_integrations/netio.markdown +++ b/source/_integrations/netio.markdown @@ -1,14 +1,15 @@ --- -title: "Netio Switch" -description: "Instructions on how to integrate Netio switches into Home Assistant." +title: Netio +description: Instructions on how to integrate Netio switches into Home Assistant. logo: netio.png ha_category: - Switch ha_iot_class: Local Polling ha_release: 0.24 +ha_domain: netio --- -The `netio` switch platform allows you to control your [Netio](https://www.netio-products.com/en/overview/) Netio4, Netio4 All, and Netio 230B. These are smart outlets controllable through Ethernet and/or WiFi that reports consumptions (Netio4all). +The `netio` switch platform allows you to control your [Netio](https://www.netio-products.com/en/overview/) Netio4, Netio4 All, and Netio 230B. These are smart outlets controllable through Ethernet and/or Wi-Fi that reports consumptions (Netio4all). To use Netio devices in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/neurio_energy.markdown b/source/_integrations/neurio_energy.markdown index 81bd24b41f9c..cb08b5cf8679 100644 --- a/source/_integrations/neurio_energy.markdown +++ b/source/_integrations/neurio_energy.markdown @@ -1,11 +1,12 @@ --- -title: "Neurio" -description: "Instructions on how to integrate Neurio within Home Assistant." +title: Neurio energy +description: Instructions on how to integrate Neurio within Home Assistant. logo: neurio.png ha_category: - Energy ha_iot_class: Cloud Polling ha_release: 0.14 +ha_domain: neurio_energy --- Integrate your [Neurio](https://neur.io/) meter information into Home Assistant. To get an API key and secret, login to your [Neurio account](https://my.neur.io/#settings/applications/register) and register an application. Note the Homepage URL and Callback URL are optional. diff --git a/source/_integrations/nexia.markdown b/source/_integrations/nexia.markdown new file mode 100644 index 000000000000..685b41b3dd1b --- /dev/null +++ b/source/_integrations/nexia.markdown @@ -0,0 +1,101 @@ +--- +title: Nexia +description: Instructions on how to integrate Nexia Thermostats (Trane/American Standard) into Home Assistant. +ha_category: + - Binary Sensor + - Sensor + - Climate + - Scene +ha_release: 0.108 +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@bdraco' + - '@ryannazaretian' +ha_domain: nexia +--- + +The `nexia` integration allows you to integrate your [Nexia](https://mynexia.com/) thermostats into Home Assistant. + +There is currently support for the following device types within Home Assistant: + +- [Binary Sensor](#binary-sensor) +- [Climate](#climate) +- [Sensor](#sensor) +- [Scene](#scene) + +## Configuration + +You will need your mynexia.com username and password to use this module. + +To add `Nexia` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Nexia**. + +Alternatively, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +nexia: + username: YOUR_NEXIA_USERNAME + password: YOUR_NEXIA_PASSWORD +``` + +{% configuration %} +username: + description: The username for accessing your Nexia account. + required: true + type: string +password: + description: The password for accessing your Nexia account. + required: true + type: string +{% endconfiguration %} + +### Binary Sensor + +The following binary sensors are added for each thermostat: + +- Blower Active + +### Sensor + +The following binary sensors are added for each thermostat: + +- Air Cleaner Mode +- Current Compressor Speed +- Requested Compressor Speed +- Outdoor Temperature +- Relative Humidity +- System Status + +The following binary sensors are added for each thermostat zone: + +- Zone Temperature +- Zone Setpoint Status +- Zone Status + +### Climate + +The `nexia` climate platform lets you control a thermostat. + +### Scene + +The `nexia` scene platform lets you activate a nexia automation. + +### Service `nexia.set_aircleaner_mode` + +Sets the air cleaner mode. Options include 'auto', 'quick', and +'allergy'. This setting will affect all zones on the same thermostat. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`'s of climate devices to control. +| `aircleaner_mode` | no | 'auto', 'quick', or 'allergy' + +### Service `nexia.set_humidify_setpoint` + +Sets the humidify setpoint. This setting will affect all zones on the same thermostat. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`'s of climate devices to control. +| `humidity` | no | Humidify setpoint level, from 35 to 65. diff --git a/source/_integrations/nextbus.markdown b/source/_integrations/nextbus.markdown index 346ced63780b..103886653f78 100644 --- a/source/_integrations/nextbus.markdown +++ b/source/_integrations/nextbus.markdown @@ -1,12 +1,14 @@ --- -title: "Public Transit (Nextbus)" -description: "Instructions on how to use public transit data from Nextbus in Home Assistant." -logo: train.png +title: NextBus +description: Instructions on how to use public transit data from Nextbus in Home Assistant. ha_category: - Transport - Sensor ha_iot_class: Local Polling ha_release: 0.93 +ha_codeowners: + - '@vividboarder' +ha_domain: nextbus --- The `nextbus` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from [NextBus](https://www.nextbus.com), which provides real time transit data for a number of transit authorities. diff --git a/source/_integrations/nextcloud.markdown b/source/_integrations/nextcloud.markdown new file mode 100644 index 000000000000..e873376875a8 --- /dev/null +++ b/source/_integrations/nextcloud.markdown @@ -0,0 +1,45 @@ +--- +title: Nextcloud Sensor +description: Instructions on how to integrate Nextcloud monitor api data into Home Assistant. +logo: nextcloud.png +ha_category: + - Sensor +ha_iot_class: Cloud Polling +ha_release: 0.108 +--- + +The `nextcloud` integration pulls summary [Nextcloud](https://nextcloud.com/) information into Home Assistant. + +![Nextcloud Example Sensor]('/images/screenshots/nextcloud-sample-sensor.png') + +## Configuration + +This integration requires access to the monitor API of a Nextcloud instance (This is generally an admin user). + +You should also generate an App password from the Nextcloud web UI: **Settings** > **Security** > **Devices & sessions** > **Create new app password**. + +Once you have generated the App password, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +nextcloud: + url: Https://YOUR_NEXTCLOUD_URL + username: YOUR_USERNAME + password: YOUR_APP_PASSWORD + +``` + +{% configuration %} +url: + description: The full URL to your Nextcloud instance. + required: true + type: string +username: + description: The username of a Nextcloud user that has access to the Nextcloud monitor API. + required: true + type: string +password: + description: The app password generated from the Nextcloud security settings page. + required: true + type: string +{% endconfiguration %} diff --git a/source/_integrations/nfandroidtv.markdown b/source/_integrations/nfandroidtv.markdown index fb9f86afae63..e36db452f75d 100644 --- a/source/_integrations/nfandroidtv.markdown +++ b/source/_integrations/nfandroidtv.markdown @@ -1,10 +1,10 @@ --- -title: "Notifications for Android TV / FireTV" -description: "Notifications for Android TV / FireTV" -logo: nfandroidtv.png +title: Notifications for Android TV / FireTV +description: Notifications for Android TV / FireTV ha_category: - Notifications ha_release: 0.32 +ha_domain: nfandroidtv --- Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). You can use this plarform to send notifications to your Android TV device. An overlay with the message content will appear for a configurable amount of seconds and then disapper again. Sending images (e.g., security cam) is supported too. @@ -97,8 +97,8 @@ The following attributes can be placed inside `data` to send images. | `file` | yes | Groups the attributes for file upload. If present, either `url` or `path` have to be provided. | `path` | yes | Local path of an image file. Is placed inside `file`. | `url` | yes | URL of an image file. Is placed inside `file`. -| `username` | yes | Username if the url requires authentication. Is placed inside `file`. -| `password` | yes | Password if the url requires authentication. Is placed inside `file`. +| `username` | yes | Username if the URL requires authentication. Is placed inside `file`. +| `password` | yes | Password if the URL requires authentication. Is placed inside `file`. | `auth` | yes | If set to `digest` HTTP-Digest-Authentication is used. If missing, HTTP-BASIC-Authentication is used. Is placed inside `file`. Example for posting file from URL: diff --git a/source/_integrations/niko_home_control.markdown b/source/_integrations/niko_home_control.markdown index ae7da8e38561..f2a1ef75d673 100644 --- a/source/_integrations/niko_home_control.markdown +++ b/source/_integrations/niko_home_control.markdown @@ -1,11 +1,12 @@ --- -title: "Niko Home Control Light" -description: "Instructions on how to integrate Niko Home Control lights into Home Assistant." +title: Niko Home Control +description: Instructions on how to integrate Niko Home Control lights into Home Assistant. logo: niko.png ha_category: - Light ha_iot_class: Local Polling ha_release: 0.82 +ha_domain: niko_home_control --- The `niko_home_control` platform allows you to integrate your [Niko Home Control](https://www.niko.eu/enus/products/niko-home-control) into Home Assistant. diff --git a/source/_integrations/nilu.markdown b/source/_integrations/nilu.markdown index 0cac8b53b6b6..9dfce24be8c5 100644 --- a/source/_integrations/nilu.markdown +++ b/source/_integrations/nilu.markdown @@ -1,11 +1,14 @@ --- -title: "Norwegian Institute for Air Research" -description: "Instructions on how to integrate air pollution data from NILU within Home Assistant." +title: Norwegian Institute for Air Research (NILU) +description: Instructions on how to integrate air pollution data from NILU within Home Assistant. logo: nilu_logo.png ha_category: - Health ha_iot_class: Cloud Polling ha_release: 0.87 +ha_codeowners: + - '@hfurubotten' +ha_domain: nilu --- The `nilu` air quality platform shows measurements of current air quality from NILU (Norsk Institutt for luftforskning/Norwegian Institute for Air Research) sensor stations within Norway. Makes data from the open API at [luftkvalitet.info](http://luftkvalitet.info/) and [nilu.no](https://nilu.no/) available in Home Assistant. diff --git a/source/_integrations/nissan_leaf.markdown b/source/_integrations/nissan_leaf.markdown index 0420bee71d5c..140b619f242c 100644 --- a/source/_integrations/nissan_leaf.markdown +++ b/source/_integrations/nissan_leaf.markdown @@ -1,11 +1,13 @@ --- -title: "Nissan Leaf" -description: "Instructions for how to integrate Nissan Leaf(s) into Home Assistant." -logo: nissan.png +title: Nissan Leaf +description: Instructions for how to integrate Nissan Leaf(s) into Home Assistant. ha_category: - Car ha_release: 0.89 ha_iot_class: Cloud Polling +ha_codeowners: + - '@filcole' +ha_domain: nissan_leaf --- The `nissan_leaf` integration offers integration with the [NissanConnect EV](https://youplus.nissan.co.uk/GB/en/YouPlus/ConnectedServices.html) cloud service. NissanConnect EV was previously known as Nissan Carwings. It offers: @@ -39,7 +41,7 @@ region: required: true type: string update_interval: - description: The interval between updates if the climate control is off and the car is not charging. Set in any time unit (e.g. minutes, hours, days!). + description: The interval between updates if the climate control is off and the car is not charging. Set in any time unit (e.g., minutes, hours, days!). required: false default: 1 hour type: time diff --git a/source/_integrations/nmap_tracker.markdown b/source/_integrations/nmap_tracker.markdown index e64fa16bea9d..12b252d2cf78 100644 --- a/source/_integrations/nmap_tracker.markdown +++ b/source/_integrations/nmap_tracker.markdown @@ -1,24 +1,23 @@ --- -title: "Nmap" -description: "Instructions on how to integrate Nmap into Home Assistant." -logo: nmap.png +title: Nmap Tracker +description: Instructions on how to integrate Nmap into Home Assistant. ha_category: - Presence Detection ha_release: 0.7 +ha_domain: nmap_tracker --- - As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (`192.168.1.1/24`) and the range notation (`192.168.1.1-255`).
    Please keep in mind that modern smart phones will usually turn off WiFi when they are idle. Simple trackers like this may not be reliable on their own.
    -You might have to install the packages for `arp` and `nmap`. On Debian based hosts (for example Raspbian) do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`. -
    -If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. +If you are running Home Assistant Core in a Python virtual environment, you might have to install the packages for `arp` and `nmap`. +On Debian based hosts (for example Raspbian) do so by running `sudo apt-get install net-tools nmap`. +On a Fedora host run `sudo dnf -y install nmap`.
    @@ -79,6 +78,7 @@ device_tracker: - 10.0.0.2 - 10.0.0.15 ``` + In the above example, Nmap will be call with the process: `nmap -oX - 192.168.1.1/24 10.0.0.2 10.0.0.15 -F --host-timeout 5s` @@ -89,14 +89,15 @@ An example of how the Nmap scanner can be customized: On Linux systems (such as Hass.io) you can extend the functionality of Nmap, without having to run it as root, by using *Linux capabilities*. Be sure to specify the full path to wherever you installed Nmap: ```bash -$ sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap +sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap ``` And you can set up the device tracker as + ```yaml - platform: nmap_tracker hosts: 192.168.1.1-25 - scan_options: " --privileged -sP " + scan_options: " --privileged -sn " ``` See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_integrations/nmbs.markdown b/source/_integrations/nmbs.markdown index 3063e02623ca..b353dabe94c1 100644 --- a/source/_integrations/nmbs.markdown +++ b/source/_integrations/nmbs.markdown @@ -1,11 +1,13 @@ --- -title: "NMBS Sensor" -description: "Instructions on how to integrate timetable data for traveling on the NMBS Belgian Railway within Home Assistant." -logo: sncb_nmbs.gif +title: NMBS +description: Instructions on how to integrate timetable data for traveling on the NMBS Belgian Railway within Home Assistant. ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.85 +ha_codeowners: + - '@thibmaek' +ha_domain: nmbs --- The `nmbs` platform will create sensors for monitoring travel time and information between 2 stations. @@ -58,5 +60,5 @@ show_on_map:

    -

    Example using the Lovelace Attributes card

    +

    Example using the Lovelace Attributes custom card

    diff --git a/source/_integrations/no_ip.markdown b/source/_integrations/no_ip.markdown index 61a4f50d6e3f..a01faf6267ad 100644 --- a/source/_integrations/no_ip.markdown +++ b/source/_integrations/no_ip.markdown @@ -1,10 +1,13 @@ --- -title: "NO-IP.com" -description: "Keep your computer registered with the NO-IP.com dynamic DNS." +title: No-IP.com +description: Keep your computer registered with the NO-IP.com dynamic DNS. logo: noip.png ha_category: - Network ha_release: 0.57 +ha_codeowners: + - '@fabaff' +ha_domain: no_ip --- With the `no_ip` integration you can keep your current IP address in sync with your [NO-IP.com](https://www.noip.com) hostname or domain. diff --git a/source/_integrations/noaa_tides.markdown b/source/_integrations/noaa_tides.markdown index c9b84792a0c9..8c3b18a42e24 100644 --- a/source/_integrations/noaa_tides.markdown +++ b/source/_integrations/noaa_tides.markdown @@ -1,10 +1,10 @@ --- -title: "NOAA Tides" -description: "Instructions to add NOAA Tide information to Home Assistant." +title: NOAA Tides +description: Instructions to add NOAA Tide information to Home Assistant. ha_category: - Environment ha_release: 0.75 -logo: noaa.png +ha_domain: noaa_tides --- The `noaa_tides` sensor platform uses details from [NOAA Tides and Currents](https://tidesandcurrents.noaa.gov/api/) to provide information about the prediction for the tides for any location in the United States. diff --git a/source/_integrations/norway_air.markdown b/source/_integrations/norway_air.markdown index babf6ddca858..5f7b2a1bf21c 100644 --- a/source/_integrations/norway_air.markdown +++ b/source/_integrations/norway_air.markdown @@ -1,11 +1,11 @@ --- -title: "Norway Air Quality" -description: "Display the current status of Norway air quality." -logo: metno.png +title: Om Luftkvalitet i Norge (Norway Air) +description: Display the current status of Norway air quality. ha_category: - Health ha_iot_class: Cloud Polling ha_release: 0.88 +ha_domain: norway_air --- The `norway_air` integration [queries](https://luftkvalitet.miljostatus.no/) the Norway air quality [data feed](https://api.met.no/weatherapi/airqualityforecast/0.1/documentation) provided by the Norwegian Meteorological Institute. diff --git a/source/_integrations/notify.command_line.markdown b/source/_integrations/notify.command_line.markdown index 44c6db4e684c..bfdea7bc7060 100644 --- a/source/_integrations/notify.command_line.markdown +++ b/source/_integrations/notify.command_line.markdown @@ -1,10 +1,10 @@ --- title: "Command line Notify" description: "Instructions on how to add command line notifications to Home Assistant." -logo: command_line.png ha_category: - Notifications ha_release: 0.14 +ha_domain: command_line --- The `command_line` platform allows you to use external tools for notifications from Home Assistant. The message will be passed in as STDIN. diff --git a/source/_integrations/notify.group.markdown b/source/_integrations/notify.group.markdown index 2efe73479885..e14e8d0f829a 100644 --- a/source/_integrations/notify.group.markdown +++ b/source/_integrations/notify.group.markdown @@ -1,11 +1,11 @@ --- title: "Notify Group" description: "Instructions on how to setup the notify group platform." -logo: home-assistant.png ha_category: - Notifications ha_release: 0.26 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: group --- The `group` notification platform allows you to combine multiple `notify` platforms into a single service. @@ -35,7 +35,7 @@ services: type: list keys: service: - description: The service part of an entity ID, e.g. if you use `notify.html5` normally, just put `html5`. Note that you must put everything in lower case here. Although you might have capitals written in the actual notification services! + description: The service part of an entity ID, e.g., if you use `notify.html5` normally, just put `html5`. Note that you must put everything in lower case here. Although you might have capitals written in the actual notification services! required: true type: string data: diff --git a/source/_integrations/notify.knx.markdown b/source/_integrations/notify.knx.markdown index 1d536fd88d00..770735557d1c 100644 --- a/source/_integrations/notify.knx.markdown +++ b/source/_integrations/notify.knx.markdown @@ -1,11 +1,11 @@ --- title: "KNX Notify" description: "Instructions on how to use the KNX notify with Home Assistant." -logo: knx.png ha_category: - Notifications ha_release: 0.53 ha_iot_class: Local Push +ha_domain: knx ---
    diff --git a/source/_integrations/notify.markdown b/source/_integrations/notify.markdown index 39743e3bfb2a..8173f18abad5 100644 --- a/source/_integrations/notify.markdown +++ b/source/_integrations/notify.markdown @@ -1,14 +1,16 @@ --- -title: "Notifications" -description: "Instructions on how to add user notifications to Home Assistant." -logo: home-assistant.png +title: Notifications +description: Instructions on how to add user notifications to Home Assistant. ha_category: - Notifications -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: notify --- -The `notify` integration makes it possible to send notifications to a wide variety of platforms. Please check the sidebar for a full list of platforms that are supported. +The `notify` integration makes it possible to send notifications to a wide variety of platforms. To use it you have to setup at least one notification target (notifier), check the [integrations list](/integrations/#notifications) for one that fits your use case. If you want to send notifications to the Home Assistant web interface, you may use the [Persistent Notification integration](/integrations/persistent_notification/). @@ -37,7 +39,7 @@ action: ### Test if it works -A simple way to test if you have set up your notify platform correctly, is to open **Developer Tools** from the sidebar and then select the **Services** tab. Choose your service from the **Service** dropdown menu, enter the sample below into the **Service Data** field, and press the **CALL SERVICE** button. +After you setup a [notifier](/integrations/#notifications) a simple way to test if you have set up your notify platform correctly, is to open **Developer Tools** from the sidebar and then select the **Services** tab. Choose your service from the **Service** dropdown menu, enter the sample below into the **Service Data** field, and press the **CALL SERVICE** button. ```json { diff --git a/source/_integrations/notify.mysensors.markdown b/source/_integrations/notify.mysensors.markdown index 7dc8aeac6190..927dc3b3e7a5 100644 --- a/source/_integrations/notify.mysensors.markdown +++ b/source/_integrations/notify.mysensors.markdown @@ -1,19 +1,19 @@ --- title: "MySensors Notify" description: "Instructions on how to integrate MySensors notifications into Home Assistant." -logo: mysensors.png ha_category: - DIY - Notifications ha_release: 0.36 ha_iot_class: Local Push +ha_domain: mysensors --- -Integrates MySensors notifications into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors notifications into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. Setting the `target` key in the service call will target the name of the MySensors device in Home Assistant. MySensors device names follow the notation: "[Sketch name] [Node id] [Child id]". -### Automation example +## Automation example ```yaml ... @@ -28,11 +28,11 @@ The following sensor types are supported: ##### MySensors version 2.0 and higher -S_TYPE | V_TYPE -----------------|-------------------------- -S_INFO | V_TEXT +| S_TYPE | V_TYPE | +| ------ | ------ | +| S_INFO | V_TEXT | -For more information, visit the [api] page of MySensors. +For more information, visit the [API](https://www.mysensors.org/download/) page of MySensors. ### Example sketch @@ -91,6 +91,3 @@ For more information, visit the [api] page of MySensors. } } ``` - -[main component]: /integrations/mysensors/ -[api]: https://www.mysensors.org/download/ diff --git a/source/_integrations/notify.rest.markdown b/source/_integrations/notify.rest.markdown index 2c36aaec5291..3a937a3d8a51 100644 --- a/source/_integrations/notify.rest.markdown +++ b/source/_integrations/notify.rest.markdown @@ -1,10 +1,10 @@ --- title: "REST" description: "Instructions on how to add RESTful notifications to Home Assistant." -logo: restful.png ha_category: - Notifications ha_release: 0.13 +ha_domain: rest --- The `rest` notification platform allows you to deliver [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) notifications from Home Assistant to another party. diff --git a/source/_integrations/notion.markdown b/source/_integrations/notion.markdown index 20c601549d2d..9a3ca95e2651 100644 --- a/source/_integrations/notion.markdown +++ b/source/_integrations/notion.markdown @@ -1,6 +1,6 @@ --- -title: "Notion" -description: "How to integrate Notion kits within Home Assistant." +title: Notion +description: How to integrate Notion kits within Home Assistant. logo: notion.png ha_category: - Hub @@ -8,6 +8,10 @@ ha_category: - Sensor ha_release: 0.96 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@bachya' +ha_domain: notion --- The `Notion` component retrieves data from [Notion](https://getnotion.com) wireless diff --git a/source/_integrations/nsw_fuel_station.markdown b/source/_integrations/nsw_fuel_station.markdown index 86566884e608..6c75b42c3060 100644 --- a/source/_integrations/nsw_fuel_station.markdown +++ b/source/_integrations/nsw_fuel_station.markdown @@ -1,11 +1,13 @@ --- -title: "NSW Fuel Station Price Sensor" -description: "Instructions on how to integrate NSW fuel station prices into Home Assistant." -logo: fuelcheck.png +title: NSW Fuel Station Price +description: Instructions on how to integrate NSW fuel station prices into Home Assistant. ha_category: - Car ha_release: 0.72 ha_iot_class: Cloud Polling +ha_codeowners: + - '@nickw444' +ha_domain: nsw_fuel_station --- The `nsw_fuel_station` sensor platform uses the [NSW Fuel Check App](https://www.fuelcheck.nsw.gov.au/app) data as a source for current fuel price data. diff --git a/source/_integrations/nsw_rural_fire_service_feed.markdown b/source/_integrations/nsw_rural_fire_service_feed.markdown index bed72250c052..594c787cdba4 100644 --- a/source/_integrations/nsw_rural_fire_service_feed.markdown +++ b/source/_integrations/nsw_rural_fire_service_feed.markdown @@ -1,11 +1,13 @@ --- -title: "NSW Rural Fire Service Incidents" -description: "Instructions on how to integrate the NSW Rural Fire Service Incidents feed into Home Assistant." -logo: nsw-rural-fire-service.png +title: NSW Rural Fire Service Incidents +description: Instructions on how to integrate the NSW Rural Fire Service Incidents feed into Home Assistant. ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.81 +ha_codeowners: + - '@exxamalte' +ha_domain: nsw_rural_fire_service_feed --- The `nsw_rural_fire_service_feed` platform lets you integrate a GeoJSON feed provided by the [NSW Rural Fire Service](https://www.rfs.nsw.gov.au/fire-information/fires-near-me) with information about bush fires, grass fires, hazard reductions and more. It retrieves incidents from a feed and shows information of those incidents filtered by distance to Home Assistant's location. diff --git a/source/_integrations/nuheat.markdown b/source/_integrations/nuheat.markdown index 7f5de3858fbd..f737b6a42d72 100644 --- a/source/_integrations/nuheat.markdown +++ b/source/_integrations/nuheat.markdown @@ -1,11 +1,14 @@ --- -title: "NuHeat" -description: "Instructions on how to integrate your NuHeat Signature thermostats within Home Assistant." -logo: nuheat.png +title: NuHeat +description: Instructions on how to integrate your NuHeat Signature thermostats within Home Assistant. ha_category: - Climate ha_release: 0.61 ha_iot_class: Cloud Polling +ha_domain: nuheat +ha_config_flow: true +ha_codeowners: + - '@bdraco' --- The `nuheat` integration lets control your connected [NuHeat Signature](https://www.nuheat.com/products/thermostats/signature-thermostat) floor heating thermostats from [NuHeat](https://www.nuheat.com/). @@ -16,7 +19,9 @@ There is currently support for the following device types within Home Assistant: First, you will need to obtain your thermostat's numeric serial number or ID by logging into [MyNuHeat.com](https://mynuheat.com/) and selecting your thermostat(s). -Once you have the Thermostat ID(s), add the following information to your `configuration.yaml` file: +Once you have the Thermostat ID(s), to add `NuHeat` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **NuHeat**. + +Alternatively, add the following information to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -134,35 +139,18 @@ Returns the maximum supported temperature by the thermostat ## Services -The following services are provided by the NuHeat Thermostat: `set_temperature`, `set_hvac_mode`, `set_preset_mode`, `resume_program`. - -The services `fan_min_on_time`, `set_aux_heat`, `set_away_mode`, `set_humidity`, `set_fan_mode`, and `set_swing_mode` offered by the [Climate component](/integrations/climate/) are not implemented for this thermostat. - -### Service `set_temperature` - -Puts the thermostat into an indefinite hold at the given temperature. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `temperature` | no | Desired target temperature (when not in auto mode) +The following services are provided by the NuHeat Thermostat: `set_temperature`, `set_hvac_mode`, `set_preset_mode`. -Only the target temperatures relevant for the current operation mode need to -be provided. +### Service `climate.set_hvac_mode` ([Climate integration](/integrations/climate/)) -### Service `set_preset_mode` +NuHeat Thermostats do not have an off concept. Setting the temperature to `min_temp` and changing the mode to `heat` will cause the device to enter a `Permanent Hold` preset and will stop the thermostat from turning on unless you happen to live in a freezing climate. -Sets the thermostat's preset mode. Without a preset mode set it run the thermostat's programmed schedule, "temperature" (to indefinitely hold the thermostat's current target temperature), or "temporary_temperature" (to hold the thermostat's current target temperature until the thermostat's next scheduled event). +### Service `climate.set_temperature` ([Climate integration](/integrations/climate/)) -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `hold_mode` | no | New value of hold mode. +If the thermostat is in auto mode, it puts the thermostat into a temporary hold at the given temperature. -### Service `resume_program` +If the thermostat is in heat mode, it puts the thermostat into a permanent hold at the given temperature. -Resumes the currently active schedule. +### Service `climate.set_preset_mode` ([Climate integration](/integrations/climate/)) -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. +The following presets are available: `Run Schedule`, `Temporary Hold`, `Permanent Hold`. \ No newline at end of file diff --git a/source/_integrations/nuimo_controller.markdown b/source/_integrations/nuimo_controller.markdown index 0f808c1fab50..0d628bd7256c 100644 --- a/source/_integrations/nuimo_controller.markdown +++ b/source/_integrations/nuimo_controller.markdown @@ -1,11 +1,12 @@ --- -title: "Nuimo controller" -description: "Instructions on how to setup and use a Nuimo device in Home Assistant." +title: Nuimo controller +description: Instructions on how to setup and use a Nuimo device in Home Assistant. logo: nuimo.png ha_category: - Hub ha_release: 0.29 ha_iot_class: Local Polling +ha_domain: nuimo_controller --- The `nuimo_controller` integration allows you to connect to a [Nuimo](https://www.senic.com/) device for receiving input events and displaying on the LED matrix via the [Nuimo SDK for Python on Linux](https://github.com/getSenic/nuimo-linux-python). diff --git a/source/_integrations/nuki.markdown b/source/_integrations/nuki.markdown index 1f6d8e83e88e..7eae26f03552 100644 --- a/source/_integrations/nuki.markdown +++ b/source/_integrations/nuki.markdown @@ -1,16 +1,19 @@ --- -title: "Nuki Smart Lock" -description: "Instructions on how to integrate a Nuki Smart Lock devices." +title: Nuki +description: Instructions on how to integrate a Nuki Smart Lock devices. logo: nuki.png ha_category: - Lock ha_release: 0.38 ha_iot_class: Local Polling +ha_codeowners: + - '@pvizeli' +ha_domain: nuki --- The `nuki` platform allows you to control [Nuki Smart Locks](https://nuki.io/en/smart-lock/) via either a [software bridge](https://play.google.com/store/apps/details?id=io.nuki.bridge) or a [physical bridge](https://nuki.io/en/bridge/). -To add a Nuki bridge to your installation, you need to enable developer mode on your bridge and define a port and an access token. This can be achieved using the [Android app](https://play.google.com/store/apps/details?id=io.nuki). Please note that the API token should be 6-20 characters long, even though the app allows you to set a longer one. +To add a Nuki bridge to your installation, you need to enable developer mode on your bridge and define a port and an access token. This can be achieved using the [Android app](https://play.google.com/store/apps/details?id=io.nuki) or [iPhone app](https://apps.apple.com/app/nuki-smart-lock/id1044998081). Please note that the API token should be 6-20 characters long, even though the app allows you to set a longer one. Then add the following to your `configuration.yaml` file: ```yaml @@ -48,11 +51,3 @@ See the [Nuki Website](https://nuki.io/en/support/smart-lock/sl-features/locking | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks. | `unlatch` | yes | Boolean - Whether to unlatch the door when first opening it. - -### Service `check_connection` - -This will force the communication between the bridge and the lock, updating the available attribute. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks. diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown index 7b7dad1e9f94..d467b8299ebe 100644 --- a/source/_integrations/nut.markdown +++ b/source/_integrations/nut.markdown @@ -1,11 +1,11 @@ --- -title: NUT Sensor -description: "Instructions on how to set up NUT sensors within Home Assistant." -logo: nut.png +title: Network UPS Tools (NUT) +description: Instructions on how to set up NUT sensors within Home Assistant. ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.34 +ha_domain: nut --- The `nut` sensor platform allows you to monitor a UPS (battery backup) by using data from a [NUT](https://networkupstools.org/) (Network UPS Tools) server. @@ -42,7 +42,7 @@ sensor: default: 3493 type: integer alias: - description: Name of the ups on the NUT server. + description: Name of the UPS on the NUT server. required: false default: Will default to the first UPS name listed. type: string @@ -85,7 +85,7 @@ ups.firmware: 868.L3 -P.D battery.mfr.ups.serial: 3B1519X19994 ups.productid: 0002 battery.runtime: 2552 -battery.battery.voltage.nominal: 24.0 +battery.voltage.nominal: 24.0 battery.type: PbAc ups.mfr.ups.status: OL ups.model: Back-UPS RS1000G diff --git a/source/_integrations/nws.markdown b/source/_integrations/nws.markdown index bf4c8dc200f7..faf3cba885ef 100644 --- a/source/_integrations/nws.markdown +++ b/source/_integrations/nws.markdown @@ -1,10 +1,12 @@ --- -title: "NWS" -description: "Instructions on how to integrate National Weather Service data within Home Assistant." -logo: nws.png +title: National Weather Service (NWS) +description: Instructions on how to integrate National Weather Service data within Home Assistant. ha_category: Weather ha_release: 0.99 ha_iot_class: Cloud Polling +ha_codeowners: + - '@MatthewFlamm' +ha_domain: nws --- The `nws` platform uses the [National Weather Service](https://www.weather.gov) web API as a source for meteorological data for your location. diff --git a/source/_integrations/nx584.markdown b/source/_integrations/nx584.markdown index d35c93faac01..83e28e2fdac1 100644 --- a/source/_integrations/nx584.markdown +++ b/source/_integrations/nx584.markdown @@ -1,12 +1,13 @@ --- -title: "NX584 Alarm Control Panel" -description: "Instructions on how to integrate NX584 into Home Assistant." +title: NX584 +description: Instructions on how to integrate NX584 into Home Assistant. logo: networx.png ha_category: - Alarm - Binary Sensor ha_release: 0.13 ha_iot_class: Local Push +ha_domain: nx584 --- The `nx584` platform provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through [pynx584](https://github.com/kk7ds/pynx584) which is required for this to work. @@ -107,4 +108,4 @@ binary_sensor: 2: opening 4: motion 6: moisture -``` \ No newline at end of file +``` diff --git a/source/_integrations/nzbget.markdown b/source/_integrations/nzbget.markdown index 65a743d2198a..04493d426633 100644 --- a/source/_integrations/nzbget.markdown +++ b/source/_integrations/nzbget.markdown @@ -1,11 +1,14 @@ --- -title: "NZBGet" -description: "Instructions on how to integrate NZBGet within Home Assistant." +title: NZBGet +description: Instructions on how to integrate NZBGet within Home Assistant. ha_category: - Downloading logo: nzbget.png ha_iot_class: Local Polling ha_release: 0.17 +ha_codeowners: + - '@chriscla' +ha_domain: nzbget --- The `nzbget` platform will allow you to monitor and control your downloads with [NZBGet](https://nzbget.net/) from within Home Assistant and setup automation based on the information. @@ -62,6 +65,7 @@ This component will create these sensors: - `nzbget_speed`: Current download rate in MB/s. - `nzbget_queue_size`: Remaining size to download in MB. - `nzbget_disk_free`: Free disk space at the storage location of NZBGet. +- `nzbget_post_processing_jobs`: Number of Par-Jobs or Post-processing script jobs in the post-processing queue. - `nzbget_post_processing_paused`: Whether post processing is paused. - `nzbget_uptime`: NZBGet server uptime. - `nzbget_size`: Amount of data downloaded since server start in MB. diff --git a/source/_integrations/oasa_telematics.markdown b/source/_integrations/oasa_telematics.markdown index c761c32c0056..22d16469f0c8 100644 --- a/source/_integrations/oasa_telematics.markdown +++ b/source/_integrations/oasa_telematics.markdown @@ -1,12 +1,12 @@ --- -title: "OASA Telematics" -description: "Instructions on how to integrate bus and trolley arrival data for Greek OASA Telematics within Home Assistant." -logo: oasa.png +title: OASA Telematics +description: Instructions on how to integrate bus and trolley arrival data for Greek OASA Telematics within Home Assistant. ha_category: - Transport - Sensor ha_iot_class: Cloud Polling ha_release: 0.92 +ha_domain: oasa_telematics --- The `oasa_telematics` sensor will provide you with bus and trolley arrival times for Greek public transport for Athens, using real-time data from [OASA Telematics](http://telematics.oasa.gr/en/). diff --git a/source/_integrations/obihai.markdown b/source/_integrations/obihai.markdown index a96b92f0b43a..7c85b4e8711b 100644 --- a/source/_integrations/obihai.markdown +++ b/source/_integrations/obihai.markdown @@ -1,11 +1,14 @@ --- -title: "Obihai" -description: "Instructions on how to integrate your Obihai device into Home Assistant." +title: Obihai +description: Instructions on how to integrate your Obihai device into Home Assistant. logo: obitalk.png ha_iot_class: Local Polling ha_category: - Sensor ha_release: 0.99 +ha_codeowners: + - '@dshokouhi' +ha_domain: obihai --- The `obihai` integration allows you to view the call status for your [Obihai devices](https://www.obitalk.com/info/products#home_section). diff --git a/source/_integrations/octoprint.markdown b/source/_integrations/octoprint.markdown index a3b3caf7c025..b259aa96cd97 100644 --- a/source/_integrations/octoprint.markdown +++ b/source/_integrations/octoprint.markdown @@ -1,13 +1,13 @@ --- -title: "OctoPrint" -description: "Instructions on how to setup the OctoPrint in Home Assistant." -logo: octoprint.png +title: OctoPrint +description: Instructions on how to setup the OctoPrint in Home Assistant. ha_category: - Hub - Binary Sensor - Sensor ha_release: 0.19 ha_iot_class: Local Polling +ha_domain: octoprint --- [OctoPrint](https://octoprint.org/) is a web interface for your 3D printer. This is the main integration to integrate OctoPrint sensors. diff --git a/source/_integrations/oem.markdown b/source/_integrations/oem.markdown index 8aca1602c561..4c20c40dc43b 100644 --- a/source/_integrations/oem.markdown +++ b/source/_integrations/oem.markdown @@ -1,11 +1,11 @@ --- -title: "OpenEnergyMonitor WiFi Thermostat" -description: "Instructions on how to integrate an OpenEnergyMonitor thermostat with Home Assistant." -logo: oem.png +title: OpenEnergyMonitor WiFi Thermostat +description: Instructions on how to integrate an OpenEnergyMonitor thermostat with Home Assistant. ha_category: - Climate ha_release: 0.39 ha_iot_class: Local Polling +ha_domain: oem --- This platform supports the ESP8266 based "WiFi MQTT Relay / Thermostat" sold by [OpenEnergyMonitor](https://shop.openenergymonitor.com/wifi-mqtt-relay-thermostat/). The underlying [library](https://oemthermostat.readthedocs.io/) only supports this single relay variant of the [original device](https://harizanov.com/2014/12/wifi-iot-3-channel-relay-board-with-mqtt-and-http-api-using-esp8266/). diff --git a/source/_integrations/ohmconnect.markdown b/source/_integrations/ohmconnect.markdown index e01018a682b9..5375baeed786 100644 --- a/source/_integrations/ohmconnect.markdown +++ b/source/_integrations/ohmconnect.markdown @@ -1,11 +1,14 @@ --- -title: "OhmConnect" -description: "Documentation about the OhmConnect sensor." -logo: "ohmconnect.png" +title: OhmConnect +description: Documentation about the OhmConnect sensor. +logo: ohmconnect.png ha_category: - Energy ha_iot_class: Cloud Polling ha_release: 0.26 +ha_codeowners: + - '@robbiet480' +ha_domain: ohmconnect --- The `ohmconnect` sensor will show you the current [OhmConnect](https://www.ohmconnect.com/) status for the given OhmConnect ID. diff --git a/source/_integrations/ombi.markdown b/source/_integrations/ombi.markdown index 8f3742b96a01..6bba7f8a41aa 100644 --- a/source/_integrations/ombi.markdown +++ b/source/_integrations/ombi.markdown @@ -1,19 +1,25 @@ --- -title: "Ombi" -description: "Instructions on how to set up the Ombi integration in Home Assistant." -logo: ombi.png +title: Ombi +description: Instructions on how to set up the Ombi integration in Home Assistant. ha_category: - Sensor -ha_release: "0.100" +ha_release: '0.100' ha_iot_class: Local Polling +ha_codeowners: + - '@larssont' +ha_domain: ombi --- The `Ombi` integration monitors data from your [Ombi](https://ombi.io) instance. ## Setup +This component needs to authenticate to your Ombi instance with either a user `password` or an `api_key`. + To find your `api_key` open the Ombi web interface. Navigate to **Settings** and then to **Ombi**, you should then be able to see your `api_key`. +If you want to use `password` authentication simply use the same `password` you normally use to login to Ombi. Alternatively, you can set up a separate local account in Ombi designated for Home Assistant. In order to do this, open the Ombi web interface. Navigate to **User Management** and then press **Add User To Ombi**. Input your desired user details and use the same details when configuring this integration. + ## Configuration If you want to enable this sensor, add the following lines to your `configuration.yaml`: @@ -21,16 +27,12 @@ If you want to enable this sensor, add the following lines to your `configuratio ```yaml # Example configuration.yaml entry ombi: - api_key: OMBI_API_KEY host: OMBI_HOST username: OMBI_USERNAME + password: OMBI_PASSWORD ``` {% configuration %} -api_key: - description: Your Ombi API key. - required: true - type: string host: description: The hostname or IP Address Ombi is running on. required: true @@ -39,6 +41,14 @@ username: description: Your Ombi username. required: true type: string +password: + description: Your Ombi password. [`password`](#password) and [`api_key`](#api_key) cannot be specified concurrently. + required: exclusive + type: string +api_key: + description: Your Ombi API key. [`password`](#password) and [`api_key`](#api_key) cannot be specified concurrently. + required: exclusive + type: string port: description: The port Ombi is running on. required: false @@ -60,9 +70,9 @@ ssl: ```yaml # Example configuration.yaml entry ombi: - api_key: OMBI_API_KEY host: OMBI_HOST username: OMBI_USERNAME + api_key: OMBI_API_KEY port: OMBI_PORT urlbase: ombi/ ssl: true diff --git a/source/_integrations/onboarding.markdown b/source/_integrations/onboarding.markdown index 6bbc0ba483a3..81e5bc85ef31 100644 --- a/source/_integrations/onboarding.markdown +++ b/source/_integrations/onboarding.markdown @@ -1,11 +1,13 @@ --- -title: "Onboarding" -description: "This integration is responsible for providing the onboarding endpoints." -logo: home-assistant.png +title: Home Assistant Onboarding +description: This integration is responsible for providing the onboarding endpoints. ha_category: - Other ha_release: 0.73 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: onboarding --- This integration creates the endpoints for the onboarding that is built into Home Assistant. There are no configuration options for this integration directly. diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown index c2d1d1e3e5fe..2e73d9fb71b0 100644 --- a/source/_integrations/onewire.markdown +++ b/source/_integrations/onewire.markdown @@ -1,57 +1,68 @@ --- -title: "One wire Sensor" -description: "Instructions on how to integrate One wire (1-wire) sensors into Home Assistant." -logo: onewire.png +title: 1-Wire +description: Instructions on how to integrate One wire (1-wire) sensors into Home Assistant. ha_category: - DIY ha_release: 0.12 ha_iot_class: Local Polling +ha_codeowners: + - '@garbled1' +ha_domain: onewire --- -The `onewire` platform supports sensors which are using the One wire (1-wire) bus for communication. +The `onewire` platform supports sensors which that using the One wire (1-wire) bus for communication. -Supported devices: +Every 1-wire device has a (globally) unique ID that identifies the device on the bus. The first two digits identify a device family and the last 14 digits are a globally unique number given to it during manufacturing. -- [DS18B20](https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf) -- [DS18S20](https://www.maximintegrated.com/en/products/sensors/DS18S20.html) -- [DS1822](https://datasheets.maximintegrated.com/en/ds/DS1822.pdf) -- [DS1825](https://datasheets.maximintegrated.com/en/ds/DS1825.pdf) -- [DS28EA00](https://datasheets.maximintegrated.com/en/ds/DS28EA00.pdf) temperature sensors -- [DS2406/TAI-8570](https://datasheets.maximintegrated.com/en/ds/DS2406.pdf) Temperature and pressure sensor made by AAG -- [DS2438/B1-R1-A](https://datasheets.maximintegrated.com/en/ds/DS2438.pdf) Temperature, pressure and humidity sensor by AAG +Different families have different functionality and can measure different quantities. -The 1-Wire bus can be connected directly to the IO pins of Raspberry Pi or using dedicated interface adapter (e.g [DS9490R](https://datasheets.maximintegrated.com/en/ds/DS9490-DS9490R.pdf)). +### Supported devices: -## Raspberry Pi setup +| Family | Device | Physical Quantity | +| -------|:-----|:-----| +| 10 | [DS18S20](https://www.maximintegrated.com/en/products/sensors/DS18S20.html) | Temperature | +| 12 | [DS2406(TAI-8570)](https://datasheets.maximintegrated.com/en/ds/DS2406.pdf) | Temperature (pressure when using TAI-8570) | +| 1D | [DS2423](https://datasheets.maximintegrated.com/en/ds/DS2423.pdf) | Counter | +| 22 | [DS1822](https://datasheets.maximintegrated.com/en/ds/DS1822.pdf) | | +| 26 | [DS2438/B1-R1-A/S2-R1-A](https://datasheets.maximintegrated.com/en/ds/DS2438.pdf)| Temperature, Voltage, Current, (pressure and humidity when using TAI-8570) | +| 28 | [DS18B20](https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf) | Temperature | +| 3B | [DS1825](https://datasheets.maximintegrated.com/en/ds/DS1825.pdf) | Temperature | +| 42 | [DS28EA00](https://datasheets.maximintegrated.com/en/ds/DS28EA00.pdf) | Temperature | +| EF | [HobbyBoard](https://hobbyboards.com/) | Temperature, Humidity, Moisture | -In order to setup 1-Wire support on Raspberry Pi, you'll need to edit `/boot/config.txt` following [this documentation](https://www.waveshare.com/wiki/Raspberry_Pi_Tutorial_Series:_1-Wire_DS18B20_Sensor#Enable_1-Wire). -To edit `/boot/config.txt` on Hass.io use [this documentation](https://developers.home-assistant.io/docs/en/hassio_debugging.html) to enable SSH and edit `/mnt/boot/config.txt` via `vi`. +Notes: -## Interface adapter setup +- The TAI-8570 Pressure Sensor is based on a 1-wire composite device by AAG Electronica. It contains, above 1-wire components, also a barometer, hygrometer and illuminance sensors. This onewire platform can read and present values from that device. -### owfs +- Each 1-wire component data sheet describes the different properties the component provides. The owfs software adds some extra tools to make it easier for DIY implementers to use the component. By hobbyists, it is quite common to use DS2438 Smart Battery Monitor as a multipurpose measurement node that can place temperature, humidity and luminosity on the 1-wire bus by just adding some standard components to the DS2438. For different component types, there are ready-made algorithms implemented in owfs. Those are exposed by the owfs software and can be read by this platform. The B1-R1-A/pressure is exposed as a barometric pressure sensor. S2-R1-A/illuminance is presented as an illuminance sensor. For a more detailed description of these properties, refer to the [owfs documentation](https://owfs.org/index_php_page_ds2438.html). + For this component, the more basic quantities temperature, VAD, VDD and IAD is exported as separate sensors. -When an interface adapter is used, sensors can be accessed on Linux hosts via [owfs 1-Wire file system](https://owfs.org/). When using an interface adapter and the owfs, the `mount_dir` option must be configured to correspond a directory, where owfs device tree has been mounted. +- Hobbyboards is a company that has been selling DIY boards of different kinds. The company has been away from the market for some time, so no reference to the boards can be made. This platform has an implementation for some of those. -### Units with multiple sensors +## Interfacing with the 1-wire bus -This platform works with devices with multiple sensors which will cause a discontinuity in recorded values. Existing devices will receive a new ID and therefore show up as new devices. -If you wish to maintain continuity it can be resolved in the database by renaming the old devices to the new names. +The 1-Wire bus can be connected directly to the IO pins of Raspberry Pi or by using a dedicated interface adapter, for example +[DS9490R](https://datasheets.maximintegrated.com/en/ds/DS9490-DS9490R.pdf) or adapters based on [DS2482-100](https://datasheets.maximintegrated.com/en/ds/DS2482-100.pdf) that can be directly attached to the IO pins on the Raspberry Pi. -Connect to your database using the instructions from [Database section](/docs/backend/database/). Check the names of sensors: +It is also possible for this platform to interface with a remote 1-wire host over a network connection using ofws and owserver. -```sql -SELECT entity_id, COUNT(*) as count FROM states GROUP BY entity_id ORDER BY count DESC LIMIT 10; -``` -Alter the names of sensors using the following examples: +## Raspberry Pi set up -```sql -UPDATE states SET entity_id='sensor._temperature' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%\u00b0C%'; -UPDATE states SET entity_id='sensor._pressure' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%mb%'; -UPDATE states SET entity_id='sensor._humidity' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%%%' ESCAPE ''; -``` +In order to setup 1-Wire support on Raspberry Pi, you'll need to edit `/boot/config.txt` following [this documentation](https://www.waveshare.com/wiki/Raspberry_Pi_Tutorial_Series:_1-Wire_DS18B20_Sensor#Enable_1-Wire). +To edit `/boot/config.txt` on the Home Assistant Operating System, use [this documentation](https://developers.home-assistant.io/docs/en/hassio_debugging.html) to enable SSH and edit `/mnt/boot/config.txt` via `vi`. + +When using the GPIO pins on Raspberry Pi directly as a 1-wire bus, the description above uses two kernel modules. `1w_gpio`, that implements the 1-wire protocol, and `1w_therm`, that understands the DS18B20 (family 28) components inner structure and reports temperature. +There is no support for other device types (families) and hence this onewire platform only supports temperature measurements from family 28 devices. + +## Interface adapter setup + +### owfs + +When an interface adapter is used, sensors can be accessed on Linux hosts via [owfs 1-Wire file system](https://owfs.org/). When using an interface adapter and the owfs, the `mount_dir` option must be configured to correspond to a directory, where owfs device tree has been mounted. On systems where Home Assistant runs in a Docker container. `owfs` cannot escape that environment and hence cannot populate the `mount_dir`. Use the owserver method on these systems instead. + +### owserver -Remember to replace `` with the actual name of the sensor as seen in the `SELECT` query. +When an interface adapter is used, you can also access sensors on a remote or local Linux host that is running owserver. owserver by default runs on port 4304. Use the `host` option to specify the host or IP of the remote server, and the optional `port` option to change the port from the default. ## Configuration @@ -72,6 +83,15 @@ mount_dir: description: Location of device tree if owfs driver used. required: false type: string +host: + description: Remote or localhost running owserver. + required: false + type: string +port: + description: "The port number of the owserver (requires `host`)." + required: false + type: integer + default: 4304 {% endconfiguration %} ### Configuration Example @@ -85,3 +105,41 @@ sensor: names: GENERATED_ID: FRIENDLY_NAME ``` + +### Entities and attributes + +Upon startup of the platform, the 1-wire bus is searched for available 1-wire devices. For each device that this platform handles (see list of supported devices above), the platform adds one sensor for each physical quantity it measures. The name of the sensor is the device ID with the physical quantity it measures appended. + +`sensor.28.FF5C68521604_temperature` + +Each sensor will present its value in the state variable and for presentation purposes, rounded to one decimal for analog values and as integers for counts. + +Each sensor also exposes some additional attributes. + +```alpha +device_file: /28.FF5C68521604/temperature << Device path in owfs file system (or on Rpi system directory) +raw_value: 31.9375 << The raw measurement numbers as red from device. Not rounded. +unit_of_measurement: °C +friendly_name: 28.FF5C68521604 Temperature +``` + +### Units with multiple sensors + +This platform works with devices with multiple sensors, which will cause a discontinuity in recorded values. Existing devices will receive a new ID and therefore show up as new devices. +If you wish to maintain continuity, it can be resolved in the database by renaming the old devices to the new names. + +Connect to your database using the instructions from [Database section](/docs/backend/database/). Check the names of sensors: + +```sql +SELECT entity_id, COUNT(*) as count FROM states GROUP BY entity_id ORDER BY count DESC LIMIT 10; +``` + +Alter the names of sensors using the following examples: + +```sql +UPDATE states SET entity_id='sensor._temperature' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%\u00b0C%'; +UPDATE states SET entity_id='sensor._pressure' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%mb%'; +UPDATE states SET entity_id='sensor._humidity' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%%%' ESCAPE ''; +``` + +Remember to replace `` with the actual name of the sensor, as seen in the `SELECT` query. diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown index 18ff6e598cfd..f53461ff286e 100644 --- a/source/_integrations/onkyo.markdown +++ b/source/_integrations/onkyo.markdown @@ -1,11 +1,12 @@ --- -title: "Onkyo" -description: "Instructions on how to integrate Onkyo and some Pioneer receivers into Home Assistant." +title: Onkyo +description: Instructions on how to integrate Onkyo and some Pioneer receivers into Home Assistant. logo: onkyo.png ha_category: - Media Player ha_release: 0.17 ha_iot_class: Local Polling +ha_domain: onkyo --- The `onkyo` platform allows you to control a [Onkyo](http://www.onkyo.com/), [Integra](http://www.integrahometheater.com/) @@ -38,7 +39,7 @@ name: required: false type: string max_volume: - description: Maximum volume as a percentage. Often the maximum volume of the receiver is far too loud. Setting this wil set Home Assistant's 100% volume to be this setting on the amp. i.e. if you set this to 50% when you set Home Assistant to be 100% then your receiver will be set to 50% of it's maximum volume. + description: Maximum volume as a percentage. Often the maximum volume of the receiver is far too loud. Setting this wil set Home Assistant's 100% volume to be this setting on the amp. i.e., if you set this to 50% when you set Home Assistant to be 100% then your receiver will be set to 50% of it's maximum volume. required: false default: 100 type: integer @@ -55,34 +56,40 @@ sources: List of source names: -- video1 -- video2 -- video3 -- video4 -- video5 -- video6 -- video7 -- dvd -- bd-dvd -- tape1 -- tv-tape -- tape2 -- phono -- cd -- tv-cd -- fm -- am -- tuner -- dlna -- internet-radio -- usb -- network -- universal-port -- multi-ch -- xm -- sirius - -To find your receivers max volume use the onkyo-eiscp python module set the receiver to its maximum volume +- `video1` +- `video2` +- `video3` +- `video4` +- `video5` +- `video6` +- `video7` +- `dvd` +- `bd-dvd` +- `tape1` +- `tv-tape` +- `tape2` +- `phono` +- `cd` +- `tv-cd` +- `fm` +- `am` +- `tuner` +- `dlna` +- `internet-radio` +- `usb` +- `network` +- `universal-port` +- `multi-ch` +- `xm` +- `sirius` + +If your source is not listed above, and you want to figure out how to format that source name so you can map its entry, you can use the `onkyo-eiscp` Python module to discover the exact naming needed. First, change your receiver's source to the one that you need to define, and then run: + +```bash +onkyo --host 192.168.0.100 source=query +``` + +To find your receivers max volume use the onkyo-eiscp Python module set the receiver to its maximum volume (don't do this whilst playing something!) and run: ```bash diff --git a/source/_integrations/onvif.markdown b/source/_integrations/onvif.markdown index a4296f29070c..cfafe9eeafd2 100644 --- a/source/_integrations/onvif.markdown +++ b/source/_integrations/onvif.markdown @@ -1,10 +1,11 @@ --- -title: "ONVIF Camera" -description: "Instructions on how to integrate a ONVIF camera within Home Assistant." +title: ONVIF +description: Instructions on how to integrate a ONVIF camera within Home Assistant. logo: onvif.png ha_category: - Camera ha_release: 0.47 +ha_domain: onvif --- The `onvif` camera platform allows you to use an [ONVIF](https://www.onvif.org/) camera in Home Assistant. This requires the [`ffmpeg` component](/integrations/ffmpeg/) to be already configured. @@ -50,6 +51,11 @@ profile: required: false type: integer default: 0 +rtsp_transport: + description: "RTSP transport protocols. The possible options are: `tcp`, `udp`, `udp_multicast`, `http`." + required: false + type: string + default: tcp extra_arguments: description: "Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [`ffmpeg` component](/integrations/ffmpeg)." required: false @@ -57,17 +63,21 @@ extra_arguments: default: -q:v 2 {% endconfiguration %} -Most of the ONVIF cameras support more than one audio/video profile. Each profile provides different image quality. Usually, the first profile has the highest quality and it is the profile used by default. However, you may want to use a lower quality image. One of the reasons may be that your hardware isn't able to render the highest quality image in real-time, especially when running on Raspberry Pi. Therefore you can choose which profile do you want to use by setting in config `profile` variable. +Most of the ONVIF cameras support more than one audio/video profile. Each profile provides different image quality. Usually, the first profile has the highest quality and it is the profile used by default. However, you may want to use a lower quality image. One of the reasons may be that your hardware isn't able to render the highest quality image in real-time, especially when running on Raspberry Pi. Therefore you can choose which profile do you want to use by setting in configuration `profile` variable. -### Service `camera.onvif_ptz` +### Service `onvif.ptz` If your ONVIF camera supports PTZ, you will be able to pan, tilt or zoom your camera. | Service data attribute | Description | | -----------------------| ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of cameras. Else targets all. +| `entity_id` | String or list of strings that point at `entity_id`s of cameras. Use `entity_id: all` to target all. | `tilt` | Tilt direction. Allowed values: `UP`, `DOWN`, `NONE` | `pan` | Pan direction. Allowed values: `RIGHT`, `LEFT`, `NONE` | `zoom` | Zoom. Allowed values: `ZOOM_IN`, `ZOOM_OUT`, `NONE` +| `distance` | Distance coefficient. Sets how much PTZ should be executed in one request. Allowed values: floating point numbers, 0 to 1. Default : 0.1 +| `speed` | Speed coefficient. Sets how fast PTZ will be executed. Allowed values: floating point numbers, 0 to 1. Default : 0.5 +| `move_mode` | PTZ moving mode. Allowed values: `ContinuousMove`, `RelativeMove`, `AbsoluteMove`. Default :`RelativeMove` +| `continuous_duration` | Set ContinuousMove delay in seconds before stoping the move. Allowed values: floating point numbers or integer. Default : 0.5 If you are running into trouble with this sensor, please refer to the [Troubleshooting section](/integrations/ffmpeg/#troubleshooting). diff --git a/source/_integrations/openalpr_cloud.markdown b/source/_integrations/openalpr_cloud.markdown index 9ff8b1d2c5d2..bc134b3ae3cd 100644 --- a/source/_integrations/openalpr_cloud.markdown +++ b/source/_integrations/openalpr_cloud.markdown @@ -1,14 +1,14 @@ --- -title: "OpenALPR Cloud" -description: "Instructions on how to integrate licences plates with OpenALPR cloud into Home Assistant." -logo: openalpr.png +title: OpenALPR Cloud +description: Instructions on how to integrate licences plates with OpenALPR cloud into Home Assistant. ha_category: - Image Processing ha_release: 0.36 +ha_domain: openalpr_cloud --- [OpenALPR](https://www.openalpr.com/) integration for Home Assistant allows you -to process licences plates from a camera. You can use them to open a garage door +to process license plates from a camera. You can use them to open a garage door or trigger any other [automation](/integrations/automation/). For using the result inside an automation rule, diff --git a/source/_integrations/openalpr_local.markdown b/source/_integrations/openalpr_local.markdown index ece346d59ffb..1c136d8e017b 100644 --- a/source/_integrations/openalpr_local.markdown +++ b/source/_integrations/openalpr_local.markdown @@ -1,14 +1,14 @@ --- -title: "OpenALPR Local" -description: "Instructions on how to integrate licences plates with OpenALPR local into Home Assistant." -logo: openalpr.png +title: OpenALPR Local +description: Instructions on how to integrate licences plates with OpenALPR local into Home Assistant. ha_category: - Image Processing ha_release: 0.36 +ha_domain: openalpr_local --- [OpenALPR](https://www.openalpr.com/) integration for Home Assistant allows you -to process licences plates from a camera. You can use them to open a garage door +to process license plates from a camera. You can use them to open a garage door or trigger any other [automation](/integrations/automation/). For using the result inside an automation rule, take a look at the diff --git a/source/_integrations/opencv.markdown b/source/_integrations/opencv.markdown index 8cff1ca6c887..468fc4528f33 100644 --- a/source/_integrations/opencv.markdown +++ b/source/_integrations/opencv.markdown @@ -1,10 +1,10 @@ --- -title: "OpenCV" -description: "Instructions on how to integrate OpenCV image processing into Home Assistant." -logo: opencv.png +title: OpenCV +description: Instructions on how to integrate OpenCV image processing into Home Assistant. ha_category: - Image Processing ha_release: 0.47 +ha_domain: opencv --- [OpenCV](https://www.opencv.org/) is an open source computer vision image and video processing library. @@ -30,7 +30,7 @@ image_processing: - **source** array (*Required*): List of image sources. - **entity_id** (*Required*): A camera entity id to get picture from. - **name** (*Optional*): This parameter allows you to override the name of your `image_processing` entity. -- **classifier** (*Optional*): Dictionary of name to path to the classifier xml file. If this field is not provided, a face classifier will be downloaded from OpenCV's Github repo. +- **classifier** (*Optional*): Dictionary of name to path to the classifier XML file. If this field is not provided, a face classifier will be downloaded from OpenCV's GitHub repository. **classifier** may also be defined as a dictionary of names to classifier configurations: @@ -42,6 +42,6 @@ image_processing: scale: 1.1f ``` -- **file** (*Required*): The path to the classifier xml file. +- **file** (*Required*): The path to the classifier XML file. - **scale** (*Optional*): The scale to perform when processing, this is a `float` value that must be greater than or equal to `1.0`, default is `1.1`. - **neighbors** (*Optional*): The minimum number of neighbors required for a match, default is `4`. The higher this number, the more picky the matching will be; lower the number, the more false positives you may experience. diff --git a/source/_integrations/openevse.markdown b/source/_integrations/openevse.markdown index f84a21c0de15..1ef6dfe65829 100644 --- a/source/_integrations/openevse.markdown +++ b/source/_integrations/openevse.markdown @@ -1,14 +1,15 @@ --- -title: "OpenEVSE Sensor" -description: "Instructions on how to integrate a WiFi-equipped OpenEVSE Charging station with Home Assistant" +title: OpenEVSE +description: Instructions on how to integrate a WiFi-equipped OpenEVSE Charging station with Home Assistant logo: openevse.png ha_category: - Car ha_release: 0.38 ha_iot_class: Local Polling +ha_domain: openevse --- -This `openevse` sensor platform pulls data from an [OpenEVSE](https://www.openevse.com/) Charging station equipped with an ESP8266-based wifi connection. +This `openevse` sensor platform pulls data from an [OpenEVSE](https://www.openevse.com/) Charging station equipped with an ESP8266-based Wi-Fi connection. ## Configuration diff --git a/source/_integrations/openexchangerates.markdown b/source/_integrations/openexchangerates.markdown index db5b2dd0ab43..3c89d3283d94 100644 --- a/source/_integrations/openexchangerates.markdown +++ b/source/_integrations/openexchangerates.markdown @@ -1,11 +1,12 @@ --- -title: "Open Exchange Rates" -description: "Instructions on how to integrate exchange rates from https://openexchangerates.org within Home Assistant." +title: Open Exchange Rates +description: Instructions on how to integrate exchange rates from https://openexchangerates.org within Home Assistant. ha_category: - Finance logo: openexchangerates.png ha_iot_class: Cloud Polling ha_release: 0.23 +ha_domain: openexchangerates --- The `openexchangerates` sensor will show you the current exchange rate from [Open Exchange Rates](https://openexchangerates.org) that provides realtime exchange rates for [170 currencies](https://openexchangerates.org/currencies). The free account is limited to only USD as a base currency, allows 1000 requests per month, and updates every hour. diff --git a/source/_integrations/opengarage.markdown b/source/_integrations/opengarage.markdown index e981339fef4d..0d01ed9f00cc 100644 --- a/source/_integrations/opengarage.markdown +++ b/source/_integrations/opengarage.markdown @@ -1,10 +1,11 @@ --- -title: "OpenGarage Cover" -description: "Instructions on how to integrate OpenGarage.io covers within Home Assistant." +title: OpenGarage +description: Instructions on how to integrate OpenGarage.io covers within Home Assistant. logo: opengarage.png ha_category: - DIY ha_release: 0.44 +ha_domain: opengarage --- The `opengarage` cover platform lets you control the open-source [OpenGarage.io](https://opengarage.io/) device through Home Assistant. @@ -23,7 +24,10 @@ cover: device_key: opendoor name: Left Garage Door garage2: - host: 192.168.1.13 + protocol: https + verify_ssl: false + host: garage.example.com + port: 443 device_key: opendoor name: Right Garage Door ``` @@ -39,6 +43,16 @@ covers: required: true type: map keys: + ssl: + description: Use HTTPS instead of HTTP to connect. + required: false + type: boolean + default: false + verify_ssl: + description: Enable or disable SSL certificate verification. Set to false if you have a self-signed SSL certificate and haven't installed the CA certificate to enable verification. + required: false + default: true + type: boolean host: description: IP address of device. required: true @@ -123,4 +137,5 @@ customize: sensor.garage_car_present: icon: mdi:car ``` + {% endraw %} diff --git a/source/_integrations/openhardwaremonitor.markdown b/source/_integrations/openhardwaremonitor.markdown index 81f0809b6dff..273810aee662 100644 --- a/source/_integrations/openhardwaremonitor.markdown +++ b/source/_integrations/openhardwaremonitor.markdown @@ -1,11 +1,11 @@ --- -title: "Open Hardware Monitor Sensor" -description: "Instructions on how to integrate Open Hardware Monitor within Home Assistant." -logo: openhardwaremonitor.png +title: Open Hardware Monitor +description: Instructions on how to integrate Open Hardware Monitor within Home Assistant. ha_category: - System Monitor ha_release: 0.48 ha_iot_class: Local Polling +ha_domain: openhardwaremonitor --- The `openhardwaremonitor` platform uses your [Open Hardware Monitor](https://openhardwaremonitor.org/) installation as a source for sensors that will display system information. diff --git a/source/_integrations/openhome.markdown b/source/_integrations/openhome.markdown index 9b1b66a84065..83ab3b9a5333 100644 --- a/source/_integrations/openhome.markdown +++ b/source/_integrations/openhome.markdown @@ -1,19 +1,42 @@ --- -title: "Linn / Openhome" -description: "Instructions on how to integrate Linn Ds and Openhome renderers into Home Assistant." -logo: linn.png +title: Linn / OpenHome +description: Instructions on how to integrate Linn Ds and Openhome renderers into Home Assistant. ha_category: - Media Player ha_release: 0.39 ha_iot_class: Local Polling +ha_domain: openhome --- - The `openhome` platform allows you to connect an [Openhome Compliant Renderer](http://openhome.org/) to Home Assistant such as a [Linn Products Ltd](https://www.linn.co.uk) HiFi streamer. It will allow you to control media playback, volume, source and see the current playing item. Openhome devices should be discovered by using the [the discovery component](/integrations/discovery/), their device names are taken from the name of the room configured on the device. +### Example `configuration.yaml` entry + ```yaml -# Example configuration.yaml entry discovery: media_player: - platform: openhome ``` + +### Example local audio playback action + +```yaml +action: + - service: media_player.play_media + data_template: + entity_id: + - media_player.linn_bedroom + media_content_id: "http://172.24.32.13/Doorbell.mp3" + media_content_type: music +``` + +### Example web stream playback action + +```yaml + - service: media_player.play_media + data_template: + entity_id: + - media_player.linn_bedroom + media_content_id: "http://media-ice.musicradio.com:80/ClassicFMMP3" + media_content_type: music +``` diff --git a/source/_integrations/opensensemap.markdown b/source/_integrations/opensensemap.markdown index e145cde47e8c..d6805ba6d190 100644 --- a/source/_integrations/opensensemap.markdown +++ b/source/_integrations/opensensemap.markdown @@ -1,11 +1,11 @@ --- -title: "OpenSenseMap" -description: "Instructions on how to setup openSenseMap sensors in Home Assistant." -logo: opensensemap.png +title: openSenseMap +description: Instructions on how to setup openSenseMap sensors in Home Assistant. ha_category: - Health ha_release: 0.85 ha_iot_class: Cloud Polling +ha_domain: opensensemap --- The `opensensemap` air quality platform will query the open data API of [openSenseMap.org](https://opensensemap.org/) to monitor air quality sensor station. @@ -36,4 +36,3 @@ name: default: Station name type: string {% endconfiguration %} - diff --git a/source/_integrations/opensky.markdown b/source/_integrations/opensky.markdown index 1c08acf1d3fe..833cca573ff3 100644 --- a/source/_integrations/opensky.markdown +++ b/source/_integrations/opensky.markdown @@ -1,11 +1,12 @@ --- -title: "OpenSky Network" -description: "Instructions on how to integrate OpenSky Network into Home Assistant." +title: OpenSky Network +description: Instructions on how to integrate OpenSky Network into Home Assistant. logo: opensky.png ha_category: - Transport ha_release: 0.43 ha_iot_class: Cloud Polling +ha_domain: opensky --- The `opensky` sensor allows one to track overhead flights in a given region. It uses crowd-sourced data from the [OpenSky Network](https://opensky-network.org/) public API. It will also fire Home Assistant events when flights enter and exit the defined region. @@ -39,7 +40,7 @@ Both events have three attributes: - **callsign**: Callsign of the flight. - **altitude**: Altitude of the flight in meters. -To receive notifications of the entering flights, add the following lines to your `configuration.yaml` file: +To receive notifications of the entering flights using the [Home Assistant Companion App](https://companion.home-assistant.io/), add the following lines to your `configuration.yaml` file: {% raw %} ```yaml @@ -49,7 +50,7 @@ automation: platform: event event_type: opensky_entry action: - service: notify.ios_YOURIPHONENAME + service: notify.mobile_app_ data_template: message : 'Flight entry of {{ trigger.event.data.callsign }} ' ``` diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index bb38a6313a8b..8340840900bf 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -1,7 +1,6 @@ --- -title: "OpenTherm Gateway" -description: "Control your OpenTherm Gateway from Home Assistant." -logo: opentherm.png +title: OpenTherm Gateway +description: Control your OpenTherm Gateway from Home Assistant. ha_category: - Hub - Binary Sensor @@ -9,6 +8,10 @@ ha_category: - Sensor ha_release: 0.81 ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - '@mvn23' +ha_domain: opentherm_gw --- The `opentherm_gw` integration is used to control the [OpenTherm Gateway](http://otgw.tclcode.com/) from Home Assistant. @@ -19,7 +22,7 @@ The following device types are currently supported within Home Assistant: - Climate - Sensor -This integration will add a single `climate` entity and multiple `sensor` and `binary_sensor` entities to Home Assistant for each configured gateway. +This integration will add a single `climate` entity to Home Assistant for each configured gateway. Each gateway also has a collection of `sensor` and `binary_sensor` entities, which are disabled by default. These can be enabled from the `Devices` panel in the `Configuration` page of the web interface.
    The OpenTherm protocol is based on polling. The thermostat sends requests to the boiler at specific intervals. As a result, it may take some time for changes to propagate between Home Assistant and the thermostat. @@ -183,7 +186,7 @@ The value you provide here will be used with the GPIO `home` (5) and `away` (6) ## Sensors -The following `sensor` entities will be created for each configured gateway. The `entity_id` of every sensor will have a suffix containing the `gateway_id` of the gateway to which it belongs. +The following `sensor` entities will be created for each configured gateway. The `entity_id` of every sensor will have a suffix containing the `gateway_id` of the gateway to which it belongs. All `sensor` entities are disabled by default.

    Not all boilers and thermostats properly support all OpenTherm features, so not all of the sensors will have useful values.

    @@ -383,7 +386,7 @@ Not all boilers and thermostats properly support all OpenTherm features, so not ## Binary Sensors -The following `binary_sensor` entities will be created for each configured gateway. The `entity_id` of every sensor will have a suffix containing the `gateway_id` of the gateway to which it belongs. +The following `binary_sensor` entities will be created for each configured gateway. The `entity_id` of every sensor will have a suffix containing the `gateway_id` of the gateway to which it belongs. All `binary_sensor` entities are disabled by default.

    Not all boilers and thermostats properly support all OpenTherm features, so not all of the sensors will have useful values.

    @@ -510,8 +513,8 @@ Possible modes and their meaning for the GPIO pins are listed here: Possible LED modes and their meaning are listed here: -* R. Receiving an Opentherm message from the thermostat or boiler. -* X. Transmitting an Opentherm message to the thermostat or boiler. +* R. Receiving an OpenTherm message from the thermostat or boiler. +* X. Transmitting an OpenTherm message to the thermostat or boiler. * T. Transmitting or receiving a message on the thermostat interface. * B. Transmitting or receiving a message on the boiler interface. * O. Remote setpoint override is active. diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index b52a39fbce0a..550d5a1de09b 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -1,7 +1,6 @@ --- -title: "OpenUV" -description: "Instructions on how to integrate OpenUV within Home Assistant." -logo: openuv.jpg +title: Openuv +description: Instructions on how to integrate OpenUV within Home Assistant. ha_category: - Health - Binary Sensor @@ -9,6 +8,9 @@ ha_category: ha_release: 0.76 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@bachya' +ha_domain: openuv --- The `openuv` integration displays UV and Ozone data from [openuv.io](https://www.openuv.io/). @@ -19,32 +21,17 @@ To generate an API key, [simply log in to the OpenUV website](https://www.openuv.io/auth/google).
    - Beginning February 1, 2019, the "Limited" plan (which is what new users are given by default) is limited to 50 API requests per day. Because different API plans and locations will have different requirements, the `openuv` component does not automatically query the API for new data after it initially loads. To request new data, the `update_data` service may be used. -
    - -Each use of the `update_data` service will consume 1 or 2 API calls, depending -on which monitored conditions are configured. - -If the OpenUV integration is configured through the Home Assistant UI (via the -`Configuration >> Integrations` panel), each service call will consume 2 API -calls from the daily quota. - -If the OpenUV integration is configured via `configuration.yaml`, service calls -will consume 2 API calls if `monitored_conditions` contains both -`uv_protection_window` and any other condition; any other scenarios will only -consume 1 API call. - -Ensure that you understand these specifications when calling the `update_data` -service. - +Each use of the `update_data` service will consume 2 API calls from the daily quota +(since it performs the same tasks as back-to-back calls of the `update_uv_index_data` and +the `update_protection_data` services).
    ## Configuration @@ -62,82 +49,26 @@ api_key: description: The OpenUV API key. required: true type: string -binary_sensors: - description: The binary sensor-related configuration options. +elevation: + description: The elevation of the monitored location; if omitted, the value specified in `configuration.yaml` will be used. + required: false + type: float +latitude: + description: The latitude of the monitored location; if omitted, the value specified in `configuration.yaml` will be used. required: false - type: map - keys: - monitored_conditions: - description: The conditions to create sensors from. - required: false - type: list - default: all - keys: - uv_protection_window: - description: Displays if UV protection (sunscreen, etc.) is recommended at the current date and time. -sensors: - description: The sensor-related configuration options. + type: float +longitude: + description: The longitude of the monitored location; if omitted, the value specified in `configuration.yaml` will be used. required: false - type: map - keys: - monitored_conditions: - description: The conditions to create sensors from. - required: false - type: list - default: all - keys: - current_ozone_level: - description: The current ozone level in du (Dobson Units). - current_uv_index: - description: The current UV index. - current_uv_level: - description: "The level of current UV index, which is calculated based on [UV Index Levels & Colors](https://www.openuv.io/kb/uv-index-levels-colors)." - max_uv_index: - description: The maximum UV index that will be encountered that day (at solar noon). - safe_exposure_time_type_1: - description: The approximate exposure time for skin type I. - safe_exposure_time_type_2: - description: The approximate exposure time for skin type II. - safe_exposure_time_type_3: - description: The approximate exposure time for skin type III. - safe_exposure_time_type_4: - description: The approximate exposure time for skin type IV. - safe_exposure_time_type_5: - description: The approximate exposure time for skin type V. - safe_exposure_time_type_6: - description: The approximate exposure time for skin type VI. + type: float {% endconfiguration %} +## The Fitzpatrick Scale + The approximate number of minutes of a particular skin type can be exposed to the sun before burning/tanning starts is based on the [Fitzpatrick scale](https://en.wikipedia.org/wiki/Fitzpatrick_scale). -## Full Configuration Example - -To configure additional functionality, add configuration options beneath a -`binary_sensor` and/or `sensor` key within the `openuv` section of the -`configuration.yaml` file as below: - -```yaml -openuv: - api_key: YOUR_OPENUV_API_KEY - binary_sensors: - monitored_conditions: - - uv_protection_window - sensors: - monitored_conditions: - - current_ozone_level - - current_uv_index - - current_uv_level - - max_uv_index - - safe_exposure_time_type_1 - - safe_exposure_time_type_2 - - safe_exposure_time_type_3 - - safe_exposure_time_type_4 - - safe_exposure_time_type_5 - - safe_exposure_time_type_6 -``` -
    The above guidelines constitute estimates and are intended to help informed decision making. They should not replace analysis, advice or diagnosis from a @@ -180,7 +111,7 @@ automation: service: openuv.update_data ``` -Update only the sensors every 20 minutes while the sun is at least 10 degrees above the horizon: +Update the UV index data every 20 minutes while the sun is at least 10 degrees above the horizon: ```yaml automation: @@ -208,7 +139,7 @@ automation: service: openuv.update_protection_data ``` -Another method (useful when monitoring locations other than the HASS latitude +Another method (useful when monitoring locations other than the Home Assistant latitude and longitude, in locations where there is a large amount of sunlight per day, etc.) might be to simply query the API less often: diff --git a/source/_integrations/openweathermap.markdown b/source/_integrations/openweathermap.markdown index e5e1ced56a2d..c72d30c3e395 100644 --- a/source/_integrations/openweathermap.markdown +++ b/source/_integrations/openweathermap.markdown @@ -1,12 +1,14 @@ --- -title: "OpenWeatherMap" -description: "Instructions on how to integrate OpenWeatherMap within Home Assistant." -logo: openweathermap.png +title: Openweathermap +description: Instructions on how to integrate OpenWeatherMap within Home Assistant. ha_category: - Weather - Sensor ha_release: 0.32 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' +ha_domain: openweathermap --- The `openweathermap` weather platform uses [OpenWeatherMap](https://openweathermap.org/) as a source for current meteorological data for your location. diff --git a/source/_integrations/openwrt.markdown b/source/_integrations/openwrt.markdown deleted file mode 100644 index b3da60fef51e..000000000000 --- a/source/_integrations/openwrt.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "OpenWRT" -description: "Instructions on how to integrate OpenWRT routers into Home Assistant." -logo: openwrt.png -ha_category: - - Presence Detection -ha_release: pre 0.7 ---- - -There are _multiple_ ways of integrating an OpenWRT router for presence detection. A broad distinction can be made between presence detection methods which actively scan for devices (by default every 12 seconds) and those that are notified by some external service on changes. It is essentially a problem of synchronizing states between two remote machines. - -* __active scanning__ - Scan for devices regularly. - * Advantages: - * robust on an unreliable set-up where the the router may not be reachable occasionally - * Disadvantages: - * average six-second delay between connecting and being registered as `home` - * lots of unnecessary network requests - * Examples: - * [ubus](/integrations/ubus) - * [luci](/integrations/luci) -* __passive/event-based__ - External services which notify Home Assistant of devices via the [REST API endpoint](https://developers.home-assistant.io/docs/en/external_api_rest.html). - * Advantages: - * devices typically registered in under one second when they connect - * very few network requests - * Disadvantages: - * prone to missed events when connectivity between Home Assistant and the router is not guaranteed - * Examples: - * [openwrt_hass_devicetracker](https://github.com/mueslo/openwrt_hass_devicetracker) - * your own custom script - -### Event-based device tracker - -This can be achieved by running a simple shell script on the OpenWRT router which calls the appropriate Home Assistant service. An OpenWRT package which does this is listed above. As this method directly calls the [service API](https://developers.home-assistant.io/docs/en/external_api_rest.html#post-api-services-lt-domain-lt-service), no special configuration is necessary on the Home Assistant side, except for ensuring the device_tracker API is running, which is achieved by adding the following to your `configuration.yaml` file: - -```yaml -device_tracker: -``` - -To get the best of both worlds, you can combine the two approaches, running both a periodic device scanner and an event-based device tracker. - -See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_integrations/opnsense.markdown b/source/_integrations/opnsense.markdown new file mode 100644 index 000000000000..8a59c1c60800 --- /dev/null +++ b/source/_integrations/opnsense.markdown @@ -0,0 +1,68 @@ +--- +title: OPNSense +description: Instructions on how to configure OPNsense integration +ha_category: + - Hub + - Presence Detection +ha_release: 0.105 +ha_codeowners: + - '@mtreinish' +ha_domain: opnsense +--- + +[OPNsense](https://opnsense.org/) is an open source HardenedBSD based firewall +and routing platform. There is currently support for the following device types +within Home Assistant: + +- [Presence Detection](#presence-detection) + +## Configuration + +To configure OPNsense integration with Home Assistant add the following section +to your configuration.yaml: + +```yaml +opnsense: + url: http://router/api + api_secret: API_SECRET + api_key: API_KEY +``` + +Where the `api_key` and `api_secret` values are acquired from your OPNsense +router using the web interface. For more information on this procedure, refer +to the OPNsense [documentation](https://docs.opnsense.org/development/how-tos/api.html#creating-keys). + +User with API Key requires privileges for Type: + +- GUI Name: Diagnostics: ARP Table +- GUI Name: Diagnostics: Network Insight + +{% configuration %} +url: + description: The URL for the OPNsense API endpoint of your router. + type: string + required: true +api_key: + description: The API key used to authenticate with your OPNsense API endpoint. + type: string + required: true +api_secret: + description: The API secret used to authenticate with your OPNsense API endpoint. + type: string + required: true +verify_ssl: + description: Set to true to enable the validation of the OPNsense API SSL. + type: boolean + required: false + default: false +tracker_interfaces: + description: List of the OPNsense router's interfaces to use for tracking devices. + type: list + required: false + default: [] +{% endconfiguration %} + + +## Presence detection + +This platform allows you to detect presence by looking at devices connected to an OPNsense router. diff --git a/source/_integrations/opple.markdown b/source/_integrations/opple.markdown index 0007a50341ab..bc915a40a09d 100644 --- a/source/_integrations/opple.markdown +++ b/source/_integrations/opple.markdown @@ -1,14 +1,13 @@ --- -title: "Opple Light" -description: "Instructions on how to integrate Opple lights into Home Assistant." -logo: opple.png +title: Opple +description: Instructions on how to integrate Opple lights into Home Assistant. ha_category: - Light -ha_release: "0.80" +ha_release: '0.80' ha_iot_class: Local Polling +ha_domain: opple --- - The `opple` light platform allows you to control the state of your Opple smart light. The platform supports all Opple lights with Wi-Fi support or lights that can be controlled by the App. diff --git a/source/_integrations/orangepi_gpio.markdown b/source/_integrations/orangepi_gpio.markdown index 34ee616cb352..4ec19164383b 100644 --- a/source/_integrations/orangepi_gpio.markdown +++ b/source/_integrations/orangepi_gpio.markdown @@ -1,11 +1,14 @@ --- -title: "Orange Pi GPIO" -description: "Instructions on how to integrate the GPIO capability of a Orange Pi into Home Assistant." +title: Orangepi GPIO +description: Instructions on how to integrate the GPIO capability of a Orange Pi into Home Assistant. ha_category: - DIY - Binary Sensor ha_release: 0.93 ha_iot_class: Local Push +ha_codeowners: + - '@pascallj' +ha_domain: orangepi_gpio --- The `orangepi_gpio` integration is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the integration itself, for the platforms please check their corresponding pages. diff --git a/source/_integrations/oru.markdown b/source/_integrations/oru.markdown index a80d95a71bb0..3f10f1fec370 100644 --- a/source/_integrations/oru.markdown +++ b/source/_integrations/oru.markdown @@ -1,11 +1,13 @@ --- -title: "Orange and Rockland Utility Real-Time Energy Usage Sensor" -description: "Instructions on how to integrate the Orange and Rockland Utility real-time energy usage sensor within Home Assistant." -logo: oru.png +title: Orange and Rockland Utility (ORU) +description: Instructions on how to integrate the Orange and Rockland Utility real-time energy usage sensor within Home Assistant. ha_release: 0.101 ha_category: - Sensor ha_iot_class: Cloud Polling +ha_codeowners: + - '@bvlaicu' +ha_domain: oru --- [Orange and Rockland Utility](https://oru.com) is an energy provider in NY and NJ, USA. diff --git a/source/_integrations/orvibo.markdown b/source/_integrations/orvibo.markdown index 75a61ff4c6e1..61a8d7e09851 100644 --- a/source/_integrations/orvibo.markdown +++ b/source/_integrations/orvibo.markdown @@ -1,10 +1,11 @@ --- -title: "Orvibo Switch" -description: "Instructions on how to integrate Orvibo sockets within Home Assistant." +title: Orvibo +description: Instructions on how to integrate Orvibo sockets within Home Assistant. logo: orvibo.png ha_category: - Switch ha_release: 0.8 +ha_domain: orvibo ---
    diff --git a/source/_integrations/osramlightify.markdown b/source/_integrations/osramlightify.markdown index 3e1d44b11e91..921cccf1f38c 100644 --- a/source/_integrations/osramlightify.markdown +++ b/source/_integrations/osramlightify.markdown @@ -1,10 +1,10 @@ --- -title: "Osram Lightify" -description: "Instructions on how to integrate Osram Lightify into Home Assistant." -logo: osramlightify.png +title: Osramlightify +description: Instructions on how to integrate Osram Lightify into Home Assistant. ha_category: - Light ha_release: 0.21 +ha_domain: osramlightify --- The `osramlightify` platform allows you to integrate your [Osram Lightify](https://www.osram.com/cb/lightify/index.jsp) into Home Assistant. diff --git a/source/_integrations/otp.markdown b/source/_integrations/otp.markdown index 25abd8a7aca6..1d3e701aeed1 100644 --- a/source/_integrations/otp.markdown +++ b/source/_integrations/otp.markdown @@ -1,12 +1,12 @@ --- -title: "OTP Sensor" -description: "Instructions on how to add One-Time Password (OTP) sensors into Home Assistant." -logo: home-assistant.png +title: One-Time Password (OTP) +description: Instructions on how to add One-Time Password (OTP) sensors into Home Assistant. ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.49 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: otp --- The `otp` sensor generates One-Time Passwords according to [RFC6238](https://tools.ietf.org/html/rfc6238) that is compatible with most OTP generators available, including Google Authenticator. You can use this when building custom security solutions and want to use "rolling codes", that change every 30 seconds. @@ -36,7 +36,7 @@ token: ## Generating a token -A simple way to generate a `token` for a new sensor is to run this snippet of python code in your Home Assistant virtual environment: +A simple way to generate a `token` for a new sensor is to run this snippet of Python code in your Home Assistant virtual environment: ```shell $ pip3 install pyotp diff --git a/source/_integrations/owlet.markdown b/source/_integrations/owlet.markdown deleted file mode 100644 index 506fe5ca46bf..000000000000 --- a/source/_integrations/owlet.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Owlet" -description: "Instructions on how to integrate Owlet baby monitor into Home Assistant." -logo: owlet.svg -ha_category: - - Health - - Binary Sensor - - Sensor -ha_release: 0.89 -ha_iot_class: Cloud Polling ---- - -[Owlet Care](https://owletcare.com/) baby monitors check your baby's oxygen level and heart rate while sleeping. - -Configuring this integration will enable tracking of heart rate, oxygen level, motion and base station connection status. Battery status is available as an attribute on oxygen and heart rate sensors. - -This integration enables the following platforms automatically: - -#### Binary Sensors - -- Base Station Status -- Motion - -#### Sensors - -- Heart rate -- Oxygen level - -### Configuration - -```yaml -# Example configuration.yaml entry -owlet: - username: OWLET_USER - password: OWLET_PASSWORD -``` - -{% configuration %} -username: - description: Your Owlet account user ID. - required: true - type: string -password: - description: Your Owlet account password. - required: true - type: string -name: - description: Custom name for your Owlet device. - required: false - type: string -{% endconfiguration %} - -

    -The intended purpose of this integration is to enable data logging and automations such as battery status updates and charging reminders. This integration should not replace the Owlet app nor should it be used for life-critical notifications. -

    diff --git a/source/_integrations/owntracks.markdown b/source/_integrations/owntracks.markdown index 77e265ac160d..697a7708399c 100644 --- a/source/_integrations/owntracks.markdown +++ b/source/_integrations/owntracks.markdown @@ -1,15 +1,16 @@ --- -title: "Owntracks" -description: "Instructions on how to use Owntracks to track devices in Home Assistant." -logo: owntracks.png +title: OwnTracks +description: Instructions on how to use Owntracks to track devices in Home Assistant. ha_category: - Presence Detection ha_release: 0.7.4 +ha_config_flow: true +ha_domain: owntracks --- [OwnTracks](https://owntracks.org/) is a free and open source application for iOS and Android that allow you to track your location and send it directly to Home Assistant. It can be set up via the integrations panel in the configuration screen. -By default the integration will listen for incoming messages from OwnTracks via HTTP. It will also listen for MQTT messages if Home Assistant is configured to use MQTT. +By default the integration will listen for incoming messages from OwnTracks via HTTP. It will also listen for MQTT messages if Home Assistant is configured to use MQTT. When a location is submitted via HTTP, Home Assistant will return all [Persons](/integrations/person/)' last known locations and they will be displayed within the OwnTracks app.
    @@ -33,7 +34,7 @@ In the OwnTracks app, open sidebar and click on preferences, then on connection. - Device ID: `` - Tracker ID: `` Two character tracker ID. (can be left blank) -Your tracker device will be known in home assistant as `_`. If you entered a Tracker ID the tid attribute will be set to that ID. +Your tracker device will be known in Home Assistant as `_`. If you entered a Tracker ID the tid attribute will be set to that ID. ### Configuring the app - iOS @@ -123,7 +124,7 @@ Owntracks v2.0.0 removes support for iBeacons on Android. When run in the usual *significant changes mode* (which is kind to your phone battery), Owntracks sometimes doesn't update your location as quickly as you'd like when you arrive at a zone. This can be annoying if you want to trigger an automation when you get home. You can improve the situation using iBeacons. -iBeacons are simple Bluetooth devices that send out an "I'm here" message. They are supported by IOS and some Android devices. Owntracks explain more [here](https://owntracks.org/booklet/guide/beacons/). +iBeacons are simple Bluetooth devices that send out an "I'm here" message. They are supported by iOS and some Android devices. Owntracks explain more [here](https://owntracks.org/booklet/guide/beacons/). When you enter an iBeacon region, Owntracks will send a `region enter` message to HA as described above. So if you want to have an event triggered when you arrive home, you can put an iBeacon outside your front door. If you set up an OwnTracks iBeacon region called `home` then getting close to the beacon will trigger an update to HA that will set your zone to be `home`. diff --git a/source/_integrations/panasonic_bluray.markdown b/source/_integrations/panasonic_bluray.markdown index c6d230710ba6..75531dc0bad0 100644 --- a/source/_integrations/panasonic_bluray.markdown +++ b/source/_integrations/panasonic_bluray.markdown @@ -1,11 +1,12 @@ --- -title: "Panasonic Blu-Ray Player" -description: "Instructions on how to integrate a Panasonic Blu-Ray player into Home Assistant." +title: Panasonic Blu-Ray Player +description: Instructions on how to integrate a Panasonic Blu-Ray player into Home Assistant. logo: panasonic.png ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.83 +ha_domain: panasonic_bluray --- The `panasonic_bluray` platform allows you to control a Panasonic Blu-Ray player. Note that the device must be on the same subnet as Home Assistant; connections from a different subnet will return an error. diff --git a/source/_integrations/panasonic_viera.markdown b/source/_integrations/panasonic_viera.markdown index dd241aadcc81..1186b4e91e34 100644 --- a/source/_integrations/panasonic_viera.markdown +++ b/source/_integrations/panasonic_viera.markdown @@ -1,11 +1,12 @@ --- -title: "Panasonic Viera TV" -description: "Instructions on how to integrate a Panasonic Viera TV into Home Assistant." +title: Panasonic Viera TV +description: Instructions on how to integrate a Panasonic Viera TV into Home Assistant. logo: panasonic.png ha_category: - Media Player ha_release: 0.17 ha_iot_class: Local Polling +ha_domain: panasonic_viera --- The `panasonic_viera` platform allows you to control a Panasonic Viera TV. @@ -33,7 +34,7 @@ If your model is not on the list then give it a test, if everything works correc Some Panasonic Viera TVs allow Home Assistant to turn them on, if you specify the MAC address with `mac:`. -Note that your TV has to reside in the same network as your home assistant instance for this platform to work. +Note that your TV has to reside in the same network as your Home Assistant instance for this platform to work. If you have multiple network interfaces on your Home Assistant instance, you may need to specify the `broadcast_address`. To add a TV to your installation, add the following to your `configuration.yaml` file: @@ -58,6 +59,11 @@ mac: description: The MAC address of your Panasonic Viera TV, e.g., `AA:BB:CC:DD:99:1A`. required: false type: string +broadcast_address: + description: The broadcast address on which to send the Wake-On-Lan packet. + required: false + default: 255.255.255.255 + type: string app_power: description: Set to `true` if your Panasonic Viera TV supports "Turn on via App". required: false diff --git a/source/_integrations/pandora.markdown b/source/_integrations/pandora.markdown index 9010ed29668d..bf7a7532fd12 100644 --- a/source/_integrations/pandora.markdown +++ b/source/_integrations/pandora.markdown @@ -1,33 +1,33 @@ --- -title: "Pandora" -description: "Instructions on how to integrate Pandora radio into Home Assistant." +title: Pandora +description: Instructions on how to integrate Pandora radio into Home Assistant. logo: pandora.png ha_category: - Media Player ha_release: 0.22 ha_iot_class: Local Polling +ha_domain: pandora --- If you have a Pandora account, you can control it from Home Assistant with this media player. - ### Installation of Pianobar This media player uses the [Pianobar command-line Pandora client](https://github.com/PromyLOPh/pianobar), which you have to install separately. This can be done on a Raspberry Pi 2/3 with Raspbian Jessie as follows . _(Note: Other platforms may have different installation processes)_ -The version of pianobar that comes with Jessie has a bug, so you have to build a more recent version. The latest version depends on a recent version of libraries associated with ffmpeg, so you should make sure you go through the backport process documented in [The FFmpeg component](/integrations/ffmpeg/) before doing this. Install the following basic dependencies: +The version of pianobar that comes with Jessie has a bug, so you have to build a more recent version. The latest version depends on a recent version of libraries associated with FFmpeg, so you should make sure you go through the backport process documented in [The FFmpeg component](/integrations/ffmpeg/) before doing this. Install the following basic dependencies: ```bash sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson-c-dev make pkg-config libcurl4-openssl-dev ``` -And now install the backported ffmpeg-related libraries (note that if you're using an older version of ffmpeg for other things on this machine, you may encounter issues after doings this): +And now install the backported FFmpeg-related libraries (note that if you're using an older version of FFmpeg for other things on this machine, you may encounter issues after doings this): ```bash sudo apt-get -t jessie-backports install libav-tools libavcodec-extra libavcodec-dev libavfilter-dev libavformat-dev ``` -Now clone the Pianobar repo and build pianobar: +Now clone the Pianobar repository and build pianobar: ```bash git clone https://github.com/PromyLOPh/pianobar.git @@ -60,4 +60,3 @@ That's it! Now you will find a media player. If you click it you will find all y

    - diff --git a/source/_integrations/panel_custom.markdown b/source/_integrations/panel_custom.markdown index fd2aa8176d10..f2e9a24093d1 100644 --- a/source/_integrations/panel_custom.markdown +++ b/source/_integrations/panel_custom.markdown @@ -1,11 +1,13 @@ --- -title: "Panel Custom" -description: "Instructions on how to add customized panels to the frontend of Home Assistant." -logo: home-assistant.png +title: Custom Panel +description: Instructions on how to add customized panels to the frontend of Home Assistant. ha_category: - Front End ha_release: 0.26 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/frontend' +ha_domain: panel_custom --- The `panel_custom` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized. See the developer documentation on [instructions how to build your own panels](https://developers.home-assistant.io/docs/en/frontend_creating_custom_panels.html). diff --git a/source/_integrations/panel_iframe.markdown b/source/_integrations/panel_iframe.markdown index cea10eab2bec..e22bfd49c247 100644 --- a/source/_integrations/panel_iframe.markdown +++ b/source/_integrations/panel_iframe.markdown @@ -1,14 +1,15 @@ --- -title: "Panel iFrame" -description: "Instructions on how to add iFrames in the frontend of Home Assistant." -logo: home-assistant.png +title: iframe Panel +description: Instructions on how to add iFrames in the frontend of Home Assistant. ha_category: - Front End ha_release: 0.25 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/frontend' +ha_domain: panel_iframe --- - The `panel_iframe` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar and can contain external resources like the web frontend of your router, your monitoring system, or your media server.
    @@ -31,7 +32,6 @@ panel_iframe: url: '/otherapp' ``` - {% configuration %} panel_iframe: description: Enables the panel_iframe component. Only allowed once. @@ -64,6 +64,6 @@ panel_iframe:
    -Do **not** create one that is named `lovelace` it will overwrite lovelace causing it to never load. +Do **not** create one that is named `lovelace` it will overwrite Lovelace causing it to never load.
    diff --git a/source/_integrations/pcal9535a.markdown b/source/_integrations/pcal9535a.markdown index de26e82c9f9e..a7d782220b6c 100644 --- a/source/_integrations/pcal9535a.markdown +++ b/source/_integrations/pcal9535a.markdown @@ -1,13 +1,15 @@ --- -title: "PCAL9535A I2C GPIO expander" -description: "Instructions on how to integrate the PCAL9535A GPIO pin expander with I2C interface into Home Assistant." -logo: raspberry-pi.png +title: PCAL9535A I/O Expander +description: Instructions on how to integrate the PCAL9535A GPIO pin expander with I2C interface into Home Assistant. ha_category: - DIY - Binary Sensor - Switch ha_release: 0.102 ha_iot_class: Local Polling +ha_codeowners: + - '@Shulyaka' +ha_domain: pcal9535a --- The `pcal9535a` integration is the base for all related pcal9535a platforms in Home Assistant. There is no setup needed for the integration itself, for the platforms, please check their corresponding sections. diff --git a/source/_integrations/pencom.markdown b/source/_integrations/pencom.markdown index b44b15bac1a6..6f4d0c685c0a 100644 --- a/source/_integrations/pencom.markdown +++ b/source/_integrations/pencom.markdown @@ -1,11 +1,12 @@ --- -title: "Pencom" -description: "How to use Pencom Designs 8 channel relay boards." +title: Pencom +description: How to use Pencom Designs 8 channel relay boards. logo: pencom.png ha_category: - Switch ha_release: 0.85 ha_iot_class: Local Polling +ha_domain: pencom --- [Pencom Design](https://www.pencomdesign.com/) is a manufacturer of computer-controlled relay, I/O and custom boards for commercial and industrial applications. This interface to [Pencom's Relay Control Boards](https://www.pencomdesign.com/relay-boards) is designed to work over an ethernet to serial adapter (NPort). Each switch (relay) can be turned on/off, and the state of the relay can be read. diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown index bb0354a74074..097a1f7ab746 100644 --- a/source/_integrations/persistent_notification.markdown +++ b/source/_integrations/persistent_notification.markdown @@ -1,11 +1,13 @@ --- -title: "Persistent notification" -description: "Instructions on how to integrate persistent notifications into Home Assistant." -logo: home-assistant.png +title: Persistent Notification +description: Instructions on how to integrate persistent notifications into Home Assistant. ha_category: - Other ha_release: 0.23 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: persistent_notification --- The `persistent_notification` integration can be used to show a notification on the frontend that has to be dismissed by the user. diff --git a/source/_integrations/person.markdown b/source/_integrations/person.markdown index b115523db615..f725b40350b8 100644 --- a/source/_integrations/person.markdown +++ b/source/_integrations/person.markdown @@ -1,11 +1,11 @@ --- -title: "Person" -description: "Instructions on how to set up people tracking within Home Assistant." -logo: home-assistant.png +title: Person +description: Instructions on how to set up people tracking within Home Assistant. ha_category: - Presence Detection -ha_qa_scale: internal ha_release: 0.88 +ha_quality_scale: internal +ha_domain: person --- The person integration allows connecting [device tracker](/integrations/device_tracker/) entities to one or more person entities. The state updates of a connected device tracker will set the state of the person. When multiple device trackers are used, the state of person will be determined in this order: @@ -87,6 +87,8 @@ person: - device_tracker.beacon ``` +If you change the YAML, you can reload it by calling the `person.reload` service. + ### Customizing the picture for a person By following the instructions on the [customizing entities](/docs/configuration/customizing-devices#entity_picture) page, you can customize the picture used for a person entity in the `customize:` section of your configuration. For example: @@ -97,4 +99,4 @@ customize: entity_picture: "/local/ada.jpg" ``` -See the documentation about [hosting files](/integrations/http/#hosting-files) for more information about the `www` folder. +See the documentation about [hosting files](/integrations/http/#hosting-files) for more information about the `www` folder. diff --git a/source/_integrations/philips_js.markdown b/source/_integrations/philips_js.markdown index a45de307f8fa..3c31b13d14a6 100644 --- a/source/_integrations/philips_js.markdown +++ b/source/_integrations/philips_js.markdown @@ -1,14 +1,17 @@ --- -title: "Philips TV" -description: "Instructions on how to add Philips TVs to Home Assistant." +title: Philips TV +description: Instructions on how to add Philips TVs to Home Assistant. logo: philips.png ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.34 +ha_codeowners: + - '@elupus' +ha_domain: philips_js --- -The `philips_js` platform allows you to control Philips TVs which expose the [jointSPACE](http://jointspace.sourceforge.net/) API. Instructions on how to activate the API and if your model is supported can be found [here](http://jointspace.sourceforge.net/download.html). +The `philips_js` platform allows you to control Philips TVs which expose the [jointSPACE](http://jointspace.sourceforge.net/) JSON-API. Instructions on how to activate the API and if your model is supported can be found [here](http://jointspace.sourceforge.net/download.html). Note that not all listed, jointSPACE-enabled devices won't have JSON-interface running on port 1925. This is true at least for some models before year 2011. To add your TV to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown index bce2f73648dd..c0afe1be90b9 100644 --- a/source/_integrations/pi_hole.markdown +++ b/source/_integrations/pi_hole.markdown @@ -1,14 +1,17 @@ --- -title: "Pi-hole" -description: "Instructions on how to integrate Pi-hole with Home Assistant." +title: Pi-hole +description: Instructions on how to integrate Pi-hole with Home Assistant. ha_category: - System Monitor ha_iot_class: Local Polling -logo: pi_hole.png ha_release: 0.28 +ha_codeowners: + - '@fabaff' + - '@johnluetke' +ha_domain: pi_hole --- -The `pi_hole` integration allows you to retrieve statistics and interact with a single [Pi-hole](https://pi-hole.net/) system. +The `pi_hole` integration allows you to retrieve statistics and interact with a [Pi-hole](https://pi-hole.net/) system. ## Configuration @@ -17,16 +20,23 @@ To enable this integration with the default configuration, add the following lin ```yaml # Example configuration.yaml entry pi_hole: + - host: IP_ADDRESS ``` {% configuration %} host: description: > - The hostname (and port), e.g., '192.168.0.3:4865' of the host where Pi-hole is running. If your Pi-Hole instance is the Hass.io add-on, you *must* specify port `4865`. - required: false + The hostname (and port), e.g., '192.168.0.3:4865' of the host where Pi-hole is running. Home Assistant add-on users should be sure to specify port `4865`. + required: true type: string - default: pi.hole +name: + description: > + The name for this Pi-hole. This name will be a part of the sensors created, e.g., `name: My Awesome Pi-hole` would result in sensor names beginning with `sensor.my_awesome_pi_hole_`. + **Note:** If you configure multiple Pi-Holes, each one *must* have a unique name. + required: false + type: string + default: Pi-hole location: description: The installation location of the Pi-hole API. required: false @@ -50,14 +60,39 @@ api_key: default: None {% endconfiguration %} -### Full example +### Full examples + +Single Pi-hole running via Home Assistant add-on: + +```yaml +pi_hole: + - host: 'localhost:4865' +``` + +Multiple Pi-holes: + +```yaml +pi_hole: + - host: '192.168.0.2' + - host: '192.168.0.3' + name: 'Secondary Pi-Hole' +``` + +Pi-hole with a self-signed certificate: + +```yaml +pi_hole: + - host: 'pi.hole' + ssl: true + verify_ssl: false +``` + +Pi-hole with an `api_key` that allows it to be enabled or disabled: ```yaml -# Example configuration.yaml entry pi_hole: - host: 'localhost:4865' - ssl: false - verify_ssl: false + - host: 'pi.hole' + api_key: !secret pi_hole_api_key ``` ## Services @@ -66,17 +101,22 @@ The platform provides the following services to interact with your Pi-hole. ### Service `pi_hole.disable` -Disable your Pi-hole for the specified amount of time. +Disables configured Pi-hole(s) for the specified amount of time. | Service data attribute | Required | Type | Description | | ---------------------- | -------- | -------- | ----------- | -| `duration` | `True` | timedelta | Time for which Pi-hole should be disabled | +| `duration` | `True` | timedelta | Time for which Pi-hole should be disabled | +| `name` | `False` | string | If preset, disables the named Pi-hole, otherwise, disables all configured Pi-holes | _Note: This service requires `api_key` to be specified in the configuration._ ### Service `pi_hole.enable` -Enable your Pi-hole. +Enables configured Pi-holes(s). + +| Service data attribute | Required | Type | Description | +| ---------------------- | -------- | -------- | ----------- | +| `name` | `False` | string | If preset, enables the named Pi-hole, otherwise, enables all configured Pi-holes | _Note: This service requires `api_key` to be specified in the configuration._ diff --git a/source/_integrations/picotts.markdown b/source/_integrations/picotts.markdown index e02ee9964aec..9c55c8bb32a4 100644 --- a/source/_integrations/picotts.markdown +++ b/source/_integrations/picotts.markdown @@ -1,15 +1,23 @@ --- -title: "Pico Text-to-Speech" -description: "Instructions on how to setup Pico Text-to-Speech with Home Assistant." -logo: home-assistant.png +title: Pico TTS +description: Instructions on how to setup Pico Text-to-Speech with Home Assistant. ha_category: - Text-to-speech ha_release: 0.36 +ha_domain: picotts --- The `picotts` text-to-speech platform uses offline pico Text-to-Speech engine to read a text with natural sounding voices. -This requires to install the pico tts library on the system, typically on debian just do `sudo apt-get install libttspico-utils` -On some Raspbian release, this package is missing but you can just copy the arm deb package from debian. +This requires to install the pico TTS library on the system, typically on Debian just do `sudo apt-get install libttspico-utils` +On some Raspbian release, this package is missing but you can just copy the arm deb package from Debian. + +On Debian Buster, the package is missing, use the following commands to install it: + +```bash +wget http://ftp.us.debian.org/debian/pool/non-free/s/svox/libttspico0_1.0+git20130326-9_armhf.deb +wget http://ftp.us.debian.org/debian/pool/non-free/s/svox/libttspico-utils_1.0+git20130326-9_armhf.deb +sudo apt-get install -f ./libttspico0_1.0+git20130326-9_armhf.deb ./libttspico-utils_1.0+git20130326-9_armhf.deb +``` ## Configuration diff --git a/source/_integrations/piglow.markdown b/source/_integrations/piglow.markdown index 675d1f41633e..5d4d9abedef1 100644 --- a/source/_integrations/piglow.markdown +++ b/source/_integrations/piglow.markdown @@ -1,14 +1,13 @@ --- -title: "Piglow" -description: "Instructions on how to setup Piglow LED's within Home Assistant." -logo: raspberry-pi.png +title: Piglow +description: Instructions on how to setup Piglow LED's within Home Assistant. ha_category: - DIY ha_release: 0.37 ha_iot_class: Local Polling +ha_domain: piglow --- - The `piglow` platform lets you control the [Piglow](https://shop.pimoroni.com/products/piglow) lights on your Raspberry Pi from within Home Assistant. ## Configuration diff --git a/source/_integrations/pilight.markdown b/source/_integrations/pilight.markdown index a21cb9fc8157..0ecc2b2397f1 100644 --- a/source/_integrations/pilight.markdown +++ b/source/_integrations/pilight.markdown @@ -1,6 +1,6 @@ --- -title: "Pilight" -description: "Instructions on how to setup Pilight within Home Assistant." +title: Pilight +description: Instructions on how to setup Pilight within Home Assistant. logo: pilight.png ha_category: - DIY @@ -9,6 +9,9 @@ ha_category: - Switch ha_release: 0.26 ha_iot_class: Local Push +ha_codeowners: + - '@trekky12' +ha_domain: pilight --- [Pilight](https://www.pilight.org/) is a modular and open source solution to communicate with 433 MHz devices and runs on various small form factor computers. A lot of common [protocols](https://manual.pilight.org/protocols/index.html) are already available. @@ -22,6 +25,7 @@ There is currently support for the following device types within Home Assistant: - [Binary Sensor](#binary-sensor) - [Sensor](#sensor) - [Switch](#switch) +- [Light](#light) ## Configuration @@ -304,6 +308,52 @@ switch: state: 'off' ``` +## Light + +Pilight dimmer devices, which can have different brightness values, can be used as a light. +The configuration parameters are the same for dimmers and switches. + +{% configuration %} +lights: + description: The list that contains all command lights. + required: true + type: string + keys: + entry: + description: Name of the command light, which are the same like for switches. Multiple entries are possible. + required: true + type: list +{% endconfiguration %} + +### Example + +```yaml +light: + - platform: pilight + lights: + test2: + on_code: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + 'on': 1 + off_code: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + 'off': 1 + on_code_receive: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + state: 'on' + off_code_receive: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + state: 'off' +``` + ## Troubleshooting - A list of tested RF transceiver hardware is available [here](https://manual.pilight.org/electronics/index.html). This might be useful before buying. diff --git a/source/_integrations/ping.markdown b/source/_integrations/ping.markdown index 48d94f91465c..245b9c15be4f 100644 --- a/source/_integrations/ping.markdown +++ b/source/_integrations/ping.markdown @@ -1,13 +1,13 @@ --- -title: "Ping (ICMP)" -description: "Instructions on how to integrate Ping (ICMP)-based into Home Assistant." -logo: home-assistant.png +title: Ping (ICMP) +description: Instructions on how to integrate Ping (ICMP)-based into Home Assistant. ha_category: - Network - Binary Sensor - Presence Detection ha_release: 0.43 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: ping --- There is currently support for the following device types within Home Assistant: @@ -89,7 +89,7 @@ device_tracker: {% configuration %} hosts: - description: List of device names and their corresponding IP address or hostname. + description: List of device names and their corresponding IP address or hostname. Device names must conform to the standard requirements of lower case, numbers and underscore only - see [entity names](/docs/configuration/troubleshooting/#entity-names). required: true type: list count: diff --git a/source/_integrations/pioneer.markdown b/source/_integrations/pioneer.markdown index 145b1b4ddb00..afdbe6f12f3a 100644 --- a/source/_integrations/pioneer.markdown +++ b/source/_integrations/pioneer.markdown @@ -1,11 +1,12 @@ --- -title: "Pioneer Network Receivers" -description: "Instructions on how to integrate a Pioneer Network Receivers into Home Assistant." +title: Pioneer +description: Instructions on how to integrate a Pioneer Network Receivers into Home Assistant. logo: pioneer.png ha_category: - Media Player ha_release: 0.19 ha_iot_class: Local Polling +ha_domain: pioneer --- The `pioneer` platform allows you to control Pioneer Network Receivers. Please note, however, that the more recent Pioneer models work with [Onkyo](/integrations/onkyo) platform instead. @@ -39,9 +40,9 @@ timeout: required: false type: float sources: - description: A list of mappings from source friendly name to the source code (e.g. `TV:'05'`). Valid source codes depend on the receiver (some known codes can be found below). Codes must be defined as strings (between single or double quotation marks) so that `05` is not implicitly transformed to `5`, which wouldn't be valid source code. + description: A list of mappings from source friendly name to the source code (e.g., `TV:'05'`). Valid source codes depend on the receiver (some known codes can be found below). Codes must be defined as strings (between single or double quotation marks) so that `05` is not implicitly transformed to `5`, which wouldn't be valid source code. required: false - default: Empty list (i.e. no source selection will be possible) + default: Empty list (i.e., no source selection will be possible) type: list {% endconfiguration %} @@ -52,7 +53,7 @@ Notes: ### Source codes -Under these lines, you can find some sample `sources` lists per receiver model. Here we use the source names as shown on the remote as key for each code. However these are for display purposes only, so you could rename inputs to better match your set-up (e.g. `HDMI: '19'` to `Kodi: '19'`. +Under these lines, you can find some sample `sources` lists per receiver model. Here we use the source names as shown on the remote as key for each code. However these are for display purposes only, so you could rename inputs to better match your set-up (e.g., `HDMI: '19'` to `Kodi: '19'`. Codes must be defined as strings (between single or double quotation marks) so that `05` is not implicitly transformed to `5`, which wouldn't be valid source code. @@ -121,3 +122,24 @@ sources: 'MHL': '48' 'Game': '49' ``` + +#### VSX-528 + +```yaml +port: 8102 +sources: + 'CD': '01' + 'Tuner': '02' + 'DVD': '04' + 'TV': '05' + 'Sat/Cbl': '06' + 'DVR/BDR': '15' + 'iPod/USB': '17' + 'HDMI/MHL': '48' + 'BD': '25' + 'Adapter': '33' + 'Netradio': '38' + 'Media Server': '44' + 'Favorites': '45' + 'Game': '49' +``` diff --git a/source/_integrations/pjlink.markdown b/source/_integrations/pjlink.markdown index 2e3cf7573247..415ed9f8d050 100644 --- a/source/_integrations/pjlink.markdown +++ b/source/_integrations/pjlink.markdown @@ -1,11 +1,12 @@ --- -title: "PJLink" -description: "Instructions on how to integrate PJLink enabled projectors into Home Assistant." +title: PJLink +description: Instructions on how to integrate PJLink enabled projectors into Home Assistant. logo: pjlink.png ha_category: - Media Player ha_release: 0.76 ha_iot_class: Local Polling +ha_domain: pjlink --- The `pjlink` platform allows you to control from Home Assistant, projectors with support for the [PJLink protocol](https://pjlink.jbmia.or.jp/english/index.html). diff --git a/source/_integrations/plaato.markdown b/source/_integrations/plaato.markdown index 484b968dcf79..b76c3b8c2181 100644 --- a/source/_integrations/plaato.markdown +++ b/source/_integrations/plaato.markdown @@ -1,11 +1,14 @@ --- -title: "Plaato Airlock" -description: "Instructions on how to integrate Plaato Airlock sensors within Home Assistant." -logo: plaato.png +title: Plaato Airlock +description: Instructions on how to integrate Plaato Airlock sensors within Home Assistant. ha_release: 0.95 ha_category: - Sensor ha_iot_class: Cloud Push +ha_config_flow: true +ha_codeowners: + - '@JohNan' +ha_domain: plaato --- This integration sets up integration with [Plaato Airlock](https://www.plaato.io/). diff --git a/source/_integrations/plant.markdown b/source/_integrations/plant.markdown index 2734a0c1e1cc..4202260abe6b 100644 --- a/source/_integrations/plant.markdown +++ b/source/_integrations/plant.markdown @@ -1,11 +1,13 @@ --- -title: "Plant monitor" -description: "Instructions on how to setup plant monitoring with Home Assistant." -logo: home-assistant.png +title: Plant Monitor +description: Instructions on how to setup plant monitoring with Home Assistant. ha_category: - Environment ha_release: 0.44 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@ChristianKuehnel' +ha_domain: plant --- This`plant`component lets you merge moisture, conductivity, light intensity, temperature and battery level for a plant into a single UI element. It also supports setting minimum and maximum values for each measurement and will change its state to "problem" if it is not within those limits. diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index c87fcfe043d7..8dfeb8a36bd4 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -1,7 +1,6 @@ --- -title: "Plex" -description: "Instructions on how to integrate Plex into Home Assistant." -logo: plex.png +title: Plex Media Server +description: Instructions on how to integrate Plex into Home Assistant. ha_category: - Media Player - Sensor @@ -9,9 +8,11 @@ featured: true ha_release: 0.7.4 ha_iot_class: Local Push ha_config_flow: true +ha_codeowners: + - '@jjlawren' +ha_domain: plex --- - The `plex` integration allows you to connect to a [Plex Media Server](https://plex.tv). Once connected, [Plex Clients](https://www.plex.tv/apps-devices/) playing media from the connected Plex Media Server will show up as [Media Players](/integrations/media_player/) and report playback status via a [Sensor](/integrations/sensor/) in Home Assistant. The Media Players will allow you to control media playback and see the current playing item. There is currently support for the following device types within Home Assistant: @@ -21,7 +22,7 @@ There is currently support for the following device types within Home Assistant: If your Plex server has been claimed by a Plex account via the [claim interface](https://plex.tv/claim), Home Assistant will require authentication to connect. -The preferred way to enable the Plex integration is via **Configuration** -> **Integrations**. You will be redirected to the [plex.tv](https://plex.tv) website to sign in with your Plex account. Once access is granted, Home Assistant will connect to the server linked to the associated account. If multiple Plex servers are available on the account, you will be prompted to complete the configuration by selecting the desired server on the Integrations page. Home Assistant will show as an authorized device on the [Plex Web](https://app.plex.tv/web/app) interface under **Settings** -> **Authorized Devices**. +The preferred way to enable the Plex integration is via **Configuration** -> **Integrations**. You will be redirected to the [Plex](https://plex.tv) website to sign in with your Plex account. Once access is granted, Home Assistant will connect to the server linked to the associated account. If multiple Plex servers are available on the account, you will be prompted to complete the configuration by selecting the desired server on the Integrations page. Home Assistant will show as an authorized device on the [Plex Web](https://app.plex.tv/web/app) interface under **Settings** -> **Authorized Devices**.
    @@ -29,8 +30,6 @@ Local and secure connections are preferred when setting up an Integration. After
    -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`: ```yaml @@ -78,13 +77,13 @@ media_player: required: false type: map keys: - show_all_controls: - description: Forces all controls to display. Ignores dynamic controls (ex. show volume controls for client A but not for client B) based on detected client capabilities. This option allows you to override this detection if you suspect it to be incorrect. + use_episode_art: + description: Display TV episode art instead of TV show art. required: false default: false type: boolean - use_episode_art: - description: Display TV episode art instead of TV show art. + ignore_new_shared_users: + description: Do not track Plex clients for newly added Plex users. required: false default: false type: boolean @@ -100,13 +99,15 @@ plex: verify_ssl: true media_player: use_episode_art: true - show_all_controls: false + ignore_new_shared_users: false ``` ## Media Player The `plex` media_player platform will create Media Player entities for each connected client device. These entities will display media information, playback progress, and playback controls if supported by the device. +By default the Plex integration will create Media Player entities for all local, managed, and shared users on the Plex server. To choose specific users to monitor or ignore, select them via the Configuration Options (**Integrations** -> **Configured** --> **Plex** --> **Gear Icon**). + ### Service `play_media` Plays a song, playlist, TV episode, or video on a connected client. @@ -150,11 +151,10 @@ Plays a song, playlist, TV episode, or video on a connected client. | Any (when all controls disabled) | A stop button will appear but is not functional. | | Any (when casting) | Controlling playback will work but with error logging. | | Any (remote client) | Controls disabled. | -| Apple TV (PlexConnect) | Controls disabled. Music does not work. | +| Apple TV | None | | iOS | None | -| NVidia Shield | Mute disabled. Volume set below 2 will cause error logging. Controlling playback when the Shield is both a client and a server will work but with error logging | +| NVidia Shield | Controlling playback when the Shield is both a client and a server will work but with error logging | | Plex Web | None | -| Tivo Plex App | Only play, pause, stop/off controls enabled | ### Notes diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown index 6bbfcdf11499..2ad497f4fd2c 100644 --- a/source/_integrations/plugwise.markdown +++ b/source/_integrations/plugwise.markdown @@ -1,10 +1,14 @@ --- -title: "Plugwise" -description: "Plugwise Climate integration." -logo: plugwise.png +title: Plugwise Anna +description: Plugwise Climate integration. ha_category: Climate ha_iot_class: Local Polling ha_release: 0.98 +ha_codeowners: + - '@laetificat' + - '@CoMPaTech' + - '@bouwew' +ha_domain: plugwise --- This enables [Plugwise](https://plugwise.com) [Anna](https://www.plugwise.com/en_US/products/anna) thermostats to be integrated. This integration talks locally to your **Smile** interface, and you will need its password and IP address. @@ -17,7 +21,7 @@ The password can be found on the bottom of your Smile, it should consist of 6 ch ## Configuration -You have to add the following to your configuration.yaml file: +You have to add the following to your `configuration.yaml` file: ```yaml # Minimal configuration.yaml entry diff --git a/source/_integrations/plum_lightpad.markdown b/source/_integrations/plum_lightpad.markdown index 56cdeb279dae..8260f8d01977 100644 --- a/source/_integrations/plum_lightpad.markdown +++ b/source/_integrations/plum_lightpad.markdown @@ -1,19 +1,20 @@ --- -title: "Plum Lightpad" -description: "Instructions on setting up Plum Lightpads within Home Assistant." +title: Plum Lightpad +description: Instructions on setting up Plum Lightpads within Home Assistant. ha_category: - Switch ha_iot_class: Local Push logo: plum.png ha_release: 0.85 +ha_domain: plum_lightpad --- -Configurable/Dimmable WiFi Lightswitch +Configurable/Dimmable Wi-Fi Lightswitch - Cloud registered, Local API communication (both RESTful and TCP pushed events) - Motion Sensor - Energy Meter - RGB Glow Ring -- Wifi & Bluetooth connectivity +- Wi-Fi & Bluetooth connectivity - Phone Apps for iOS & Android ## Configuration diff --git a/source/_integrations/pocketcasts.markdown b/source/_integrations/pocketcasts.markdown index 9347a5bae8bc..97d4690314e6 100644 --- a/source/_integrations/pocketcasts.markdown +++ b/source/_integrations/pocketcasts.markdown @@ -1,23 +1,17 @@ --- title: Pocket Casts -description: "Instructions on how to set up Pocket Casts sensors within Home Assistant." -logo: pocketcasts.png +description: Instructions on how to set up Pocket Casts sensors within Home Assistant. ha_category: - Multimedia ha_release: 0.39 ha_iot_class: Cloud Polling +ha_domain: pocketcasts --- -The `pocketcasts` sensor platform lets you monitor how many unplayed episodes you have of your favorite podcasts at [Pocket Casts](https://play.pocketcasts.com/). +The `pocketcasts` sensor platform lets you monitor how many unplayed episodes you have of your favorite podcasts at [Pocket Casts](https://play.pocketcasts.com/). This integration requires a [Pocket Casts + Plus](https://www.pocketcasts.com/plus/) subscription to work! ## Configuration -
    - - This integration requires a [Pocket Casts + Plus](https://www.pocketcasts.com/plus/) subscription to work! - -
    - To enable this sensor, add the following lines to your `configuration.yaml`: ```yaml diff --git a/source/_integrations/point.markdown b/source/_integrations/point.markdown index 2c9952dc65e3..11e27eeff317 100644 --- a/source/_integrations/point.markdown +++ b/source/_integrations/point.markdown @@ -1,7 +1,6 @@ --- -title: "Minut Point" -description: "Instructions on how to integrate Minut Point into Home Assistant." -logo: minut.svg +title: Minut Point +description: Instructions on how to integrate Minut Point into Home Assistant. ha_category: - Hub - Alarm @@ -10,10 +9,13 @@ ha_category: ha_release: 0.83 ha_config_flow: true ha_iot_class: Cloud Polling -ha_qa_scale: gold +ha_quality_scale: gold +ha_codeowners: + - '@fredrike' +ha_domain: point --- -The Point hub enables integration with the [Minut Point](https://minut.com/). To connect with Point, you will have to [sign up for a developer account](https://minut.com/community/developers/) and get a `client_id` and `client_secret` with the `callback url` configured as your Home Assistant `base_url` + `/api/minut`, e.g. `http://localhost:8123/api/minut`. The `client_id` and `client_secret` should be used as below. +The Point hub enables integration with the [Minut Point](https://minut.com/). To connect with Point, you will have to [sign up for a developer account](https://minut.com/community/developers/) and get a `client_id` and `client_secret` with the `callback url` configured as your Home Assistant `base_url` + `/api/minut`, e.g., `http://localhost:8123/api/minut`. The `client_id` and `client_secret` should be used as below. Once Home Assistant is started, a configurator will pop up asking you to Authenticate your Point account via a link. When you follow the link and click on **Accept** you will be redirected to the `callback url` and the Point integration will be automatically configured and you can go back to the original dialog and press **Submit**. diff --git a/source/_integrations/postnl.markdown b/source/_integrations/postnl.markdown deleted file mode 100644 index 16082f46375f..000000000000 --- a/source/_integrations/postnl.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: PostNL Sensor -description: "Instructions on how to set up PostNL sensors within Home Assistant." -logo: postnl.png -ha_category: - - Postal Service -ha_release: 0.69 -ha_iot_class: Cloud Polling ---- - -The `postnl` platform allows one to track deliveries by [PostNL](https://www.postnl.nl) (Dutch Postal Services). To use this sensor, you need a [PostNL Account](https://jouw.postnl.nl). It is possible to add multiple accounts to your Home Assistant configuration. - -The sensor value shows the number of packages to be delivered. The packages are available in the shipments attribute. - -## Configuration - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -sensor: - - platform: postnl - username: POSTNL_USERNAME - password: POSTNL_PASSWORD -``` - -{% configuration %} -name: - description: Sensor name - required: false - default: "postnl" - type: string -username: - description: Account username of jouw.postnl.nl - required: true - type: string -password: - description: Account password of jouw.postnl.nl - required: true - type: string -{% endconfiguration %} - -
    -This integration is not affiliated with PostNL and retrieves data from the endpoints of the mobile application. Use at your own risk. -
    diff --git a/source/_integrations/powerwall.markdown b/source/_integrations/powerwall.markdown new file mode 100644 index 000000000000..bb95e0c53d0a --- /dev/null +++ b/source/_integrations/powerwall.markdown @@ -0,0 +1,62 @@ +--- +title: Telsa Powerwall +description: Instructions on how to integrate Tesla Power Walls into Home Assistant. +ha_category: + - Binary Sensor + - Sensor +ha_release: 0.108 +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@bdraco' +ha_domain: powerwall +--- + +The `powerwall` integration allows you to integrate your [Tesla Powerwall](https://www.tesla.com/powerwall) into Home Assistant. + +There is currently support for the following device types within Home Assistant: + +- [Binary Sensor](#binary-sensor) +- [Sensor](#sensor) + +## Configuration + +You will need the IP Address of your Powerwall to use this module. + +To add `Tesla Powerwall` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Tesla Powerwall**. + +Alternatively, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +powerwall: + ip_address: YOUR_POWERWALL_IP +``` + +{% configuration %} +ip_address: + description: The IP address of your Powerwall. + required: true + type: string +{% endconfiguration %} + +### Binary Sensor + +The following binary sensors are added for each Powerwall: + +- Powerwall Status +- Powerwall Connected to Tesla +- Grid Status + +### Sensor + +The following binary sensors are added for each Powerwall: + +- Powerwall Charge +- Powerwall Site Now +- Powerwall Load Now +- Powerwall Battery Now +- Powerwall Frequency Now (if applicable) +- Powerwall Busway Now (if applicable) +- Powerwall Solar Now (if applicable) +- Powerwall Generator Now (if applicable) diff --git a/source/_integrations/prezzibenzina.markdown b/source/_integrations/prezzibenzina.markdown index 44527d1fd045..31dcd8c7f33b 100644 --- a/source/_integrations/prezzibenzina.markdown +++ b/source/_integrations/prezzibenzina.markdown @@ -1,11 +1,11 @@ --- -title: "PrezziBenzina Sensor" -description: "Instructions on how to integrate PrezziBenzina sensors within Home Assistant." -logo: prezzibenzina.png +title: Prezzi Benzina +description: Instructions on how to integrate PrezziBenzina sensors within Home Assistant. ha_category: - Energy ha_release: 0.85 ha_iot_class: Cloud Polling +ha_domain: prezzibenzina --- The `prezzibenzina` platform allows you to monitor the fuel prices with [PrezziBenzina.it](https://www.prezzibenzina.it/) from within Home Assistant and setup automations based on the information. diff --git a/source/_integrations/proliphix.markdown b/source/_integrations/proliphix.markdown index 999d30647d91..f9dcdd602a04 100644 --- a/source/_integrations/proliphix.markdown +++ b/source/_integrations/proliphix.markdown @@ -1,14 +1,14 @@ --- -title: "Proliphix Thermostat" -description: "Instructions on how to integrate Proliphix thermostats within Home Assistant." +title: Proliphix +description: Instructions on how to integrate Proliphix thermostats within Home Assistant. logo: proliphix.png ha_category: - Climate ha_release: 0.11 ha_iot_class: Local Polling +ha_domain: proliphix --- - The `proliphix` climate platform let you control [Proliphix](http://www.proliphix.com) thermostat from Home Assistant. Currently supported and tested thermostats: diff --git a/source/_integrations/prometheus.markdown b/source/_integrations/prometheus.markdown index 95157c7c4506..cc07f73ff6cf 100644 --- a/source/_integrations/prometheus.markdown +++ b/source/_integrations/prometheus.markdown @@ -1,10 +1,10 @@ --- -title: "Prometheus" -description: "Record events in Prometheus." -logo: prometheus.png +title: Prometheus +description: Record events in Prometheus. ha_category: - History ha_release: 0.49 +ha_domain: prometheus --- The `prometheus` integration exposes metrics in a format which [Prometheus](https://prometheus.io/) can read. diff --git a/source/_integrations/prowl.markdown b/source/_integrations/prowl.markdown index 6f22cfb02bb9..fd567c9221cf 100644 --- a/source/_integrations/prowl.markdown +++ b/source/_integrations/prowl.markdown @@ -1,10 +1,10 @@ --- -title: "Prowl" -description: "Instructions on how to add Prowl notifications to Home Assistant." -logo: prowl.png +title: Prowl +description: Instructions on how to add Prowl notifications to Home Assistant. ha_category: - Notifications ha_release: 0.52 +ha_domain: prowl --- The `prowl` platform uses [Prowl](https://www.prowlapp.com/) to deliver push notifications from Home Assistant to your iOS device. diff --git a/source/_integrations/proximity.markdown b/source/_integrations/proximity.markdown index 41ab3fe76e9f..f60bada2fe3b 100644 --- a/source/_integrations/proximity.markdown +++ b/source/_integrations/proximity.markdown @@ -1,11 +1,11 @@ --- -title: "Proximity" -description: "Instructions on how to setup Proximity monitoring within Home Assistant." -logo: home-assistant.png +title: Proximity +description: Instructions on how to setup Proximity monitoring within Home Assistant. ha_category: - Automation ha_release: 0.13 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: proximity --- The `proximity` integration allows you to monitor the proximity of devices to a particular [zone](/integrations/zone/) and the direction of travel. The result is an entity created in Home Assistant which maintains the proximity data. diff --git a/source/_integrations/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown new file mode 100644 index 000000000000..f65b274ec56d --- /dev/null +++ b/source/_integrations/proxmoxve.markdown @@ -0,0 +1,144 @@ +--- +title: Proxmox VE +description: Access your ProxmoxVE instance in Home Assistant. +ha_category: + - Binary Sensor +ha_release: 0.103 +ha_iot_class: Local Polling +ha_codeowners: + - '@k4ds3' +ha_domain: proxmoxve +--- + +[Proxmox VE](https://www.proxmox.com/en/) is an open-source server virtualization environment. This integration allows you to poll various data from your instance. + +After configuring this component, the binary sensors automatically appear. + +## Configuration + +
    +You should have at least one VM or container entry configured, else this integration won't do anything. +
    + +To use the `proxmoxve` component, add the following configuration to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +proxmoxve: + - host: IP_ADDRESS + username: USERNAME + password: PASSWORD + nodes: + - node: NODE_NAME + vms: + - VM_ID + containers: + - CONTAINER_ID +``` + +{% configuration %} +host: + description: IP address of the Proxmox VE instance. + required: true + type: string +port: + description: The port number on which Proxmox VE is running. + required: false + default: 8006 + type: integer +verify_ssl: + description: Whether to do strict validation on SSL certificates. If you use a self signed SSL certificate you need to set this to false. + required: false + default: true + type: boolean +username: + description: The username used to authenticate. + required: true + type: string +password: + description: The password used to authenticate. + required: true + type: string +realm: + description: The authentication realm of the user. + required: false + default: pam + type: string +nodes: + description: List of the Proxmox VE nodes to monitor. + required: true + type: map + keys: + node: + description: Name of the node + required: true + type: string + vms: + description: List of the QEMU VMs to monitor. + required: false + type: list + containers: + description: List of the LXC containers to monitor. + required: false + type: list +{% endconfiguration %} + +Example with multiple VMs and no containers: + +```yaml +proxmoxve: + - host: IP_ADDRESS + username: USERNAME + password: PASSWORD + nodes: + - node: NODE_NAME + vms: + - VM_ID_1 + - VM_ID_2 +``` + +## Binary Sensor + +The integration will automatically create a binary sensor for each tracked virtual machine or container. The binary sensor will either be on if the VM's state is running or off if the VM's state is different. + +The created sensor will be called `binary_sensor.NODE_NAME_VMNAME_running`. + +## Proxmox Permissions + +To be able to retrieve the status of VMs and containers, the user used to connect must minimally have the `VM.Audit` privilege. Below is a guide to how to configure a new user with the minimum required permissions. + +### Create Home Assistant Role + +Before creating the user, we need to create a permissions role for the user. + +* Click `Datacenter` +* Open `Permissions` and click `Roles` +* Click the `Create` button above all the existing roles +* name the new role (e.g., "home-assistant") +* Click the arrow next to privileges and select `VM.Audit` in the dropdown +* Click `Create` + +### Create Home Assistant User + +Creating a dedicated user for Home Assistant, limited to only the role just created is the most secure method. These instructions use the `pve` realm for the user. This allows a connection, but ensures that the user is not authenticated for SSH connections. If you use the `pve` realm, just be sure to add `realm: pve` to your configuration. + +* Click `Datacenter` +* Open `Permissions` and click `Users` +* Click `Add` +* Enter a username (e.g., "hass") +* Enter a secure password (it can be complex as you will only need to copy/paste it into your Home Assistant configuration) +* Set the realm to "Proxmox VE authentication server" +* Ensure `Enabled` is checked and `Expire` is set to "never" +* Click `Add` + +### Add User Permissions to Assets + +To apply the user and role just created, we need to give it permissions + +* Click `Datacenter` +* Click `Permissions` +* Open `Add` and click `User Permission` +* Select "\" for the path +* Select your Home Assistant user (`hass`) +* Select the Home Assistant role (`home-assistant`) +* Make sure `Propigate` is checked diff --git a/source/_integrations/proxy.markdown b/source/_integrations/proxy.markdown index 52e2da8b2a93..72833db12a7d 100644 --- a/source/_integrations/proxy.markdown +++ b/source/_integrations/proxy.markdown @@ -1,9 +1,10 @@ --- -title: "Camera Proxy" -description: "Instructions on how to integrate a camera proxy within Home Assistant." +title: Camera Proxy +description: Instructions on how to integrate a camera proxy within Home Assistant. ha_category: - Camera ha_release: 0.65 +ha_domain: proxy --- The `proxy` camera platform allows you to pass another camera's output through post-processing routines and generate a new camera with the post-processed output. diff --git a/source/_integrations/ps4.markdown b/source/_integrations/ps4.markdown index 2e11d10cd3a3..3ee83d4c6ee3 100644 --- a/source/_integrations/ps4.markdown +++ b/source/_integrations/ps4.markdown @@ -1,12 +1,15 @@ --- -title: "Sony PlayStation 4" -description: "Instructions on how to integrate a Sony PlayStation 4 into Home Assistant." +title: Sony PlayStation 4 +description: Instructions on how to integrate a Sony PlayStation 4 into Home Assistant. logo: ps4.png ha_category: - Media Player ha_release: 0.89 ha_config_flow: true ha_iot_class: Local Polling +ha_codeowners: + - '@ktnrg45' +ha_domain: ps4 --- The `ps4` integration allows you to control a @@ -37,14 +40,14 @@ The `ps4` integration allows you to control a The PlayStation 4 integration requires the use of privileged ports to work correctly, specifically UDP port 987 and TCP port 997. Depending on your OS of your Home Assistant instance, you may need to allow usage of privileged ports manually.
    - Do not run your Home Assistant instance itself as root or with root/sudo privileges to accomplish this. This would create a security risk for your host system. + Do not run your Home Assistant Core instance itself as root or with root/sudo privileges to accomplish this. This would create a security risk for your host system.
    There are varying methods to perform this, dependent on your OS that is running Home Assistant. Specifically, your *Python Interpreter*, which runs your Home Assistant instance, needs access to the mentioned ports.
    -If your Home Assistant device is running **Hass.io** on **HassOS**, it does not require additional configuration. +Additional configuration is only required for Home Assistant Core users **not** running on Docker.
    @@ -86,7 +89,7 @@ To find your system Python path: whereis python3.5.3 ``` - The output which has the directory `/bin/` is likely your system python path which should look like this `/usr/bin/python3.5` + The output which has the directory `/bin/` is likely your system Python path which should look like this `/usr/bin/python3.5` - If Home Assistant is installed in a virtual environment, use terminal to `cd` to the root/top directory of your environment and run: @@ -163,7 +166,7 @@ When the integration retrieves data from the PlayStation Store, it stores it in | ----- | ----- | ----------- | | `locked` | boolean | Must be `true` or `false` | `media_content_type` | string | Must be `game` or `app` -| `media_image_url` | string | Any valid url for an image +| `media_image_url` | string | Any valid URL for an image | `media_title` | string | The title of the game or app The data in the example shows 2 entries. @@ -203,16 +206,17 @@ Emulate button press on PlayStation 4. This emulates the commands available for Full list of supported commands. -| Command | Button Emulated | -| -------- | ---------------- | -| `ps` | PS (PlayStation) | -| `option` | Option | -| `enter` | Enter | -| `back` | Back | -| `up` | Swipe Up | -| `down` | Swipe Down | -| `left` | Swipe Left | -| `right` | Swipe Right | +| Command | Button Emulated | +| --------- | ------------------ | +| `ps` | PS (PlayStation) | +| `ps_hold` | PS Hold/Long Press | +| `option` | Option | +| `enter` | Enter | +| `back` | Back | +| `up` | Swipe Up | +| `down` | Swipe Down | +| `left` | Swipe Left | +| `right` | Swipe Right | ## Troubleshooting diff --git a/source/_integrations/ptvsd.markdown b/source/_integrations/ptvsd.markdown index 34f5fb952949..47c38940df46 100644 --- a/source/_integrations/ptvsd.markdown +++ b/source/_integrations/ptvsd.markdown @@ -1,10 +1,12 @@ --- -title: "PTVSD Debugger (Visual Studio Code)" -description: "Debugging from Visual Studio Code." -logo: visual-studio.png -ha_category: +title: PTVSD - Python Tools for Visual Studio Debug Server +description: Debugging from Visual Studio Code. +ha_category: - Utility ha_release: 0.93 +ha_codeowners: + - '@swamp-ig' +ha_domain: ptvsd --- The `ptvsd` integration allows you to use the Visual Studio Code PTVSD debugger with Home Assistant. @@ -32,7 +34,7 @@ port: default: 5678 type: integer wait: - description: If true, wait for the debugger to connect before starting up home assistant. + description: If true, wait for the debugger to connect before starting up Home Assistant. required: false default: false type: boolean @@ -40,9 +42,9 @@ wait: ### Security -Ensure if this is a public-facing server, that the port is secured. Anyone who is able to access the debugger port can *execute arbitrary code* on the home assistant server, which is very unsafe. +Ensure if this is a public-facing server, that the port is secured. Anyone who is able to access the debugger port can *execute arbitrary code* on the Home Assistant server, which is very unsafe. -If the home assistant server is behind your firewall with only the http(s) port exposed, then this is safe from outside connections. +If the Home Assistant server is behind your firewall with only the http(s) port exposed, then this is safe from outside connections. Another way of securing the port is to set `host` to localhost and have a secured SSH TCP tunnel with a client certificate for access from the outside internet. diff --git a/source/_integrations/pulseaudio_loopback.markdown b/source/_integrations/pulseaudio_loopback.markdown index d9c60825bde4..e701ae2f19b4 100644 --- a/source/_integrations/pulseaudio_loopback.markdown +++ b/source/_integrations/pulseaudio_loopback.markdown @@ -1,11 +1,12 @@ --- -title: "PulseAudio Loopback Switch" -description: "Instructions on how to use Pulseaudio loopback modules to build a flexible whole-home audio system." +title: PulseAudio Loopback +description: Instructions on how to use Pulseaudio loopback modules to build a flexible whole-home audio system. logo: pulseaudio.png ha_category: - Switch ha_release: 0.16 ha_iot_class: Local Polling +ha_domain: pulseaudio_loopback --- The goal behind this switch is to allow a very flexible whole home audio system based upon [PulseAudio](https://www.freedesktop.org/wiki/Software/PulseAudio/). diff --git a/source/_integrations/push.markdown b/source/_integrations/push.markdown index 141d4029c82a..bbf552209fae 100644 --- a/source/_integrations/push.markdown +++ b/source/_integrations/push.markdown @@ -1,11 +1,13 @@ --- -title: "Push" -description: "Instructions how to use Push Camera within Home Assistant." -logo: camcorder.png +title: Push +description: Instructions how to use Push Camera within Home Assistant. ha_category: - Camera ha_iot_class: Local Push ha_release: 0.74 +ha_codeowners: + - '@dgomes' +ha_domain: push --- The `push` camera platform allows you to integrate images sent over HTTP POST to Home Assistant as a camera. External applications/daemons/scripts are therefore able to "stream" images through Home Assistant. diff --git a/source/_integrations/pushbullet.markdown b/source/_integrations/pushbullet.markdown index 19b8cf9f1919..1d376eb6028f 100644 --- a/source/_integrations/pushbullet.markdown +++ b/source/_integrations/pushbullet.markdown @@ -1,12 +1,12 @@ --- -title: "Pushbullet Mirrors" -description: "Instructions on how to read user pushes in Home Assistant" -logo: pushbullet.png +title: Pushbullet +description: Instructions on how to read user pushes in Home Assistant ha_category: - Sensor - Notifications ha_release: 0.44 ha_iot_class: Cloud Polling +ha_domain: pushbullet --- There is currently support for the following device types within Home Assistant: @@ -113,20 +113,21 @@ Type | Prefix | Suffix | Example Device | `device/` | Device nickname | `device/iphone` Channel | `channel/` | Channel tag | `channel/my_home` Email | `email/` | Contact's email address | `email/email@example.com` +SMS | `sms/` | Contact's phone number | `sms/0612345678` If using targets, your own account's email address functions as 'send to all devices'. All targets are verified (if exists) before sending, except email. #### Example service payload -```json -{ - "message": "A message for many people", - "target": [ - "device/telephone", - "email/hello@example.com", - "channel/my_home" - ] -} +```yaml + + message: A message for many people + target: + - device/telephone + - email/hello@example.com + - channel/my_home + - sms/0612345678 + ``` To use notifications, please see the [getting started with automation page](/getting-started/automation/). @@ -143,7 +144,7 @@ action: url: google.com ``` -- **url** (*Required*): Page URL to send with Pushbullet. +- `url` (*Required*): Page URL to send with Pushbullet. ### File support @@ -157,7 +158,7 @@ action: file: /path/to/my/file ``` -- **file** (*Required*): File to send with Pushbullet. +- `file` (*Required*): File to send with Pushbullet. ### File URL support @@ -171,7 +172,7 @@ action: file_url: https://cdn.pixabay.com/photo/2014/06/03/19/38/test-361512_960_720.jpg ``` -- **file_url** (*Required*): File to send with Pushbullet. +- `file_url` (*Required*): File to send with Pushbullet. ### Single target @@ -184,7 +185,7 @@ action: target: device/DEVICE_NAME ``` -- **target**: Pushbullet device to receive the notification. +- `target`: Pushbullet device to receive the notification.
    diff --git a/source/_integrations/pushetta.markdown b/source/_integrations/pushetta.markdown index 086f1e527b9e..05ead757fc53 100644 --- a/source/_integrations/pushetta.markdown +++ b/source/_integrations/pushetta.markdown @@ -1,10 +1,10 @@ --- -title: "Pushetta" -description: "Instructions on how to add Pushetta notifications to Home Assistant." -logo: pushetta.png +title: Pushetta +description: Instructions on how to add Pushetta notifications to Home Assistant. ha_category: - Notifications ha_release: pre 0.7 +ha_domain: pushetta --- The `pushetta` notify platform uses [Pushetta](http://www.pushetta.com) to delivery notifications from Home Assistant to your devices. @@ -43,7 +43,7 @@ send_test_msg: type: boolean {% endconfiguration %} -It's easy to test your Pushetta setup outside of Home Assistant. Assuming you have a channel *home-assistant*, just fire a request and check the channel page in the dashboard for a new message. +It's easy to test your Pushetta setup outside of Home Assistant. Assuming you have a channel `home-assistant`, just fire a request and check the channel page in the dashboard for a new message. ```bash curl -X POST \ diff --git a/source/_integrations/pushover.markdown b/source/_integrations/pushover.markdown index 28e602f3002f..4581aeca170e 100644 --- a/source/_integrations/pushover.markdown +++ b/source/_integrations/pushover.markdown @@ -1,10 +1,10 @@ --- -title: "Pushover" -description: "Instructions on how to add Pushover notifications to Home Assistant." -logo: pushover.png +title: Pushover +description: Instructions on how to add Pushover notifications to Home Assistant. ha_category: - Notifications ha_release: pre 0.7 +ha_domain: pushover --- The [Pushover service](https://pushover.net/) is a platform for the notify component. This allows integrations to send messages to the user using Pushover. diff --git a/source/_integrations/pushsafer.markdown b/source/_integrations/pushsafer.markdown index 3fcbe2239b72..ac7a4a7f0702 100644 --- a/source/_integrations/pushsafer.markdown +++ b/source/_integrations/pushsafer.markdown @@ -1,10 +1,11 @@ --- -title: "Pushsafer" -description: "Instructions on how to add Pushsafer notifications to Home Assistant." +title: Pushsafer +description: Instructions on how to add Pushsafer notifications to Home Assistant. logo: pushsafer.png ha_category: - Notifications ha_release: 0.39 +ha_domain: pushsafer --- The [Pushsafer service](https://www.pushsafer.com/) is a platform for the notify component. This allows you to send messages to the user using Pushsafer. diff --git a/source/_integrations/pvoutput.markdown b/source/_integrations/pvoutput.markdown index 7aec4695b7b0..ee8aaaa99297 100644 --- a/source/_integrations/pvoutput.markdown +++ b/source/_integrations/pvoutput.markdown @@ -1,11 +1,14 @@ --- -title: "PVOutput Sensor" -description: "Instructions on how to use PVOutput within Home Assistant." +title: PVOutput +description: Instructions on how to use PVOutput within Home Assistant. logo: pvoutput.png ha_category: - Energy ha_release: 0.33 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' +ha_domain: pvoutput --- The `pvoutput` sensor platform consumes information from [PVOutput](https://pvoutput.org/) which were uploaded by your solar photovoltaic (PV) system. @@ -45,6 +48,8 @@ It's recommended to set `scan_interval:` according to a value greater than 60 se To format the PVoutput sensor it's recommended to use the [template component](/topics/templating/). For example: +{% raw %} + ```yaml sensor: - platform: pvoutput @@ -54,19 +59,21 @@ sensor: - platform: template sensors: power_consumption: - value_template: {% raw %}'{% if is_state_attr("sensor.pvoutput", "power_consumption", "NaN") %}0{% else %}{{ state_attr('sensor.pvoutput', 'power_consumption') }}{% endif %}'{% endraw %} + value_template: '{% if is_state_attr("sensor.pvoutput", "power_consumption", "NaN") %}0{% else %}{{ state_attr("sensor.pvoutput", "power_consumption") }}{% endif %}' friendly_name: 'Using' unit_of_measurement: 'Watt' energy_consumption: - value_template: {% raw %}'{{ "%0.1f"|format(state_attr('sensor.pvoutput', 'energy_consumption')|float/1000) }}'{% endraw %} + value_template: '{{ "%0.1f"|format(state_attr("sensor.pvoutput", "energy_consumption")|float/1000) }}' friendly_name: 'Used' unit_of_measurement: 'kWh' power_generation: - value_template: {% raw %}'{% if is_state_attr("sensor.pvoutput", "power_generation", "NaN") %}0{% else %}{{ state_attr('sensor.pvoutput', 'power_generation') }}{% endif %}'{% endraw %} + value_template: '{% if is_state_attr("sensor.pvoutput", "power_generation", "NaN") %}0{% else %}{{ state_attr("sensor.pvoutput", "power_generation") }}{% endif %}' friendly_name: 'Generating' unit_of_measurement: 'Watt' energy_generation: - value_template: {% raw %}'{% if is_state_attr("sensor.pvoutput", "energy_generation", "NaN") %}0{% else %}{{ "%0.2f"|format(state_attr('sensor.pvoutput', 'energy_generation')|float/1000) }}{% endif %}'{% endraw %} + value_template: '{% if is_state_attr("sensor.pvoutput", "energy_generation", "NaN") %}0{% else %}{{ "%0.2f"|format(state_attr("sensor.pvoutput", "energy_generation")|float/1000) }}{% endif %}' friendly_name: 'Generated' unit_of_measurement: 'kWh' ``` + +{% endraw %} diff --git a/source/_integrations/pvpc_hourly_pricing.markdown b/source/_integrations/pvpc_hourly_pricing.markdown new file mode 100644 index 000000000000..c9caf550bde3 --- /dev/null +++ b/source/_integrations/pvpc_hourly_pricing.markdown @@ -0,0 +1,82 @@ +--- +title: PVPC Hourly Pricing +description: Instructions on how to set up the PVPC Hourly Pricing sensor in Home Assistant. +ha_category: + - Energy +ha_release: '0.108' +ha_iot_class: Cloud Polling +ha_quality_scale: platinum +ha_config_flow: true +ha_codeowners: + - '@azogue' +ha_domain: pvpc_hourly_pricing +--- + +This sensor uses the official API to get the hourly price of electricity in Spain from https://www.esios.ree.es/en/pvpc. + +Specifically, it shows the current __active energy invoicing price (FEU)__ in €/kWh, +which is the energy term hourly price applied in the consumers' electrical bill +with a contracted power not exceeding 10 kW and which are under the PVPC +(Voluntary Price for Small Consumer). + +It includes the energy term of the access tolls, the charges and the production cost. It does not include taxes. +The hourly prices are the same throughout the Spanish territory regardless of the time zone. + +It can be set up via the integrations panel in the configuration screen. + + + +More information available at http://www.cnmc.es/en/ and http://www.omie.es/en/ + +## Configuration + +To configure PVPC Hourly Pricing, you can set it up via the integrations panel in the configuration screen. + +Set a name for the price sensor (default is `sensor.pvpc`) and select one of the three tariffs, +corresponding to your contracted rate, according to the number of billing periods per day +(one / peak + valley / shifted peak + valley). + +- 1 period: `normal`, for the "Default PVPC tariff, (2.0 A)". +- 2 periods: `discrimination`, for the "Efficiency 2 periods (2.0 DHA)", with 10h peak interval from 11:00 UTC to 21:00 UTC. +- 3 periods: `electric_car`, for the "Electric vehicle tariff (2.0 DHS)", optimized for electric car owners to charge at night. + +The default is `discrimination`, with 2 periods, as it is usually the cheapest one for home consumers. + +You can add multiple sensors (up to 3, one per tariff) by adding them again through the integrations panel. + +### Advanced configuration + +PVPC Hourly Pricing allows manual configuration by adding a section to your `configuration.yaml`. + +```yaml +# Set up electricity price sensors as a component: +pvpc_hourly_pricing: + - name: PVPC manual ve + tariff: electric_car + - name: PVPC manual nocturna + tariff: discrimination +``` + +{% configuration %} +name: + description: Custom name for the sensor. + required: true + type: string +tariff: + description: Contracted electric tariff. + required: true + default: discrimination + type: string +{% endconfiguration %} + + +
    + +The sensor provides an hourly price for energy consumed, but the variable cost of energy is only one of the factors that add up to the electricity bill: +* Fixed cost of contracted power +* Fixed cost of energy consumed +* Variable cost of energy consumed (the sensor's value) +* Other fixed expenses, such as the rental of the electric meter +* Multiple taxes applied + +
    diff --git a/source/_integrations/pyload.markdown b/source/_integrations/pyload.markdown index 6094fbb7816d..26a954af5833 100644 --- a/source/_integrations/pyload.markdown +++ b/source/_integrations/pyload.markdown @@ -1,11 +1,11 @@ --- -title: "pyLoad Sensor" -description: "Instructions on how to integrate pyLoad download sensor within Home Assistant." -logo: pyload.png +title: pyLoad +description: Instructions on how to integrate pyLoad download sensor within Home Assistant. ha_category: - Downloading ha_release: 0.58 ha_iot_class: Local Polling +ha_domain: pyload --- The `pyload` platform allows you to monitor your downloads with [pyLoad](https://pyload.net/) from within Home Assistant and setup automation based on the information. diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown index e3c141019199..3e9312a96197 100644 --- a/source/_integrations/python_script.markdown +++ b/source/_integrations/python_script.markdown @@ -1,11 +1,11 @@ --- -title: "Python Scripts" -description: "Instructions on how to setup Python scripts within Home Assistant." -logo: home-assistant.png +title: Python Scripts +description: Instructions on how to setup Python scripts within Home Assistant. ha_category: - Automation ha_release: 0.47 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: python_script --- This integration allows you to write Python scripts that are exposed as services in Home Assistant. Each Python file created in the `/python_scripts/` folder will be exposed as a service. The content is not cached so you can easily develop: edit file, save changes, call service. The scripts are run in a sandboxed environment. The following variables are available in the sandbox: @@ -32,9 +32,9 @@ It is not possible to use Python imports with this integration. If you want to d - Create a file `hello_world.py` in the folder and give it this content: ```python -name = data.get('name', 'world') -logger.info("Hello {}".format(name)) -hass.bus.fire(name, { "wow": "from a Python script!" }) +name = data.get("name", "world") +logger.info("Hello %s", name) +hass.bus.fire(name, {"wow": "from a Python script!"}) ``` - Start Home Assistant @@ -44,23 +44,31 @@ hass.bus.fire(name, { "wow": "from a Python script!" }) name: you ``` +
    + +Running this script show absolutely no output on the screen, but it logs with level `info`. You must have the [Logger](/integrations/logger/) enabled at least for level `info`. + +
    + ## Calling Services The following example shows how to call a service from `python_script`. This script takes two parameters: `entity_id` (required), `rgb_color` (optional) and calls `light.turn_on` service by setting the brightness value to `255`. ```python # turn_on_light.py -entity_id = data.get('entity_id') -rgb_color = data.get('rgb_color', [255, 255, 255]) +entity_id = data.get("entity_id") +rgb_color = data.get("rgb_color", [255, 255, 255]) if entity_id is not None: - service_data = {'entity_id': entity_id, 'rgb_color': rgb_color, 'brightness': 255 } - hass.services.call('light', 'turn_on', service_data, False) + service_data = {"entity_id": entity_id, "rgb_color": rgb_color, "brightness": 255} + hass.services.call("light", "turn_on", service_data, False) ``` -The above `python_script` can be called using the following JSON as an input. +The above `python_script` can be called using the following YAML as an input. ```yaml -entity_id: light.bedroom -rgb_color: [255, 0, 0] +service: python_script.turn_on_light + data: + entity_id: light.bedroom + rgb_color: [255, 0, 0] ``` ## Documenting your Python scripts diff --git a/source/_integrations/qbittorrent.markdown b/source/_integrations/qbittorrent.markdown index d1034466e88e..b0d96a502afb 100644 --- a/source/_integrations/qbittorrent.markdown +++ b/source/_integrations/qbittorrent.markdown @@ -1,11 +1,11 @@ --- -title: "qBittorrent Sensor" -description: "Instructions on how to integrate qBittorrent sensors within Home Assistant." -logo: qbittorrent.png +title: qBittorrent +description: Instructions on how to integrate qBittorrent sensors within Home Assistant. ha_category: - Downloading ha_release: 0.84 ha_iot_class: Local Polling +ha_domain: qbittorrent --- The `qbittorrent` platform allows you to monitor your downloads with [qBittorrent](https://www.qbittorrent.org/) from within Home Assistant and setup automations based on the information. diff --git a/source/_integrations/qld_bushfire.markdown b/source/_integrations/qld_bushfire.markdown index 2d3f2fb2fcf2..801ce5629fda 100644 --- a/source/_integrations/qld_bushfire.markdown +++ b/source/_integrations/qld_bushfire.markdown @@ -1,10 +1,13 @@ --- -title: "Queensland Bushfire Alert" -description: "Instructions on how to integrate the Queensland Bushfire Alert feed into Home Assistant." +title: Queensland Bushfire Alert +description: Instructions on how to integrate the Queensland Bushfire Alert feed into Home Assistant. logo: geo_location.png ha_category: Geolocation ha_iot_class: Cloud Polling ha_release: 0.95 +ha_codeowners: + - '@exxamalte' +ha_domain: qld_bushfire --- The `qld_bushfire` platform lets you integrate a diff --git a/source/_integrations/qnap.markdown b/source/_integrations/qnap.markdown index 8231fb8a2598..2700ee6061ef 100644 --- a/source/_integrations/qnap.markdown +++ b/source/_integrations/qnap.markdown @@ -1,11 +1,14 @@ --- -title: "QNAP Sensor" -description: "Instructions on how to integrate the QNAP sensor within Home Assistant." +title: QNAP +description: Instructions on how to integrate the QNAP sensor within Home Assistant. logo: qnap.png ha_category: - System Monitor ha_release: 0.38 ha_iot_class: Local Polling +ha_codeowners: + - '@colinodell' +ha_domain: qnap --- This `qnap` sensor allows getting various statistics from your [QNAP NAS](https://www.qnap.com/en-us/). diff --git a/source/_integrations/qrcode.markdown b/source/_integrations/qrcode.markdown index 1ca078276faf..c5315c4c7968 100644 --- a/source/_integrations/qrcode.markdown +++ b/source/_integrations/qrcode.markdown @@ -1,10 +1,10 @@ --- -title: "QR Code Recognition" -description: "Instructions on how to integrate QR Code Recognition into Home Assistant." -logo: home-assistant.png +title: QR Code +description: Instructions on how to integrate QR Code Recognition into Home Assistant. ha_category: - Image Processing ha_release: 0.87 +ha_domain: qrcode --- The `qrcode` image processing platform enables QR code recognition from cameras. diff --git a/source/_integrations/quantum_gateway.markdown b/source/_integrations/quantum_gateway.markdown index c651df989991..09ddb63a7634 100644 --- a/source/_integrations/quantum_gateway.markdown +++ b/source/_integrations/quantum_gateway.markdown @@ -1,10 +1,12 @@ --- -title: "Quantum Gateway" -description: "Instructions on how to integrate Quantum Gateways into Home Assistant." +title: Quantum Gateway +description: Instructions on how to integrate Quantum Gateways into Home Assistant. ha_category: - Presence Detection -logo: fios.svg ha_release: 0.81 +ha_codeowners: + - '@cisasteelersfan' +ha_domain: quantum_gateway --- The `quantum_gateway` device tracker platform offers presence detection by looking at connected devices to a Verizon Fios gateway. diff --git a/source/_integrations/qvr_pro.markdown b/source/_integrations/qvr_pro.markdown new file mode 100644 index 000000000000..567fe1ce963f --- /dev/null +++ b/source/_integrations/qvr_pro.markdown @@ -0,0 +1,61 @@ +--- +title: QVR Pro +description: Instructions on how to integrate QVR Pro within Home Assistant. +logo: qvr_pro.png +ha_category: + - Camera +ha_release: 0.107 +ha_domain: qvr_pro +ha_codeowners: + - '@oblogic7' +--- + +[QVR Pro](https://www.qnap.com/solution/qvr-pro-official) allows you to create +an independent and expandable surveillance environment on your QNAP NAS. The +`qvr_pro` component allows you to view your QVR Pro channels in Home Assistant. + +Currently, only cameras are supported by this integration. + +## Configuration + +To enable QVR Pro integration, add the following to your +`configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +qvr_pro: + host: YOUR_HOST + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +host: + description: The IP address where QVR Pro is accessible. + required: true + type: string +username: + description: The username for accessing your QVR account. + required: true + type: string +password: + description: The password for accessing your QVR account. + required: true + type: string +port: + description: The port where QVR accepts connections. + required: false + type: integer +exclude_channels: + description: Comma separated list of channel numbers to be excluded. + required: false + type: list +{% endconfiguration %} + +Enabling the QVR Pro camera platform will add all QVR Pro channels by +default. Please see `exclude_channels` if you would like to exclude +specific channels from showing up in Home Assistant. + +

    +The QVR Pro user must have Surveillance Management permission. +

    diff --git a/source/_integrations/qwikswitch.markdown b/source/_integrations/qwikswitch.markdown index f243a567de04..aadfc1c54f9c 100644 --- a/source/_integrations/qwikswitch.markdown +++ b/source/_integrations/qwikswitch.markdown @@ -1,6 +1,6 @@ --- -title: "QwikSwitch QSUSB Hub" -description: "Instructions on how to integrate the QwikSwitch QSUSB Hub into Home Assistant." +title: QwikSwitch QSUSB +description: Instructions on how to integrate the QwikSwitch QSUSB Hub into Home Assistant. logo: qwikswitch.png ha_category: - Hub @@ -8,7 +8,10 @@ ha_category: - Light - Sensor - Switch -ha_release: "0.20" +ha_release: '0.20' +ha_codeowners: + - '@kellerza' +ha_domain: qwikswitch --- The `qwikswitch` integration is the main integration to integrate various [QwikSwitch](https://www.qwikswitch.co.za/) devices with Home Assistant. The integration requires the QSUSB Modem device and connects to the QS Mobile application. @@ -46,7 +49,7 @@ button_events: default: TOGGLE,SCENE EXE,LEVEL type: string switches: - description: A list of device QS_id's that should be switches, and not lights (i.e. `['@0dev01', '@0dev02']`) + description: A list of device QS_id's that should be switches, and not lights (i.e., `['@0dev01', '@0dev02']`) required: false type: list sensors: diff --git a/source/_integrations/rachio.markdown b/source/_integrations/rachio.markdown index b590233f330f..9e9fa0b5d8e6 100644 --- a/source/_integrations/rachio.markdown +++ b/source/_integrations/rachio.markdown @@ -1,6 +1,6 @@ --- -title: "Rachio" -description: "Instructions on how to use Rachio with Home Assistant." +title: Rachio +description: Instructions on how to use Rachio with Home Assistant. logo: rachio.png ha_category: - Irrigation @@ -8,6 +8,7 @@ ha_category: - Switch ha_iot_class: Cloud Push ha_release: 0.73 +ha_domain: rachio --- The `rachio` platform allows you to control your [Rachio irrigation system](https://rachio.com/). @@ -28,7 +29,9 @@ They will be automatically added if the Rachio integration integration is loaded ## Configuration -To add this platform to your installation, add the following to your `configuration.yaml` file: +To add `Rachio` go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Rachio**. + +Alternatively, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/radarr.markdown b/source/_integrations/radarr.markdown index ca67ea7290c2..aca49c1bac86 100644 --- a/source/_integrations/radarr.markdown +++ b/source/_integrations/radarr.markdown @@ -1,10 +1,10 @@ --- -title: "Radarr Sensor" -description: "Instructions on how to integrate Radarr sensors with Home Assistant" -logo: radarr.png +title: Radarr +description: Instructions on how to integrate Radarr sensors with Home Assistant ha_category: - Downloading ha_release: 0.47 +ha_domain: radarr --- This `radarr` sensor platform pulls data from a given [Radarr](https://radarr.video/) instance. @@ -95,7 +95,7 @@ sensor: ### Enable SSL -SSL may run on a different port than the default (7878). The SSL port can be bound to any port in Radarr, so it should be set in the config here (unless it is changed to 7878). +SSL may run on a different port than the default (7878). The SSL port can be bound to any port in Radarr, so it should be set in the configuration here (unless it is changed to 7878). ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/radiotherm.markdown b/source/_integrations/radiotherm.markdown index a699c3314237..3623c7fb3fb5 100644 --- a/source/_integrations/radiotherm.markdown +++ b/source/_integrations/radiotherm.markdown @@ -1,11 +1,12 @@ --- -title: "Radio Thermostat (3M Filtrete) Thermostat" -description: "Instructions on how to integrate Radio Thermostat (3M Filtrete) thermostats within Home Assistant." +title: Radio Thermostat +description: Instructions on how to integrate Radio Thermostat (3M Filtrete) thermostats within Home Assistant. logo: radiotherm.png ha_category: - Climate ha_iot_class: Local Polling ha_release: 0.7.6 +ha_domain: radiotherm --- The `radiotherm` climate platform let you control a thermostat from [Radio Thermostat](https://www.radiothermostat.com/) or [3M Filtrete](https://www.filtrete.com/). Your thermostat must have the Wi-Fi module installed and connected to your network. @@ -58,4 +59,4 @@ climate: - 192.168.99.137 - 192.168.99.202 ``` -Humidity is now available as the `current_humidity` attribute for each `climate.$HOST` entity. This only works for RadioThermostat devices that have a built in humidity sensor. +Humidity is now available as the `current_humidity` attribute for each `climate.$HOST` entity. This only works for RadioThermostat devices that have a built in humidity sensor. diff --git a/source/_integrations/rainbird.markdown b/source/_integrations/rainbird.markdown index dd240c9c20df..6ed3cbdf4449 100644 --- a/source/_integrations/rainbird.markdown +++ b/source/_integrations/rainbird.markdown @@ -1,6 +1,6 @@ --- -title: "Rain Bird" -description: "Instructions on how to integrate your Rain Bird LNK WiFi Module within Home Assistant." +title: Rain Bird +description: Instructions on how to integrate your Rain Bird LNK WiFi Module within Home Assistant. logo: rainbird.png ha_category: - Irrigation @@ -8,6 +8,9 @@ ha_category: - Switch ha_release: 0.61 ha_iot_class: Local Polling +ha_codeowners: + - '@konikvranik' +ha_domain: rainbird --- This `rainbird` integration allows interacting with [LNK WiFi](https://www.rainbird.com/products/lnk-wifi-module) module of the Rain Bird Irrigation system in Home Assistant. @@ -127,4 +130,4 @@ automation: entity_id: switch.sprinkler_1 data: duration: 5 -``` \ No newline at end of file +``` diff --git a/source/_integrations/raincloud.markdown b/source/_integrations/raincloud.markdown index 804109629a3b..dcb6b3b50635 100644 --- a/source/_integrations/raincloud.markdown +++ b/source/_integrations/raincloud.markdown @@ -1,6 +1,6 @@ --- -title: "Melnor Raincloud" -description: "Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant." +title: Melnor RainCloud +description: Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant. logo: raincloud.jpg ha_category: - Irrigation @@ -9,6 +9,9 @@ ha_category: - Switch ha_release: 0.55 ha_iot_class: Cloud Polling +ha_codeowners: + - '@vanstinator' +ha_domain: raincloud --- The `raincloud` integration allows you to integrate your [Melnor RainCloud](https://wifiaquatimer.com) sprinkler system in Home Assistant. @@ -116,4 +119,4 @@ monitored_conditions: description: Toggle the watering scheduled per zone. manual_watering: description: Toggle manually the watering per zone. It will inherent the value in minutes specified on the RainCloud hub component. -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/rainforest_eagle.markdown b/source/_integrations/rainforest_eagle.markdown index d4b50ec41983..c6ebf9c7ecb9 100644 --- a/source/_integrations/rainforest_eagle.markdown +++ b/source/_integrations/rainforest_eagle.markdown @@ -1,15 +1,19 @@ --- -title: "Rainforest Eagle-200" -description: "Instructions on how to setup the Rainforest Eagle-200 with Home Assistant." -logo: rainforest_automation_logo.png +title: Rainforest Eagle-200 +description: Instructions on how to setup the Rainforest Eagle with Home Assistant. ha_category: - Energy - Sensor ha_release: 0.97 ha_iot_class: Local Polling +ha_codeowners: + - '@gtdiehl' + - '@jcalbert' +ha_domain: rainforest_eagle --- -A `sensor` platform for the [Rainforest Eagle-200](https://rainforestautomation.com/rfa-z114-eagle-200/) energy gateway. +A `sensor` platform for the Rainforest Automation's [Eagle-200](https://rainforestautomation.com/rfa-z114-eagle-200/) +and [Legacy Eagle](https://rainforestautomation.com/support/rfa-z109-eagle-support/) energy gateways. ## Configuration @@ -26,15 +30,15 @@ sensor: {% configuration %} ip_address: - description: The local IP address of your Eagle-200 device. + description: The local IP address of your Eagle device. required: true type: string cloud_id: - description: The Cloud ID that is printed on the bottom of the Eagle-200 + description: The Cloud ID that is printed on the bottom of the Eagle required: true type: string install_code: - description: The Install Code that is printed on the bottom of the Eagle-200 + description: The Install Code that is printed on the bottom of the Eagle required: true type: string {% endconfiguration %} diff --git a/source/_integrations/rainmachine.markdown b/source/_integrations/rainmachine.markdown index c0e4eb1daba2..318391070c42 100644 --- a/source/_integrations/rainmachine.markdown +++ b/source/_integrations/rainmachine.markdown @@ -1,7 +1,6 @@ --- -title: "RainMachine" -description: "Instructions on how to integrate RainMachine units within Home Assistant." -logo: rainmachine.png +title: RainMachine +description: Instructions on how to integrate RainMachine units within Home Assistant. ha_category: - Irrigation - Binary Sensor @@ -9,6 +8,10 @@ ha_category: - Switch ha_release: 0.69 ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@bachya' +ha_domain: rainmachine --- The `rainmachine` integration is the main integration to integrate all platforms related to [RainMachine smart Wi-Fi sprinkler controllers](https://www.rainmachine.com/). @@ -30,21 +33,6 @@ rainmachine: password: YOUR_PASSWORD ``` -To configure additional functionality, add configuration options beneath a `binary_sensor`, `sensor`, and/or `switches` key within the `rainmachine` sections of `configuration.yaml` as below: - -```yaml -rainmachine: - controllers: - - ip_address: 192.168.1.100 - password: YOUR_PASSWORD - binary_sensors: - # binary sensor configuration options... - sensors: - # sensor configuration options... - switches: - # switch configuration options... -``` - {% configuration %} ip_address: description: The IP address or hostname of your RainMachine unit. @@ -69,36 +57,11 @@ scan_interval: required: false type: integer default: 60 -binary_sensors: - description: Binary sensor-related configuration options. - required: false - type: map - keys: - monitored_conditions: - description: The conditions to create sensors from. - required: false - type: list - default: all (`extra_water_on_hot_days`, `flow_sensor`, `freeze`, `freeze_protection`, `hourly`, `month`, `raindelay`, `rainsensor`, `weekday`) -sensors: - description: Sensor-related configuration options. +zone_run_time: + description: The default number of seconds that a zone should run when turned on. required: false - type: map - keys: - monitored_conditions: - description: The conditions to create sensors from. - required: false - type: list - default: all (`flow_sensor_clicks_cubic_meter`, `flow_sensor_consumed_liters`, `flow_sensor_start_index`, `flow_sensor_watering_clicks`,`freeze_protect_temp`) -switches: - description: Switch-related configuration options. - required: false - type: map - keys: - zone_run_time: - description: The default number of seconds that a zone should run when turned on. - required: false - type: integer - default: 600 + type: integer + default: 600 {% endconfiguration %} ## Services diff --git a/source/_integrations/random.markdown b/source/_integrations/random.markdown index f1f69b8bdd09..ef708b1f7a27 100644 --- a/source/_integrations/random.markdown +++ b/source/_integrations/random.markdown @@ -1,14 +1,16 @@ --- -title: "Random" -description: "Instructions on how to integrate random numbers into Home Assistant." -logo: home-assistant.png +title: Random +description: Instructions on how to integrate random numbers into Home Assistant. ha_category: - Utility - Sensor - Binary Sensor ha_iot_class: Local Polling ha_release: 0.32 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: random --- The `random` integration simply creates random values or state. This can be useful if you want to test automation rules or run an interactive demo. It generates a new state every time it is polled. diff --git a/source/_integrations/raspihats.markdown b/source/_integrations/raspihats.markdown index df01e666189b..85f65646b804 100644 --- a/source/_integrations/raspihats.markdown +++ b/source/_integrations/raspihats.markdown @@ -1,6 +1,6 @@ --- -title: "Raspihats" -description: "Instructions on how to integrate Raspihats add-on boards for Raspberry Pi into Home Assistant." +title: Raspihats +description: Instructions on how to integrate Raspihats add-on boards for Raspberry Pi into Home Assistant. logo: raspihats.png ha_category: - DIY @@ -8,6 +8,7 @@ ha_category: - Switch ha_release: 0.45 ha_iot_class: Local Push +ha_domain: raspihats --- The `raspihats` integration is the base for all related Raspihats platforms in Home Assistant. There is no setup needed for the integration itself. @@ -86,7 +87,7 @@ $ sudo raspi-config Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish`. -Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: +Install dependencies for use the `smbus-cffi` module and enable your `homeassistant` user to join the _i2c_ group: ```bash # pi user environment: Install i2c dependencies and utilities @@ -194,7 +195,7 @@ $ sudo raspi-config Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish`. -Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: +Install dependencies for use the `smbus-cffi` module and enable your `homeassistant` user to join the _i2c_ group: ```bash # pi user environment: Install i2c dependencies and utilities diff --git a/source/_integrations/raspyrfm.markdown b/source/_integrations/raspyrfm.markdown index a9d1636fff44..c411791997f7 100644 --- a/source/_integrations/raspyrfm.markdown +++ b/source/_integrations/raspyrfm.markdown @@ -1,11 +1,12 @@ --- -title: "RaspyRFM Switch" -description: "Instructions on how to integrate RaspyRFM switches into Home Assistant." +title: RaspyRFM +description: Instructions on how to integrate RaspyRFM switches into Home Assistant. logo: seegelsysteme.png ha_category: - Switch ha_release: 0.85 ha_iot_class: Assumed State +ha_domain: raspyrfm --- The `raspyrfm` integration adds support for cheap RC 433 MHz outlets via one of the supported gateways. @@ -79,7 +80,7 @@ Have a look at the underlying library [raspyrfm-client](https://github.com/marku ## Channel configuration -Depending on the control unit the channel config can have varying formats. Have a look at the underlying library [raspyrfm-client](https://github.com/markusressel/raspyrfm-client) to find out about a specific model. +Depending on the control unit the channel configuration can have varying formats. Have a look at the underlying library [raspyrfm-client](https://github.com/markusressel/raspyrfm-client) to find out about a specific model. ## Switch state diff --git a/source/_integrations/recollect_waste.markdown b/source/_integrations/recollect_waste.markdown index 6b507e3f8712..3a7b7d92fe8c 100644 --- a/source/_integrations/recollect_waste.markdown +++ b/source/_integrations/recollect_waste.markdown @@ -1,11 +1,12 @@ --- -title: Recollect Waste Sensor -description: "Instructions on how to set up Recollect Waste sensor within Home Assistant." +title: ReCollect Waste +description: Instructions on how to set up Recollect Waste sensor within Home Assistant. logo: recollect-waste.png ha_category: - Sensor ha_release: 0.87 ha_iot_class: Cloud Polling +ha_domain: recollect_waste --- The `recollect_waste` integration allows you to track the next scheduled waste pickup and what type of waste from [Recollect](https://recollect.net/private-waste-haulers/). To use this sensor your city's waste company must be Recollect and you will need to find your place_id and service_id. diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 2093c806f41e..4bd3af529933 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -1,18 +1,24 @@ --- -title: "Recorder" -description: "Instructions on how to configure the data recorder for Home Assistant." -logo: home-assistant.png +title: Recorder +description: Instructions on how to configure the data recorder for Home Assistant. ha_category: - - "History" + - History ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: recorder --- The `recorder` integration is responsible for storing details in a database, which then are handled by the [`history` integration](/integrations/history/). +
    + +This integration constantly saves data. If you use the default configuration, the data will be saved on the media Home Assistant is installed on. In case of Raspberry Pi with an SD card, it might affect your system's reaction time and life expectancy of the storage medium (the SD card). It is therefore recommended to store the data elsewhere (e.g., another system) or limit the amount of stored data (e.g., by excluding devices). + +
    + Home Assistant uses [SQLAlchemy](https://www.sqlalchemy.org/), which is an Object Relational Mapper (ORM). This means that you can use **any** SQL backend for the recorder that is supported by SQLAlchemy, like [MySQL](https://www.mysql.com/), [MariaDB](https://mariadb.org/), [PostgreSQL](https://www.postgresql.org/), or [MS SQL Server](https://www.microsoft.com/en-us/sql-server/). -The default database engine is [SQLite](https://www.sqlite.org/) which doesn't require any configuration. The database is stored in your Home Assistant configuration directory (`.homeassistant` or '/config/' in HassIO) and called `home-assistant_v2.db`. +The default database engine is [SQLite](https://www.sqlite.org/) which does not require any configuration. The database is stored in your Home Assistant configuration directory ('/config/') and is named `home-assistant_v2.db`. To change the defaults for the `recorder` integration in your installation, add the following to your `configuration.yaml` file: @@ -31,6 +37,16 @@ recorder: description: The URL that points to your database. required: false type: string + db_max_retries: + description: The max amount of times, the recorder retries to connect to the database. + required: false + default: 10 + type: integer + db_retry_wait: + description: The time in seconds, that the recorder sleeps when trying to connect to the database. + required: false + default: 3 + type: integer purge_keep_days: description: Specify the number of history days to keep in recorder database after a purge. required: false @@ -41,6 +57,11 @@ recorder: required: false default: 1 type: integer + commit_interval: + description: How often (in seconds) the events and state changes are committed to the database. The default of `1` allows events to be committed almost right away without trashing the disk when an event storm happens. Increasing this will reduce disk I/O and may prolong disk (SD card) lifetime with the trade-off being that the logbook and history will lag. If this is set to `0` (zero), commit are made as soon as possible after an event is processed. + required: false + default: 1 + type: integer exclude: description: Configure which integrations should be excluded from recordings. required: false @@ -54,6 +75,10 @@ recorder: description: The list of entity ids to be excluded from recordings. required: false type: list + event_types: + description: The list of event types to be excluded from recordings. + required: false + type: list include: description: Configure which integrations should be included in recordings. If set, all other entities will not be recorded. required: false @@ -69,7 +94,7 @@ recorder: type: list {% endconfiguration %} -Defining domains and entities to `exclude` (aka. blacklist) is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains. Usually, these are entities/domains that do not change (like `weblink`) or rarely change (like `updater` or `automation`). +Defining domains and entities to `exclude` (aka. blacklist) is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains. Usually, these are entities/domains that do not change or rarely change (like `updater` or `automation`). ```yaml # Example configuration.yaml entry with exclude @@ -79,12 +104,13 @@ recorder: exclude: domains: - automation - - weblink - updater entities: - sun.sun # Don't record sun data - sensor.last_boot # Comes from 'systemmonitor' sensor platform - sensor.date + event_types: + - call_service # Don't record service calls ``` define domains and entities to record by using the `include` configuration (aka. whitelist) is convenient if you have a lot of entities in your system and your `exclude` lists possibly get very large, so it might be better just to define the entities or domains to record. @@ -121,24 +147,25 @@ If you only want to hide events from your history, take a look at the [`history` Call the service `recorder.purge` to start a purge task which deletes events and states older than x days, according to `keep_days` service data. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `keep_days` | yes | The number of history days to keep in recorder database (defaults to the integration `purge_keep_days` configuration) -| `repack` | yes | Rewrite the entire database, possibly saving some disk space. Only supported for SQLite and requires at least as much disk space free as the database currently uses. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `keep_days` | yes | The number of history days to keep in recorder database (defaults to the integration `purge_keep_days` configuration) | +| `repack` | yes | Rewrite the entire database, possibly saving some disk space. Only supported for SQLite and requires at least as much disk space free as the database currently uses. | ## Custom database engines -| Database engine | `db_url` | -| :---------------|:---------------------------------------------------------| -| SQLite | `sqlite:////PATH/TO/DB_NAME` | -| MariaDB | `mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8` | -| MariaDB         | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| MySQL | `mysql://SERVER_IP/DB_NAME?charset=utf8` | -| MySQL | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | -| PostgreSQL | `postgresql://user:password@SERVER_IP/DB_NAME` | -| PostgreSQL (Socket) | `postgresql://@/DB_NAME` | -| MS SQL Server | `mssql+pymssql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| Database engine | `db_url` | +| :--------------------- | :------------------------------------------------------------------------------------------- | +| SQLite | `sqlite:////PATH/TO/DB_NAME` | +| MariaDB | `mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8` | +| MariaDB | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| MariaDB (omit pymysql) | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| MySQL | `mysql://SERVER_IP/DB_NAME?charset=utf8` | +| MySQL | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | +| PostgreSQL | `postgresql://user:password@SERVER_IP/DB_NAME` | +| PostgreSQL (Socket) | `postgresql://@/DB_NAME` | +| MS SQL Server | `mssql+pyodbc://username:password@SERVER_IP/DB_NAME?charset=utf8;DRIVER={DRIVER};Port=1433;` |
    @@ -148,7 +175,13 @@ Some installations of MariaDB/MySQL may require an ALTERNATE_PORT (3rd-party hos
    -Unix Socket connections always bring performance advantages over TCP, if the database is on the same host as the `recorder` instance (i.e. `localhost`). +If using an external MariaDB backend (e.g., running on a separate NAS) with Home Assistant, you should omit `pymysql` from the URL. `pymysql` is not included in the base Docker image, and is not necessary for this to work. + +
    + +
    + +Unix Socket connections always bring performance advantages over TCP, if the database is on the same host as the `recorder` instance (i.e., `localhost`).
    @@ -166,7 +199,8 @@ If you are using the default `FULL` recovery model for MS SQL Server you will ne ### Database startup -If you are running a database server instance on the same server as Home Assistant then you must ensure that this service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) then you should edit the service file. +If you are running a database server instance on the same server as Home Assistant then you must ensure that this service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) you should edit the service file. +To help facilitate this, db_max_retry and db_retry_wait variables have been added to ensure the recorder retries the connection to your database enough times, for your database to start up. ```bash sudo nano /etc/systemd/system/home-assistant@homeassistant.service @@ -247,17 +281,25 @@ A service restart will work as well. ### MS SQL Server -For MS SQL Server you may have to install a few dependencies: +For MS SQL Server you will have to install a few dependencies: ```bash -sudo apt-get install freetds-dev -pip3 install pymssql +sudo apt-get install unixodbc-dev +pip3 install pyodbc ``` -If you are in a virtual environment, don't forget to activate it before installing the pymssql package. +If you are in a virtual environment, don't forget to activate it before installing the pyodbc package. ```bash sudo -u homeassistant -H -s source /srv/homeassistant/bin/activate -pip3 install pymssql +pip3 install pyodbc ``` + +You will also need to install an ODBC Driver. Microsoft ODBC drivers are recommended, however FreeTDS is available for systems that are not supported by Microsoft. Instrucitons for installing the Microsoft ODBC drivers can be found [here](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server). + +
    + +If you are using Hass.io, FreeTDS is already installed for you. The db_url you need to use is `mssql+pyodbc://username:password@SERVER_IP/DB_NAME?charset=utf8;DRIVER={FreeTDS};Port=1433;`. + +
    diff --git a/source/_integrations/recswitch.markdown b/source/_integrations/recswitch.markdown index 110aa8b72612..24baa51b8acf 100644 --- a/source/_integrations/recswitch.markdown +++ b/source/_integrations/recswitch.markdown @@ -1,14 +1,15 @@ --- -title: "Ankuoo Rec Switch" -description: "Instructions on how to integrate Ankuoo Rec Switch into Home Assistant." -logo: "ankuoo_recswitch.png" +title: Ankuoo REC Switch +description: Instructions on how to integrate Ankuoo REC Switch into Home Assistant. +logo: ankuoo_recswitch.png ha_release: 0.81 ha_category: - Switch ha_iot_class: Local Polling +ha_domain: recswitch --- -The `recswitch` switch platform allows you to control the Ankuoo Rec Switch devices. +The `recswitch` switch platform allows you to control the Ankuoo REC Switch devices. Supported devices (tested): diff --git a/source/_integrations/reddit.markdown b/source/_integrations/reddit.markdown index 0fe263b79e51..9791463488f9 100644 --- a/source/_integrations/reddit.markdown +++ b/source/_integrations/reddit.markdown @@ -1,11 +1,11 @@ --- -title: "Reddit" -description: "How to integrate the Reddit sensor into Home Assistant." -logo: reddit.png +title: Reddit +description: How to integrate the Reddit sensor into Home Assistant. ha_category: - Sensor ha_release: 0.89 ha_iot_class: Cloud Polling +ha_domain: reddit --- The Reddit sensor integrates data from [Reddit](https://reddit.com/) to monitor your favorite subreddits. diff --git a/source/_integrations/rejseplanen.markdown b/source/_integrations/rejseplanen.markdown index 6001fc31b2cd..a7ee68fe0094 100644 --- a/source/_integrations/rejseplanen.markdown +++ b/source/_integrations/rejseplanen.markdown @@ -1,11 +1,12 @@ --- -title: "Rejseplanen Public Transport" -description: "Instructions on how to integrate timetable data for Danish Rejseplanen within Home Assistant." +title: Rejseplanen +description: Instructions on how to integrate timetable data for Danish Rejseplanen within Home Assistant. logo: rejseplanen.png ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.88 +ha_domain: rejseplanen --- The `rejseplanen` sensor will provide you with travel details for Danish public transport, using timetable data from [Rejseplanen](https://www.rejseplanen.dk/). @@ -14,13 +15,13 @@ The `rejseplanen` sensor will provide you with travel details for Danish public The `stop_id` can be obtained through the following steps: -If you know the exact name of the stop you can search the stop_id with the following url [http://xmlopen.rejseplanen.dk/bin/rest.exe/location?format=json&input=STOP_NAME](http://xmlopen.rejseplanen.dk/bin/rest.exe/location?format=json&input=STOP_NAME) and put in the name of the stop instead of "STOP_NAME" in the end of the url. +If you know the exact name of the stop you can search the stop_id with the following URL [http://xmlopen.rejseplanen.dk/bin/rest.exe/location?format=json&input=STOP_NAME](http://xmlopen.rejseplanen.dk/bin/rest.exe/location?format=json&input=STOP_NAME) and put in the name of the stop instead of "STOP_NAME" in the end of the URL. If you don't know the name of the stop follow this guide: - Go to [https://www.openstreetmap.org](https://www.openstreetmap.org) - Make a search and fill in the location you want to find for. -- The url will look like this [https://www.openstreetmap.org/#map=18/56.15756/10.20674](https://www.openstreetmap.org/#map=18/56.15756/10.20674) -- Now insert the coordinates for the location in the url, in this example it will be: [http://xmlopen.rejseplanen.dk/bin/rest.exe/stopsNearby?coordX=56.15756&coordY=10.20674&](http://xmlopen.rejseplanen.dk/bin/rest.exe/stopsNearby?coordX=56.15756&coordY=10.20674&) +- The URL will look like this [https://www.openstreetmap.org/#map=18/56.15756/10.20674](https://www.openstreetmap.org/#map=18/56.15756/10.20674) +- Now insert the coordinates for the location in the URL, in this example it will be: [http://xmlopen.rejseplanen.dk/bin/rest.exe/stopsNearby?coordX=56.15756&coordY=10.20674&](http://xmlopen.rejseplanen.dk/bin/rest.exe/stopsNearby?coordX=56.15756&coordY=10.20674&) - You will now see the 30 stops closest to your location. You will see an output like this: diff --git a/source/_integrations/remember_the_milk.markdown b/source/_integrations/remember_the_milk.markdown index d7a1c39c79a7..715a955ce0e9 100644 --- a/source/_integrations/remember_the_milk.markdown +++ b/source/_integrations/remember_the_milk.markdown @@ -1,10 +1,11 @@ --- -title: "Remember The Milk" -description: "Instructions on how to use Remember The Milk with Home Assistant." +title: Remember The Milk +description: Instructions on how to use Remember The Milk with Home Assistant. logo: rememberthemilk.png ha_category: - Calendar ha_release: 0.57 +ha_domain: remember_the_milk --- The `Remember The Milk` (RTM) integration allows you to create tasks in [remember_the_milk](https://www.rememberthemilk.com) from Home Assistant. You can use this if you want Home Assistant to send you a task that you should not forget, e.g., water the plants. The integration allows you to have several RTM accounts in parallel. diff --git a/source/_integrations/remote.markdown b/source/_integrations/remote.markdown index f8a32910babb..169aa9abe45f 100644 --- a/source/_integrations/remote.markdown +++ b/source/_integrations/remote.markdown @@ -1,7 +1,8 @@ --- -title: "Remotes" -description: "Instructions on how to setup your remotes with Home Assistant." +title: Remote +description: Instructions on how to setup your remotes with Home Assistant. ha_release: 0.34 +ha_domain: remote --- Keeps track which remotes are in your environment, their state and allows you to control them. diff --git a/source/_integrations/remote.xiaomi_miio.markdown b/source/_integrations/remote.xiaomi_miio.markdown index eb40c0a70b69..20913669fcdd 100644 --- a/source/_integrations/remote.xiaomi_miio.markdown +++ b/source/_integrations/remote.xiaomi_miio.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi IR Remote" description: "Instructions for how to integrate the Xiaomi IR Remote within Home Assistant." -logo: xiaomi.png ha_category: - Remote ha_release: 0.63 ha_iot_class: Local Polling +ha_domain: xiaomi_miio --- The `xiaomi miio` remote platform allows you to send IR commands from your Xiaomi IR Remote (ChuangmiIr). @@ -47,11 +47,6 @@ timeout: required: false type: integer default: 30 -hidden: - description: Hide the entity from UI. There is currently no reason to show the entity in UI as turning it off or on does nothing. - required: false - type: boolean - default: true commands: description: A list of commands required: false @@ -74,7 +69,6 @@ remote: token: YOUR_TOKEN slot: 1 timeout: 30 - hidden: false commands: activate_towel_heater: command: @@ -85,6 +79,25 @@ remote: - pronto:pronto_hex:[optional_repeat] ``` +## Add command as entity button in Lovelace UI + +```yaml +type: entity-button +tap_action: + action: call-service + service: remote.send_command + service_data: + command: activate_towel_heater + entity_id: remote.xiaomi_miio_ir +hold_action: + action: more-info +show_icon: true +show_name: true +entity: remote.xiaomi_miio_ir +icon: 'mdi:radiator' +name: Activate Towel Heater +``` + ## Use named commands to create UI buttons ```yaml @@ -111,7 +124,7 @@ The Xiaomi IR Remote Platform currently supports two different formats for IR co ### Raw -A raw command is a command learned from [`remote.xiaomi_miio_learn_command`](/integrations/remote.xiaomi_miio/#remotexiaomi_miio_learn_command). +A raw command is a command learned from [`xiaomi_miio.remote_learn_command`](/integrations/remote.xiaomi_miio/#xiaomi_miioremote_learn_command). A raw command is defined as in the following example: @@ -158,7 +171,7 @@ The Xiaomi IR Remote Platform registers two services. Allows sending either named commands using an identifier or sending commands as one of the two types defined in [Command Types](/integrations/remote.xiaomi_miio/#command-types). -### `remote.xiaomi_miio_learn_command` +### `xiaomi_miio.remote_learn_command` Used to learn new commands. diff --git a/source/_integrations/remote_rpi_gpio.markdown b/source/_integrations/remote_rpi_gpio.markdown index b4e40e7d975f..118a39410b4b 100644 --- a/source/_integrations/remote_rpi_gpio.markdown +++ b/source/_integrations/remote_rpi_gpio.markdown @@ -1,18 +1,18 @@ --- -title: "Remote Raspberry Pi GPIO" -description: "Instructions on how to integrate the GPIO capability of a Remote Raspberry Pi into Home Assistant." -logo: raspberry-pi.png +title: remote_rpi_gpio +description: Instructions on how to integrate the GPIO capability of a Remote Raspberry Pi into Home Assistant. ha_category: - DIY - Binary Sensor - Switch ha_release: 0.94 ha_iot_class: Local Push +ha_domain: remote_rpi_gpio --- The `rpi_gpio` integration is the base for all related GPIO platforms in Home Assistant. For the platform configurations, please check their corresponding sections. -The remote RPi and the control computer where Home Assistant is running must be prepared to run remote_rpi_gpio, see details [here](https://gpiozero.readthedocs.io/en/stable/remote_gpio.html). +The remote Raspberry Pi and the control computer where Home Assistant is running must be prepared to run remote_rpi_gpio, see details [here](https://gpiozero.readthedocs.io/en/stable/remote_gpio.html). Note that for virtual environments you may need to set an environment variable when starting the environment to set the pin factory, example: @@ -105,7 +105,7 @@ invert_logic: For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi.
    -Note that a pin managed by HASS is expected to be exclusive to HASS. +Note that a pin managed by Home Assistant is expected to be exclusive to Home Assistant.
    A common question is what does port refer to, this number is the actual GPIO #, not the pin #. diff --git a/source/_integrations/repetier.markdown b/source/_integrations/repetier.markdown index 9beb073756f7..140ad355fc91 100644 --- a/source/_integrations/repetier.markdown +++ b/source/_integrations/repetier.markdown @@ -1,12 +1,14 @@ --- -title: Repetier-Server Component -description: "Instructions how to add Repetier-Server sensors to Home Assistant." -logo: repetier.png +title: Repetier-Server +description: Instructions how to add Repetier-Server sensors to Home Assistant. ha_category: - Hub - Sensor ha_release: 0.94 ha_iot_class: Local Polling +ha_codeowners: + - '@MTrab' +ha_domain: repetier --- [Repetier-Server](https://www.repetier-server.com/) is a 3D printer/CNC server, able to control multiple devices on the same server. diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown index 1c91c94b0b3a..c5e130b79a8b 100644 --- a/source/_integrations/rest.markdown +++ b/source/_integrations/rest.markdown @@ -1,11 +1,11 @@ --- -title: "RESTful Sensor" -description: "Instructions on how to integrate REST sensors into Home Assistant." -logo: restful.png +title: RESTful +description: Instructions on how to integrate REST sensors into Home Assistant. ha_category: - Sensor ha_release: 0.7.4 ha_iot_class: Local Polling +ha_domain: rest --- The `rest` sensor platform is consuming a given endpoint which is exposed by a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer) of a device, an application, or a web service. The sensor has support for GET and POST requests. @@ -105,20 +105,20 @@ headers: required: false type: [string, list] json_attributes: - description: A list of keys to extract values from a JSON dictionary result and then set as sensor attributes. - reqired: false + description: A list of keys to extract values from a JSON dictionary result and then set as sensor attributes. If the endpoint returns XML with the "text/xml" or "application/xml" content type, it will automatically be converted to JSON according to this [specification](https://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html) + required: false type: [string, list] +json_attributes_path: + description: A [JSONPath](https://goessner.net/articles/JsonPath/) that references the location of the `json_attributes` in the JSON content. + required: false + type: string force_update: description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. - reqired: false + required: false type: boolean default: false {% endconfiguration %} -
    -Make sure that the URL exactly matches your endpoint or resource. -
    -
    Use either `resource` or `resource_template`. @@ -132,6 +132,8 @@ $ curl -X GET http://192.168.1.31/temperature/ {"temperature": 77, "id": "sensor02", "name": "livingroom", "connected": true} ``` +The response is expected to be a dictionary or a list with a dictionary as its 0th element. + ## Examples In this section you find some real-life examples of how to use this sensor. @@ -262,6 +264,26 @@ sensor: ``` {% endraw %} +[JSONPlaceholder](https://jsonplaceholder.typicode.com/) provides sample JSON data for testing. In the below example, JSONPath locates the attributes in the JSON document. [JSONPath Online Evaluator](https://jsonpath.com/) provides a tool to test your JSONPath. If the endpoint returns XML, it will be converted to JSON using `xmltodict` before searching for attributes. You may find the [XMLtoDict debug tool](https://xmltodict-debugger.glitch.me/) helpful for testing how your XML converts to JSON. + +{% raw %} + +```yaml +sensor: + - platform: rest + name: JSON users + json_attributes_path: "$.[0].address" + json_attributes: + - street + - suite + - city + - zipcode + resource: https://jsonplaceholder.typicode.com/users + value_template: '{{ value_json[0].name }}' +``` + +{% endraw %} + This sample fetches a weather report from [OpenWeatherMap](https://openweathermap.org/), maps the resulting data into attributes of the RESTful sensor and then creates a set of [template](/integrations/template) sensors that monitor the attributes and present the values in a usable form. {% raw %} @@ -298,7 +320,7 @@ sensor: ``` {% endraw %} -This config shows how to extract multiple values from a dictionary with `json_attributes` and `template`. It helps you to avoid flooding the REST service and only ask once the results and separate them in multiple templates referring to it. (No need for a specific state on the REST sensor and it's default state will be the full JSON value which will be longer than the 255 max length. It's why we'll used a static value) +This configuration shows how to extract multiple values from a dictionary with `json_attributes` and `template`. It helps you to avoid flooding the REST service and only ask once the results and separate them in multiple templates referring to it. (No need for a specific state on the REST sensor and it's default state will be the full JSON value which will be longer than the 255 max length. It's why we'll used a static value) {% raw %} ```json @@ -356,3 +378,106 @@ sensor: unit_of_measurement: '°C' ``` {% endraw %} + +The below example allows shows how to extract multiple values from a dictionary with `json_attributes` and `json_attributes_path` from the XML of a Steamist Steambath Wi-Fi interface and use them to create a switch and multiple sensors without having to poll the endpoint numerous times. + +In the below example `json_attributes_path` is set to `$.response` which is the location of the `usr0`, `pot0`, ... attributes used for `json_attributes`. + +{% raw %} + +```yaml +sensor: +# Steam Controller + - platform: rest + name: Steam System Data + resource: http://192.168.1.105/status.xml + json_attributes_path: "$.response" + scan_interval: 15 + value_template: 'OK' + json_attributes: + - "usr0" + - "pot0" + - "temp0" + - "time0" + - platform: template + sensors: + steam_temp: + friendly_name: Steam Temp + value_template: '{{ states.sensor.steam_system_data.attributes["temp0"] | regex_findall_index("([0-9]+)XF") }}' + unit_of_measurement: "°F" + steam_time_remaining: + friendly_name: "Steam Time Remaining" + value_template: '{{ states.sensor.steam_system_data.attributes["time0"] }}' + unit_of_measurement: "minutes" + +switch: + - platform: template + switches: + steam: + value_template: '{{ states.sensor.steam_system_data.attributes["usr0"] | int >= 1 }}' + turn_on: + - service: rest_command.set_steam_led + data: + led: 6 + - service: homeassistant.update_entity + data: + entity_id: sensor.steam_system_data + - delay: 00:00:15 + - service: homeassistant.update_entity + data: + entity_id: sensor.steam_system_data + turn_off: + - service: rest_command.set_steam_led + data: + led: 7 + - service: homeassistant.update_entity + data: + entity_id: sensor.steam_system_data + - delay: 00:00:15 + - service: homeassistant.update_entity + data: + entity_id: sensor.steam_system_data + friendly_name: Steam + +rest_command: + set_steam_led: + url: http://192.168.1.105/leds.cgi?led={{ led }} +``` + +{% endraw %} + +For reference, the XML content of endpoint shown above example is below: + +```xml + + + + 0 + 12556 + 48 + alexander + + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + up + up + up + up + 0 + 0 + 0x73XF0x73XF + 0 + +``` diff --git a/source/_integrations/rest_command.markdown b/source/_integrations/rest_command.markdown index 5893f5c41fbc..297727185727 100644 --- a/source/_integrations/rest_command.markdown +++ b/source/_integrations/rest_command.markdown @@ -1,11 +1,11 @@ --- -title: "RESTful Command" -description: "Instructions on how to integrate REST commands into Home Assistant." -logo: restful.png +title: RESTful Command +description: Instructions on how to integrate REST commands into Home Assistant. ha_category: - Automation ha_release: 0.36 ha_iot_class: Local Push +ha_domain: rest_command --- This integration can expose regular REST commands as services. Services can be called from a [script] or in [automation]. @@ -31,7 +31,7 @@ service_name: url: description: The URL (supports template) for sending request. required: true - type: [string, template] + type: template method: description: HTTP method to use (get, patch, post, put, or delete). required: false @@ -44,7 +44,7 @@ service_name: payload: description: A string/template to send with request. required: false - type: [string, template] + type: template username: description: The username for HTTP authentication. required: false @@ -83,6 +83,7 @@ rest_command: headers: authorization: !secret rest_headers_secret accept: 'application/json, text/html' + user-agent: 'Mozilla/5.0 {{ useragent }}' payload: '{"profile":{"status_text": "{{ status }}","status_emoji": "{{ emoji }}"}}' content_type: 'application/json; charset=utf-8' verify_ssl: true diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index de5e8f0bfb43..f82332706439 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -1,10 +1,11 @@ --- -title: "RFLink" -description: "Instructions on how to integrate RFLink gateway into Home Assistant." +title: RFLink +description: Instructions on how to integrate RFLink gateway into Home Assistant. logo: rflink.png ha_category: - Hub ha_release: 0.38 +ha_domain: rflink --- The `rflink` integration supports devices that use [RFLink gateway firmware](http://www.rflink.nl/blog2/download), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). @@ -48,7 +49,7 @@ wait_for_ack: default: true type: boolean ignore_devices: - description: List of device id's to ignore. Supports wildcards (`*`) at the end. + description: List of device id's to ignore. Supports wildcards (`*`, `?`). required: false type: [list, string] reconnect_interval: @@ -85,7 +86,7 @@ Tested with Wifi serial bridge [esp-link V2.2.3](https://github.com/jeelabs/esp-
    -Due to different logic levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. The BSS138 bidirectional logic level converter has been tested for serial pins and the [link](https://www.aliexpress.com/item/8CH-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-DC-DC-5V-to-3-3V-Setp/32238089139.html) is recommended for the CC2500 transceiver (used for Ikea Ansluta and Philips Living Colors) +Due to different logic levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. The BSS138 bidirectional logic level converter has been tested for serial pins and the [link](https://www.aliexpress.com/item/8CH-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-DC-DC-5V-to-3-3V-Setp/32238089139.html) is recommended for the CC2500 transceiver (used for IKEA Ansluta and Philips Living Colors)
    @@ -137,10 +138,6 @@ rflink: This configuration will ignore the button `1` of the `newkaku` device with ID `000001`, all devices of the `digitech` protocol and all switches of the `kaku` protocol device with codewheel ID `1`. -
    -Wildcards only work at the end of the ID, not in the middle or front! -
    - ### Device support Even though a lot of devices are supported by RFLink, not all have been tested/implemented. If you have a device supported by RFLink but not by this integration please consider testing and adding support yourself. @@ -158,7 +155,7 @@ If you find a device is recognized differently, with different protocols or the ### Debug Logging -For debugging purposes or context when investigating issues you can enable debug logging for RFLink with the following config snippet: +For debugging purposes or context when investigating issues you can enable debug logging for RFLink with the following configuration snippet: ```yaml logger: diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown index 5c6c841a0327..98bf36747b9e 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -1,39 +1,66 @@ --- -title: "RFXtrx" -description: "Instructions on how to integrate RFXtrx into Home Assistant." -logo: rfxtrx.png +title: RFXCOM RFXtrx +description: Instructions on how to integrate RFXtrx into Home Assistant. ha_category: - Hub ha_release: pre 0.7 +ha_codeowners: + - '@danielhiversen' +ha_domain: rfxtrx --- -The `rfxtrx` integration supports RFXtrx devices by [RFXCOM](http://www.rfxcom.com) which communicate in the frequency range of 433.92 MHz. +The `rfxtrx` integration supports RFXtrx devices by [RFXCOM](http://www.rfxcom.com), which communicate in the frequency range of 433.92 MHz. To enable RFXtrx in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry for local serial device rfxtrx: - device: PATH_TO_DEVICE + device: /dev/ttyUSB0 +``` + +OR + +```yaml +# Example configuration.yaml entry for TCP connected device using ser2net +rfxtrx: + host: 192.168.0.2 + port: 50000 ``` {% configuration %} device: - description: "The path to your device, e.g., `/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0` or `/dev/ttyUSB0`." - required: true + description: "The path to your device, e.g., `/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0` or `/dev/ttyUSB0`. Required if you are using a locally connected USB device." + required: false type: string +host: + description: "The hostname the remote RFXtrx is available on if connecting via TCP. If this is set, a port is required." + required: false + type: string +port: + description: "The TCP port the remote RFXtrx is available on. If this is set, a host is required." + required: false + type: integer debug: - description: If you want to receive debug output. + description: "If you want to receive debug output." required: false default: false type: boolean dummy: - description: Then you have need a connected drive to test your settings. Can be useful for debugging and testing. + description: "Then you need a connected drive to test your settings. Can be useful for debugging and testing." required: false default: false type: boolean {% endconfiguration %} -Supported protocols +## Supported protocols + +Not all protocols as advertised are enabled on the initial setup of your transceiver. Enabling all protocols is not recommended either. Your 433.92 product not showing in the logs? Visit the RFXtrx website to [download RFXmgmr](http://www.rfxcom.com/epages/78165469.sf/nl_NL/?ObjectPath=/Shops/78165469/Categories/Downloads) and enable the required protocol. -Not all protocols as advertised are enabled on initial setup of your transceiver. Enabling all protocols is not recommended either. Your 433.92 product not showing in the logs? Visit the RFXtrx website to [download RFXmgmr](http://www.rfxcom.com/epages/78165469.sf/nl_NL/?ObjectPath=/Shops/78165469/Categories/Downloads) and enable the required protocol. +### ser2net + +You can host your device on another computer by setting up ser2net and example configuration for ser2net looks like this and then using host/port in your Home Assistant configuration. + +```text +50000:raw:0:/dev/ttyUSB0:38400 8DATABITS NONE 1STOPBIT +``` diff --git a/source/_integrations/ring.markdown b/source/_integrations/ring.markdown index f8c3506dd1bc..5ebf71dd003f 100644 --- a/source/_integrations/ring.markdown +++ b/source/_integrations/ring.markdown @@ -1,7 +1,6 @@ --- -title: "Ring" -description: "Instructions on how to integrate your Ring.com devices within Home Assistant." -logo: ring.png +title: Ring +description: Instructions on how to integrate your Ring.com devices within Home Assistant. ha_category: - Doorbell - Binary Sensor @@ -11,9 +10,13 @@ ha_category: - Light ha_release: 0.42 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@balloob' +ha_domain: ring --- -The `ring` implementation allows you to integrate your [Ring.com](https://ring.com/) devices in Home Assistant. +The `ring` implementation allows you to integrate your [Ring.com](https://ring.com/) devices in Home Assistant. Due to recent authentication changes of Ring, you will need to run at least Home Assistant 0.104. There is currently support for the following device types within Home Assistant: @@ -22,62 +25,19 @@ There is currently support for the following device types within Home Assistant: - [Sensor](#sensor) - [Switch](#switch) -Currently only doorbells are supported by this sensor. -

    This component does NOT allow for live viewing of your Ring camera within Home Assistant.

    ## Configuration -To enable device linked in your [Ring.com](https://ring.com/) account, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -ring: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` +Go to the integrations page in your configuration and click on new integration -> Ring. -{% configuration %} -username: - description: The username for accessing your Ring account. - required: true - type: string -password: - description: The password for accessing your Ring account. - required: true - type: string -scan_interval: - description: How frequently to query for new video, or current sensor values in seconds - required: false - type: integer - default: 10 -{% endconfiguration %} +YAML configuration is no longer available because it cannot handle two-factor authentication. ## Binary Sensor -Once you have enabled the [Ring integration](/integrations/ring), you can start using a binary sensor. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: ring -``` - -{% configuration %} -monitored_conditions: - description: Conditions to display in the frontend. The following conditions can be monitored. If not specified, all conditions below will be enabled. - required: false - type: list - keys: - ding: - description: Return a boolean value when the doorbell button was pressed. - motion: - description: Return a boolean value when a movement was detected by the Ring doorbell. -{% endconfiguration %} - -Currently it supports doorbell, external chimes and stickup cameras. +Once you have enabled the [Ring integration](/integrations/ring), you can start using a binary sensor. Currently, it supports doorbell, external chimes and stickup cameras. ## Camera @@ -85,24 +45,7 @@ Currently it supports doorbell, external chimes and stickup cameras. Please note that downloading and playing Ring video will require a Ring Protect plan.
    -Once you have enabled the [Ring integration](/integrations/ring), you can start using the camera platform. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: ring -``` - -{% configuration %} -ffmpeg_arguments: - description: Extra options to pass to ffmpeg, e.g., image quality or video filter options. - required: false - type: string -{% endconfiguration %} - -**Note:** To be able to playback the last capture, it is required to install the `ffmpeg` component. Make sure to follow the steps mentioned at [FFMPEG](/integrations/ffmpeg/) documentation. - -Currently it supports doorbell and stickup cameras. +Once you have enabled the [Ring integration](/integrations/ring), you can start using the camera platform. Currently, it supports doorbell and stickup cameras. ## Saving the videos captured by your Ring Door Bell @@ -137,75 +80,29 @@ You can then use the following `python_script` to save the video file: ```python # obtain ring doorbell camera object # replace the camera.front_door by your camera entity -ring_cam = hass.states.get('camera.front_door') +ring_cam = hass.states.get("camera.front_door") -subdir_name = 'ring_{}'.format(ring_cam.attributes.get('friendly_name')) +subdir_name = f"ring_{ring_cam.attributes.get('friendly_name')}" # get video URL data = { - 'url': ring_cam.attributes.get('video_url'), - 'subdir': subdir_name, - 'filename': ring_cam.attributes.get('friendly_name') + "url": ring_cam.attributes.get("video_url"), + "subdir": subdir_name, + "filename": ring_cam.attributes.get("friendly_name"), } # call downloader integration to save the video -hass.services.call('downloader', 'download_file', data) +hass.services.call("downloader", "download_file", data) ``` ## Sensor -Once you have enabled the [Ring integration](/integrations/ring), you can start using the sensor platform. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: ring -``` - -{% configuration %} -monitored_conditions: - type: list - required: false - description: Conditions to display in the frontend. The following conditions can be monitored. If not specified, all conditions below will be enabled. - keys: - battery: - description: Return the battery level from device. - last_activity: - description: Return the timestamp from the last event captured (ding/motion/on demand) by the Ring doorbell camera. - last_ding: - description: Return the timestamp from the last time the Ring doorbell button was pressed. - last_motion: - description: Return the timestamp from the last motion event captured by the Ring doorbell camera. - volume: - description: Return the volume level from the device. - wifi_signal_category: - description: Return the WiFi signal level from the device. - wifi_signal_strength: - description: Return the WiFi signal strength (dBm) from the device. -{% endconfiguration %} - -Currently it supports doorbell, external chimes and stickup cameras. +Once you have enabled the [Ring integration](/integrations/ring), you can start using the sensor platform. Currently, it supports doorbell, external chimes and stickup cameras. ## Switch -Once you have enabled the [Ring integration](/integrations/ring), you can start using the switch platform. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: ring -``` - -This will add a switch for every camera that supports a siren. Note the siren will only turn on for 30 seconds before automatically turning off. +Once you have enabled the [Ring integration](/integrations/ring), you can start using the switch platform. This will add a switch for every camera that supports a siren. Note the siren will only turn on for 30 seconds before automatically turning off. ## Light -Once you have enabled the [Ring integration](/integrations/ring), you can start using the light platform. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: ring -``` - -This will add a light for every camera that supports a light (such as a flood light). +Once you have enabled the [Ring integration](/integrations/ring), you can start using the light platform. This will add a light for every camera that supports a light (such as a floodlight). diff --git a/source/_integrations/ripple.markdown b/source/_integrations/ripple.markdown index ff0cfbb065e2..52f209cf638d 100644 --- a/source/_integrations/ripple.markdown +++ b/source/_integrations/ripple.markdown @@ -1,11 +1,12 @@ --- -title: "Ripple" -description: "Instructions on how to integrate ripple.com data within Home Assistant." +title: Ripple +description: Instructions on how to integrate ripple.com data within Home Assistant. logo: ripple.png ha_category: - Finance ha_release: 0.47 ha_iot_class: Cloud Polling +ha_domain: ripple --- The `ripple` sensor platform displays Ripple wallet balances from [Ripple.com](https://ripple.com). diff --git a/source/_integrations/rmvtransport.markdown b/source/_integrations/rmvtransport.markdown index c8d8b33db3b8..ae5ca0cab3fc 100644 --- a/source/_integrations/rmvtransport.markdown +++ b/source/_integrations/rmvtransport.markdown @@ -1,11 +1,14 @@ --- -title: "RMV" -description: "Instructions on how to integrate Rhein-Main public transport departure times into Home Assistant." +title: RMV +description: Instructions on how to integrate Rhein-Main public transport departure times into Home Assistant. logo: RMV.png ha_category: - Transport ha_release: 0.76 ha_iot_class: Cloud Polling +ha_codeowners: + - '@cgtobi' +ha_domain: rmvtransport --- The `rvmtransport` sensor will give you the departure time of the next bus, tram, subway or train at the next station or stop in the Rhein-Main area public transport network. Additional details such as the line number and destination are present in the attributes. @@ -43,7 +46,7 @@ next_departure: default: The default is the station name. type: string station: - description: "ID of the stop or station, e.g. `3000010`." + description: "ID of the stop or station, e.g., `3000010`." required: true type: string destinations: @@ -59,9 +62,9 @@ next_departure: required: false type: [string, integer] products: - description: "One or more modes of transport `['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'RB', 'RE', 'EC', 'IC', 'ICE']`." + description: "One or more modes of transport `['U-Bahn', 'Tram', 'Bus', 'S', 'RB', 'RE', 'EC', 'IC', 'ICE']`." required: false - default: ['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'RB', 'RE', 'EC', 'IC', 'ICE'] + default: ['U-Bahn', 'Tram', 'Bus', 'S', 'RB', 'RE', 'EC', 'IC', 'ICE'] type: [string] time_offset: description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop. @@ -97,7 +100,7 @@ sensor: - 'RB' - 'RE' - 'Bus' - - 'S-Bahn' + - 'S' - station: 3006907 products: 'Bus' destinations: ['Wiesbaden Dernsches Gelände', 'Mainz Hauptbahnhof'] @@ -105,7 +108,7 @@ sensor: - station: 3006904 lines: 'S8' max_journeys: 5 - products: 'S-Bahn' + products: 'S' ``` The first sensor will return S-Bahn, bus, RB and RE trains departures from Frankfurt Hauptbahnhof to Frankfurt Airport or Stadium that are at least 5 minutes away. diff --git a/source/_integrations/rocketchat.markdown b/source/_integrations/rocketchat.markdown index e269973de3c5..6fec23d8cfc7 100644 --- a/source/_integrations/rocketchat.markdown +++ b/source/_integrations/rocketchat.markdown @@ -1,13 +1,12 @@ --- -title: "Rocket.Chat" -description: "Instructions on how to add Rocket.Chat notifications to Home Assistant." -logo: rocketchat.png +title: Rocket.Chat +description: Instructions on how to add Rocket.Chat notifications to Home Assistant. ha_category: - Notifications ha_release: 0.56 +ha_domain: rocketchat --- - The `rocketchat` notify platform allows you to send messages to your [Rocket.Chat](https://rocket.chat/) instance from Home Assistant. ## Configuration @@ -25,13 +24,13 @@ notify: room: YOUR_ROOM_NAME ``` -- **name** (*Optional*): Name displayed in the frontend. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **url** (*Required*): The URL of your Rocket.Chat instance. -- **username** (*Required*): The Rocket.Chat username. -- **password** (*Required*): The Rocker.Chat password. -- **room** (*Required*): The chat room name to send messages to. +- `name` (*Optional*): Name displayed in the frontend. The notifier will bind to the service `notify.NOTIFIER_NAME`. +- `url` (*Required*): The URL of your Rocket.Chat instance. +- `username` (*Required*): The Rocket.Chat username. +- `password` (*Required*): The Rocker.Chat password. +- `room` (*Required*): The chat room name to send messages to. -### script.yaml example +### Script example ```yaml rocketchat_notification: @@ -46,7 +45,6 @@ rocketchat_notification: #### Message variables - **message** (*Required*): Message to be displayed. -- **data** (*Optional*): Dictionary containing any of the variables defined in the [Rocket.Chat docs](https://rocket.chat/docs/developer-guides/rest-api/chat/postmessage#message-object-example) +- **data** (*Optional*): Dictionary containing any of the variables defined in the [Rocket.Chat documentation](https://rocket.chat/docs/developer-guides/rest-api/chat/postmessage#message-object-example) To use notifications, please see the [getting started with automation page](/getting-started/automation/). - diff --git a/source/_integrations/roku.markdown b/source/_integrations/roku.markdown index e52267ae9d5b..7050fefb7490 100644 --- a/source/_integrations/roku.markdown +++ b/source/_integrations/roku.markdown @@ -1,23 +1,34 @@ --- -title: "Roku" -description: "Instructions how to integrate Roku devices into Home Assistant." -logo: roku.png +title: Roku +description: Instructions how to integrate Roku devices into Home Assistant. ha_category: - Hub - Media Player - Remote ha_iot_class: Local Polling ha_release: 0.86 +ha_domain: roku +ha_config_flow: true +ha_quality_scale: silver +ha_codeowners: + - '@ctalkington' --- -The [Roku](https://www.roku.com/) integration allows integration of Roku, which will be automatically discovered if you enable the [discovery component](/integrations/discovery/). +The Roku integration allows you to control a [Roku](https://www.roku.com/) device. + +### Configuration + +Go to the integrations page in your configuration and click on new integration -> Roku. +If your Roku device is on, it has likely been discovered already and you just have to confirm the detected device. There is currently support for the following device types within Home Assistant: - Media Player - Remote -The `roku` integration can also be forced to load by adding the following lines to your `configuration.yaml`: +### YAML Configuration + +Manual configuration of your Roku device is also possible, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -32,12 +43,6 @@ host: type: string {% endconfiguration %} -## Services - -### Service `roku_scan` - -Scans the local network for Rokus. All found devices are presented as a persistent notification. - ## Remote The `roku` remote platform allows you to send remote control buttons to a Roku device. It is automatically set up when a Roku is configured. @@ -88,9 +93,9 @@ data: ## Media Player -When the Home Assistant Roku integration is enabled and has found a Roku device, in the Home Assistant GUI the Roku media player will show a listing of the installed channels, or apps, under “source”. Select one and it will attempt to launch the channel on your Roku device. This action can also be automated, but it requires you to acquire an extra piece of information; the ```appID``` for the channel specific to your Roku. Although this information is gathered by the Roku integration, at the moment it is not exposed to the end user. This item might be added in a future release. For now though, you can easily get the information yourself. All you need to do is a simple GET API call on the same network as your device. +When the Home Assistant Roku integration is enabled and a Roku device has been configured, in the Home Assistant UI the Roku media player will show a listing of the installed channels, or apps, under “source”. Select one and it will attempt to launch the channel on your Roku device. This action can also be automated, but it requires you to acquire an extra piece of information; the ```appID``` for the channel specific to your Roku. Although this information is gathered by the Roku integration, at the moment it is not exposed to the end user. This item might be added in a future release. For now though, you can easily get the information yourself. All you need to do is a simple GET API call on the same network as your device. -The api calls are like this: +The API calls are like this: ```txt GET http:// ROKU_IP:8060/query/apps @@ -102,7 +107,7 @@ POST http://YOUR_ROKU_IP:8060/launch/837?contentID=YOUR_YOUTUBE_VIDEOS_CONTENT_I More details can be found on the [Roku dev pages](https://developer.roku.com/docs/developer-program/discovery/external-control-api.md) -To use this in Home Assistant, for instance in an automation, the format is as follows. Note that ```source: ``` is the appID you discovered in the API call: +To use this in Home Assistant, for instance in an automation, the format is as follows. Note that `source:` is the appID you discovered in the API call: ```yaml action: diff --git a/source/_integrations/roomba.markdown b/source/_integrations/roomba.markdown index c205470f74e5..323c8ebb40ad 100644 --- a/source/_integrations/roomba.markdown +++ b/source/_integrations/roomba.markdown @@ -1,10 +1,13 @@ --- -title: "iRobot Roomba" -description: "Instructions on how to integrate your Wi-Fi enabled Roomba within Home Assistant." +title: iRobot Roomba +description: Instructions on how to integrate your Wi-Fi enabled Roomba within Home Assistant. logo: irobot_roomba.png ha_category: - Vacuum ha_release: 0.51 +ha_codeowners: + - '@pschmitt' +ha_domain: roomba --- The `roomba` integration allows you to control your [iRobot Roomba](https://www.irobot.com/For-the-Home/Vacuuming/Roomba.aspx) vacuum. @@ -58,6 +61,11 @@ continuous: required: false type: boolean default: true +delay: + description: Custom connection delay (in seconds) for periodic mode + required: false + type: integer + default: 1 {% endconfiguration %}
    diff --git a/source/_integrations/route53.markdown b/source/_integrations/route53.markdown index d0274ee8717e..edea87353ad3 100644 --- a/source/_integrations/route53.markdown +++ b/source/_integrations/route53.markdown @@ -1,10 +1,10 @@ --- -title: "route53" -description: "Automatically update your AWS Route53 DNS records." -logo: route53.png +title: AWS Route53 +description: Automatically update your AWS Route53 DNS records. ha_category: - Network ha_release: 0.81 +ha_domain: route53 --- With the `route53` integration can you keep your AWS Route53 DNS records up to date. diff --git a/source/_integrations/rova.markdown b/source/_integrations/rova.markdown index 6f3f1ffdc427..5b691ff87cdd 100644 --- a/source/_integrations/rova.markdown +++ b/source/_integrations/rova.markdown @@ -1,18 +1,18 @@ --- -title: "ROVA Sensor" -description: "Instructions on how to integrate ROVA sensor within Home Assistant." -logo: rova.jpg +title: ROVA +description: Instructions on how to integrate ROVA sensor within Home Assistant. ha_category: - Sensor ha_release: 0.87 ha_iot_class: Cloud Polling +ha_domain: rova --- [ROVA](https://rova.nl) is a waste collection company that operates in the center and east of the Netherlands. The `rova` platform uses an unofficial [ROVA](https://rova.nl) API to allow you to get your waste collection schedule and integrate this in your Home Assistant installation. ## Configuration -To use the ROVA sensor in your installation, add the following to your configuration.yaml file: +To use the ROVA sensor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -79,12 +79,12 @@ sensor: To have your Home Assistant installation remind you of upcoming waste collections, combine the `rova` platform with some [Automations](/docs/automation/) and a [notification platform](/integrations/notify/). {% raw %} + ```yaml # Example configuration.yaml entry for Rova waste collection reminder automation: - id: rova-garbage-bio-reminder alias: 'Send Rova Bio waste collection reminder' - hide_entity: true trigger: - platform: time at: '19:00:00' @@ -98,6 +98,7 @@ automation: data: message: 'Reminder: put out biowaste bin' ``` + {% endraw %}
    diff --git a/source/_integrations/rpi_camera.markdown b/source/_integrations/rpi_camera.markdown index bcc871acd48c..9a690faa5640 100644 --- a/source/_integrations/rpi_camera.markdown +++ b/source/_integrations/rpi_camera.markdown @@ -1,11 +1,11 @@ --- -title: "Raspberry Pi Camera" -description: "Instructions on how to integrate Raspberry Pi within Home Assistant." -logo: raspberry-pi.png +title: Raspberry Pi Camera +description: Instructions on how to integrate Raspberry Pi within Home Assistant. ha_category: - DIY ha_iot_class: Local Polling ha_release: 0.17 +ha_domain: rpi_camera --- The `rpi_camera` platform allows you to integrate the Raspberry Pi camera into Home Assistant. This integration uses the application [`raspistill`](https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspistill.md) to store the image from camera. diff --git a/source/_integrations/rpi_gpio.markdown b/source/_integrations/rpi_gpio.markdown index ecebf0b117f6..193021f2dd01 100644 --- a/source/_integrations/rpi_gpio.markdown +++ b/source/_integrations/rpi_gpio.markdown @@ -1,7 +1,6 @@ --- -title: "Raspberry Pi GPIO" -description: "Instructions on how to integrate the GPIO capability of a Raspberry Pi into Home Assistant." -logo: raspberry-pi.png +title: Raspberry Pi GPIO +description: Instructions on how to integrate the GPIO capability of a Raspberry Pi into Home Assistant. ha_category: - DIY - Binary Sensor @@ -9,6 +8,7 @@ ha_category: - Switch ha_release: pre 0.7 ha_iot_class: Local Push +ha_domain: rpi_gpio --- The `rpi_gpio` integration is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the integration itself, for the platforms please check their corresponding pages. @@ -17,7 +17,7 @@ The `rpi_gpio` integration is the base for all related GPIO platforms in Home As The `rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). -## Configuration +### Configuration To use your Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: @@ -72,7 +72,7 @@ It uses two pins on the Raspberry Pi. Although you do not need Andrews Hilliday's software controller when you run Home Assistant, he has written clear instructions on how to hook your garage door and sensors up to your Raspberry Pi, which can be found [here](https://github.com/andrewshilliday/garage-door-controller#hardware-setup). -## Configuration +### Configuration To enable Raspberry Pi Covers in your installation, add the following to your `configuration.yaml` file: @@ -145,13 +145,13 @@ cover: ## Remote Raspberry Pi Cover -If you don't have Home Assistant running on your Raspberry Pi and you want to use it as a remote cover instead, there is a project called [GarageQTPi](https://github.com/Jerrkawz/GarageQTPi) that will work remotely with the [MQTT Cover Component](/integrations/cover.mqtt/). Follow the Github instructions to install and configure GarageQTPi and once configured follow the Home Assistant instructions to configure the MQTT Cover. +If you don't have Home Assistant running on your Raspberry Pi and you want to use it as a remote cover instead, there is a project called [GarageQTPi](https://github.com/Jerrkawz/GarageQTPi) that will work remotely with the [MQTT Cover Component](/integrations/cover.mqtt/). Follow the GitHub instructions to install and configure GarageQTPi and once configured follow the Home Assistant instructions to configure the MQTT Cover. ## Switch The `rpi_gpio` switch platform allows you to control the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). -## Configuration +### Configuration To use your Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: @@ -184,7 +184,7 @@ invert_logic: For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#General_purpose_input-output_(GPIO)_connector) about the Raspberry Pi.
    -Note that a pin managed by HASS is expected to be exclusive to HASS. +Note that a pin managed by Home Assistant is expected to be exclusive to Home Assistant.
    A common question is what does Port refer to, this number is the actual GPIO #, not the pin #. diff --git a/source/_integrations/rpi_gpio_pwm.markdown b/source/_integrations/rpi_gpio_pwm.markdown index 3fcb775584e2..5ee45f9c42b5 100644 --- a/source/_integrations/rpi_gpio_pwm.markdown +++ b/source/_integrations/rpi_gpio_pwm.markdown @@ -1,14 +1,14 @@ --- -title: "PWM LED Light" -description: "Instructions on how to setup PWM LEDs within Home Assistant." +title: pigpio Daemon PWM LED +description: Instructions on how to setup PWM LEDs within Home Assistant. ha_category: - DIY ha_iot_class: Local Push ha_release: 0.43 -logo: raspberry-pi.png +ha_domain: rpi_gpio_pwm --- -The `rpi_gpio_pwm` platform allows to control multiple lights using pulse-width modulation, for example led strips. It supports one-color, RGB and RGBW LEDs driven by GPIOs of a Raspberry Pi or a PCA9685 controller. +The `rpi_gpio_pwm` platform allows to control multiple lights using pulse-width modulation, for example LED strips. It supports one-color, RGB and RGBW LEDs driven by GPIOs of a Raspberry Pi (same host or remote) or a PCA9685 controller. For controlling the GPIOs, the platform connects to the [pigpio-daemon](http://abyz.me.uk/rpi/pigpio/pigpiod.html), which must be running. On Raspbian Jessie 2016-05-10 or newer the `pigpio` library is already included. On other operating systems it needs to be installed first (see [installation instructions](https://github.com/soldag/python-pwmled#installation)). @@ -59,6 +59,10 @@ leds: required: false default: 0x40 type: string + host: + description: The remote host address for the GPIO driver. + required: false + type: string {% endconfiguration %} ## Examples @@ -94,3 +98,17 @@ light: pins: [3, 4, 5, 6] # [R, G, B, W] type: rgbw ``` + +### RGB LED connected to the GPIO pins of an remote Raspberry Pi. + +On the Raspberry Pi the pigpio daemon is running on the default port 6666. + +```yaml +# Example configuration.yaml entry +light: + - platform: rpi_gpio_pwm + leds: + - name: Lightstrip Sideboard + driver: gpio + host: 192.168.0.66 +``` diff --git a/source/_integrations/rpi_pfio.markdown b/source/_integrations/rpi_pfio.markdown index d5bdae097f60..2859b9332100 100644 --- a/source/_integrations/rpi_pfio.markdown +++ b/source/_integrations/rpi_pfio.markdown @@ -1,13 +1,13 @@ --- -title: "PiFace Digital I/O" -description: "Instructions on how to integrate the PiFace Digital I/O module into Home Assistant." -logo: raspberry-pi.png +title: PiFace Digital I/O (PFIO) +description: Instructions on how to integrate the PiFace Digital I/O module into Home Assistant. ha_category: - DIY - Binary Sensor - Switch ha_release: 0.45 ha_iot_class: Local Push +ha_domain: rpi_pfio --- The `rpi_pfio` integration is the base for all related [PiFace Digital I/O (PFIO)](http://www.piface.org.uk/) platforms in Home Assistant. There is no setup needed for the integration itself; for the platforms, please check their corresponding pages. @@ -19,9 +19,12 @@ There is currently support for the following device types within Home Assistant: Set the jumpers on the PiFace board for address 0 (JP1: 1-2, JP2: 1-2). -## Use with HassOS +## Using with the Home Assistant Operating System -Note that the PiFace Digital 2 uses the Raspberry Pi SPI port, which is disabled by default when using [HassOS](https://github.com/home-assistant/hassos). When using HassOS, you must mount the SD card on another computer and access the boot partition on the card. Edit the `config.txt` file and add the line `dtparam=spi=on` to the end. This should enable SPI when HassOS is booted and allow Home Assistant to access the PiFace Digital 2 board. +Note that the PiFace Digital 2 uses the Raspberry Pi SPI port, which is disabled by default when using the [Home Assistant Operating System](https://github.com/home-assistant/hassos). +You must mount the SD card on another computer and access the boot partition on the card. Edit the `config.txt` file and add the line `dtparam=spi=on` to the end. + +This should enable SPI when the Home Assistant Operating System is booted to access the PiFace Digital 2 board. ## Binary Sensor @@ -107,4 +110,4 @@ ports: required: false default: false type: boolean -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/rpi_rf.markdown b/source/_integrations/rpi_rf.markdown index 153f10b24421..c7aafb19a8e8 100644 --- a/source/_integrations/rpi_rf.markdown +++ b/source/_integrations/rpi_rf.markdown @@ -1,11 +1,11 @@ --- -title: "Raspberry Pi RF Switch" -description: "Instructions on how to integrate devices controlled via codes sent with low-cost GPIO RF modules on a Raspberry Pi into Home Assistant as a switch." -logo: raspberry-pi.png +title: Raspberry Pi RF +description: Instructions on how to integrate devices controlled via codes sent with low-cost GPIO RF modules on a Raspberry Pi into Home Assistant as a switch. ha_category: - DIY ha_release: 0.19 ha_iot_class: Assumed State +ha_domain: rpi_rf --- The `rpi_rf` switch platform allows you to control devices over 433/315MHz LPD/SRD signals with generic low-cost GPIO RF modules on a [Raspberry Pi](https://www.raspberrypi.org/). diff --git a/source/_integrations/rss_feed_template.markdown b/source/_integrations/rss_feed_template.markdown index a0a73702de9b..869fde857577 100644 --- a/source/_integrations/rss_feed_template.markdown +++ b/source/_integrations/rss_feed_template.markdown @@ -1,11 +1,11 @@ --- -title: "RSS feed template" -description: "Use this integration to generate RSS feeds showing your latest data." -logo: home-assistant.png +title: RSS Feed Template +description: Use this integration to generate RSS feeds showing your latest data. ha_category: - Front End ha_release: 0.44 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: rss_feed_template --- The `rss_feed_template` integration can export any information from Home Assistant as a static RSS feed. This can be used to display that information on many types of devices using an RSS reader. While native apps for Home Assistant are not widely available, native RSS readers exist for almost any platform. diff --git a/source/_integrations/rtorrent.markdown b/source/_integrations/rtorrent.markdown index 4e7449f1c760..d95803cb5b3c 100644 --- a/source/_integrations/rtorrent.markdown +++ b/source/_integrations/rtorrent.markdown @@ -1,14 +1,14 @@ --- -title: "rtorrent Sensor" -description: "Instructions on how to integrate rtorrent sensors within Home Assistant." -logo: rtorrent.png +title: rTorrent +description: Instructions on how to integrate rTorrent sensors within Home Assistant. ha_category: - Downloading ha_release: 0.81 ha_iot_class: Local Polling +ha_domain: rtorrent --- -The `rtorrent` platform allows you to monitor your downloads with [rtorrent](https://rakshasa.github.io/rtorrent/) from within Home Assistant and setup automations based on the information. +The `rtorrent` platform allows you to monitor your downloads with [rTorrent](https://rakshasa.github.io/rtorrent/) from within Home Assistant and setup automations based on the information. To enable this sensor, add the following lines to your `configuration.yaml`: @@ -21,21 +21,27 @@ sensor: - 'current_status' - 'download_speed' - 'upload_speed' + - 'all_torrents' + - 'stopped_torrents' + - 'complete_torrents' + - 'uploading_torrents' + - 'downloading_torrents' + - 'active_torrents' ``` -This sensor requires the rtorrent XMLRPC API exposed on an HTTP interface. -Note that for security reasons, simply using the SCGI interface (default `localhost:5000`) of rtorrent won't work. +This sensor requires the rTorrent XML-RPC API exposed on an HTTP interface. +Note that for security reasons, simply using the SCGI interface (default `localhost:5000`) of rTorrent won't work. The [official reference](https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC) describes how to set up that HTTP interface. Alternatively, the [arch-rtorrentvpn](https://github.com/binhex/arch-rtorrentvpn) container can be used with `url` set to `http://admin:rutorrent@127.0.0.1:9080/RPC2`. {% configuration %} url: - description: The URL to the HTTP endpoint of the rtorrent XMLRPC API. + description: The URL to the HTTP endpoint of the rTorrent XML-RPC API. required: true type: string name: - description: The name to use when displaying this rtorrent instance. + description: The name to use when displaying this rTorrent instance. required: false type: string monitored_variables: @@ -44,9 +50,21 @@ monitored_variables: type: list keys: current_status: - description: The status of your rtorrent daemon. + description: The status of your rTorrent daemon. download_speed: description: The current download speed. upload_speed: description: The current upload speed. + all_torrents: + description: The number of all torrents. + stopped_torrents: + description: The number of torrents that are stopped. + complete_torrents: + description: The number of torrents that are fully downloaded. + uploading_torrents: + description: The number of torrents that are seeding. + downloading_torrents: + description: The number of torrents that are leeching. + active_torrents: + description: The number of torrents that are actively ( measurable speed ) leeching, seeding or both. {% endconfiguration %} diff --git a/source/_integrations/russound_rio.markdown b/source/_integrations/russound_rio.markdown index 1c2fccda2e33..962be81e8b6f 100644 --- a/source/_integrations/russound_rio.markdown +++ b/source/_integrations/russound_rio.markdown @@ -1,11 +1,11 @@ --- -title: "Russound RIO" -description: "Instructions on how to integrate Russound RIO devices into Home Assistant." -logo: russound.png +title: Russound RIO +description: Instructions on how to integrate Russound RIO devices into Home Assistant. ha_category: - Media Player ha_release: 0.49 ha_iot_class: Local Push +ha_domain: russound_rio --- The `russound_rio` platform allows you to control Russound devices that make use of the RIO protocol. diff --git a/source/_integrations/russound_rnet.markdown b/source/_integrations/russound_rnet.markdown index a74333851580..5385c91cca9d 100644 --- a/source/_integrations/russound_rnet.markdown +++ b/source/_integrations/russound_rnet.markdown @@ -1,11 +1,11 @@ --- -title: "Russound RNET" -description: "Instructions on how to integrate Russound RNET devices into Home Assistant." -logo: russound.png +title: Russound RNET +description: Instructions on how to integrate Russound RNET devices into Home Assistant. ha_category: - Media Player ha_release: 0.25 ha_iot_class: Local Polling +ha_domain: russound_rnet --- The `russound_rnet` platform allows you to control Russound devices that make use of the RNET protocol. diff --git a/source/_integrations/sabnzbd.markdown b/source/_integrations/sabnzbd.markdown index 9f41839fe579..d1c127e77a43 100644 --- a/source/_integrations/sabnzbd.markdown +++ b/source/_integrations/sabnzbd.markdown @@ -1,12 +1,13 @@ --- -title: "SABnzbd" -description: "Instructions on how to integrate SABnzbd with Home Assistant." +title: SABnzbd +description: Instructions on how to integrate SABnzbd with Home Assistant. logo: sabnzbd.png ha_category: - Downloading - Sensor -ha_release: 0.70 +ha_release: 0.7 ha_iot_class: Local Polling +ha_domain: sabnzbd --- The `sabnzbd` integration will allow you to monitor and control your downloads with [SABnzbd](https://sabnzbd.org) from within Home Assistant and setup automations based on the information. diff --git a/source/_integrations/safe_mode.markdown b/source/_integrations/safe_mode.markdown new file mode 100644 index 000000000000..25bcc4a9b6a9 --- /dev/null +++ b/source/_integrations/safe_mode.markdown @@ -0,0 +1,26 @@ +--- +title: Safe Mode +description: Allows Home Assistant to start up in safe mode. +ha_category: [] +ha_release: 0.105 +ha_codeowners: + - '@home-assistant/core' +ha_domain: safe_mode +--- + +The `safe_mode` integration is an internally used integration by the +Home Assistant Core. + +You don't have to configure it in any way since it is automatically always +available when Home Assistant needs it. + +If, during startup, Home Assistant has problems reading your configuration, +it will still continue to start using bits and pieces from the configuration +of the last time it did start. + +When this happens, Home Assistant will start in "Safe mode" using this +integration. In this mode, nothing is loaded, but it does give you access to +the Home Assistant frontend, settings and add-ons. + +This gives you the possibility to correct the issue and restart Home Assistant +to re-try. diff --git a/source/_integrations/saj.markdown b/source/_integrations/saj.markdown index 98dc00e205ee..f1187fb95ca6 100644 --- a/source/_integrations/saj.markdown +++ b/source/_integrations/saj.markdown @@ -1,19 +1,22 @@ --- -title: "SAJ Solar Inverter" -description: "Instructions on how to connect your SAJ Solar Inverter to Home Assistant." +title: SAJ Solar Inverter +description: Instructions on how to connect your SAJ Solar Inverter to Home Assistant. ha_category: - Energy logo: saj.png ha_iot_class: Local Polling -ha_release: "0.100" +ha_release: '0.100' +ha_codeowners: + - '@fredericvl' +ha_domain: saj --- The `saj` sensor will poll a [SAJ](https://www.saj-electric.com/) solar inverter and present the values as sensors in Home Assistant. This sensor uses the web interface and to use it, you have to be able to connect to the solar inverter from your favorite web browser. -There is a difference between inverters that are connected via an ethernet module and those connected via a WiFi module. -The WiFi module requires a username and password for authentication where the ethernet module does not. +There is a difference between inverters that are connected via an ethernet module and those connected via a Wi-Fi module. +The Wi-Fi module requires a username and password for authentication where the ethernet module does not. ## Configuration @@ -66,7 +69,7 @@ Sensors available in the library: | temperature | °C | Temperature of the inverter. | | state | N/A | Live state of the inverter. | -## Full configuration example for WiFi inverters +## Full configuration example for Wi-Fi inverters ```yaml sensor: diff --git a/source/_integrations/salt.markdown b/source/_integrations/salt.markdown new file mode 100644 index 000000000000..3e348821e441 --- /dev/null +++ b/source/_integrations/salt.markdown @@ -0,0 +1,48 @@ +--- +title: Salt Fiber Box +description: Instructions on how to integrate Salt Fiber Box router into Home Assistant. +logo: salt.png +ha_category: + - Presence Detection +ha_iot_class: Local Polling +ha_codeowners: + - '@bjornorri' +ha_release: 0.106 +ha_domain: salt +--- + +The `salt` platform offers presence detection by looking at connected devices to a [Salt Fiber Box](https://fiber.salt.ch/en/fiber/equipment/fiber-box) router from [Salt](https://www.salt.ch), which is an internet provider in Switzerland. + +
    +The router only allows one user session at a time. If you log into the router's web interface, the platform will stop updating until you log out. +
    + +## Configuration + +To use a Salt Fiber Box router in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: salt + host: 192.168.1.1 + username: admin + password: YOUR_PASSWORD +``` + +{% configuration %} +host: + description: The IP address of your router, e.g. `192.168.1.1`. + required: true + type: string +username: + description: The username used to log into the router's web interface, e.g. `admin`. + required: true + type: string +password: + description: The password used to log into the router's web interface. + required: true + type: string +{% endconfiguration %} + +See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 1baf862dbe5b..ba59ec7f139f 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -1,56 +1,78 @@ --- -title: "Samsung Smart TV" -description: "Instructions on how to integrate a Samsung Smart TV into Home Assistant." +title: Samsung Smart TV +description: Instructions on how to integrate a Samsung Smart TV into Home Assistant. logo: samsung.png ha_category: - Media Player ha_release: 0.13 ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@escoand' +ha_domain: samsungtv --- The `samsungtv` platform allows you to control a [Samsung Smart TV](https://www.samsung.com/uk/tvs/all-tvs/). ### Setup +Go to the integrations page in your configuration and click on new integration -> Samsung TV. +If you have enabled [ssdp](/integrations/ssdp) discovery and your TV is on, it's likely that you just have to confirm the detected device. + When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. -### Configuration +### YAML Configuration -To add a TV to your installation without relying on the [discovery component](/integrations/discovery/), add the following to your `configuration.yaml` file: +YAML configuration is around for people that prefer YAML. +To use a TV add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry -media_player: - - platform: samsungtv - host: IP_ADDRESS +samsungtv: + - host: IP_ADDRESS ``` {% configuration %} host: - description: "The IP of the Samsung Smart TV, e.g., `192.168.0.10`." + description: "The hostname or IP of the Samsung Smart TV, e.g., `192.168.0.10`." required: true type: string -port: - description: The port of the Samsung Smart TV. If set to 8001, the new websocket connection will be used (required for 2016+ TVs) - for installs other than Hass.io or Docker you may need to install a Python package, see below. - required: false - type: integer - default: 55000 name: description: The name you would like to give to the Samsung Smart TV. required: false type: string -timeout: - description: The timeout for communication with the TV in seconds. - required: false - type: time - default: 0 (no timeout) -mac: - description: "The MAC address of the Samsung Smart TV, e.g., `00:11:22:33:44:55:66`. Required for power on support via wake on lan." +turn_on_action: + description: "Defines an [action](/docs/automation/action/) to turn the TV on." required: false - type: string + type: list {% endconfiguration %} -Currently known supported models: +#### Wake up TV + +To wake up the TV when switched off you can use the [wake-on-lan](/integrations/wake_on_lan/) integration and call a service. This is not possible with every device. + +```yaml +wake_on_lan: + +samsungtv: + - host: IP_ADDRESS + turn_on_action: + - service: wake_on_lan.send_magic_packet + data: + mac: "11:22:33:44:55:66" +``` + +### Supported models + +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.io/tree/current/source/_integrations/samsungtv.markdown). + +#### Naming + +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. + +For example: for model `UN55NU7100`, the `UN55` would mean it's an LED, North American, 55 inch TV, and the model number listed below would be the remainder: `NU7100`. + +#### Models tested and working - C7700 - D5500 @@ -58,12 +80,14 @@ Currently known supported models: - D6300SF - D6500 - D6505 +- D6900 (WOL did not work) - D7000 - D8000 - EH5300 - EH5600 - ES5500 - ES5700 +- ES6100 - ES6300 - ES6800 - F4580 @@ -73,32 +97,35 @@ Currently known supported models: - F6500 - F7000 - F8000BF -- K5579 (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button) +- K5579 (On/Off, Forward/Backward, Volume control, but no Play button) - K5600AK (partially supported, turn on works but state is not updated) -- K6500AF (port must be set to 8001) -- KS7005 (port must be set to 8001, MAC address must be provided, On/Off, Volume are OK, no channel change) -- KS7502 (port must be set to 8001, turn on doesn't work, turn off works fine) -- KS8000 (port must be set to 8001) -- KS8005 (port must be set to 8001) -- KS8500 (port must be set to 8001) -- KU6020 (port must be set to 8001) -- KU6100 (port must be set to 8001) -- KU6290 (port must be set to 8001) -- KU6400U (port must be set to 8001) -- KU7000 (port must be set to 8001) -- M5620 (port must be set to 8001) -- MU6170UXZG (port must be set to 8001) -- NU7090 (port must be set to 8801, On/Off, MAC must be specified for Power On) -- NU7400 (port set to 8001) +- K6500AF +- KS7005 (MAC address must be provided, On/Off, Volume are OK, no channel change) +- KS7502 (turn on doesn't work, turn off works fine) +- KS8000 +- KS8005 +- KS8500 +- KU6020 +- KU6100 +- KU6290 +- KU6400U +- KU7000 +- M5620 +- MU6170UXZG +- NU7090 (On/Off, MAC must be specified for Power On) +- NU7400 - NU8000 -- U6000 (port must be set to 8001) -- U6300 (port must be set to 8001) -- UE6199UXZG (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button) -- UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button) -- UE49KU6470 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button) -- UE46ES5500 (partially supported, turn on doesn't works) - -Currently tested but not working models: +- U6000 +- U6300 +- UE46ES5500 (partially supported, turn on doesn't work) +- UE46D7000 +- UE49KU6470 (On/Off, Forward/Backward, Volume are OK, but no Play button) +- UE55MU6179 +- UE55NU8070 +- UE6199UXZG (On/Off, Forward/Backward, Volume control, but no Play button) +- UE65KS8005 (On/Off, Forward/Backward, Volume are OK, but no Play button) + +#### Models tested but not yet working - J5200 - Unable to see state and unable to control - J5500 - State is always "on" and unable to control (but port 8001 *is* open) @@ -113,35 +140,32 @@ Currently tested but not working models: - JU7500 - Unable to see state and unable to control - MU6125 - Unable to see state and unable to control (Tested on UE58MU6125 on port 8001 and 8801) - MU6300 - Port set to 8001, turning on works, status not working reliably, turning off is not permanent (it comes back on) -- Q60 – turning on works, turning off does not work, State is always "off". +- MU6400 - Unable to see state and unable to control (using latest 1270 firmware. Had limited functionality on previous firmware) +- Q60 – Turning on works, turning off does not work, State is always "off". - Q6F – Port set to 8001, turning on works, turning off does not work, status not working reliably. - Q7F - State is always "off" and unable to control via port 8001. +- Q9F - Turning on works, turning off does not work. State is correct. Nothing else works. Port 8001. +- RU8000 - Turning on works, turning off does not work. State is correct but says on periodically but in reality is not. Nothing else works via port 8001. 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.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. +### Usage + +#### Changing channels Changing channels can be done by calling the `media_player.play_media` service with the following payload: -```javascript -{ - "entity_id": "media_player.office_tv", - "media_content_id": "590", - "media_content_type": "channel" -} +```yaml +entity_id: media_player.samsung_tv +media_content_id: 590 +media_content_type: channel ``` +#### Selecting a source -Currently the ability to select a source is not implemented. - -### Hass.io - -No additional actions are required +It's possible to switch between the 2 sources `TV` and `HDMI`. -### Docker +### Home Assistant & Home Assistant Core on Docker No additional actions are required diff --git a/source/_integrations/satel_integra.markdown b/source/_integrations/satel_integra.markdown index b1d3a8748683..b0bfaa4cf901 100644 --- a/source/_integrations/satel_integra.markdown +++ b/source/_integrations/satel_integra.markdown @@ -1,6 +1,6 @@ --- -title: "Satel Integra Alarm" -description: "Instructions on how to integrate a Satel Integra alarm panel with Home Assistant using an ETHM network extension from Satel." +title: Satel Integra +description: Instructions on how to integrate a Satel Integra alarm panel with Home Assistant using an ETHM network extension from Satel. logo: satel.jpg ha_category: - Hub @@ -9,6 +9,7 @@ ha_category: - Switch ha_release: 0.54 ha_iot_class: Local Push +ha_domain: satel_integra --- The `satel_integra` integration will allow Home Assistant users who own a Satel Integra alarm panel to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a ETHM extension module that must be installed in the alarm. Compatible with ETHM-1 Plus module with firmware version > 2.00 (version 2.04 confirmed). @@ -52,6 +53,10 @@ port: required: false default: 7094 type: integer +code: + description: The INTEGRA ID (found in DLOADX under "Communication configuration" or in polish "Komunikacja Konfiguracji" section), it's needed for making use of the switchable_outputs. + required: false + type: string partitions: description: List of the partitions to operate on. required: false diff --git a/source/_integrations/scene.knx.markdown b/source/_integrations/scene.knx.markdown index 741c4e6039b6..bc82cb9e5cce 100644 --- a/source/_integrations/scene.knx.markdown +++ b/source/_integrations/scene.knx.markdown @@ -1,10 +1,10 @@ --- title: "KNX Scene" description: "Instructions on how to integrate KNX Scenes into Home Assistant." -logo: knx.png ha_category: - Scene ha_release: 0.63 +ha_domain: knx ---
    diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown index 8463c7346906..4c2435f34c58 100644 --- a/source/_integrations/scene.markdown +++ b/source/_integrations/scene.markdown @@ -1,11 +1,13 @@ --- -title: "Scenes" -description: "Instructions on how to setup scenes within Home Assistant." -logo: home-assistant.png +title: Scenes +description: Instructions on how to setup scenes within Home Assistant. ha_category: - Organization -ha_qa_scale: internal ha_release: 0.15 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: scene --- You can create scenes that 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. @@ -14,6 +16,7 @@ You can create scenes that capture the states you want certain entities to be. F # Example configuration.yaml entry scene: - name: Romantic + icon: "mdi:flower-tulip" entities: light.tv_back_light: on light.ceiling: @@ -37,6 +40,10 @@ name: description: Friendly name of scene. required: true type: string +icon: + description: Icon for the scene. + required: false + type: string entities: description: Entities to control and their desired state. required: true @@ -96,12 +103,12 @@ Whenever you make a change to your scene configuration, you can call the `scene. Create a new scene without having to configure it by calling the `scene.create` service. This scene will be discarded after reloading the configuration. -You need to pass a `scene_id` in lowercase and with underscores instead of spaces. You also need to specify the entities in the same format as when configuring the scene. +You need to pass a `scene_id` in lowercase and with underscores instead of spaces. You also may want to specify the entities in the same format as when configuring the scene. You can also take a snapshot of the current state by using the `snapshot_entities` parameter. In this case, you have to specify the `entity_id` of all entities you want to take a snapshot of. `entities` and `snapshot_entities` can be combined but you have to use at least one of them. If the scene was previously created by `scene.create`, it will be overwritten. If the scene was created by YAML, nothing happens but a warning in your log files. ```yaml -# Example automation +# Example automation using entities automation: trigger: platform: homeassistant @@ -119,3 +126,41 @@ automation: state: on source: HDMI 1 ``` + +The following example turns off some entities as soon as a window opens. The states of the entities are restored after the window is closed again. + +```yaml +# Example automation using snapshot +- alias: Window opened + trigger: + - platform: state + entity_id: binary_sensor.window + from: 'off' + to: 'on' + condition: [] + action: + - service: scene.create + data: + scene_id: before + snapshot_entities: + - climate.ecobee + - light.ceiling_lights + - service: light.turn_off + data: + entity_id: light.ceiling_lights + - service: climate.set_hvac_mode + data: + entity_id: climate.ecobee + hvac_mode: 'off' +- alias: Window closed + trigger: + - platform: state + entity_id: binary_sensor.window + from: 'on' + to: 'off' + condition: [] + action: + - service: scene.turn_on + data: + entity_id: scene.before +``` diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown index 892ba3712ca0..793998ff6d4b 100644 --- a/source/_integrations/scrape.markdown +++ b/source/_integrations/scrape.markdown @@ -1,11 +1,13 @@ --- -title: "Scrape Sensor" -description: "Instructions on how to integrate Web scrape sensors into Home Assistant." -logo: home-assistant.png +title: Scrape +description: Instructions on how to integrate Web scrape sensors into Home Assistant. ha_category: - Sensor ha_release: 0.31 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' +ha_domain: scrape --- The `scrape` sensor platform is scraping information from websites. The sensor loads a HTML page and gives you the option to search and split out a value. As this is not a full-blown web scraper like [scrapy](https://scrapy.org/), it will most likely only work with simple web pages and it can be time-consuming to get the right section. @@ -43,6 +45,10 @@ name: required: false default: Web scrape type: string +value_template: + description: Defines a template to get the state of the sensor. + required: false + type: template unit_of_measurement: description: Defines the units of measurement of the sensor, if any. required: false diff --git a/source/_integrations/script.markdown b/source/_integrations/script.markdown index 846f5e8e54b3..da0e28d634d8 100644 --- a/source/_integrations/script.markdown +++ b/source/_integrations/script.markdown @@ -1,11 +1,13 @@ --- -title: "Scripts" -description: "Instructions on how to setup scripts within Home Assistant." -logo: home-assistant.png +title: Scripts +description: Instructions on how to setup scripts within Home Assistant. ha_category: - Automation -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: script --- The `script` integration allows users to specify a sequence of actions to be executed by Home Assistant. These are run when you turn the script on. The script integration will create an entity for each script and allow them to be controlled via services. @@ -27,7 +29,7 @@ script:
    -Script names (e.g., `message_temperature` in the example above) are not allowed to contain capital letters, or dash (minus) characters, i.e. `-`. The preferred way to separate words for better readability is to use underscore (`_`) characters. +Script names (e.g., `message_temperature` in the example above) are not allowed to contain capital letters, or dash (minus) characters, i.e., `-`. The preferred way to separate words for better readability is to use underscore (`_`) characters.
    @@ -36,6 +38,10 @@ alias: description: Friendly name for the script. required: false type: string +icon: + description: Icon for the script. + required: false + type: string description: description: A description of the script that will be displayed in the Services tab under Developer Tools. required: false @@ -65,10 +71,13 @@ sequence: ### Full Configuration +{% raw %} + ```yaml script:  wakeup: alias: Wake Up + icon: "mdi:party-popper" description: 'Turns on the bedroom lights and then the living room lights after a delay' fields: minutes: @@ -96,6 +105,8 @@ script:  entity_id: group.living_room ``` +{% endraw %} + ### Passing variables to scripts As part of the service, variables can be passed along to a script so they become available within templates in that script. diff --git a/source/_integrations/scsgate.markdown b/source/_integrations/scsgate.markdown index 34c3242c8423..fd763b674cf2 100644 --- a/source/_integrations/scsgate.markdown +++ b/source/_integrations/scsgate.markdown @@ -1,6 +1,6 @@ --- -title: "SCSGate" -description: "Instructions on how to integrate SCSGate into Home Assistant." +title: SCSGate +description: Instructions on how to integrate SCSGate into Home Assistant. logo: bus_scs.png ha_category: - Hub @@ -9,6 +9,7 @@ ha_category: - Switch ha_release: 0.13 ha_iot_class: Local Polling +ha_domain: scsgate --- The SCSGate integration support the [SCSGate](https://translate.google.com/translate?hl=en&sl=it&tl=en&u=http%3A%2F%2Fguidopic.altervista.org%2Feibscsgt%2Finterface.html) device. This a home-brew device allows to interact with the MyHome system from BTicino/Legrande. diff --git a/source/_integrations/search.markdown b/source/_integrations/search.markdown new file mode 100644 index 000000000000..f27d6df2ee7b --- /dev/null +++ b/source/_integrations/search.markdown @@ -0,0 +1,22 @@ +--- +title: Search +description: Internal search module for Home Assistant. +ha_category: [] +ha_release: 0.105 +ha_codeowners: + - '@home-assistant/core' +ha_domain: search +--- + +The `search` integration is an internally used integration by the +Home Assistant Core. + +All data stored in Home Assistant is interconnected, making it a graph. +This means it can be searched as a graph. + +This integration allows the internals of Home Assistant to search for +relations between things like areas, devices, entities, configuration entries, +scenes, scripts and automations. + +The search integration is automatically loaded with the Home Assistant frontend +and does not need to be configured separately. diff --git a/source/_integrations/season.markdown b/source/_integrations/season.markdown index 428f89b560ea..4288a6a90f33 100644 --- a/source/_integrations/season.markdown +++ b/source/_integrations/season.markdown @@ -1,12 +1,12 @@ --- -title: "Season Sensor" -description: "Instructions on how to add season sensors into Home Assistant." +title: Season +description: Instructions on how to add season sensors into Home Assistant. ha_category: - Utility -logo: home-assistant.png ha_iot_class: Local Polling ha_release: 0.53 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: season --- The `season` sensor will display the current astronomical or meteorological season (Spring, Summer, Autumn, Winter) based on the user's setting in the configuration file. @@ -37,4 +37,9 @@ type: required: false type: string default: astronomical +name: + description: "An identifier for the sensor in the frontend." + required: false + type: string + default: Season {% endconfiguration %} diff --git a/source/_integrations/sendgrid.markdown b/source/_integrations/sendgrid.markdown index 82b78b900dfb..1f0db84fc57d 100644 --- a/source/_integrations/sendgrid.markdown +++ b/source/_integrations/sendgrid.markdown @@ -1,10 +1,11 @@ --- -title: "SendGrid" -description: "Instructions on how to add email notifications via SendGrid to Home Assistant." +title: SendGrid +description: Instructions on how to add email notifications via SendGrid to Home Assistant. logo: sendgrid.png ha_category: - Notifications ha_release: 0.14 +ha_domain: sendgrid --- The `sendgrid` notification platform sends email notifications via [SendGrid](https://sendgrid.com/), a proven cloud-based email platform. diff --git a/source/_integrations/sense.markdown b/source/_integrations/sense.markdown index 02cd2b75cd44..493fef0189e1 100644 --- a/source/_integrations/sense.markdown +++ b/source/_integrations/sense.markdown @@ -1,6 +1,6 @@ --- title: Sense -description: "Instructions on how to integrate Sense within Home Assistant." +description: Instructions on how to integrate Sense within Home Assistant. logo: sense.png ha_category: - Energy @@ -8,6 +8,10 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.82 +ha_config_flow: true +ha_codeowners: + - '@kbickar' +ha_domain: sense --- Integrate your [Sense](https://sense.com) meter information into Home Assistant. @@ -19,7 +23,9 @@ There is currently support for the following device types within Home Assistant: ## Configuration -To enable this sensor in your installation, add the following to your `configuration.yaml` file: +To add `Sense` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Sense**. + +Alternatively, to enable this sensor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -49,3 +55,5 @@ Sensors are added for both usage and production with the following names: - **Daily/Weekly/Monthly Usage/Production**: Daily/Weekly/Monthly power usage/production in kWh. Updated every 5 minutes. Binary sensors are created for each of the devices detected by your Sense monitor to show their power state. + +Sensors are created for each of the devices detected by your Sense monitor to show their power usage in Watts. diff --git a/source/_integrations/sensehat.markdown b/source/_integrations/sensehat.markdown index e605795f3521..7f34b1217e9d 100644 --- a/source/_integrations/sensehat.markdown +++ b/source/_integrations/sensehat.markdown @@ -1,6 +1,6 @@ --- -title: "Sense HAT" -description: "Instructions on how to setup Sense HAT LED lights within Home Assistant." +title: Sense HAT +description: Instructions on how to setup Sense HAT LED lights within Home Assistant. logo: sense-hat.png ha_category: - DIY @@ -8,6 +8,7 @@ ha_category: - Sensor ha_iot_class: Assumed State ha_release: 0.44 +ha_domain: sensehat --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/sensibo.markdown b/source/_integrations/sensibo.markdown index 71b11163e49b..ba1ac6f2bf34 100644 --- a/source/_integrations/sensibo.markdown +++ b/source/_integrations/sensibo.markdown @@ -1,11 +1,14 @@ --- -title: "Sensibo A/C controller" -description: "Instructions on how to integrate Sensibo A/C controller into Home Assistant." +title: Sensibo +description: Instructions on how to integrate Sensibo A/C controller into Home Assistant. logo: sensibo.png ha_category: - Climate ha_release: 0.44 ha_iot_class: Cloud Polling +ha_codeowners: + - '@andrey-git' +ha_domain: sensibo --- Integrates [Sensibo](https://sensibo.com) Air Conditioning controller into Home Assistant. @@ -21,7 +24,7 @@ climate: {% configuration %} api_key: - description: Your Sensibo API key (To get your API key visit ). + description: Your Sensibo API key (To get your API key visit `https://home.sensibo.com/me/api`). required: true type: string id: @@ -36,7 +39,8 @@ then in the Sensibo app log you will be able to distinguish between actions done in the app and actions done by Home Assistant.
    -### Full config example +## Full configuration example + ```yaml climate: - platform: sensibo @@ -46,11 +50,12 @@ climate: - id2 ``` -### Adding a quick switch example +## Adding a quick switch example If you want a "Quick Switch" to turn your AC On / Off, you can do that using the following `Switch Template`: {% raw %} + ```yaml switch: - platform: template @@ -69,4 +74,5 @@ switch: entity_id: climate.ac hvac_mode: off ``` + {% endraw %} diff --git a/source/_integrations/sensor.buienradar.markdown b/source/_integrations/sensor.buienradar.markdown index 2ba53e228114..6546f29fa366 100644 --- a/source/_integrations/sensor.buienradar.markdown +++ b/source/_integrations/sensor.buienradar.markdown @@ -6,6 +6,7 @@ ha_category: - Weather ha_release: 0.47 ha_iot_class: Cloud Polling +ha_domain: buienradar --- The `buienradar` platform uses [buienradar.nl](https://buienradar.nl/) as a source for current meteorological data for your location. The weather forecast is delivered by Buienradar, who provides a webservice that provides detailed weather information for users in The Netherlands. The relevant weather station used will be automatically selected based on the location specified in the Home Assistant configuration (or in the buienradar weather/sensor component). A map of all available weather stations can be found [here](https://www.google.com/maps/d/embed?mid=1NivHkTGQUOs0dwQTnTMZi8Uatj0). @@ -113,8 +114,6 @@ monitored_conditions: description: "The minimum forecasted amount of rain in [mm](https://en.wikipedia.org/wiki/Millimetre)." maxrain_1d: description: "The maximum forecasted amount of rain in [mm](https://en.wikipedia.org/wiki/Millimetre)." - snow_1d: - description: "The forecasted amount of snow in [cm](https://en.wikipedia.org/wiki/Centimetre)." windazimuth_1d: description: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. (derived from winddirection_1d) winddirection_1d: diff --git a/source/_integrations/sensor.command_line.markdown b/source/_integrations/sensor.command_line.markdown index 670f5f2fb50d..90e908941e83 100644 --- a/source/_integrations/sensor.command_line.markdown +++ b/source/_integrations/sensor.command_line.markdown @@ -1,11 +1,11 @@ --- title: "Command line Sensor" description: "Instructions on how to integrate command line sensors into Home Assistant." -logo: command_line.png ha_category: - Utility ha_release: pre 0.7 ha_iot_class: Local Polling +ha_domain: command_line --- @@ -108,7 +108,7 @@ sensor: command: "grep -c 'Login attempt' /home/hass/.homeassistant/home-assistant.log" ``` -Make sure to configure the [logger component](/integrations/logger) to monitor the [http component](/integrations/http/) at least the `warning` level. +Make sure to configure the [Logger integration](/integrations/logger) to monitor the [HTTP integration](/integrations/http/) at least the `warning` level. ```yaml # Example working logger settings that works @@ -155,8 +155,9 @@ The script (saved as `arest-value.py`) that is used looks like the example below ```python #!/usr/bin/python3 from requests import get -response = get('http://10.0.0.48/analog/2') -print(response.json()['return_value']) + +response = get("http://10.0.0.48/analog/2") +print(response.json()["return_value"]) ``` To use the script you need to add something like the following to your `configuration.yaml` file. diff --git a/source/_integrations/sensor.ios.markdown b/source/_integrations/sensor.ios.markdown index d80d21985829..c3a766f63371 100644 --- a/source/_integrations/sensor.ios.markdown +++ b/source/_integrations/sensor.ios.markdown @@ -1,11 +1,11 @@ --- title: "iOS Sensor" description: "Instructions on how to use the iOS sensors with Home Assistant." -logo: apple.png ha_category: - Sensor ha_release: 0.31 ha_iot_class: Local Push +ha_domain: ios --- The `ios` sensor platform is the Home Assistant part for using the iOS companion app. For further details please check the [iOS section](/docs/ecosystem/ios/) in the documentation for further details. diff --git a/source/_integrations/sensor.knx.markdown b/source/_integrations/sensor.knx.markdown index c68015799d50..a60c3a0aa388 100644 --- a/source/_integrations/sensor.knx.markdown +++ b/source/_integrations/sensor.knx.markdown @@ -1,11 +1,11 @@ --- title: "KNX Sensor" description: "Instructions on how to use a KNX Sensor with Home Assistant." -logo: knx.png ha_category: - Sensor ha_release: 0.29 ha_iot_class: Local Push +ha_domain: knx ---
    diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 7ac97d5280cc..9bd443e67201 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -1,11 +1,11 @@ --- -title: "Sensor" -description: "Instructions on how to setup your sensors with Home Assistant." -logo: home-assistant.png +title: Sensor +description: Instructions on how to setup your sensors with Home Assistant. ha_category: - Sensor -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_domain: sensor --- Sensors are gathering information about states and conditions. diff --git a/source/_integrations/sensor.metoffice.markdown b/source/_integrations/sensor.metoffice.markdown index cbdd3dff02dc..9a717d953326 100644 --- a/source/_integrations/sensor.metoffice.markdown +++ b/source/_integrations/sensor.metoffice.markdown @@ -1,11 +1,11 @@ --- title: "Met Office Sensor" description: "Instructions on how to integrate Met Office weather conditions into Home Assistant." -logo: metoffice.jpg ha_category: - Weather ha_release: 0.42 ha_iot_class: Cloud Polling +ha_domain: metoffice --- The `metoffice` sensor platform uses the Met Office's [DataPoint API](https://www.metoffice.gov.uk/datapoint) for weather data. @@ -13,7 +13,7 @@ The `metoffice` sensor platform uses the Met Office's [DataPoint API](https://ww - Each sensor will be given the `device_id` of "Met Office [condition]" if `name:` is not set. - The sensor checks for new data every minute, starting 30 minutes after the timestamp of the most recent data as the data is updated every half hour. -To add the Met Office weather to your installation you'll need to register for a free api key at the link above and then add the following to your `configuration.yaml` file: +To add the Met Office weather to your installation you'll need to register for a free API key at the link above and then add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/sensor.modbus.markdown b/source/_integrations/sensor.modbus.markdown index 13378090288c..17ed91eb7c2b 100644 --- a/source/_integrations/sensor.modbus.markdown +++ b/source/_integrations/sensor.modbus.markdown @@ -1,11 +1,11 @@ --- title: Modbus Sensor description: "Instructions on how to integrate Modbus sensors into Home Assistant." -logo: modbus.png ha_category: - Sensor ha_release: pre 0.7 ha_iot_class: Local Push +ha_domain: modbus --- The `modbus` sensor allows you to gather data from [Modbus](http://www.modbus.org/) registers. @@ -73,6 +73,11 @@ registers: description: Unit to attach to value. required: false type: integer + device_class: + 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 count: description: Number of registers to read. required: false @@ -104,7 +109,7 @@ registers: default: int type: string structure: - description: "If data_type is custom specify here a double quoted python struct format string to unpack the value. See python documentation for details. Ex: >i." + description: "If data_type is custom specify here a double quoted Python struct format string to unpack the value. See Python documentation for details. Ex: >i." required: false type: string {% endconfiguration %} diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown index f2629506fc81..d82da2d8232c 100644 --- a/source/_integrations/sensor.mqtt.markdown +++ b/source/_integrations/sensor.mqtt.markdown @@ -1,11 +1,11 @@ --- title: "MQTT Sensor" description: "Instructions on how to integrate MQTT sensors within Home Assistant." -logo: mqtt.png ha_category: - Sensor ha_release: 0.7 ha_iot_class: Configurable +ha_domain: mqtt --- This `mqtt` sensor platform uses the MQTT message payload as the sensor value. If messages in this `state_topic` are published with *RETAIN* flag, the sensor will receive an instant update with last known value. Otherwise, the initial state will be undefined. @@ -22,46 +22,71 @@ sensor: ``` {% configuration %} -state_topic: - description: The MQTT topic subscribed to receive sensor values. - required: true - type: string -name: - description: The name of the MQTT sensor. +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false type: string - default: MQTT Sensor -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -unit_of_measurement: - description: Defines the units of measurement of the sensor, if any. +device: + description: "Information about the device this sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." required: false - type: string -icon: - description: The icon for the sensor. + type: map + keys: + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + identifiers: + description: A list of IDs that uniquely identify the device. For example a serial number. + required: false + type: [string, list] + manufacturer: + description: The manufacturer of the device. + required: false + type: string + model: + description: The model of the device. + required: false + type: string + name: + description: The name of the device. + required: false + type: string + sw_version: + description: The firmware version of the device. + required: false + type: string +device_class: + description: The [type/class](/integrations/sensor/#device-class) of the sensor to set the icon in the frontend. required: false - type: icon + type: device_class + default: None expire_after: description: Defines the number of seconds after the value expires if it's not updated. required: false type: integer default: 0 -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." - required: false - type: template force_update: description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. reqired: false type: boolean default: false -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. +icon: + description: The icon for the sensor. + required: false + type: icon +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`." + required: false + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Implies `force_update` of the current sensor state when a message is received on this topic. + required: false + type: string +name: + description: The name of the MQTT sensor. required: false type: string + default: MQTT Sensor payload_available: description: The payload that represents the available state. required: false @@ -72,56 +97,27 @@ payload_not_available: required: false type: string default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Implies `force_update` of the current sensor state when a message is received on this topic. +qos: + description: The maximum QoS level of the state topic. required: false + type: integer + default: 0 +state_topic: + description: The MQTT topic subscribed to receive sensor values. + required: true type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`." - required: false - type: template -json_attributes: - description: (Deprecated, replaced by json_attributes_topic) A list of keys to extract values from a JSON dictionary payload and then set as sensor attributes. - required: false - type: [string, list] unique_id: description: "An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception." required: false type: string -device_class: - description: The [type/class](/integrations/sensor/#device-class) of the sensor to set the icon in the frontend. +unit_of_measurement: + description: Defines the units of measurement of the sensor, if any. required: false - type: device_class - default: None -device: - description: "Information about the device this sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." + type: string +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." required: false - type: map - keys: - identifiers: - description: A list of IDs that uniquely identify the device. For example a serial number. - required: false - type: [string, list] - connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' - required: false - type: list - manufacturer: - description: The manufacturer of the device. - required: false - type: string - model: - description: The model of the device. - required: false - type: string - name: - description: The name of the device. - required: false - type: string - sw_version: - description: The firmware version of the device. - required: false - type: string + type: template {% endconfiguration %} ## Examples diff --git a/source/_integrations/sensor.mysensors.markdown b/source/_integrations/sensor.mysensors.markdown index 6b84c8422da8..6b6010b8fbf5 100644 --- a/source/_integrations/sensor.mysensors.markdown +++ b/source/_integrations/sensor.mysensors.markdown @@ -1,15 +1,15 @@ --- title: "MySensors Sensor" description: "Instructions on how to integrate MySensors sensors into Home Assistant." -logo: mysensors.png ha_category: - DIY - Sensor ha_iot_class: Local Push ha_release: 0.7 +ha_domain: mysensors --- -Integrates MySensors sensors into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors sensors into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. ## Supported sensor types @@ -17,46 +17,46 @@ The following sensor types are supported: ### MySensors version 1.4 and higher -S_TYPE | V_TYPE --------------------|--------------------------------------- -S_TEMP | V_TEMP -S_HUM | V_HUM -S_BARO | V_PRESSURE, V_FORECAST -S_WIND | V_WIND, V_GUST, V_DIRECTION -S_RAIN | V_RAIN, V_RAINRATE -S_UV | V_UV -S_WEIGHT | V_WEIGHT, V_IMPEDANCE -S_POWER | V_WATT, V_KWH -S_DISTANCE | V_DISTANCE -S_LIGHT_LEVEL | V_LIGHT_LEVEL -S_IR | V_IR_RECEIVE -S_WATER | V_FLOW, V_VOLUME -S_AIR_QUALITY | V_DUST_LEVEL -S_CUSTOM | V_VAR1, V_VAR2, V_VAR3, V_VAR4, V_VAR5 -S_DUST | V_DUST_LEVEL -S_SCENE_CONTROLLER | V_SCENE_ON, V_SCENE_OFF +| S_TYPE | V_TYPE | +| ------------------ | -------------------------------------- | +| S_TEMP | V_TEMP | +| S_HUM | V_HUM | +| S_BARO | V_PRESSURE, V_FORECAST | +| S_WIND | V_WIND, V_GUST, V_DIRECTION | +| S_RAIN | V_RAIN, V_RAINRATE | +| S_UV | V_UV | +| S_WEIGHT | V_WEIGHT, V_IMPEDANCE | +| S_POWER | V_WATT, V_KWH | +| S_DISTANCE | V_DISTANCE | +| S_LIGHT_LEVEL | V_LIGHT_LEVEL | +| S_IR | V_IR_RECEIVE | +| S_WATER | V_FLOW, V_VOLUME | +| S_AIR_QUALITY | V_DUST_LEVEL | +| S_CUSTOM | V_VAR1, V_VAR2, V_VAR3, V_VAR4, V_VAR5 | +| S_DUST | V_DUST_LEVEL | +| S_SCENE_CONTROLLER | V_SCENE_ON, V_SCENE_OFF | ### MySensors version 1.5 and higher -S_TYPE | V_TYPE ----------------|---------------------------------- -S_COLOR_SENSOR | V_RGB -S_MULTIMETER | V_VOLTAGE, V_CURRENT, V_IMPEDANCE -S_SOUND | V_LEVEL -S_VIBRATION | V_LEVEL -S_MOISTURE | V_LEVEL -S_LIGHT_LEVEL | V_LEVEL -S_AIR_QUALITY | V_LEVEL (replaces V_DUST_LEVEL) -S_DUST | V_LEVEL (replaces V_DUST_LEVEL) +| S_TYPE | V_TYPE | +| -------------- | --------------------------------- | +| S_COLOR_SENSOR | V_RGB | +| S_MULTIMETER | V_VOLTAGE, V_CURRENT, V_IMPEDANCE | +| S_SOUND | V_LEVEL | +| S_VIBRATION | V_LEVEL | +| S_MOISTURE | V_LEVEL | +| S_LIGHT_LEVEL | V_LEVEL | +| S_AIR_QUALITY | V_LEVEL (replaces V_DUST_LEVEL) | +| S_DUST | V_LEVEL (replaces V_DUST_LEVEL) | ### MySensors version 2.0 and higher -S_TYPE | V_TYPE -----------------|-------------------------- -S_INFO | V_TEXT -S_GAS | V_FLOW, V_VOLUME -S_GPS | V_POSITION -S_WATER_QUALITY | V_TEMP, V_PH, V_ORP, V_EC +| S_TYPE | V_TYPE | +| --------------- | ------------------------- | +| S_INFO | V_TEXT | +| S_GAS | V_FLOW, V_VOLUME | +| S_GPS | V_POSITION | +| S_WATER_QUALITY | V_TEMP, V_PH, V_ORP, V_EC | ## Custom unit of measurement @@ -64,7 +64,7 @@ Some sensor value types are not specific for a certain sensor type. These do not By using V_UNIT_PREFIX, it's possible to set a custom unit for any sensor. The string value that is sent for V_UNIT_PREFIX will be used in preference to any other unit of measurement, for the defined sensors. V_UNIT_PREFIX can't be used as a stand-alone sensor value type. Sending a supported value type and value from the tables above is also required. V_UNIT_PREFIX is available with MySensors version 1.5 and later. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. ## Example sketches @@ -179,6 +179,3 @@ void receive(const MyMessage &message) { } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/sensor.rflink.markdown b/source/_integrations/sensor.rflink.markdown index b9896eb28c1b..32a746595803 100644 --- a/source/_integrations/sensor.rflink.markdown +++ b/source/_integrations/sensor.rflink.markdown @@ -6,6 +6,7 @@ ha_category: - Sensor ha_release: 0.38 ha_iot_class: Local Polling +ha_domain: rflink --- The `rflink` integration supports devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). @@ -63,13 +64,9 @@ devices: description: "Alternative RFLink ID's this device is known by." required: false type: [list, string] - aliasses: - description: "(**deprecated**) Alternative RFLink ID's this device is known by." - required: false - type: [list, string] {% endconfiguration %} -## Sensors types +## Sensor types Sensor type values: diff --git a/source/_integrations/sensor.rfxtrx.markdown b/source/_integrations/sensor.rfxtrx.markdown index 40bad1482359..3045d859ffe5 100644 --- a/source/_integrations/sensor.rfxtrx.markdown +++ b/source/_integrations/sensor.rfxtrx.markdown @@ -1,16 +1,16 @@ --- title: "RFXtrx Sensor" description: "Instructions on how to integrate RFXtrx sensors into Home Assistant." -logo: rfxtrx.png ha_category: - Sensor ha_iot_class: Local Polling ha_release: 0.7 +ha_domain: rfxtrx --- The `rfxtrx` platform support sensors that communicate in the frequency range of 433.92 MHz. -First you have to set up your [rfxtrx hub](/integrations/rfxtrx/). +First you have to set up your [RFXtrx hub](/integrations/rfxtrx/). The easiest way to find your sensors is to add this to your `configuration.yaml`: ```yaml diff --git a/source/_integrations/sensor.websocket_api.markdown b/source/_integrations/sensor.websocket_api.markdown index 5dcea994cd85..156f3fbd7805 100644 --- a/source/_integrations/sensor.websocket_api.markdown +++ b/source/_integrations/sensor.websocket_api.markdown @@ -6,7 +6,8 @@ ha_category: - Utility ha_release: 0.33 ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: websocket_api --- The `websocket_api` sensor platform shows how many clients are connected to the stream API. diff --git a/source/_integrations/sensor.xiaomi_aqara.markdown b/source/_integrations/sensor.xiaomi_aqara.markdown index d877edb9eafc..b49dd76f3451 100644 --- a/source/_integrations/sensor.xiaomi_aqara.markdown +++ b/source/_integrations/sensor.xiaomi_aqara.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Sensor" description: "Instructions on how to setup the Xiaomi sensor within Home Assistant." -logo: xiaomi.png ha_category: - Sensor ha_release: "0.50" ha_iot_class: Local Push +ha_domain: xiaomi_aqara --- The `xiaomi aqara` sensor platform allows you to get data from your [Xiaomi](https://www.mi.com/en/) sensors. diff --git a/source/_integrations/sensor.xiaomi_miio.markdown b/source/_integrations/sensor.xiaomi_miio.markdown index 04f18298eeb2..a432e7416056 100644 --- a/source/_integrations/sensor.xiaomi_miio.markdown +++ b/source/_integrations/sensor.xiaomi_miio.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Air Quality Index Monitor" description: "Instructions how to integrate your Xiaomi Mi Air Quality Index Monitor within Home Assistant." -logo: xiaomi.png ha_category: - Health ha_iot_class: Local Polling ha_release: 0.66 +ha_domain: xiaomi_miio --- The `xiaomi_miio` sensor platform is observing your Xiaomi Mi Air Quality Monitor (PM2.5) and reporting the air quality index. diff --git a/source/_integrations/sentry.markdown b/source/_integrations/sentry.markdown new file mode 100644 index 000000000000..a1a5dafbbe1b --- /dev/null +++ b/source/_integrations/sentry.markdown @@ -0,0 +1,51 @@ +--- +title: Sentry +description: Record errors to Sentry. +ha_category: + - System Monitor +ha_iot_class: Cloud Polling +ha_release: 0.104 +ha_config_flow: true +ha_codeowners: + - '@dcramer' +ha_domain: sentry +--- + +
    + + The free Sentry account allows 5000 events per month. Depending on the amount of events sent to Sentry you will either have to upgrade your Sentry account or have a period without data flowing from Home Assistant to Sentry. + +
    + +The `sentry` integration integrates with [Sentry](https://sentry.io/) to capture both logged errors as well as unhandled exceptions in Home Assistant. + +## Configuration + +To use the `sentry` integration in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sentry: + dsn: SENTRY_DSN +``` + +{% configuration %} +dsn: + description: The DSN provided to you by Sentry. + required: true + type: string +environment: + description: An environment name to associate with events. + required: false + type: string +{% endconfiguration %} + +### Getting the DSN + +Follow these steps to get the DSN: + +- Go to **Projects**. +- Click **Create project**. +- Fill out **Give your project a name** and **choose Assign a Team** fields and click Create project button. +- Click **Get your DSN** link in top of the page. +- Your DSN is now visible and looks like diff --git a/source/_integrations/serial.markdown b/source/_integrations/serial.markdown index 68f44acbb6f6..abf12d281c4f 100644 --- a/source/_integrations/serial.markdown +++ b/source/_integrations/serial.markdown @@ -1,11 +1,13 @@ --- -title: "Serial Sensor" -description: "Instructions on how to integrate data from serial connected sensors into Home Assistant." -logo: home-assistant.png +title: Serial +description: Instructions on how to integrate data from serial connected sensors into Home Assistant. ha_category: - Sensor ha_release: 0.56 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' +ha_domain: serial --- The `serial` sensor platform is using the data provided by a device connected to the serial port of the system where Home Assistant is running. With [`ser2net`](http://ser2net.sourceforge.net/) and [`socat`](http://www.dest-unreach.org/socat/) would it also work for sensors connected to a remote system. diff --git a/source/_integrations/serial_pm.markdown b/source/_integrations/serial_pm.markdown index 1c55c5ee90be..f5848d33bba1 100644 --- a/source/_integrations/serial_pm.markdown +++ b/source/_integrations/serial_pm.markdown @@ -1,11 +1,12 @@ --- -title: "Particulate matter Sensor" -description: "Instructions on how to integrate particulate matter (dust) sensors with Home Assistant." +title: Serial Particulate Matter +description: Instructions on how to integrate particulate matter (dust) sensors with Home Assistant. logo: serial_pm.png ha_category: - DIY ha_release: 0.26 ha_iot_class: Local Polling +ha_domain: serial_pm --- Particulate matter sensors measure the amount of very small particles in the air. A short introduction how these sensors work can be found on [Open Home Automation](https://www.open-homeautomation.com/2016/07/19/measuring-air-quality/). diff --git a/source/_integrations/sesame.markdown b/source/_integrations/sesame.markdown index 15ceb6cdb9b3..8ec2919733c4 100644 --- a/source/_integrations/sesame.markdown +++ b/source/_integrations/sesame.markdown @@ -1,18 +1,19 @@ --- -title: "Sesame Smart Lock" -description: "Instructions on how to integrate Sesame by CANDY HOUSE into Home Assistant." +title: Sesame Smart Lock +description: Instructions on how to integrate Sesame by CANDY HOUSE into Home Assistant. logo: sesame.png ha_category: - Lock ha_iot_class: Cloud Polling ha_release: 0.47 +ha_domain: sesame --- The `sesame` platform allows you to control your [Sesame](https://candyhouse.co/) smart locks made by CANDY HOUSE, Inc. ## Configuration -Your Sesame needs to be paired with a mobile device running the app in *virtual station* mode, or a standalone [Wi-Fi Access Point](https://candyhouse.co/collections/frontpage/products/wi-fi-access-point). +Your Sesame needs to be paired with a standalone [Wi-Fi Access Point](https://candyhouse.co/collections/frontpage/products/wi-fi-access-point) purchased separately. You will also need to generate an API key from [my.candyhouse.co](https://my.candyhouse.co/#/credentials). diff --git a/source/_integrations/seven_segments.markdown b/source/_integrations/seven_segments.markdown index 728252e554b0..95821ce5c4e5 100644 --- a/source/_integrations/seven_segments.markdown +++ b/source/_integrations/seven_segments.markdown @@ -1,21 +1,19 @@ --- -title: "Seven segments display" -description: "Instructions on how to use OCR for seven segments displays into Home Assistant." -logo: home-assistant.png +title: Seven Segments OCR +description: Instructions on how to use OCR for seven segments displays into Home Assistant. ha_category: - Image Processing ha_release: 0.45 og_image: /images/screenshots/ssocr.png ha_iot_class: Local Polling +ha_domain: seven_segments --- The `seven_segments` image processing platform allows you to read physical seven segments displays through Home Assistant. [`ssocr`](https://www.unix-ag.uni-kl.de/~auerswal/ssocr/) is used to extract the value shown on the display which is observed by a [camera](/integrations/camera/). -
    +## Home Assistant Core Requirements -If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. - -
    +If you are running Home Assistant Core in a Python virtual environment, you need to ensure the following requirements are met. `ssocr` needs to be available on your system. Check the installation instruction below: @@ -30,6 +28,8 @@ sudo make PREFIX=/usr install # On most systems make deb # (Optional) This allows you to make a deb so that you apt is aware of ssocr ``` +## Configuration + To enable the OCR of a seven segment display in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -105,7 +105,7 @@ source: It's suggested that the first attempt to determine the needed parameters is using `ssocr` directly. This may require a couple of iterations to get the result ```bash -$ ssocr -D erosion crop 390 250 490 280 -t 20 -d 4 seven-seg.png +ssocr -D erosion crop 390 250 490 280 -t 20 -d 4 seven-seg.png ``` This would lead to the following entry for the `configuration.yaml` file: diff --git a/source/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown index ebc8765c5332..1eabbfd39938 100644 --- a/source/_integrations/seventeentrack.markdown +++ b/source/_integrations/seventeentrack.markdown @@ -1,11 +1,13 @@ --- -title: "17track.net" -description: "Instructions on how to use 17track.net data within Home Assistant" -logo: 17track.png +title: 17TRACK +description: Instructions on how to use 17track.net data within Home Assistant ha_category: - Postal Service ha_release: 0.83 ha_iot_class: Cloud Polling +ha_codeowners: + - '@bachya' +ha_domain: seventeentrack --- The `seventeentrack` sensor platform allows users to get package data tied to their [17track.net](https://www.17track.net/en) account. The platform creates both summary sensors, which show the number of packages in a current state (e.g., "In Transit"), as well as individual sensors for each package within the account. diff --git a/source/_integrations/shell_command.markdown b/source/_integrations/shell_command.markdown index 6eab549b7b2d..296903b24468 100644 --- a/source/_integrations/shell_command.markdown +++ b/source/_integrations/shell_command.markdown @@ -1,11 +1,13 @@ --- -title: "Shell command" -description: "Instructions on how to integrate Shell commands into Home Assistant." +title: Shell Command +description: Instructions on how to integrate Shell commands into Home Assistant. ha_category: - Automation -logo: home-assistant.png -ha_qa_scale: internal ha_release: 0.7.6 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: shell_command --- This integration can expose regular shell commands as services. Services can be called from a [script] or in [automation]. diff --git a/source/_integrations/shiftr.markdown b/source/_integrations/shiftr.markdown index 24680c4b0c15..ed40227b0cc8 100644 --- a/source/_integrations/shiftr.markdown +++ b/source/_integrations/shiftr.markdown @@ -1,10 +1,12 @@ --- -title: "Shiftr.io" -description: "Transfer events to Shiftr.io." -logo: shiftr.png +title: shiftr.io +description: Transfer events to Shiftr.io. ha_category: - - "History" + - History ha_release: 0.48 +ha_codeowners: + - '@fabaff' +ha_domain: shiftr --- The `shiftr` integration makes it possible to transfer details collected with Home Assistant to [Shiftr.io](https://shiftr.io) and visualize the flow of the information. Keep in mind that your details will be public! diff --git a/source/_integrations/shodan.markdown b/source/_integrations/shodan.markdown index 44810e388609..f939242e8668 100644 --- a/source/_integrations/shodan.markdown +++ b/source/_integrations/shodan.markdown @@ -1,11 +1,14 @@ --- -title: "Shodan Sensor" -description: "Instructions on how to integrate Shodan sensors into Home Assistant." +title: Shodan +description: Instructions on how to integrate Shodan sensors into Home Assistant. ha_category: - Sensor ha_iot_class: Cloud Polling logo: shodan.png ha_release: 0.51 +ha_codeowners: + - '@fabaff' +ha_domain: shodan --- The `shodan` sensor platform is displaying the total of result of a diff --git a/source/_integrations/shopping_list.markdown b/source/_integrations/shopping_list.markdown index 2cd9f8844921..e959fde47808 100644 --- a/source/_integrations/shopping_list.markdown +++ b/source/_integrations/shopping_list.markdown @@ -1,16 +1,28 @@ --- -title: "Shopping List" -description: "Instructions on how to integrate a Shopping list into Home Assistant using Intent." -logo: home-assistant.png +title: Shopping List +description: Instructions on how to integrate a Shopping list into Home Assistant using Intent. ha_category: - Intent -ha_release: "0.50" -ha_qa_scale: internal +ha_release: '0.50' +ha_config_flow: true +ha_quality_scale: internal +ha_domain: shopping_list --- The `shopping_list` integration allows you to keep track of shopping list items. Includes the ability to add items via your voice using the sentence "Add eggs to my shopping list". -## Configuration +## Configuration - GUI + +From the Home Assistant front page go to **Configuration** and then select **Integrations** from the list. + +Use the plus button in the bottom right to add a new integration called **Shopping List**. + +In the popup: +- Submit + +The success dialog will appear or an error will be displayed in the popup. + +## Configuration - Manual ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/sht31.markdown b/source/_integrations/sht31.markdown index 95092ae30b4c..072f17e12b06 100644 --- a/source/_integrations/sht31.markdown +++ b/source/_integrations/sht31.markdown @@ -1,11 +1,11 @@ --- -title: "Sensirion SHT31 Sensor" -description: "Instructions on how to integrate SHT31 sensors within Home Assistant." +title: Sensirion SHT31 +description: Instructions on how to integrate SHT31 sensors within Home Assistant. ha_category: - DIY ha_release: 0.68 -logo: sensirion.png ha_iot_class: Local Polling +ha_domain: sht31 --- The `sht31` sensor platform allows you to get the current temperature and humidity from a Sensirion SHT31 device. @@ -17,12 +17,12 @@ To use your SHT31 sensor in your installation, add the following to your `config ```yaml # Example configuration.yaml entry sensor: - platform: sht31 - name: Bedroom - i2c_address: 0x44 - monitored_conditions: - - temperature - - humidity + - platform: sht31 + name: Bedroom + i2c_address: 0x44 + monitored_conditions: + - temperature + - humidity ``` {% configuration %} diff --git a/source/_integrations/sigfox.markdown b/source/_integrations/sigfox.markdown index 3ebdc2635bab..4b76b45825c3 100644 --- a/source/_integrations/sigfox.markdown +++ b/source/_integrations/sigfox.markdown @@ -1,11 +1,12 @@ --- -title: "Sigfox Sensor" -description: "Display messages from Sigfox devices in Home Assistant." +title: Sigfox +description: Display messages from Sigfox devices in Home Assistant. logo: sigfox.png ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.68 +ha_domain: sigfox --- [SigFox](https://www.sigfox.com/en) integration adding a sensor for each Sigfox device registered with your account. The default name of sensors is `sigfox_{DEVICE_ID}` where `DEVICE_ID` is the devices Sigfox ID. The state of an added Sigfox sensor is the payload of the last message published by that device. Additionally, there are attributes for the latitude and longitude coordinates of the device, as well as the signal-to-noise ratio ([snr](https://en.wikipedia.org/wiki/Signal-to-noise_ratio)). diff --git a/source/_integrations/sighthound.markdown b/source/_integrations/sighthound.markdown new file mode 100644 index 000000000000..360cf8859899 --- /dev/null +++ b/source/_integrations/sighthound.markdown @@ -0,0 +1,67 @@ +--- +title: Sighthound +description: Detect people with Sighthound Cloud. +logo: sighthound-logo.png +ha_category: + - Image Processing +ha_release: 0.105 +ha_iot_class: Cloud Polling +ha_codeowners: + - '@robmarkcole' +ha_domain: sighthound +--- + +Detect people in camera images using [Sighthound Cloud](https://www.sighthound.com/products/cloud). The Sighthound Developer tier (free for non-commercial use) allows 5000 images to be processed per month. If you need more processing per month you will need to sign up for a production account (i.e., a Basic or Pro account). + +This integration adds an image processing entity where the state of the entity is the number of people detected in an image. For each person detected, an `sighthound.person_detected` event is fired. The event data includes the entity_id of the image processing entity firing the event, and the bounding box around the detected person. + +If `save_file_folder` is configured, on each new detection of a person, an annotated image with the name `sighthound_{camera_name}_latest.jpg` is saved in the configured folder if it doesn't already exist, and overwritten if it does exist. The saved image shows the bounding box around detected people and can be displayed on the Home Assistant front end using a [Local File](/integrations/local_file/) camera, and used in notifications. If `save_timestamped_file` is configured as `true`, then the annotated image is saved with a file name that includes the time of detection. + +**Note** that by default the component will not automatically scan images, but requires you to call the `image_processing.scan` service, e.g., using an automation triggered by motion. + +## Configuration + +To enable this platform in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +image_processing: + - platform: sighthound + api_key: some_key + save_file_folder: /my_dir/ + save_timestamped_file: True + source: + - entity_id: camera.my_cam +``` + +{% configuration %} +api_key: + description: Your Sighthound Cloud API key. + required: true + type: string +account_type: + description: If you have a paid account, used `prod`. + required: false + type: string +save_file_folder: + description: The folder to save annotated images to. + required: false + type: string +save_timestamped_file: + description: Save the processed image with the time of detection in the filename. Requires save_file_folder to be configured. + required: false + type: string +source: + description: The list of image sources. + required: true + type: map + keys: + entity_id: + description: A camera entity id to get a picture from. + required: true + type: string + name: + description: This parameter allows you to override the name of your `image_processing` entity. + required: false + type: string +{% endconfiguration %} diff --git a/source/_integrations/signal_messenger.markdown b/source/_integrations/signal_messenger.markdown new file mode 100644 index 000000000000..10ff747cc093 --- /dev/null +++ b/source/_integrations/signal_messenger.markdown @@ -0,0 +1,85 @@ +--- +title: Signal Messenger +description: Instructions on how to integrate Signal Messenger within Home Assistant. +ha_category: + - Notifications +ha_release: 0.104 +ha_codeowners: + - '@bbernhard' +ha_domain: signal_messenger +--- + +The `signal_messenger` integration uses the [Signal Messenger REST API](https://github.com/bbernhard/signal-cli-rest-api) to deliver notifications from Home Assistant to your Android or iOS device. + +## Setup + +The requirements are: + +- You need to set up the Signal Messenger REST API. +- You need a spare phone number to register with the Signal Messenger service. + + +Please follow those [instructions](https://github.com/bbernhard/signal-cli-rest-api/blob/master/doc/HOMEASSISTANT.md), to set up the Signal Messenger REST API. + + +## Configuration + +To send Signal Messenger notifications with Home Assistant, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry for Signal Messenger +notify: + - name: signal + platform: signal_messenger + url: "http://127.0.0.1:8080" # the URL where the Signal Messenger REST API is listening + number: "YOUR_PHONE_NUMBER" # the sender number + recipients: # one or more recipients + - "RECIPIENT1" +``` + +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + type: string + default: notify +url: + description: The URL where the Signal Messenger REST API listens for incoming requests. + required: true + type: string +number: + description: The sender number. + required: true + type: string +recipients: + description: A list of recipients. + required: true + type: string +{% endconfiguration %} + +## Examples + +A few examples on how to use this integration. + +### Text message + +```yaml +... +action: + service: notify.NOTIFIER_NAME + data: + message: "That's an example that sends a simple text message to the recipients specified in the configuration.yaml" +``` + +### Text message with an attachment + +```yaml +... +action: + service: notify.NOTIFIER_NAME + data: + message: "Alarm in the living room!" + data: + attachments: + - "/tmp/surveillance_camera.jpg" +``` diff --git a/source/_integrations/simplepush.markdown b/source/_integrations/simplepush.markdown index 580b1c2fdaf9..419219b31512 100644 --- a/source/_integrations/simplepush.markdown +++ b/source/_integrations/simplepush.markdown @@ -1,13 +1,13 @@ --- -title: "Simplepush" -description: "Instructions on how to add Simplepush notifications to Home Assistant." +title: Simplepush +description: Instructions on how to add Simplepush notifications to Home Assistant. logo: simplepush.png ha_category: - Notifications ha_release: 0.29 +ha_domain: simplepush --- - The `simplepush` platform uses [Simplepush](https://simplepush.io/) to delivery notifications from Home Assistant to your Android device. Unlike similar apps the Simplepush app requires no registration. To add Simplepush to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index 6f798b8bfda3..91f809e5ace2 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -1,17 +1,23 @@ --- -title: "SimpliSafe" -description: "Instructions on how to integrate SimpliSafe into Home Assistant." +title: SimpliSafe +description: Instructions on how to integrate SimpliSafe into Home Assistant. logo: simplisafe.png ha_release: 0.81 ha_category: - Alarm + - Lock +ha_config_flow: true +ha_codeowners: + - '@bachya' +ha_domain: simplisafe --- -The `simplisafe` integration integrates SimpliSafe home security (V2 and V3) systems into Home Assistant. Multiple SimpliSafe accounts can be accommodated. +The `simplisafe` integration integrates [SimpliSafe home security](https://simplisafe.com) (V2 and V3) systems into Home Assistant. Multiple SimpliSafe accounts can be accommodated. There is currently support for the following device types within Home Assistant: -- Alarm +- **Alarm Control Panel**: reports on the current alarm status and can be used to arm and disarm the system. +- **Lock**: Reports on `Door Locks` and can be used to lock and unlock a lock. ## Configuration @@ -50,17 +56,92 @@ entity. Remove a SimpliSafe PIN (by label or PIN value). -| Service Data Attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------| -| `system_id` | no | The ID of the system to remove the PIN from | -| `label_or_pin` | no | The PIN label or value to remove | +| Service Data Attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------- | +| `system_id` | no | The ID of a SimpliSafe system | +| `label_or_pin` | no | The PIN label or value to remove | ### `simplisafe.set_pin` Set a SimpliSafe PIN. -| Service Data Attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------| -| `system_id` | no | The ID of the system to remove the PIN from | -| `label` | no | The label to show in the SimpliSafe UI | -| `pin` | no | The PIN value to use | +| Service Data Attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------- | +| `system_id` | no | The ID of the system to remove the PIN from | +| `label` | no | The label to show in the SimpliSafe UI | +| `pin` | no | The PIN value to use | + +### `simplisafe.system_properties` + +Set one or more system properties. + +For any property denoting a volume, the following values should be used: + +* Off: `0` +* Low: `1` +* Medium: `2` +* High: `3` + +| Service Data Attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------------------- | +| `system_id` | no | The ID of a SimpliSafe system | +| `alarm_duration` | yes | The number of seconds a triggered alarm should sound | +| `chime_volume` | yes | The volume of the door chime | +| `entry_delay_away` | yes | The number of seconds to delay triggering when entering with an "away" state | +| `entry_delay_home` | yes | The number of seconds to delay triggering when entering with a "home" state | +| `exit_delay_away` | yes | The number of seconds to delay triggering when exiting with an "away" state | +| `exit_delay_home` | yes | The number of seconds to delay triggering when exiting with a "home" state | +| `light` | yes | Whether the light on the base station should display when armed | +| `voice_prompt_volume` | yes | The volume of the base station's voice prompts | + +## Events + +### `SIMPLISAFE_EVENT` + +`SIMPLISAFE_EVENT` events represent events that appear on the timeline of the SimpliSafe +web and mobile apps. When received, they come with event data that contains the +following keys: + +* `changed_by`: the PIN that triggered the event (if appropriate) +* `event_type`: the type of event +* `info`: a human-friendly string describing the event in more detail +* `sensor_name`: the sensor that triggered the event (if appropriate) +* `sensor_serial`: the serial number of the sensor that triggered the event (if appropriate) +* `sensor_type`: the type of sensor that triggered the event (if appropriate) +* `system_id`: the system ID to which the event belongs +* `timestamp`: the UTC datetime at which the event was received + +For example, when the system is armed by "remote" means (via the web app, etc.), a +`SIMPLISAFE_EVENT` event will fire with the following event data: + +```python +{ + "changed_by": "", + "event_type": "armed_home", + "info": "System Armed (Home) by Remote Management", + "sensor_name": "", + "sensor_serial": "", + "sensor_type": "remote", + "system_id": 123456, + "timestamp": datetime.datetime(2020, 2, 13, 23, 1, 13, tzinfo=), +} +``` + +`event_type`, being one of the key fields automations might be built from, can have the +following values: + +* `camera_motion_detected` +* `doorbell_detected` +* `entry_detected` +* `motion_detected` + +### `SIMPLISAFE_NOTIFICATION` + +`SIMPLISAFE_NOTIFICATION` events represent system notifications that would appear in the +messages section of the SimpliSafe web and mobile apps. When received, they come with +event data that contains the following keys: + +* `category`: The notification category (e.g., `error`) +* `code`: The SimpliSafe code for the notification +* `message`: The actual text of the notification +* `timestamp`: The UTC timestamp of the notification diff --git a/source/_integrations/simulated.markdown b/source/_integrations/simulated.markdown index f964c1003aa7..d60801642074 100644 --- a/source/_integrations/simulated.markdown +++ b/source/_integrations/simulated.markdown @@ -1,12 +1,12 @@ --- -title: "Simulated sensor" -description: "Component for simulating a numerical sensor." -logo: home-assistant.png +title: Simulated +description: Component for simulating a numerical sensor. ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.65 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: simulated --- The `simulated` sensor platform provides a simulated sensor that generates a time-varying signal `V(t)` given by the [function](https://en.wikipedia.org/wiki/Sine_wave): diff --git a/source/_integrations/sinch.markdown b/source/_integrations/sinch.markdown index e2ed441979f9..fc728328efff 100644 --- a/source/_integrations/sinch.markdown +++ b/source/_integrations/sinch.markdown @@ -1,10 +1,13 @@ --- -title: "Sinch SMS" -description: "Instructions on how to add Sinch notifications to Home Assistant." +title: Sinch SMS +description: Instructions on how to add Sinch notifications to Home Assistant. logo: sinch.png ha_category: - Notifications ha_release: 0.101 +ha_codeowners: + - '@bendikrb' +ha_domain: sinch --- The `sinch` platform uses [Sinch](https://www.sinch.com/products/messaging/sms/) to deliver notifications from Home Assistant. @@ -61,5 +64,5 @@ notify: service_plan_id: SINCH_SERVICE_PLAN_ID api_key: SINCH_API_KEY default_recipient: [PHONE_NO1, PHONE_NO2] - sender: Home assistant + sender: Home Assistant ``` diff --git a/source/_integrations/sisyphus.markdown b/source/_integrations/sisyphus.markdown index bc9921e69915..a4b0a866f7d3 100644 --- a/source/_integrations/sisyphus.markdown +++ b/source/_integrations/sisyphus.markdown @@ -1,13 +1,15 @@ --- -title: "Sisyphus" -description: "Instructions on how to integrate your Sisyphus Kinetic Art Table within Home Assistant." -logo: sisyphus.png +title: Sisyphus +description: Instructions on how to integrate your Sisyphus Kinetic Art Table within Home Assistant. ha_category: - Hub - Light - Media Player ha_release: 0.75 ha_iot_class: Local Push +ha_codeowners: + - '@jkeljo' +ha_domain: sisyphus --- The [Sisyphus](https://sisyphus-industries.com/) integration for Home Assistant allows you to observe and control your Sisyphus Kinetic Art Table. diff --git a/source/_integrations/sky_hub.markdown b/source/_integrations/sky_hub.markdown index dbd43e9fe8ea..60d43e6a48f4 100644 --- a/source/_integrations/sky_hub.markdown +++ b/source/_integrations/sky_hub.markdown @@ -1,13 +1,13 @@ --- -title: "Sky Hub" -description: "Instructions on how to integrate Sky Hub routers into Home Assistant." +title: Sky Hub +description: Instructions on how to integrate Sky Hub routers into Home Assistant. logo: sky.png ha_category: - Presence Detection ha_release: 0.37 +ha_domain: sky_hub --- - The `sky_hub` platform offers presence detection by looking at connected devices to a [Sky Hub router](https://www.sky.com/shop/broadband-talk/sky-hub/) based router. To use your Sky Hub device in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/skybeacon.markdown b/source/_integrations/skybeacon.markdown index bb0563f93efd..dfa888e492c0 100644 --- a/source/_integrations/skybeacon.markdown +++ b/source/_integrations/skybeacon.markdown @@ -1,10 +1,11 @@ --- -title: "Skybeacon sensor" -description: "Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant." +title: Skybeacon +description: Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant. ha_category: - DIY ha_release: 0.37 ha_iot_class: Local Polling +ha_domain: skybeacon --- The `skybeacon` sensor platform supports [CR2477](https://cnsky9.en.alibaba.com/)-powered [iBeacon](https://en.wikipedia.org/wiki/IBeacon)/eddystone sensors that come with temperature/sensor module. diff --git a/source/_integrations/skybell.markdown b/source/_integrations/skybell.markdown index 96faeb335008..2ea4573c73e5 100644 --- a/source/_integrations/skybell.markdown +++ b/source/_integrations/skybell.markdown @@ -1,7 +1,6 @@ --- -title: "Skybell" -description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." -logo: skybell.png +title: SkyBell +description: Instructions on how to integrate your Skybell HD devices within Home Assistant. ha_category: - Doorbell - Binary Sensor @@ -11,6 +10,7 @@ ha_category: - Switch ha_release: 0.56 ha_iot_class: Cloud Polling +ha_domain: skybell --- The `skybell` implementation allows you to integrate your [Skybell.com](http://www.skybell.com/) doorbells in Home Assistant. @@ -23,7 +23,7 @@ There is currently support for the following device types within Home Assistant: - [Sensor](/integrations/skybell/#sensor) - [Switch](/integrations/skybell/#switch) -Currently only the Skybell HD is supported by this platform. +Currently only the SkyBell HD is supported by this platform. ## Configuration @@ -38,18 +38,18 @@ skybell: {% configuration %} username: - description: The username for accessing your Skybell account. + description: The username for accessing your SkyBell account. required: true type: string password: - description: The password for accessing your Skybell account. + description: The password for accessing your SkyBell account. required: true type: string {% endconfiguration %} ### Binary Sensor -Once you have enabled the Skybell component, add the following to your `configuration.yaml` file: +Once you have enabled the SkyBell component, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -69,12 +69,12 @@ monitored_conditions: button: description: Returns whether the doorbell button was pressed. motion: - description: Returns whether movement was detected by the Skybell doorbell. + description: Returns whether movement was detected by the SkyBell doorbell. {% endconfiguration %} ### Camera -Once you have enabled the Skybell component, add the following to your `configuration.yaml` file: +Once you have enabled the SkyBell component, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -99,11 +99,11 @@ activity_name: #### Camera Types -There are two available camera types "Avatar", which is the default, displays the Skybell avatar image. +There are two available camera types "Avatar", which is the default, displays the SkyBell avatar image. It is periodically updated with a fresh image. The other type is "Activity", which displays a snapshot from the latest event (motion, bell, or on demand) captured by the camera. You may show either camera, or both, by specifying its name under monitored_condtions. It's recommended, but not required, to set either avatar_name or activity_name -if you are showing both cameras so you can tell them apart. The name will be appended to the skybell device name. +if you are showing both cameras so you can tell them apart. The name will be appended to the SkyBell device name. ```yaml # Example configuration.yaml with both images @@ -125,7 +125,7 @@ camera: ### Light -Once you have enabled the Skybell component, add the following to your `configuration.yaml` file: +Once you have enabled the SkyBell component, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -135,7 +135,7 @@ light: ### Sensor -Once you have enabled the Skybell component, add the following to your `configuration.yaml` file: +Once you have enabled the SkyBell component, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -157,7 +157,7 @@ monitored_conditions: ### Switch -Once you have enabled the Skybell component, add the following to your `configuration.yaml` file: +Once you have enabled the SkyBell integration, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/slack.markdown b/source/_integrations/slack.markdown index 819cd9367ddf..d9e099061eba 100644 --- a/source/_integrations/slack.markdown +++ b/source/_integrations/slack.markdown @@ -1,24 +1,24 @@ --- -title: "Slack" -description: "Instructions on how to add Slack notifications to Home Assistant." +title: Slack +description: Instructions on how to add Slack notifications to Home Assistant. logo: slack.png ha_category: - Notifications ha_release: pre 0.7 +ha_domain: slack --- - The `slack` platform allows you to deliver notifications from Home Assistant to [Slack](https://slack.com/). ## Setup ### Bot posting as you -1. Create a [new app](https://api.slack.com/apps) under your Slack.com account -2. Click the `OAuth & Permissions` link in the sidebar, under the Features heading -2. In the Scopes section, add the `chat:write:user` scope, `Send messages as user` -3. Scroll up to `OAuth Tokens & Redirect URLs` and click `Install App` -4. Copy your `OAuth Access Token` and put that key into your `configuration.yaml` file -- see below +1. Create a [new app](https://api.slack.com/apps) under your Slack.com account. +2. Click the `OAuth & Permissions` link in the sidebar, under the Features heading. +3. In the Scopes section, add the `chat:write` scope, `Send messages as user`. If you get a `missing_scope` error when trying to send a message, check these permissions. +4. Scroll up to `OAuth Tokens & Redirect URLs` and click `Install App`. +5. Copy your `OAuth Access Token` and put that key into your `configuration.yaml` file -- see below.
    @@ -76,10 +76,10 @@ The following attributes can be placed inside `data` for extended functionality. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `file` | yes | Groups the attributes for file upload. If present, either `url` or `path` have to be provided. -| `path ` | yes | Local path of file, photo etc to post to slack. Is placed inside `file`. -| `url` | yes | URL of file, photo etc to post to slack. Is placed inside `file`. -| `username` | yes | Username if the url requires authentication. Is placed inside `file`. -| `password` | yes | Password if the url requires authentication. Is placed inside `file`. +| `path ` | yes | Local path of file, photo etc to post to Slack. Is placed inside `file`. +| `url` | yes | URL of file, photo etc to post to Slack. Is placed inside `file`. +| `username` | yes | Username if the URL requires authentication. Is placed inside `file`. +| `password` | yes | Password if the URL requires authentication. Is placed inside `file`. | `auth` | yes | If set to `digest` HTTP-Digest-Authentication is used. If missing HTTP-BASIC-Authentication is used. Is placed inside `file`. | `attachments` | yes | Array of [Slack attachments](https://api.slack.com/docs/message-attachments). See [the attachment documentation](https://api.slack.com/docs/message-attachments) for how to format. *NOTE*: if using `attachments`, they are shown **in addition** to `message` @@ -133,6 +133,21 @@ Example for posting formatted attachment: } ``` +You can also use YAML to send messages from your automations + +```yaml + + - service: notify.slack + data: + message: "Latest notification" + title: "Latest image" + target: ["#home-assistant"] + data: + file: + path: "/myfile.jpg" +``` Please note that both `message` is a required key, but is always shown, so use an empty (`""`) string for `message` if you don't want the extra text. To use notifications, please see the [getting started with automation page](/getting-started/automation/). + +Extra information: You must add the bot to your Slack channel, otherwise you can't send messages in this channel. diff --git a/source/_integrations/sleepiq.markdown b/source/_integrations/sleepiq.markdown index ce55c4c9da46..9fcae8edbf4b 100644 --- a/source/_integrations/sleepiq.markdown +++ b/source/_integrations/sleepiq.markdown @@ -1,16 +1,18 @@ --- -title: "SleepIQ" -description: "Instructions for how to integrate SleepIQ beds within Home Assistant." +title: SleepIQ +description: Instructions for how to integrate SleepIQ beds within Home Assistant. logo: sleepiq.png ha_category: - Health - Sensor - Binary Sensor + - Light ha_release: 0.29 ha_iot_class: Local Polling +ha_domain: sleepiq --- -The SleepIQ implementation lets you view sensor data from [SleepIQ by SleepNumber](https://www.sleepnumber.com/sleepiq-sleep-tracker). In particular, it lets you see the occupancy and current SleepNumber (ie current firmness) of each side of a SleepNumber bed. +The SleepIQ implementation lets you view sensor data from [SleepIQ by SleepNumber](https://www.sleepnumber.com/sleepiq-sleep-tracker). In particular, it lets you see the occupancy and current SleepNumber (ie current firmness) of each side of a SleepNumber bed. Control of the lights included in the FlexFit platform is available as well. ## Setup diff --git a/source/_integrations/slide.markdown b/source/_integrations/slide.markdown index 8d7f6e5f9167..d6e2c7ab3605 100644 --- a/source/_integrations/slide.markdown +++ b/source/_integrations/slide.markdown @@ -1,12 +1,15 @@ --- -title: "Slide" -description: "Instructions on how to integrate the Innovation in Motion Slide covers with Home Assistant." +title: Slide +description: Instructions on how to integrate the Innovation in Motion Slide covers with Home Assistant. logo: slide.png ha_category: - Hub - Cover ha_iot_class: Cloud Polling ha_release: 0.99 +ha_codeowners: + - '@ualex73' +ha_domain: slide --- The `slide` implementation allows you to integrate your [slide.store](https://slide.store/) devices in Home Assistant using the [official API](https://documenter.getpostman.com/view/6223391/S1Lu2pSf?version=latest). @@ -35,4 +38,3 @@ scan_interval: default: 30 seconds type: integer {% endconfiguration %} - diff --git a/source/_integrations/sma.markdown b/source/_integrations/sma.markdown index faccfba81d2f..f3932e472ecb 100644 --- a/source/_integrations/sma.markdown +++ b/source/_integrations/sma.markdown @@ -1,11 +1,14 @@ --- -title: "SMA Solar WebConnect" -description: "Instructions on how to connect your SMA Solar Inverter to Home Assistant." +title: SMA Solar +description: Instructions on how to connect your SMA Solar Inverter to Home Assistant. ha_category: - Energy logo: sma.png ha_iot_class: Local Polling ha_release: 0.36 +ha_codeowners: + - '@kellerza' +ha_domain: sma --- The `sma` sensor will poll a [SMA](http://www.sma-solar.com/) [(US)](https://www.sma-america.com/) solar inverter and present the values as sensors (or attributes of sensors) in Home Assistant. diff --git a/source/_integrations/smappee.markdown b/source/_integrations/smappee.markdown index 7ebaff58b403..8a12de328fe4 100644 --- a/source/_integrations/smappee.markdown +++ b/source/_integrations/smappee.markdown @@ -1,6 +1,6 @@ --- -title: "Smappee" -description: "Instructions on how to setup Smappee within Home Assistant." +title: Smappee +description: Instructions on how to setup Smappee within Home Assistant. logo: smappee.png ha_release: 0.64 ha_category: @@ -9,6 +9,7 @@ ha_category: - Sensor - Switch ha_iot_class: Local Push +ha_domain: smappee --- The `smappee` integration adds support for the [Smappee](https://www.smappee.com/) controller for energy monitoring and Comport plug switches. diff --git a/source/_integrations/smarthab.markdown b/source/_integrations/smarthab.markdown index e97965e6b3ee..866f7c87f4a8 100644 --- a/source/_integrations/smarthab.markdown +++ b/source/_integrations/smarthab.markdown @@ -1,13 +1,15 @@ --- -title: "SmartHab" -description: "Instructions on how to integrate SmartHab devices into Home Assistant" -logo: smarthab.png +title: SmartHab +description: Instructions on how to integrate SmartHab devices into Home Assistant ha_release: 0.94 ha_category: - Hub - Cover - Light ha_iot_class: Cloud Polling +ha_codeowners: + - '@outadoc' +ha_domain: smarthab --- If your home is fitted with [SmartHab](https://www.smarthab.fr/en/home/)'s diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index 0b9772331d7b..ec91c1b3c6ea 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -1,8 +1,7 @@ --- -title: "SmartThings" -description: "Instructions on setting up Samsung SmartThings within Home Assistant." +title: Smartthings +description: Instructions on setting up Samsung SmartThings within Home Assistant. featured: true -logo: samsung_smartthings.png ha_category: - Hub - Binary Sensor @@ -16,6 +15,10 @@ ha_category: - Switch ha_release: 0.87 ha_iot_class: Cloud Push +ha_config_flow: true +ha_codeowners: + - '@andrewsayre' +ha_domain: smartthings --- Samsung SmartThings is integrated into Home Assistant through the SmartThings Cloud API. The SmartThings integration is the main integration to integrate all SmartThings related platforms. The basic features of this integration include: @@ -46,7 +49,7 @@ If you are using Home Assistant Cloud (Nabu Casa) the integration will create a 1. A [personal access token](https://account.smartthings.com/tokens) tied to a Samsung or SmartThings account (see below for instructions). 2. Home Assistant setup for [remote access](/docs/configuration/remote/) via a domain name secured with SSL. *Self-signed SSL certificates are not supported by the SmartThings Cloud API.* -3. [`base_url` of the http component](/integrations/http#base_url) set the URL that Home Assistant is available on the internet. +3. [`base_url` of the HTTP integration](/integrations/http#base_url) set the URL that Home Assistant is available on the internet. SmartThings requires the `base_url` and Home Assistant to use the standard HTTPS port (443). ## Setup instructions @@ -105,13 +108,13 @@ The integration will trigger an event when a device with the [button](https://sm } ``` -| Attribute | Description -|---------------------------|------------------------------------------------------------------| -`component_id` | Describes which integration of the device triggered the event. `main` represents the parent device. For devices with child-devices, this attribute identifies the child that raised the event. -`device_id` | The unique id of the device in SmartThings. This can be located in the HASS device registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). -`location_id` | The unique id of the location the device is part of. This can be found in the config entry registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). -`value` | Describes the action taken on the button. See the [button](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Button) capability reference for a list of possible values (not all are supported by every device). -`name` | The name given to the device in SmartThings. +| Attribute | Description | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `component_id` | Describes which integration of the device triggered the event. `main` represents the parent device. For devices with child-devices, this attribute identifies the child that raised the event. | +| `device_id` | The unique id of the device in SmartThings. This can be located in the Home Assistant device registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). | +| `location_id` | The unique id of the location the device is part of. This can be found in the configuration entry registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). | +| `value` | Describes the action taken on the button. See the [button](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Button) capability reference for a list of possible values (not all are supported by every device). | +| `name` | The name given to the device in SmartThings. | Event data payloads are logged at the debug level, see [debugging](#debugging) for more information. @@ -135,16 +138,16 @@ Support for additional platforms will be added in the future. The SmartThings Binary Sensor platform lets you view devices that have binary sensor-related capabilities. A Binary Sensor entity will be created for each attribute (below) supported by the device. -| Capability |Attribute |On-Value -|-------------------|--------------|----------------| -| [`accelerationSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Acceleration-Sensor) | `acceleration` | `active` -| [`contactSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Contact-Sensor) | `contact` | `open` -| [`filterStatus`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Filter-Status) | `filterStatus` | `replace` -| [`motionSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Motion-Sensor) | `motion` | `active` -| [`presenceSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Presence-Sensor) | `presence` | `present` -| [`tamperAlert`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tamper-Alert) | `tamper` | `detected` -| [`valve`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Valve) | `valve` | `open` -| [`waterSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Water-Sensor) | `water` | `wet` +| Capability | Attribute | On-Value | +| ----------------------------------------------------------------------------------------------------------------------- | -------------- | ---------- | +| [`accelerationSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Acceleration-Sensor) | `acceleration` | `active` | +| [`contactSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Contact-Sensor) | `contact` | `open` | +| [`filterStatus`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Filter-Status) | `filterStatus` | `replace` | +| [`motionSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Motion-Sensor) | `motion` | `active` | +| [`presenceSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Presence-Sensor) | `presence` | `present` | +| [`tamperAlert`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tamper-Alert) | `tamper` | `detected` | +| [`valve`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Valve) | `valve` | `open` | +| [`waterSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Water-Sensor) | `water` | `wet` | ### Climate @@ -154,59 +157,59 @@ The SmartThings Climate platform lets you control devices that have air conditio For a SmartThings Air Conditioner to be represented by the climate platform, it must have all of the following required capabilities: -| Capability |Climate Features -|-------------------------------------|--------------------------------------------| -| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) (required) | `hvac mode`, `hvac action` -| `airConditionerFanMode` (required) | `fan mode` -| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (required) | `temperature` -| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (required) | `target temp` -| [`demandResponseLoadControl`](https://docs.smartthings.com/en/latest/capabilities-reference.html#demand-response-load-control) | `drlc_status_duration` (state attribute), `drlc_status_level` (state attribute), `drlc_status_override` (state attribute), `drlc_status_start` (state attribute) -| [`powerConsumptionReport`](https://docs.smartthings.com/en/latest/capabilities-reference.html#power-consumption-report) | `power_consumption_end` (state attribute), `power_consumption_energy` (state attribute), `power_consumption_power` (state attribute), `power_consumption_start` (state attribute) +| Capability | Climate Features | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) (required) | `hvac mode`, `hvac action` | +| `airConditionerFanMode` (required) | `fan mode` | +| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (required) | `temperature` | +| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (required) | `target temp` | +| [`demandResponseLoadControl`](https://docs.smartthings.com/en/latest/capabilities-reference.html#demand-response-load-control) | `drlc_status_duration` (state attribute), `drlc_status_level` (state attribute), `drlc_status_override` (state attribute), `drlc_status_start` (state attribute) | +| [`powerConsumptionReport`](https://docs.smartthings.com/en/latest/capabilities-reference.html#power-consumption-report) | `power_consumption_end` (state attribute), `power_consumption_energy` (state attribute), `power_consumption_power` (state attribute), `power_consumption_start` (state attribute) | #### Thermostats For a SmartThings thermostat to be represented by the climate platform, it must have all the capabilities from either "set a" _or_ "set b": -| Capability |Climate Features -|-------------------------------------|--------------------------------------------| -| [`thermostat`](https://docs.smartthings.com/en/latest/capabilities-reference.html#thermostat) (set a) | `hvac mode`, `hvac action`, `target temp high`, `target temp low` and `fan mode` -| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) (set b) | `hvac mode` -| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (seb b) | `target temp low` -| [`thermostatHeatingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Heating-Setpoint) (set b) | `target temp high` -| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (set b) | -| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `hvac action` -| [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `fan mode` -| [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` (state attribute) +| Capability | Climate Features | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| [`thermostat`](https://docs.smartthings.com/en/latest/capabilities-reference.html#thermostat) (set a) | `hvac mode`, `hvac action`, `target temp high`, `target temp low` and `fan mode` | +| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) (set b) | `hvac mode` | +| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (seb b) | `target temp low` | +| [`thermostatHeatingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Heating-Setpoint) (set b) | `target temp high` | +| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (set b) | +| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `hvac action` | +| [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `fan mode` | +| [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` (state attribute) | ### Cover The SmartThings Cover platform lets you control devices that have open/close related capabilities. For a device to be represented by the cover platform, it must have one of the capabilities from "set a" below. -| Capability |Cover Features -|-------------------------------------|--------------------------------------------| -| [`doorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Door-Control) (set a) | `open` and `close` -| [`garageDoorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Garage-Door-Control) (seb a) | `open` and `close` -| [`windowShade`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Window-Shade) (set a) | `open` and `close` -| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `position` -| [`battery`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Battery) | `battery_level` (state attribute) +| Capability | Cover Features | +| ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------- | +| [`doorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Door-Control) (set a) | `open` and `close` | +| [`garageDoorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Garage-Door-Control) (seb a) | `open` and `close` | +| [`windowShade`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Window-Shade) (set a) | `open` and `close` | +| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `position` | +| [`battery`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Battery) | `battery_level` (state attribute) | ### Fan The SmartThings Fan platform lets you control devices that have fan-related capabilities. For a SmartThings device to be represented by the fan platform, it must have one or more of the capabilities below in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. -| Capability |Fan Features -|-------------------|------------------------------------------------------------| -| [`fanSpeed`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Fan-Speed) | `speed` (`off`, `low`, `medium`, and `high`) +| Capability | Fan Features | +| --------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| [`fanSpeed`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Fan-Speed) | `speed` (`off`, `low`, `medium`, and `high`) | ### Light The SmartThings Light platform lets you control devices that have light-related capabilities. For a SmartThings device to be represented by the light platform, it must have one or more of the capabilities below in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. -| Capability |Light Features -|-------------------|------------------------------------------------------------| -| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `brightness` and `transition` -| [`colorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Control) | `color` -| [`colorTemperature`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Temperature) | `color_temp` +| Capability | Light Features | +| ------------------------------------------------------------------------------------------------------------------- | ----------------------------- | +| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `brightness` and `transition` | +| [`colorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Control) | `color` | +| [`colorTemperature`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Temperature) | `color_temp` | ### Lock @@ -216,60 +219,60 @@ The SmartThings Lock platform lets you control devices that have the [`lock`](ht The SmartThings Sensor platform lets your view devices that have sensor-related capabilities. A Sensor entity is created for each attribute (below) supported by the device. -| Capability |Attributes | -|-------------------|---------------| -| [`activityLightingMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Activity-Lighting-Mode) | `lightingMode` -| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) | `airConditionerMode` -| [`airQualitySensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Quality-Sensory) | `airQuality` -| [`alarm`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Alarm) | `alarm` -| [`audioVolume`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Audio-Volume) | `volume` -| [`battery`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Battery) | `battery` -| [`bodyMassIndexMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Body-Mass-Index-Measurement) | `bmiMeasurement` -| [`bodyWeightMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Body-Weight-Measurement) | `bodyWeightMeasurement` -| [`carbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Dioxide-Measurement) | `carbonDioxide` -| [`carbonMonoxideDetector`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Detector) | `carbonMonoxide` -| [`carbonMonoxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Measurement) | `carbonMonoxideLevel` -| [`dishwasherOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dishwasher-Operating-State) | `machineState`, `dishwasherJobState` and `completionTime` -| [`dryerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Mode) | `dryerMode` -| [`dryerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Operating-State) | `machineState`, `dryerJobState` and `completionTime` -| [`dustSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dust-Sensor) | `fineDustLevel` and `dustLevel` -| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | `energy` -| [`equivalentCarbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Equivalent-Carbon-Dioxide-Measurement) | `equivalentCarbonDioxideMeasurement` -| [`formaldehydeMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Formaldehyde-Measurement) | `formaldehydeLevel` -| [`illuminanceMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Illuminance-Measurement) | `illuminance` -| [`infraredLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Infrared-Level) | `infraredLevel` -| [`lock`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Lock) | `lock` -| [`mediaInputSource`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Input-Source) | `inputSource` -| [`mediaPlaybackRepeat`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback-Repeat) | `playbackRepeatMode` -| [`mediaPlaybackShuffle`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback-Shuffle) | `playbackShuffle` -| [`mediaPlayback`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback) | `playbackStatus` -| [`odorSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Odor-Sensor) | `odorLevel` -| [`ovenMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Mode) | `ovenMode` -| [`ovenOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Operating-State) | `machineState`, `ovenJobState` and `completionTime` -| [`ovenSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Setpoint) | `ovenSetpoint` -| [`powerMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Meter) | `power` -| [`powerSource`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Source) | `powerSource` -| [`refrigerationSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Refrigeration-Setpoint) | `refrigerationSetpoint` -| [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` -| [`robotCleanerCleaningMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-CleaningMode) | `robotCleanerCleaningMode` -| [`robotCleanerMovement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-Movement) | `robotCleanerMovement` -| [`robotCleanerTurboMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-Turbo-Mode) | `robotCleanerTurboMode` -| [`signalStrength`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Signal-Strength) | `lqi` and `rssi` -| [`smokeDetector`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Smoke-Detector) | `smoke` -| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) | `temperature` -| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) | `coolingSetpoint` -| [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `thermostatFanMode` -| [`thermostatHeatingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Heating-Setpoint) | `heatingSetpoint` -| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) | `thermostatMode` -| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `thermostatOperatingState` -| [`thermostatSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Setpoint) | `thermostatSetpoint` -| [`threeAxis`](https://docs.smartthings.com/en/latest/capabilities-reference.html#three-axis) | `threeAxis` (as discrete sensors `X`, `Y` and `Z`) -| [`tvChannel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tv-Channel) | `tvChannel` -| [`tvocMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tvoc-Measurement) | `tvocLevel` -| [`ultravioletIndex`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Ultraviolet-Index) | `ultravioletIndex` -| [`voltageMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Voltage-Measurement) | `voltage` -| [`washerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Mode) | `washerMode` -| [`washerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Operating-State) | `machineState`, `washerJobState` and `completionTime` +| Capability | Attributes | +| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | +| [`activityLightingMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Activity-Lighting-Mode) | `lightingMode` | +| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) | `airConditionerMode` | +| [`airQualitySensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Quality-Sensory) | `airQuality` | +| [`alarm`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Alarm) | `alarm` | +| [`audioVolume`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Audio-Volume) | `volume` | +| [`battery`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Battery) | `battery` | +| [`bodyMassIndexMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Body-Mass-Index-Measurement) | `bmiMeasurement` | +| [`bodyWeightMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Body-Weight-Measurement) | `bodyWeightMeasurement` | +| [`carbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Dioxide-Measurement) | `carbonDioxide` | +| [`carbonMonoxideDetector`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Detector) | `carbonMonoxide` | +| [`carbonMonoxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Measurement) | `carbonMonoxideLevel` | +| [`dishwasherOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dishwasher-Operating-State) | `machineState`, `dishwasherJobState` and `completionTime` | +| [`dryerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Mode) | `dryerMode` | +| [`dryerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Operating-State) | `machineState`, `dryerJobState` and `completionTime` | +| [`dustSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dust-Sensor) | `fineDustLevel` and `dustLevel` | +| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | `energy` | +| [`equivalentCarbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Equivalent-Carbon-Dioxide-Measurement) | `equivalentCarbonDioxideMeasurement` | +| [`formaldehydeMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Formaldehyde-Measurement) | `formaldehydeLevel` | +| [`illuminanceMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Illuminance-Measurement) | `illuminance` | +| [`infraredLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Infrared-Level) | `infraredLevel` | +| [`lock`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Lock) | `lock` | +| [`mediaInputSource`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Input-Source) | `inputSource` | +| [`mediaPlaybackRepeat`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback-Repeat) | `playbackRepeatMode` | +| [`mediaPlaybackShuffle`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback-Shuffle) | `playbackShuffle` | +| [`mediaPlayback`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback) | `playbackStatus` | +| [`odorSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Odor-Sensor) | `odorLevel` | +| [`ovenMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Mode) | `ovenMode` | +| [`ovenOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Operating-State) | `machineState`, `ovenJobState` and `completionTime` | +| [`ovenSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Setpoint) | `ovenSetpoint` | +| [`powerMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Meter) | `power` | +| [`powerSource`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Source) | `powerSource` | +| [`refrigerationSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Refrigeration-Setpoint) | `refrigerationSetpoint` | +| [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` | +| [`robotCleanerCleaningMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-CleaningMode) | `robotCleanerCleaningMode` | +| [`robotCleanerMovement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-Movement) | `robotCleanerMovement` | +| [`robotCleanerTurboMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-Turbo-Mode) | `robotCleanerTurboMode` | +| [`signalStrength`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Signal-Strength) | `lqi` and `rssi` | +| [`smokeDetector`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Smoke-Detector) | `smoke` | +| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) | `temperature` | +| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) | `coolingSetpoint` | +| [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `thermostatFanMode` | +| [`thermostatHeatingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Heating-Setpoint) | `heatingSetpoint` | +| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) | `thermostatMode` | +| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `thermostatOperatingState` | +| [`thermostatSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Setpoint) | `thermostatSetpoint` | +| [`threeAxis`](https://docs.smartthings.com/en/latest/capabilities-reference.html#three-axis) | `threeAxis` (as discrete sensors `X`, `Y` and `Z`) | +| [`tvChannel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tv-Channel) | `tvChannel` | +| [`tvocMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tvoc-Measurement) | `tvocLevel` | +| [`ultravioletIndex`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Ultraviolet-Index) | `ultravioletIndex` | +| [`voltageMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Voltage-Measurement) | `voltage` | +| [`washerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Mode) | `washerMode` | +| [`washerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Operating-State) | `machineState`, `washerJobState` and `completionTime` | ### Scene @@ -279,10 +282,10 @@ The SmartThings Scene platform lets you activate scenes defined in SmartThings w The SmartThings Switch platform lets you control devices that have the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability that are not already represented by a more specific platform. The following optional capabilities will provide energy and power utilization information: -| Capability |Switch Features -|-------------------------------------|--------------------------------------------| -| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | energy consumption (`today_energy_kwh` state attribute) -| [`powerMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Meter) | power consumption (`current_power_w` state attribute) +| Capability | Switch Features | +| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | energy consumption (`today_energy_kwh` state attribute) | +| [`powerMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Meter) | power consumption (`current_power_w` state attribute) | ## Troubleshooting diff --git a/source/_integrations/smarty.markdown b/source/_integrations/smarty.markdown index a1fe9070015b..6f8747d1f555 100644 --- a/source/_integrations/smarty.markdown +++ b/source/_integrations/smarty.markdown @@ -1,12 +1,15 @@ --- -title: "Salda Smarty 2X/3X/4X P/V Ventilation" -description: "Instructions on how to integrate Salda Smarty 2X/3X/4X P/V ventilation systems into Home Assistant." +title: Salda Smarty +description: Instructions on how to integrate Salda Smarty 2X/3X/4X P/V ventilation systems into Home Assistant. logo: salda.png ha_category: - Hub - Fan - Sensor ha_release: 0.95 +ha_codeowners: + - '@z0mbieprocess' +ha_domain: smarty --- The `smarty` integration lets you control Salda [Smarty](http://www.salda.lt/en/products/category/compact-counter-flow-units) ventilation units from Home Assistant. You need a [MB-GATEWAY](http://www.salda.lt/en/products/item/5637227077) or something similar to connect to your local network. diff --git a/source/_integrations/smhi.markdown b/source/_integrations/smhi.markdown index a2642b3f06c8..8195f15145e4 100644 --- a/source/_integrations/smhi.markdown +++ b/source/_integrations/smhi.markdown @@ -1,12 +1,14 @@ --- -title: "SMHI" -description: "Instructions on how to integrate SMHI forecasts within Home Assistant." +title: SMHI +description: Instructions on how to integrate SMHI forecasts within Home Assistant. logo: smhi.png ha_category: - - Hub - - Weather + - Hub + - Weather ha_release: 0.81 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_domain: smhi --- The `smhi` integration adds support for the [SMHI.se](https://www.smhi.se/) web service as a source for meteorological data for your location. @@ -19,7 +21,7 @@ There is currently support for the following device types within Home Assistant: The SMHI weather service is free under the Creative Commons Attribution 4.0, international license. Weather data will be pulled once every 30 minutes. -To add SMHI weather forecast to your installation, go to the Integrations page inside the config panel and add a location by providing the longitude and latitude of your location. +To add SMHI weather forecast to your installation, go to the Integrations page inside the configuration panel and add a location by providing the longitude and latitude of your location. If the location is configured in Home Assistant, it will be selected as the default location. After that, you can add additional locations. diff --git a/source/_integrations/sms.markdown b/source/_integrations/sms.markdown new file mode 100644 index 000000000000..03ec45959d5e --- /dev/null +++ b/source/_integrations/sms.markdown @@ -0,0 +1,117 @@ +--- +title: SMS notifications via GSM-modem +description: SMS notification via GSM modem. +icon: gammu.png +ha_category: + - Notifications +ha_release: 0.105 +ha_iot_class: Local Polling +ha_codeowners: + - '@ocalvo' +ha_domain: sms +--- + +The `sms` integration allows having a local execution SMS notification via [Gammu](https://wammu.eu/gammu/). This is ideal when the internet is offline or when the power goes out. + +This integration provides the following platforms: + +- Notify + +## Configuration + +To enable those notifications in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sms: + device: /dev/ttyUSB2 + +notify: + - platform: sms + name: sms_person1 + recipient: PHONE_NUMBER + - platform: sms + name: sms_person2 + recipient: PHONE_NUMBER +``` + +{% configuration %} +device: + description: The gsm modem device. + required: true + type: string +{% endconfiguration %} + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). + +If the integration is used with the Home Assistant Operating System, then version [3.6](https://github.com/home-assistant/hassos/releases/tag/3.6) or higher is required. + +For installations not running on Home Assistant or Home Assistant Core using Docker, you must install `gammu-dev` package: + +```bash +sudo apt-get install libgammu-dev +``` + +Before running for the first time, check that the system recognizes the modem by running: + +```bash +ls -l /dev/*USB* +``` + +Note: When running Home Assistant, you need to install the SSH add-on. + +## Required Hardware + +You will need a USB GSM stick modem. + +### List of modems known to work + +- [Huawei E3372-510](https://www.amazon.com/gp/product/B01N6P3HI2/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)( +Need to unlock it using [this guide](http://blog.asiantuntijakaveri.fi/2015/07/convert-huawei-e3372h-153-from.html)) +- [Huawei E3531](https://www.amazon.com/Modem-Huawei-Unlocked-Caribbean-Desbloqueado/dp/B011YZZ6Q2/ref=sr_1_1?keywords=Huawei+E3531&qid=1581447800&sr=8-1) + +[List of modems that may work](https://www.asus.com/event/networks_3G4G_support/) + +### Huawei modems on Raspberry Pi (and similar) devices + +For some unknown reason, the rule that converts these modems from storage devices into serial devices does not run automatically. To work around this problem, follow the procedure to create `udev` rule on a configuration USB stick for the device to switch to serial mode. + +1. Run `lsusb`, its output looks like this: + +```bash +bus 000 device 001: ID 1FFF:342a +bus 001 device 005: ID 12d1:15ca <-------- Huawei is usually 12d1 +bus 000 device 002: ID 2354:5352 +bus 000 device 002: ID 1232:15ca +``` + +Identify the brand for your GSM modem, copy the `brand_Id` and `product_id` (In this case `brand_id = 12d1` and `product_Id = 15ca`) + +Set this content in file `udev\10-gsm-modem.rules` in the configuration USB: +(Replace `brand_Id` and `product_id` for the numbers reported by `lsusb`) + +```bash +ACTION=="add" \ +, ATTRS{idVendor}=="brand_Id" \ +, ATTRS{idProduct}=="product_Id" \ +, RUN+="/sbin/usb_modeswitch -X -v brand_Id -p product_Id" +``` + +Here is a sample configuration file: + +```bash +ACTION=="add" \ +, ATTRS{idVendor}=="12d1" \ +, ATTRS{idProduct}=="15ca" \ +, RUN+="/sbin/usb_modeswitch -X -v 12d1 -p 15ca" +``` + +Plug the USB stick, reboot the device, run `lsusb` again. +The resulting product id now should be different and the brand id should be the same. +And `ls -l /dev/*USB*` should now report your device. + +If the device is still not recognized, remove the parameter -X from the usb_modesiwtch command and reboot again. + +## More details: + +- [Original thread discussion](https://community.home-assistant.io/t/send-sms-with-usb-gsm-modem-when-alarm-triggered/28942/38) diff --git a/source/_integrations/smtp.markdown b/source/_integrations/smtp.markdown index 8328d569a1cf..e85b8242cba0 100644 --- a/source/_integrations/smtp.markdown +++ b/source/_integrations/smtp.markdown @@ -1,13 +1,14 @@ --- -title: "SMTP" -description: "Instructions on how to add e-mail notifications to Home Assistant." -logo: smtp.png +title: SMTP +description: Instructions on how to add e-mail notifications to Home Assistant. ha_category: - Notifications ha_release: pre 0.7 +ha_codeowners: + - '@fabaff' +ha_domain: smtp --- - The `smtp` platform allows you to deliver notifications from Home Assistant to an e-mail recipient. To enable notification by e-mail in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/snapcast.markdown b/source/_integrations/snapcast.markdown index 2ad1d9b3e995..9e249ad7697a 100644 --- a/source/_integrations/snapcast.markdown +++ b/source/_integrations/snapcast.markdown @@ -1,11 +1,12 @@ --- -title: "Snapcast" -description: "Instructions on how to integrate Snapcast into Home Assistant." +title: Snapcast +description: Instructions on how to integrate Snapcast into Home Assistant. logo: snapcast.png ha_category: - Media Player ha_release: 0.13 ha_iot_class: Local Polling +ha_domain: snapcast --- The `snapcast` platform allows you to control [Snapcast](https://github.com/badaix/snapcast) from Home Assistant. diff --git a/source/_integrations/snips.markdown b/source/_integrations/snips.markdown index 1937ef70490d..b401005a4fa3 100644 --- a/source/_integrations/snips.markdown +++ b/source/_integrations/snips.markdown @@ -1,12 +1,19 @@ --- -title: "Snips" -description: "Instructions on how to integrate Snips within Home Assistant." +title: Snips +description: Instructions on how to integrate Snips within Home Assistant. logo: snips.png ha_category: - Voice ha_release: 0.48 +ha_domain: snips --- +
    + +The Snips Console no longer available due to acquisition by Sonos. For more details, read the [announcement on the Snips forum](https://forum.snips.ai/t/important-message-regarding-the-snips-console/4145). + +
    + The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on privacy. It runs 100% on-device, and does not require an internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management. The latest documentation can be found here: [Snips Platform Documentation](https://docs.snips.ai/). @@ -27,7 +34,7 @@ The Snips platform can be installed via the Snips APT/Debian repository. sudo apt-get update sudo apt-get install -y dirmngr sudo bash -c 'echo "deb https://raspbian.snips.ai/$(lsb_release -cs) stable main" > /etc/apt/sources.list.d/snips.list' -sudo apt-key adv --keyserver pgp.mit.edu --recv-keys D4F50CDCA10A2849 +sudo apt-key adv --fetch-keys https://raspbian.snips.ai/531DD1A7B702B14D.pub sudo apt-get update sudo apt-get install -y snips-platform-voice ``` diff --git a/source/_integrations/snmp.markdown b/source/_integrations/snmp.markdown index 649c77bfbff5..38dfbe742491 100644 --- a/source/_integrations/snmp.markdown +++ b/source/_integrations/snmp.markdown @@ -1,7 +1,6 @@ --- -title: "SNMP" -description: "Instructions on how to integrate SNMP into Home Assistant." -logo: network-snmp.png +title: SNMP +description: Instructions on how to integrate SNMP into Home Assistant. ha_category: - Network - Switch @@ -9,9 +8,10 @@ ha_category: - Sensor ha_iot_class: Local Polling ha_release: 0.57 +ha_domain: snmp --- -A lot of WiFi access points and WiFi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks and WiFi registrations. +A lot of Wi-Fi access points and Wi-Fi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks and Wi-Fi registrations. There is currently support for the following device types within Home Assistant: @@ -34,12 +34,13 @@ The following OID examples pull the current MAC Address table from a router. Thi | Aruba | IAP325 on AOS 6.5.4.8 | `1.3.6.1.4.1.14823.2.3.3.1.2.4.1.1` | | BiPAC | 7800DXL Firmware 2.32e | `1.3.6.1.2.1.17.7.1.2.2.1.1` | | DD-WRT | unknown version/model | `1.3.6.1.2.1.4.22.1.2` | -| Mikrotik | unknown RouterOS version/model | `1.3.6.1.4.1.14988.1.1.1.2.1.1` | -| Mikrotik | RouterOS 6.x on RB2011 | `1.3.6.1.2.1.4.22.1.2` | +| MikroTik | unknown RouterOS version/model | `1.3.6.1.4.1.14988.1.1.1.2.1.1` | +| MikroTik | RouterOS 6.x on RB2011 | `1.3.6.1.2.1.4.22.1.2` | | OpenWrt | Chaos Calmer 15.05 | `1.3.6.1.2.1.4.22.1.2` | | OPNSense | 19.1 | `1.3.6.1.2.1.4.22.1.2` | | pfSense | 2.2.4 | `1.3.6.1.2.1.4.22.1.2` | | Ruckus | ZoneDirector 9.13.3 | `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` | +| TP-Link | Archer VR1600v | `1.3.6.1.2.1.3.1.1.2.16.1` | | TP-Link | Archer VR2600v | `1.3.6.1.2.1.3.1.1.2.19.1` | | TP-Link | Archer VR600 | `1.3.6.1.2.1.3.1.1.2` | | Ubiquiti | Edgerouter Lite v1.9.0 | `1.3.6.1.2.1.4.22.1.2` | diff --git a/source/_integrations/sochain.markdown b/source/_integrations/sochain.markdown index c123f2809096..ad8d84fdac67 100644 --- a/source/_integrations/sochain.markdown +++ b/source/_integrations/sochain.markdown @@ -1,11 +1,12 @@ --- -title: "SoChain" -description: "Instructions on how to integrate chain.so data within Home Assistant." +title: SoChain +description: Instructions on how to integrate chain.so data within Home Assistant. logo: sochain.png ha_category: - Finance ha_release: 0.61 ha_iot_class: Cloud Polling +ha_domain: sochain --- The `SoChain` sensor platform displays supported cryptocurrency wallet balances from [SoChain](https://chain.so). diff --git a/source/_integrations/socialblade.markdown b/source/_integrations/socialblade.markdown index cb46dfa638f3..73cf67594c2e 100644 --- a/source/_integrations/socialblade.markdown +++ b/source/_integrations/socialblade.markdown @@ -1,11 +1,12 @@ --- -title: Social Blade Sensor -description: "Instructions on how to set up Social Blade Sensor within Home Assistant." +title: Social Blade +description: Instructions on how to set up Social Blade Sensor within Home Assistant. logo: socialblade.png ha_category: - Multimedia ha_release: 0.69 ha_iot_class: Cloud Polling +ha_domain: socialblade --- The `socialblade` sensor platform allows you to monitor a YouTube channels subscriber count and total views count. The sensor retrieves data from the [Social Blade website](https://socialblade.com). diff --git a/source/_integrations/solaredge.markdown b/source/_integrations/solaredge.markdown index b6bfcdee3b43..d1667ede6d18 100644 --- a/source/_integrations/solaredge.markdown +++ b/source/_integrations/solaredge.markdown @@ -1,11 +1,13 @@ --- -title: "SolarEdge Sensor" -description: "Instructions on how to integrate SolarEdge sensor within Home Assistant." +title: SolarEdge +description: Instructions on how to integrate SolarEdge sensor within Home Assistant. logo: solaredge.png ha_category: - Sensor ha_release: 0.85 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_domain: solaredge --- The `solaredge` platform uses the [SolarEdge Monitoring API](https://www.solaredge.com/sites/default/files/se_monitoring_api.pdf) to allow you to get details from your SolarEdge solar power setup and integrate these in your Home Assistant installation. diff --git a/source/_integrations/solaredge_local.markdown b/source/_integrations/solaredge_local.markdown index d536dc76e91b..033ec8325adf 100644 --- a/source/_integrations/solaredge_local.markdown +++ b/source/_integrations/solaredge_local.markdown @@ -1,12 +1,16 @@ --- -title: "SolarEdge Local Sensor" -description: "Instructions on how to integrate SolarEdge sensor within Home Assistant via Local API." +title: SolarEdge Local +description: Instructions on how to integrate SolarEdge sensor within Home Assistant via Local API. logo: solaredge.png ha_category: - Sensor - Energy ha_release: 0.95 ha_iot_class: Local Polling +ha_codeowners: + - '@drobtravels' + - '@scheric' +ha_domain: solaredge_local --- 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. @@ -24,13 +28,13 @@ If your inverter does not support the local API, you can use the [cloud based ve ## Configuration -To use the SolarEdge sensors in your installation, add the following to your configuration.yaml file: +To use the SolarEdge sensors in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry sensor: - platform: solaredge_local - ip_address: IP_ADDRES + ip_address: IP_ADDRESS ``` {% configuration %} diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index c8c21bf73c0c..7f824213d77f 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -1,13 +1,17 @@ --- -title: "Solar-Log Sensor" -description: "Instructions on how to integrate Solar-Log sensors within Home Assistant." +title: Solar-Log +description: Instructions on how to integrate Solar-Log sensors within Home Assistant. logo: solar-log.png ha_category: Sensor ha_release: 0.101 ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@Ernst79' +ha_domain: solarlog --- -The `solarlog` integration uses the open JSON interface on Solar-Log PV monitoring systems to allow you to get details from your Solar-Log device and integrate these into your Home Assistant installation. +The `solarlog` integration uses the open JSON interface on [Solar-Log PV monitoring systems](https://www.solar-log.com/) to allow you to get details from your Solar-Log device and integrate these into your Home Assistant installation. Before being able to use the integration, you have to activate the open JSON interface on your Solar-Log device. This can be activated from the Configuration | System | Access control menu of your Solar-Log device. When activating the interface, a red warning triangle with security information and risks is displayed. diff --git a/source/_integrations/solax.markdown b/source/_integrations/solax.markdown index aa41aa3ef50f..7ed262eecf11 100644 --- a/source/_integrations/solax.markdown +++ b/source/_integrations/solax.markdown @@ -1,19 +1,21 @@ --- -title: "Solax Sensor" -description: "Instructions on how to integrate Solax sensor within Home Assistant." -logo: solax-logo.png +title: SolaX Power +description: Instructions on how to integrate Solax sensor within Home Assistant. ha_category: - Energy - Sensor ha_release: 0.94 ha_iot_class: Local Polling +ha_codeowners: + - '@squishykid' +ha_domain: solax --- -The `solax` integration connects home-assistant to Solax solar power inverters. Solax inverters may be connected to a home Wi-Fi network and expose a REST API. This integration retrieves information such as photovoltaic power production, battery levels and power, and how much power is being fed back into the grid. +The `solax` integration connects Home Assistant to Solax solar power inverters. Solax inverters may be connected to a home Wi-Fi network and expose a REST API. This integration retrieves information such as photovoltaic power production, battery levels and power, and how much power is being fed back into the grid. ## Configuration -To use the Solax sensors in your installation, add the following to your configuration.yaml file: +To use the Solax sensors in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -54,3 +56,16 @@ sensors: value_template: "{{ (states('sensor.power_now') | float) - (states('sensor.exported_power') | float) }}" ``` {% endraw %} + +### Note + +Inverter models with newer firmware (and also those using devices like PocketWifi) no longer expose an API when connected to your wireless network, they do however continue to expose it on their own broadcasted SSID. To use this sensor in this case it is necessary to set up a reverse proxy with something like NGINX and use a Raspberry Pi (or similar) with two network connections (one being Wi-Fi that connects to the inverters SSID). + + +Example NGINX configuration + +```text +location / { + proxy_pass http://5.8.8.8; +} +``` diff --git a/source/_integrations/soma.markdown b/source/_integrations/soma.markdown index 390e45540c05..79c119981f22 100644 --- a/source/_integrations/soma.markdown +++ b/source/_integrations/soma.markdown @@ -1,17 +1,19 @@ --- -title: "Soma" -description: "Instructions on how to set up the Soma Connect within Home Assistant." -logo: soma.png +title: Soma Connect +description: Instructions on how to set up the Soma Connect within Home Assistant. ha_category: - Cover ha_iot_class: Local Polling ha_config_flow: true -ha_release: "0.100" +ha_release: '0.100' +ha_codeowners: + - '@ratsept' +ha_domain: soma --- The Soma integration will allow users to integrate their Soma Smarthome devices into Home Assistant using the Soma Connect hub. -You can build a Soma Connect yourself if you have a spare Raspberry Pi. You just need to follow the [ official instructions](https://somasmarthome.zendesk.com/hc/en-us/articles/360035521234-Install-SOMA-Connect-software-on-SOMA-Connect-Raspberry-Pi). After you have the SD card plug in the Pi and use an ethernet cable or [set up WiFI](https://somasmarthome.zendesk.com/hc/en-us/articles/360026210333-Configuring-Wi-Fi-access). Then find the IP address by checking your routers DHCP table (we will work on this step). +You can build a Soma Connect yourself if you have a spare Raspberry Pi. You just need to follow the [ official instructions](https://somasmarthome.zendesk.com/hc/en-us/articles/360035521234-Install-SOMA-Connect-software-on-SOMA-Connect-Raspberry-Pi). After you have the SD card plug in the Pi and use an ethernet cable or [set up Wi-Fi](https://somasmarthome.zendesk.com/hc/en-us/articles/360026210333-Configuring-Wi-Fi-access). Then find the IP address by checking your routers DHCP table (we will work on this step). The Connect will automatically find all your Smartshade devices in range and expose them through this integration and through Home Kit. This integration will only enumerate new shades when it is first set up. If you add shades after that you just need to restart Home Assistant or reconfigure this integration. Soma Connect will automatically discover new shades as they appear and expose them. @@ -37,4 +39,3 @@ port: default: 3000 type: string {% endconfiguration %} - diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown index e90bdc2c5537..9ee44af9d3c2 100644 --- a/source/_integrations/somfy.markdown +++ b/source/_integrations/somfy.markdown @@ -1,27 +1,42 @@ --- -title: "Somfy" -description: "Instructions on how to set up the Somfy hub within Home Assistant." -logo: somfy.png +title: Somfy Open API +description: Instructions on how to set up the Somfy hub within Home Assistant. ha_category: - Hub ha_iot_class: Cloud Polling ha_release: 0.95 +ha_config_flow: true +ha_codeowners: + - '@tetienne' +ha_domain: somfy --- -The Somfy integration will allow users to integrate their Somfy devices into Home Assistant using the [official API](https://developer.somfy.com/somfy-open-api/apis), unlike the [tahoma](/integrations/tahoma/) component. +The Somfy integration will allow users to integrate their Somfy devices into Home Assistant using the [official API](https://developer.somfy.com/somfy-open-api/apis), unlike the [Tahoma](/integrations/tahoma/) integration. -### Setting up developer account +## Installation + +Somfy is leveraging the new account linking service. This means that to set up Somfy, you only need to go to the integrations page and click on add new integration. + +
    + +
    -To connect Somfy, you need to set up a developer account. +## Installation with own developer account + +It is possible to create your own developer account and configure Somfy via that. + +### Setting up developer account 1. Visit [https://developer.somfy.com](https://developer.somfy.com). 2. Log in using your Somfy credentials. -3. Open the *My Apps* menu. +3. Open the _My Apps_ menu. 4. Add a new App: - - App Name: Home Assistant - - Callback URL: `/auth/external/callback` - - Description: Home Assistant instance - - Product: Somfy Open API + +- App Name: Home Assistant +- Callback URL: `/auth/external/callback` +- Description: Home Assistant instance +- Product: Somfy Open API + 5. Once Home Assistant restarted, go to Configuration>Integrations. 6. Select the Somfy integration. @@ -43,16 +58,39 @@ client_secret: description: Your Somfy consumer secret. required: true type: string +optimistic: + description: Set optimistic mode. + required: false + default: false + type: boolean {% endconfiguration %} +**optimistic** mode should only be used when the integration is not able to gain information on whether a cover is open or closed (e.g., [RTS](https://www.somfysystems.com/en-us/discover-somfy/technology/radio-technology-somfy) devices). It will attempt to track the status within Home Assistant. This mode should only be used if Home Assistant is the only way you operate the blind. If you also use the physical remote control or the Somfy app, Home Assistant will become out of sync. + ### Potential duplicate with the Tahoma integration -If you use the [tahoma](/integrations/tahoma) component, you will have to exclude the covers added by this one. Otherwise, they will be added twice. +If you use the [Tahoma](/integrations/tahoma) integration, you will have to exclude the covers added by this one. Otherwise, they will be added twice. ```yaml # Example configuration.yaml entry tahoma: username: YOUR_USERNAME password: YOUR_PASSWORD - exclude: ['rts:RollerShutterRTSComponent','rts:CurtainRTSComponent','rts:BlindRTSComponent','rts:VenetianBlindRTSComponent','rts:DualCurtainRTSComponent','rts:ExteriorVenetianBlindRTSComponent','io:ExteriorVenetianBlindIOComponent','io:RollerShutterUnoIOComponent','io:RollerShutterWithLowSpeedManagementIOComponent','io:RollerShutterVeluxIOComponent','io:RollerShutterGenericIOComponent','io:WindowOpenerVeluxIOComponent','io:VerticalExteriorAwningIOComponent','io:HorizontalAwningIOComponent'] + exclude: + [ + "rts:RollerShutterRTSComponent", + "rts:CurtainRTSComponent", + "rts:BlindRTSComponent", + "rts:VenetianBlindRTSComponent", + "rts:DualCurtainRTSComponent", + "rts:ExteriorVenetianBlindRTSComponent", + "io:ExteriorVenetianBlindIOComponent", + "io:RollerShutterUnoIOComponent", + "io:RollerShutterWithLowSpeedManagementIOComponent", + "io:RollerShutterVeluxIOComponent", + "io:RollerShutterGenericIOComponent", + "io:WindowOpenerVeluxIOComponent", + "io:VerticalExteriorAwningIOComponent", + "io:HorizontalAwningIOComponent", + ] ``` diff --git a/source/_integrations/somfy_mylink.markdown b/source/_integrations/somfy_mylink.markdown index c913e3717957..586fa5d767c7 100644 --- a/source/_integrations/somfy_mylink.markdown +++ b/source/_integrations/somfy_mylink.markdown @@ -1,12 +1,13 @@ --- -title: "Somfy MyLink" -description: "Instructions on how to integrate Somfy MyLink devices with Home Assistant." +title: Somfy MyLink +description: Instructions on how to integrate Somfy MyLink devices with Home Assistant. logo: tahoma.png ha_category: - Hub - Cover ha_release: 0.92 -ha_iot_class: "Assumed State" +ha_iot_class: Assumed State +ha_domain: somfy_mylink --- The `Somfy MyLink` integration is used as an interface to a compatible Somfy MyLink hub utilizing the `Synergy` API. It allows the addition of covers from the Somfy MyLink platform to Home Assistant. diff --git a/source/_integrations/sonarr.markdown b/source/_integrations/sonarr.markdown index acbe8d7d46d5..11ab929e0262 100644 --- a/source/_integrations/sonarr.markdown +++ b/source/_integrations/sonarr.markdown @@ -1,11 +1,11 @@ --- -title: "Sonarr Sensor" -description: "Instructions on how to integrate Sonarr sensors with Home Assistant" -logo: sonarr.png +title: Sonarr +description: Instructions on how to integrate Sonarr sensors with Home Assistant ha_category: - Downloading ha_release: 0.34 ha_iot_class: Local Polling +ha_domain: sonarr --- This `sonarr` sensor platform pulls data from a given [Sonarr](https://sonarr.tv/) instance. @@ -99,7 +99,7 @@ sensor: ### Enable SSL -SSL may run on a different port than the default (8989). The SSL port can be bound to any port in Sonarr, so it should be set in the config here (unless it is changed to 8989). See the [Sonarr site](https://github.com/Sonarr/Sonarr/wiki/SSL) for details on SSL in Sonarr. +SSL may run on a different port than the default (8989). The SSL port can be bound to any port in Sonarr, so it should be set in the configuration here (unless it is changed to 8989). See the [Sonarr site](https://github.com/Sonarr/Sonarr/wiki/SSL) for details on SSL in Sonarr. ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/songpal.markdown b/source/_integrations/songpal.markdown index ac3977f1a71b..9cee60553504 100644 --- a/source/_integrations/songpal.markdown +++ b/source/_integrations/songpal.markdown @@ -1,11 +1,14 @@ --- -title: "Sony SongPal compatible devices" -description: "Instructions on how to integrate Sony Songpal devices into Home Assistant." +title: Sony Songpal +description: Instructions on how to integrate Sony Songpal devices into Home Assistant. logo: sony.png ha_category: - Media Player ha_iot_class: Local Push ha_release: 0.65 +ha_codeowners: + - '@rytilahti' +ha_domain: songpal --- The `songpal` platform allows you to control Sony's Songpal ("[Audio Control API](https://developer.sony.com/develop/audio-control-api/)") compatible devices such as soundbars, AV receivers and wireless speakers from Home Assistant. @@ -17,7 +20,7 @@ If the platform works with your non-listed device, or you encounter bugs, please A few notes: - The quick start-up mode has to be enabled in order to turn the device on. -- Supports currently only one output terminal, i.e. the volume control works only on the first volume controller as reported by the backend library. +- Supports currently only one output terminal, i.e., the volume control works only on the first volume controller as reported by the backend library. - Some devices, e.g., HT-XT3, do not support decreasing the volume step-by-step correctly. - Feel free to improve the available services! @@ -49,7 +52,7 @@ See [python-songpal's documentation](https://github.com/rytilahti/python-songpal In addition to the general [media player services](/integrations/media_player/#services), the following services are provided: -### Service `media_player/songpal_set_sound_setting` +### Service `songpal/set_sound_setting` For a list of available settings and their values use [`songpal sound`](https://github.com/rytilahti/python-songpal#sound-settings) command. @@ -58,6 +61,3 @@ For a list of available settings and their values use [`songpal sound`](https:// | `entity_id` | yes | Target entity, leave unset for all devices | | `name` | no | Configuration variable, e.g., `nightmode` | | `value` | no | New configuration value, e.g., `on` | - - - diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown index 3eede48379c8..621b658f3ec1 100644 --- a/source/_integrations/sonos.markdown +++ b/source/_integrations/sonos.markdown @@ -1,17 +1,18 @@ --- -title: "Sonos" -description: "Instructions on how to integrate Sonos devices into Home Assistant." -logo: sonos.png +title: Sonos +description: Instructions on how to integrate Sonos devices into Home Assistant. ha_category: - Media Player featured: true ha_release: 0.7.3 ha_iot_class: Local Push +ha_config_flow: true +ha_domain: sonos --- The `sonos` integration allows you to control your [Sonos](https://www.sonos.com) wireless speakers from Home Assistant. It also works with IKEA Symfonisk speakers. -You can configure the Sonos integration by going to the integrations page inside the config panel. +You can configure the Sonos integration by going to the integrations page inside the configuration panel. ## Services @@ -29,7 +30,7 @@ The queue is not snapshotted and must be left untouched until the restore. Using | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | The speakers to snapshot. +| `entity_id` | no | The speakers to snapshot. To target all Sonos devices, use `all`. | `with_group` | yes | Should we also snapshot the group layout and the state of other speakers in the group, defaults to true. ### Service `sonos.restore` @@ -48,7 +49,7 @@ A cloud queue cannot be restarted. This includes queues started from within Spot | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of `entity_id`s that should have their snapshot restored. +| `entity_id` | no | String or list of `entity_id`s that should have their snapshot restored. To target all Sonos devices, use `all`. | `with_group` | yes | Should we also restore the group layout and the state of other speakers in the group, defaults to true. ### Service `sonos.join` diff --git a/source/_integrations/sony_projector.markdown b/source/_integrations/sony_projector.markdown index 632cd71fa74b..9ca5efa21baa 100644 --- a/source/_integrations/sony_projector.markdown +++ b/source/_integrations/sony_projector.markdown @@ -1,11 +1,12 @@ --- -title: "Sony Projector Switch" -description: "Instructions on how to integrate Sony Projector switches into Home Assistant." +title: Sony Projector +description: Instructions on how to integrate Sony Projector switches into Home Assistant. logo: sony.png ha_category: - Multimedia ha_iot_class: Local Polling ha_release: 0.89 +ha_domain: sony_projector --- The `sony_projector` switch platform allows you to control the state of SDCP compatible network-connected projectors from [Sony](https://www.sony.com/). diff --git a/source/_integrations/soundtouch.markdown b/source/_integrations/soundtouch.markdown index 7b15e66d1dc2..b7c107c9cc67 100644 --- a/source/_integrations/soundtouch.markdown +++ b/source/_integrations/soundtouch.markdown @@ -1,11 +1,12 @@ --- -title: "Soundtouch" -description: "Instructions on how to integrate Bose Soundtouch devices into Home Assistant." +title: Bose Soundtouch +description: Instructions on how to integrate Bose Soundtouch devices into Home Assistant. logo: soundtouch.png ha_category: - Media Player ha_release: 0.34 ha_iot_class: Local Polling +ha_domain: soundtouch --- The `soundtouch` platform allows you to control your [Bose Soundtouch](https://www.soundtouch.com/) speakers from Home Assistant. @@ -81,9 +82,9 @@ You can also play HTTP (not HTTPS) URLs: You can use TTS services like [Google Text-to-Speech](/integrations/google_translate) or [Amazon Polly](/integrations/amazon_polly) only if your Home Assistant is configured in HTTP and not HTTPS (current device limitation, a firmware upgrade is planned). -A workaround if you want to publish your Home Assistant installation on Internet in SSL is to configure an HTTPS Web Server as a reverse proxy ([nginx](/docs/ecosystem/nginx/) for example) and let your Home Assistant configuration in HTTP on your local network. The Soundtouch devices will be available to access the TTS files in HTTP in local and your configuration will be in HTTPS on the Internet. +A workaround if you want to publish your Home Assistant installation on Internet in SSL is to configure an HTTPS Web Server as a reverse proxy ([NGINX](/docs/ecosystem/nginx/) for example) and let your Home Assistant configuration in HTTP on your local network. The Soundtouch devices will be available to access the TTS files in HTTP in local and your configuration will be in HTTPS on the Internet. -### Service `soundtouch_play_everywhere` +### Service `play_everywhere` Create a multi-room (zone) from a master and play same content on all other devices (slaves) @@ -92,7 +93,7 @@ Create a multi-room (zone) from a master and play same content on all other | ---------------------- | -------- | ----------- | | `master` | no | `entity_id` of the master device -### Service `soundtouch_create_zone` +### Service `create_zone` Create a multi-room (zone) from a master and play on selected slaves @@ -101,7 +102,7 @@ Create a multi-room (zone) from a master and play on selected slaves | `master` | no | `entity_id` of the master device| | `slaves` | no | List of slaves `entity_id` | -### Service `soundtouch_add_zone_slave` +### Service `add_zone_slave` Add slave(s) to an existing zone @@ -110,7 +111,7 @@ Add slave(s) to an existing zone | `master` | no | `entity_id` of the master device | | `slaves` | no | List of slaves `entity_id` to add| -### Service `soundtouch_remove_zone_slave` +### Service `remove_zone_slave` Remove slave(s) from an existing zone. diff --git a/source/_integrations/spaceapi.markdown b/source/_integrations/spaceapi.markdown index 719919b39527..72dc4e986ff1 100644 --- a/source/_integrations/spaceapi.markdown +++ b/source/_integrations/spaceapi.markdown @@ -1,10 +1,12 @@ --- -title: "SpaceAPI" -description: "Instructions on how to configure the SpaceAPI for Home Assistant." -logo: spaceapi.png +title: Space API +description: Instructions on how to configure the SpaceAPI for Home Assistant. ha_category: - Social -ha_release: "0.70" +ha_release: '0.70' +ha_codeowners: + - '@fabaff' +ha_domain: spaceapi --- The `spaceapi` integration allow Hackerspaces to expose information to web apps or any other application with the [SpaceAPI](http://spaceapi.net/). @@ -126,7 +128,7 @@ contact: required: false type: string issue_report_channels: - description: "The reporting channel for issues. Valid values are email, issue_mail, twitter or ml" + description: "The reporting channel for issues. Valid values are `email`, `issue_mail`, `twitter` or `ml`" required: true type: list state: @@ -268,7 +270,7 @@ In order to set a sensor specific location do the following steps: 3. Pick "Other" from the attribute override pulldown 4. Set the attribute name to location and the attribute value to your desired location -If no location is set, the location defined in the HA config is used. +If no location is set, the location defined in the HA configuration is used. ## Examples diff --git a/source/_integrations/spc.markdown b/source/_integrations/spc.markdown index f1caea63da43..a9410db6b34c 100644 --- a/source/_integrations/spc.markdown +++ b/source/_integrations/spc.markdown @@ -1,6 +1,6 @@ --- -title: "SPC" -description: "Instructions on how to setup Vanderbilt SPC devices within Home Assistant." +title: Vanderbilt SPC +description: Instructions on how to setup Vanderbilt SPC devices within Home Assistant. ha_category: - Hub - Alarm @@ -8,9 +8,10 @@ ha_category: ha_release: 0.47 logo: vanderbilt_spc.png ha_iot_class: Local Push +ha_domain: spc --- -Home Assistant has support to integrate your [Vanderbilt SPC](https://www.spcsupportinfo.com/SPCConnectPro/) alarm panel and any connected motion, door and smoke sensors. +Home Assistant has support to integrate your [Vanderbilt SPC](https://www.spcsupportinfo.com/SPCConnectPro/) alarm panel and any connected motion, door, smoke and technical sensors. Integration with SPC is done through a third-party API gateway called [SPC Web Gateway](https://www.lundix.se/smarta-losningar/) which must be installed and configured somewhere on your network. @@ -34,12 +35,11 @@ api_url: required: true type: string ws_url: - description: URL of the SPC Web Gateway websocket, e.g., `ws://:8088`. + description: URL of the SPC Web Gateway websocket, e.g., `ws://:8088/ws/spc`. required: true type: string {% endconfiguration %} -Supported sensors will be automatically discovered and added, however they will be hidden by default. ## Alarm @@ -66,4 +66,6 @@ automation: The `spc` platform allows you to get data from your [Vanderbilt SPC](https://www.spcsupportinfo.com/SPCConnectPro/) binary sensors from within Home Assistant. -Check the [type/class](/integrations/binary_sensor/) list for a possible visualization of your zone. Currently motion, smoke and door sensors are supported. +Check the [type/class](/integrations/binary_sensor/) list for a possible visualization of your zone. Currently motion, smoke, door and technical sensors are supported. + +Hint: In SPC, Technical zones can be used to track (for example) the status of an output. Virtual zones are supported in SPC firmware from 3.11. You can set up a virtual zone as technical, and link it to a mapping key that is controlling an output. diff --git a/source/_integrations/speedtestdotnet.markdown b/source/_integrations/speedtestdotnet.markdown index 5b93f1e17b17..5480f99c02a3 100644 --- a/source/_integrations/speedtestdotnet.markdown +++ b/source/_integrations/speedtestdotnet.markdown @@ -1,12 +1,15 @@ --- -title: "Speedtest.net" -description: "How to integrate Speedtest.net within Home Assistant." +title: Speedtest.net +description: How to integrate Speedtest.net within Home Assistant. logo: speedtest.png ha_category: - System Monitor - Sensor ha_release: 0.13 ha_iot_class: Cloud Polling +ha_codeowners: + - '@rohankapoorcom' +ha_domain: speedtestdotnet --- The `speedtestdotnet` integration uses the [Speedtest.net](https://speedtest.net/) web service to measure network bandwidth performance. diff --git a/source/_integrations/spider.markdown b/source/_integrations/spider.markdown index 49df07a87966..0facc7c617d4 100644 --- a/source/_integrations/spider.markdown +++ b/source/_integrations/spider.markdown @@ -1,13 +1,15 @@ --- -title: "Spider" -description: "Instructions on how to setup the Spider hub within Home Assistant." -logo: spider.png +title: Itho Daalderop Spider +description: Instructions on how to setup the Spider hub within Home Assistant. ha_category: - Hub - Climate - Switch ha_iot_class: Cloud Polling ha_release: 0.75 +ha_codeowners: + - '@peternijssen' +ha_domain: spider --- The `spider` integration is the main integration to integrate all [Itho Daalderop Spider](https://www.ithodaalderop.nl/spider-thermostaat) related platforms. You will need your Spider account information (username, password) to discover and control devices which are related to your account. diff --git a/source/_integrations/splunk.markdown b/source/_integrations/splunk.markdown index d0718987d72d..eefe69f23446 100644 --- a/source/_integrations/splunk.markdown +++ b/source/_integrations/splunk.markdown @@ -1,10 +1,11 @@ --- -title: "Splunk" -description: "Record events in Splunk." +title: Splunk +description: Record events in Splunk. logo: splunk.png ha_category: - History ha_release: 0.13 +ha_domain: splunk --- The `splunk` integration makes it possible to log all state changes to an external [Splunk](https://splunk.com/) database using Splunk's HTTP Event Collector (HEC) feature. You can either use this alone, or with the Home Assistant for Splunk [app](https://github.com/miniconfig/splunk-homeassistant). Since the HEC feature is new to Splunk, you will need to use at least version 6.3. diff --git a/source/_integrations/spotcrime.markdown b/source/_integrations/spotcrime.markdown index 0da27a6431dd..1d3734f60a44 100644 --- a/source/_integrations/spotcrime.markdown +++ b/source/_integrations/spotcrime.markdown @@ -1,15 +1,16 @@ --- -title: "Spot Crime" -description: "Instructions on how to integrate spotcrime.com into Home Assistant." +title: Spot Crime +description: Instructions on how to integrate spotcrime.com into Home Assistant. ha_release: 0.65 ha_iot_class: Cloud Polling +ha_domain: spotcrime ---
    SpotCrime is no longer handing out API keys to integrate their services.
    -The `spotcrime` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Spot Crime](https://www.spotcrime.info). Your regional emergency services may or may not report data. The sensor defaults to counting incidents within one day, but can be customized via configuration.yaml. +The `spotcrime` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Spot Crime](https://www.spotcrime.info). Your regional emergency services may or may not report data. The sensor defaults to counting incidents within one day, but can be customized via `configuration.yaml`. ## Configuration diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index 919555b5d1f1..c42b8a437649 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -1,56 +1,51 @@ --- -title: "Spotify" -description: "Instructions on how to integrate Spotify into Home Assistant." -logo: spotify.png +title: Spotify +description: Instructions on how to integrate Spotify into Home Assistant. ha_category: - Media Player ha_release: 0.43 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_quality_scale: silver +ha_codeowners: + - '@frenck' +ha_domain: spotify --- -The `spotify` media player platform allows you to control -[Spotify](https://www.spotify.com/) playback from Home Assistant. +The `spotify` media player integration allows you to control [Spotify](https://www.spotify.com/) playback from Home Assistant. ## Prerequisites - Spotify account -- Spotify application, properly configured (see below) +- Spotify application, properly configured (see below).
    -Controlling the Spotify integration (pause, play, next, etc.) requires a Premium account. If you do not have a Premium account, the integration in the frontend will not show the controls. + Controlling the Spotify integration (pause, play, next, etc.) requires a Premium account. + If you do not have a Premium account, the integration in the frontend will not show the controls.
    To create the required Spotify application: -- Login to [Spotify Developer](https://developer.spotify.com) -- Visit the [My Applications](https://developer.spotify.com/my-applications/#!/applications) page -- Select **Create An App**. Enter any name and description. Once your application is created, view it and copy your **Client ID** and **Client Secret**, which are used in the Home Assistant configuration file. +- Login to [Spotify Developer](https://developer.spotify.com). +- Visit the [My Applications](https://developer.spotify.com/my-applications/#!/applications) page. +- Select **Create An App**. Enter any name and description. +- Once your application is created, view it and copy your **Client ID** and **Client Secret**, which are used in the Home Assistant configuration file. - Add a **Redirect URI** in one of the following forms: - - If you are not using SSL: - `http://:/api/spotify` - - If you are using SSL: - `https://:/api/spotify` - + - If you are not using SSL: `http:///auth/external/callback` + - If you are using SSL: `https:///auth/external/callback` - Click **Save** after adding the URI. -If you are using an externally accessible address you will likely also need to set the `base_url` attribute of the [HTTP Component](/integrations/http/). This should be set using the same base URL as the redirect URI, e.g., if you used a domain name (not local IP) in the redirect, then use the same domain name in your `base_url`. +If you are using an externally accessible address, you will likely also need to set the `base_url` attribute of the [HTTP Integration](/integrations/http/). This should be set using the same base URL as the redirect URI, e.g., if you used a domain name (not local IP) in the redirect, then use the same domain name in your `base_url`. ## Configuration -To add Spotify to your installation, -add the following to your `configuration.yaml` file: +To add Spotify to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry -media_player: - - platform: spotify - client_id: YOUR_CLIENT_ID - client_secret: YOUR_CLIENT_SECRET - aliases: - abc123def456: 'Living Room' - 9183abas000: 'Bed Room' +spotify: + client_id: YOUR_CLIENT_ID + client_secret: YOUR_CLIENT_SECRET ``` {% configuration %} @@ -62,72 +57,28 @@ client_secret: description: Client Secret from your Spotify application. required: true type: string -cache_path: - description: Path to cache authentication token. - required: false - type: string - default: .spotify-token-cache -aliases: - description: "Dictionary of device ids to be aliased, handy for devices that Spotify cannot properly determine the device name of. New devices will be logged to the `info` channel for ease of aliasing." - required: false - type: map -name: - description: The name of the device used in the frontend. - required: false - type: string - default: Spotify {% endconfiguration %} -## Setup - -After the prerequisites and configuration are complete, restart Home Assistant. -A **Spotify** configurator element will be available. Follow the instructions to -authorize Home Assistant to access your Spotify account. A Spotify media player -will then appear. If you are prompted to download a file after completing -authorization, discard the download. It is not needed. - -## Sources -The sources are based on if you have streamed to these devices before in -Spotify. If you don't have any sources, then simply stream from your phone to -another device in your house: Bluetooth, echo, etc. Once you do, the sources will -show up in the Spotify developer console as a device to cast/stream to. -Go to https://developer.spotify.com and login. Click on "Console" in top menu and then "Player" in the left menu. Select "/v1/me/player/devices" in the list. Then click "Get token", accept the terms and click "Try it". Your active Spotify devices will then be listed in the right panel, beneath the curl-line (for example, "name": "Web Player (Chrome)"). -These names can then be used in for example an input selector: +## Activating the Spotify integration -```yaml - spotify_source: - name: 'Source:' - options: - - Spotifyd@rock64 - - Web Player (Chrome) -``` - -The devices won't show up in the dev-console as sources unless they are powered on as well. - -## URI Links For Playlists/Etc. -You can send playlists to spotify via the `"media_content_type": "playlist"` and something like (depending on your content ID) -`"media_content_id": "spotify:user:spotify:playlist:37i9dQZF1DWSkkUxEhrBdF"` -which are part of the -[media_player.play_media](/integrations/media_player/#service-media_playerplay_media) -service. You can test this from the services -control panel in the Home Assistant frontend. +After you have set up the above: -## Services -Extra services besides the default ones in component [Media Player component](/integrations/media_player/). +- Go to the integrations page in the Home Assistant frontend +- Go to **Integrations** +- Add a new **Spotify** integration. +- Follow the steps shown to authenticate Home Assistant with your Spotify account. -### Service `play_playlist` - -Play a Spotify playlist with an option to start on a random position of the playlist. +
    + + If you receive an `INVALID_CLIENT: Invalid redirect URI` error while trying to authenticate with your Spotify account, make sure to check the Redirect URI in the address bar after adding the new integration. Compare this value with the Redirect URL defined in the Spotify Developer Portal. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `media_content_id` | no | Spotify URI of playlist. Must be playlist kind of URI. -| `random_song` | yes | True to select random song at start, False to start from beginning. +
    +## URI Links For Playlists -The above playlist example is a URI link to the "Reggae Infusions" playlist. -[This support document from Spotify](https://support.spotify.com/us/article/sharing-music/) -explains how to get this URI value to use for playlists in the Spotify component. +You can send playlists to Spotify using the `"media_content_type": "playlist"`, which are part of the +[media_player.play_media](/integrations/media_player/#service-media_playerplay_media) service. +The `media_content_id` can be obtained from the Spotify desktop-app by clicking on the more options ("...") next to the album art picture, selecting "share" and then "Copy Spotify URI" or "Copy Playlist Link" (also available in the Spotify phone and web app). ## Unsupported Devices diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index 49f0587968ef..c7d5dbcd5b50 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -1,10 +1,12 @@ --- -title: "SQL Sensor" -description: "Instructions how to integrate SQL sensors into Home Assistant." -logo: sql.png +title: SQL +description: Instructions how to integrate SQL sensors into Home Assistant. ha_category: - Utility ha_release: 0.63 +ha_codeowners: + - '@dgomes' +ha_domain: sql --- The `sql` sensor platform enables you to use values from an [SQL](https://en.wikipedia.org/wiki/SQL) database supported by the [sqlalchemy](https://www.sqlalchemy.org) library, to populate a sensor state (and attributes). diff --git a/source/_integrations/squeezebox.markdown b/source/_integrations/squeezebox.markdown index c9e81bf4074b..76ef3d514a7f 100644 --- a/source/_integrations/squeezebox.markdown +++ b/source/_integrations/squeezebox.markdown @@ -1,14 +1,14 @@ --- -title: "Logitech Squeezebox" -description: "Instructions on how to integrate a Logitech Squeezebox player into Home Assistant." +title: Logitech Squeezebox +description: Instructions on how to integrate a Logitech Squeezebox player into Home Assistant. logo: squeezebox.png ha_category: - Media Player ha_release: pre 0.7 ha_iot_class: Local Polling +ha_domain: squeezebox --- - The `squeezebox` platform allows you to control a [Logitech Squeezebox](https://en.wikipedia.org/wiki/Squeezebox_%28network_music_player%29) music player from Home Assistant. This lets you control Squeezebox hardware like the Classic, Transporter, Duet, Boom, Radio and Touch and of software players like [SoftSqueeze](http://softsqueeze.sourceforge.net/), [SqueezePlayer](https://play.google.com/store/apps/details?id=de.bluegaspode.squeezeplayer) and [SqueezeSlave](https://forums.slimdevices.com/showthread.php?93607-ANNOUNCE-Squeezeslave-1-2-released). To add your Squeezebox player to your installation, add the following to your `configuration.yaml` file: @@ -59,9 +59,9 @@ transporter_toslink: media_content_type: "music" ``` -### Service `squeezebox_call_method` +### Service `call_method` -Call a custom Squeezebox JSONRPC API. +Call a custom Squeezebox JSON-RPC API. See documentation for this interface on `http://HOST:PORT/html/docs/cli-api.html?player=` where HOST and PORT are the host name and port for your Logitech Media Server. @@ -73,10 +73,10 @@ See documentation for this interface on `http://HOST:PORT/html/docs/cli-api.html This service can be used to integrate any Squeezebox action to an automation. -It can also be used to target a Squeezebox from IFTT (or DialogFlow, Alexa...). +It can also be used to target a Squeezebox from IFTTT (or Dialogflow, Alexa...). -For example, to play an album from your collection, create an IFTT applet like this: +For example, to play an album from your collection, create an IFTTT applet like this: - Trigger: Google assistant, with sentence: `I want to listen to album $` - Action: JSON post query with such JSON body: `{ "entity_id": "media_player.squeezebox_radio", "command": "playlist", "parameters": ["loadtracks", "album.titlesearch={{TextField}}"] }` -This can work with title search and basically any thing. The same wouldn't have worked by calling directly Squeezebox server as IFTT cannot escape the text field. +This can work with title search and basically any thing. The same wouldn't have worked by calling directly Squeezebox server as IFTTT cannot escape the text field. diff --git a/source/_integrations/ssdp.markdown b/source/_integrations/ssdp.markdown index 7627c272b64a..3d7d5d2c12e5 100644 --- a/source/_integrations/ssdp.markdown +++ b/source/_integrations/ssdp.markdown @@ -1,14 +1,15 @@ --- -title: "SSDP - Simple Service Discovery Protocol" -description: "Discover integrations on the network using the SSDP protocol." +title: Simple Service Discovery Protocol (SSDP) +description: Discover integrations on the network using the SSDP protocol. ha_category: - Network ha_release: 0.94 +ha_domain: ssdp --- -The `ssdp` "Simple Service Discovery Protocol" integration will scan the network for supported devices and services. Discovered integrations will show up in the discovered section on the integrations page in the config panel. +The `ssdp` "Simple Service Discovery Protocol" (part of UPnP) integration will scan the network for supported devices and services. Discovered integrations will show up in the discovered section on the integrations page in the configuration panel. -Integrations can opt-in to be found by adding [an SSDP section](https://developers.home-assistant.io/docs/en/next/creating_integration_manifest.html#ssdp) to their manifest.json. +Integrations can opt-in to be found by adding [an SSDP section](https://developers.home-assistant.io/docs/en/next/creating_integration_manifest.html#ssdp) to their `manifest.json`. ## Configuration @@ -24,5 +25,7 @@ ssdp: The following integrations are automatically discovered by the SSDP integration: - [deCONZ](../deconz/) + - [DirecTV](/integrations/directv/) - [Huawei LTE](../huawei_lte/) - [Philips Hue](../hue/) + - [Samsung TV](../samsungtv/) diff --git a/source/_integrations/starline.markdown b/source/_integrations/starline.markdown new file mode 100644 index 000000000000..93ebd7e3e371 --- /dev/null +++ b/source/_integrations/starline.markdown @@ -0,0 +1,64 @@ +--- +title: StarLine +description: Instructions on how to setup your StarLine account with Home Assistant. +ha_category: + - Car + - Binary Sensor + - Presence Detection + - Lock + - Sensor + - Switch +ha_release: 0.103 +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@anonym-tsk' +ha_domain: starline +--- + +The `starline` integration lets you retrieve data of your StarLine security system from the StarLine portal. You will need a working StarLine account. + +This integration provides the following platforms: + +- Binary Sensors: Hand brake, hood, trunk, alarm status and doors lock state. +- Device tracker: The location of your car. +- Lock: Control the lock of your car. +- Sensors: Battery level, SIM card balance, GSM signal level, interior temperature and engine temperature. +- Switches: Start/stop engine, heater (webasto), additional channel and sound the horn. +- Services: Update the state, set update frequency. More details can be found [here](#services). + +## Configuration + +1. Create a new application in the [StarLine developer profile](https://my.starline.ru/developer). +2. Open the integrations page and add the StarLine integration. +3. Fill in your application ID, secret, login and password. + +After adding the integration, you can configure the API update interval using [`starline.set_scan_interval`](#set-scan-interval) service. + +
    + +You can make up to 1000 API calls per day, which means you could make one approximately every 86 seconds. +By default, the state of integration will be updated every 3 minutes, making 480 calls per day. +It is not recommended to set an update interval of less than 90 seconds. + +
    + +## Services + +### Update the state + +The service `starline.update_state` fetches the last state of the device from the StarLine server. + +This service does not require any attributes. + +### Set scan interval + +The service `starline.set_scan_interval` sets update frequency for entities. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `scan_interval` | no | Update frequency in seconds. + +## Disclaimer + +This software is not affiliated with or endorsed by StarLine Company. diff --git a/source/_integrations/starlingbank.markdown b/source/_integrations/starlingbank.markdown index fb413f3aa0b9..440fccb35086 100644 --- a/source/_integrations/starlingbank.markdown +++ b/source/_integrations/starlingbank.markdown @@ -1,11 +1,11 @@ --- -title: "Starling Bank" -description: "How to integrate your Starling Bank account within Home Assistant." -logo: starlingbank.png +title: Starling Bank +description: How to integrate your Starling Bank account within Home Assistant. ha_category: - Finance ha_release: 0.79 ha_iot_class: Cloud Polling +ha_domain: starlingbank --- The Starling Bank sensor platform allows you to monitor your account balance data as sensors in Home Assistant. diff --git a/source/_integrations/startca.markdown b/source/_integrations/startca.markdown index c4775644c62d..0f7f77437f04 100644 --- a/source/_integrations/startca.markdown +++ b/source/_integrations/startca.markdown @@ -1,11 +1,12 @@ --- -title: "Start.ca" -description: "Instructions on how to integrate Start.ca data usage within Home Assistant." +title: Start.ca +description: Instructions on how to integrate Start.ca data usage within Home Assistant. logo: startca.png ha_category: - Network ha_release: 0.64 ha_iot_class: Cloud Polling +ha_domain: startca --- Integrate your [Start.ca](https://www.start.ca/) account information into Home Assistant. @@ -76,5 +77,5 @@ monitored_conditions: total_download: description: Total bandwidth upload (Grace + Used) (gigabytes). used_remaining: - description: Remaining bandwidth calucated from used and supplied total bandwidth (gigabytes). + description: Remaining bandwidth calculated from used and supplied total bandwidth (gigabytes). {% endconfiguration %} diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index dd3dd3610853..cc64dc68dbd7 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -1,12 +1,14 @@ --- -title: "Statistics Sensor" -description: "Instructions on how to integrate statistical sensors into Home Assistant." -logo: home-assistant.png +title: Statistics +description: Instructions on how to integrate statistical sensors into Home Assistant. ha_category: - Utility ha_iot_class: Local Polling -ha_release: "0.30" -ha_qa_scale: internal +ha_release: '0.30' +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: statistics --- The `statistics` sensor platform consumes the state from other sensors. It exports the `mean` value as state and the following values as attributes: `count`, `mean`, `median`, `stdev`, `variance`, `total`, `min_value`, `max_value`, `min_age`, `max_age`, `change`, `average_change` and `change_rate`. If it's a binary sensor then only state changes are counted. diff --git a/source/_integrations/statsd.markdown b/source/_integrations/statsd.markdown index 7078a0a1d2ed..0082e2033b4b 100644 --- a/source/_integrations/statsd.markdown +++ b/source/_integrations/statsd.markdown @@ -1,10 +1,10 @@ --- -title: "StatsD" -description: "Record events in StatsD." -logo: statsd.png +title: StatsD +description: Record events in StatsD. ha_category: - - "History" + - History ha_release: 0.12 +ha_domain: statsd --- The `statsd` integration makes it possible to transfer all state changes to an external [StatsD](https://github.com/etsy/statsd) instance. diff --git a/source/_integrations/steam_online.markdown b/source/_integrations/steam_online.markdown index 3a373c13eda5..c51ca7a3263e 100644 --- a/source/_integrations/steam_online.markdown +++ b/source/_integrations/steam_online.markdown @@ -1,11 +1,11 @@ --- -title: "Steam" -description: "Instructions on how to set up Steam sensors in Home Assistant." -logo: steam.png +title: Steam +description: Instructions on how to set up Steam sensors in Home Assistant. ha_category: - Social ha_iot_class: Cloud Polling ha_release: 0.14 +ha_domain: steam_online --- The `steam` sensor platform will allow you to track the online status of public [Steam](https://steamcommunity.com) accounts. diff --git a/source/_integrations/stiebel_eltron.markdown b/source/_integrations/stiebel_eltron.markdown index f0a7796683f4..d5453b75c951 100644 --- a/source/_integrations/stiebel_eltron.markdown +++ b/source/_integrations/stiebel_eltron.markdown @@ -1,11 +1,14 @@ --- -title: "STIEBEL ELTRON" -description: "Instructions on how to integrate STIEBEL ELTRON integral ventilation and heat pump units into Home Assistant." +title: STIEBEL ELTRON +description: Instructions on how to integrate STIEBEL ELTRON integral ventilation and heat pump units into Home Assistant. logo: stiebel_eltron.png ha_category: - Climate ha_release: 0.92 ha_iot_class: Local Polling +ha_codeowners: + - '@fucm' +ha_domain: stiebel_eltron --- The `stiebel_eltron` integration lets you control integral ventilation or heat pump units of [STIEBEL ELTRON](https://www.stiebel-eltron.com). diff --git a/source/_integrations/stookalert.markdown b/source/_integrations/stookalert.markdown new file mode 100644 index 000000000000..49993895eab3 --- /dev/null +++ b/source/_integrations/stookalert.markdown @@ -0,0 +1,36 @@ +--- +title: RIVM Stookalert +description: Instructions on how to use Stookalert data within Home Assistant +ha_category: + - Binary Sensor + - Environment +ha_release: 0.104 +ha_iot_class: Cloud Polling +ha_codeowners: + - '@fwestenberg' +ha_domain: stookalert +--- + +The `stookalert` sensor platform queries the [RIVM Stookalert](https://www.rivm.nl/stookalert) API for unfavorable weather conditions or poor air quality. With a Stookalert, the RIVM calls on people not to burn wood. This can prevent health problems in people in the area. + +## Configuration + +To enable the platform, add the following lines to your `configuration.yaml` file: + +```yaml +binary_sensor: + - platform: stookalert + province: YOUR_NL_PROVINCE +``` + +{% configuration %} +province: + description: A province to use for the binary sensor's state. Currently only provinces in the Netherlands are supported. Valid values are `Drenthe`, `Flevoland`, `Friesland`, `Gelderland`, `Groningen`, `Limburg`, `Noord-Brabant`, `Noord-Holland`, `Overijssel`, `Utrecht`, `Zeeland` or `Zuid-Holland`. + required: true + type: string +name: + description: The sensor name to use in the frontend. + required: false + default: "Stookalert" + type: string +{% endconfiguration %} diff --git a/source/_integrations/stream.markdown b/source/_integrations/stream.markdown index 3b581f5e48cd..42f34c02134c 100644 --- a/source/_integrations/stream.markdown +++ b/source/_integrations/stream.markdown @@ -1,12 +1,14 @@ --- -title: "Stream" -description: "Instructions on how to integrate live streams within Home Assistant." -logo: home-assistant.png +title: Stream +description: Instructions on how to integrate live streams within Home Assistant. ha_category: - Other -ha_release: "0.90" +ha_release: '0.90' ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@hunterjm' +ha_domain: stream --- The `stream` integration provides a way to proxy live streams through Home Assistant. The integration currently only supports proxying H.264 source streams to the HLS format and requires at least FFmpeg >= 3.2. @@ -33,7 +35,7 @@ Both `duration` and `lookback` options are suggestions, but should be consistent | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `stream_source` | no | The input source for the stream, e.g., `rtsp://my.stream.feed:554`. | -| `filename` | no | The file name string. Variable is `entity_id`, e.g., `/tmp/my_stream.mp4`. | +| `filename` | no | The file name string. e.g., `/tmp/my_stream.mp4`. | | `duration` | yes | Target recording length (in seconds). Default: 30 | | `lookback` | yes | Target lookback period (in seconds) to include in addition to duration. Only available if there is currently an active HLS stream for `stream_source`. Default: 0 | @@ -52,8 +54,8 @@ action: ## Streaming in Lovelace -As of Homeassistant version 0.92 you can now live-stream a camera feed directly in lovelace. -To do this add either [picture-entity](/lovelace/picture-entity/), [picture-glance](/lovelace/picture-glance/) or [picture-elements](/lovelace/picture-elements/), set `camera_image` to a stream-ready camera entity and set `camera_view` to `live` in one of your lovelace views. +As of Home Assistant version 0.92 you can now live-stream a camera feed directly in lovelace. +To do this add either [picture-entity](/lovelace/picture-entity/), [picture-glance](/lovelace/picture-glance/) or [picture-elements](/lovelace/picture-elements/), set `camera_image` to a stream-ready camera entity and set `camera_view` to `live` in one of your Lovelace views. ## Troubleshooting diff --git a/source/_integrations/streamlabswater.markdown b/source/_integrations/streamlabswater.markdown index a3ffe8f22deb..382a06c6eab4 100644 --- a/source/_integrations/streamlabswater.markdown +++ b/source/_integrations/streamlabswater.markdown @@ -1,22 +1,28 @@ --- -title: "Streamlabs Water" -description: "Instructions on how to integrate Streamlabs Water devices with Home Assistant." -logo: streamlabswater.png +title: StreamLabs +description: Instructions on how to integrate Streamlabs Water devices with Home Assistant. ha_category: - Binary Sensor - Sensor -ha_release: "0.95" -ha_iot_class: "Cloud Polling" +ha_release: '0.95' +ha_iot_class: Cloud Polling +ha_domain: streamlabswater --- -The `Streamlabs Water` integration platform is used to interact with [Streamlabs water monitoring devices](https://www.streamlabswater.com/) in order to retrieve usage information and manage the away mode of the device. The [Streamlabs Water API](https://developer.streamlabswater.com) is used to retrieve daily, monthly, and yearly water usage along with the current away mode. +The `Streamlabs Water` integration platform is used to interact with [StreamLabs water monitoring devices](https://www.streamlabswater.com/) in order to retrieve usage information and manage the away mode of the device. The [StreamLabs Water API](https://developer.streamlabswater.com) is used to retrieve daily, monthly, and yearly water usage along with the current away mode. + +
    + +Access to the StreamLabs Water API is not free, you must have a StreamPlus™ subscription level that enables API access. Visit [https://streamlabswater.com/subscription](https://streamlabswater.com/subscription) for more information. + +
    There is currently support for the following device types within Home Assistant: - Binary Sensor - Sensor -In preparation for using this integration you will need to request an API key following the instructions in the [Streamlabs API Getting Started Section](https://developer.streamlabswater.com/docs/getting-started.html). Be sure to request an API key and not an OAuth token. +In preparation for using this integration you will need to request an API key following the instructions in the [StreamLabs API Getting Started Section](https://developer.streamlabswater.com/docs/getting-started.html). Be sure to request an API key and not an OAuth token. ## Configuration @@ -30,7 +36,7 @@ streamlabswater: {% configuration %} api_key: - description: Your api_key for the Streamlabs API. + description: Your api_key for the StreamLabs API. required: true type: string location_id: diff --git a/source/_integrations/stt.markdown b/source/_integrations/stt.markdown new file mode 100644 index 000000000000..c86e859ad205 --- /dev/null +++ b/source/_integrations/stt.markdown @@ -0,0 +1,12 @@ +--- +title: Speech-to-Text (STT) +description: Instructions on how to set up Speech-to-Text (STT) with Home Assistant. +ha_release: '0.102' +ha_codeowners: + - '@pvizeli' +ha_domain: stt +--- + +Speech-to-Text (STT) allows you to stream speech data to the STT API and get text back. + +This is an integration that is a building block for other integrations or apps building on top of Home Assistant, like [Ada](https://github.com/home-assistant/ada). diff --git a/source/_integrations/suez_water.markdown b/source/_integrations/suez_water.markdown index 3b1add6172fd..4373b097a572 100644 --- a/source/_integrations/suez_water.markdown +++ b/source/_integrations/suez_water.markdown @@ -1,11 +1,13 @@ --- -title: "Suez Water Sensor" -description: "Instructions on how to integrate Suez Water daily data within Home Assistant." -logo: suez.png +title: Suez Water +description: Instructions on how to integrate Suez Water daily data within Home Assistant. ha_release: 0.97 ha_category: - Sensor ha_iot_class: Cloud Polling +ha_codeowners: + - '@ooii' +ha_domain: suez_water --- The `suez_water` sensor platform fetches your last day consumption of water from the French water provider [Tout Sur Mon Eau](https://www.toutsurmoneau.fr) website. diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown index 2c38f4fe31ed..56d34e62b231 100644 --- a/source/_integrations/sun.markdown +++ b/source/_integrations/sun.markdown @@ -1,11 +1,13 @@ --- -title: "Sun" -description: "Instructions on how to track the sun within Home Assistant." -logo: home-assistant.png +title: Sun +description: Instructions on how to track the sun within Home Assistant. ha_category: - Environment -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal +ha_codeowners: + - '@Swamp-Ig' +ha_domain: sun --- The sun integration will use your current location to track if the sun is above or diff --git a/source/_integrations/supervisord.markdown b/source/_integrations/supervisord.markdown index f11765e51082..d304456b01f5 100644 --- a/source/_integrations/supervisord.markdown +++ b/source/_integrations/supervisord.markdown @@ -1,11 +1,12 @@ --- -title: "Supervisord" -description: "Instructions on how to integrate Supervisord within Home Assistant." +title: Supervisord +description: Instructions on how to integrate Supervisord within Home Assistant. logo: supervisord.png ha_category: - System Monitor -ha_release: "0.20" +ha_release: '0.20' ha_iot_class: Local Polling +ha_domain: supervisord --- The `supervisord` platform allows you to track the states of [Supervisord](http://supervisord.org/). diff --git a/source/_integrations/supla.markdown b/source/_integrations/supla.markdown index cc2b3c4c330a..37bfe54d127b 100644 --- a/source/_integrations/supla.markdown +++ b/source/_integrations/supla.markdown @@ -1,19 +1,22 @@ --- -title: "Supla" -description: "Instructions for integration with Supla Cloud's Web API" -logo: supla.png +title: Supla +description: Instructions for integration with Supla Cloud's Web API ha_release: 0.92 ha_category: - Hub - Cover ha_iot_class: Cloud Polling +ha_codeowners: + - '@mwegrzynek' +ha_domain: supla --- -The [Supla](https://supla.org/) is an Open Source home automation system for ESP8266 based devices. It has its own set of protocols, it's own firmware and commercially available devices (produced for example by [Zamel](https://supla.zamel.pl/)) +The [Supla](https://supla.org/) is an Open Source home automation system for ESP8266 based devices. It has its own set of protocols, its own firmware and commercially available devices (produced for example by [Zamel](https://supla.zamel.pl/)) -Currently only covers (shutters in Supla's lingo) and switches are supported, but, thanks to comprehensive and universal REST API, it's pretty easy to add more. +Currently only covers (shutters in Supla's lingo), gates and switches are supported, but, thanks to comprehensive and universal REST API, it's pretty easy to add more. -Right now it's impossible to add single devices -- all of them are discovered from Supla Cloud's servers or yours. +Right now it's impossible to add a device -- all of them are discovered from Supla Cloud's servers or yours. +Devices disabled on Supla Cloud will not be loaded into Home Assistant. ## Configuration @@ -38,7 +41,7 @@ server: access_token: description: An access token for REST API configuration. Can be acquired from - http[s]://your.server.org/integrations/tokens (please add at least Channel's Read and Action Execution permissions). + `http[s]://your.server.org/integrations/tokens` (please add at least Channel's Read and Action Execution permissions). required: true type: string {% endconfiguration %} diff --git a/source/_integrations/surepetcare.markdown b/source/_integrations/surepetcare.markdown new file mode 100644 index 000000000000..f97a07445d3e --- /dev/null +++ b/source/_integrations/surepetcare.markdown @@ -0,0 +1,68 @@ +--- +title: Sure Petcare +description: Instructions on how to integrate the Sure Petcare cat and pet flaps into Home Assistant. +ha_category: + - Binary Sensor + - Sensor +ha_release: 0.104 +ha_iot_class: Cloud Polling +ha_codeowners: + - '@benleb' +ha_domain: surepetcare +--- + +The `surepetcare` component allows you to get information on your Sure Petcare Connect Pet or Cat Flap. + +## Configuration + +To add a flap, feeder or pet, add the following to your `configuration.yaml` file. The Hubs a flap or feeder is connected to, will be discovered automatically. + +```yaml +# Example configuration.yaml entry +surepetcare: + username: YOUR_SURE_PETCARE_LOGIN + password: YOUR_SURE_PETCARE_PASSWORD + feeders: [12345, 67890] + flaps: [13579] + pets: [24680] +``` + +{% configuration %} + username: + description: The Sure Petcare Username/Email + required: true + type: string + password: + description: The Sure Petcare Password + required: true + type: string + flaps: + description: The IDs of the Sure Petcare flaps + required: false + type: list + feeders: + description: The IDs of the Sure Petcare feeders + required: false + type: list + pets: + description: The Sure Petcare IDs of the Pets to show + required: false + type: list + scan_interval: + description: "Minimum time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)." + required: false + default: 3 minutes + type: time +{% endconfiguration %} + +## Getting the IDs of your flaps, feeders and pets + +There are (at least) two ways: + +- Use the [sp_cli.py](https://github.com/rcastberg/sure_petcare/blob/master/sp_cli.py) from [@rcastberg](https://github.com/rcastberg) to fetch the IDs from the Sure Petcare API. With the default setting, the IDs will be written as JSON to `~/.surepet.cache`. +- Visit [surepetcare.io](https://surepetcare.io) and log in with your Sure Petcare credentials. Open the developer tools in Chrome/Firefox, switch to the "Network" tab and refresh the page. Now look for calls to `start` (`pets`, `` and others are also possible, but `start` shows you all information at once). Click on this call and in the JSON displayed you will find all the needed IDs. + +

    + + Where to find the IDs vie Browser developer console +

    diff --git a/source/_integrations/swiss_hydrological_data.markdown b/source/_integrations/swiss_hydrological_data.markdown index 801dbaf3d345..e9c0b083f36f 100644 --- a/source/_integrations/swiss_hydrological_data.markdown +++ b/source/_integrations/swiss_hydrological_data.markdown @@ -1,11 +1,13 @@ --- -title: "Swiss Hydrological Data" -description: "Instructions on how to integrate hydrological data of Swiss waters within Home Assistant." -logo: swiss-hydrological-data.png +title: Swiss Hydrological Data +description: Instructions on how to integrate hydrological data of Swiss waters within Home Assistant. ha_category: - Environment ha_iot_class: Cloud Polling ha_release: 0.22 +ha_codeowners: + - '@fabaff' +ha_domain: swiss_hydrological_data --- The `swiss_hydrological_data` sensor will show you details (temperature, level, and discharge) of rivers and lakes in Switzerland. diff --git a/source/_integrations/swiss_public_transport.markdown b/source/_integrations/swiss_public_transport.markdown index 7c07936f4109..6b28d4ab153b 100644 --- a/source/_integrations/swiss_public_transport.markdown +++ b/source/_integrations/swiss_public_transport.markdown @@ -1,11 +1,13 @@ --- -title: "Swiss Public Transport" -description: "Instructions on how to integrate timetable data for traveling in Switzerland within Home Assistant." -logo: train.png +title: Swiss public transport +description: Instructions on how to integrate timetable data for traveling in Switzerland within Home Assistant. ha_category: - Transport ha_iot_class: Cloud Polling ha_release: pre 0.7 +ha_codeowners: + - '@fabaff' +ha_domain: swiss_public_transport --- The `swiss_public_transport` sensor will give you the next three departure times from a given location to another one in Switzerland. diff --git a/source/_integrations/swisscom.markdown b/source/_integrations/swisscom.markdown index d8bde268f4fa..82a35ee88362 100644 --- a/source/_integrations/swisscom.markdown +++ b/source/_integrations/swisscom.markdown @@ -1,13 +1,13 @@ --- -title: "Swisscom Internet-Box" -description: "Instructions on how to integrate Swisscom Internet-Box into Home Assistant." +title: Swisscom Internet-Box +description: Instructions on how to integrate Swisscom Internet-Box into Home Assistant. logo: swisscom.png ha_category: - Presence Detection ha_release: 0.32 +ha_domain: swisscom --- - The `swisscom` platform offers presence detection by looking at connected devices to an [Internet-Box](https://www.swisscom.ch/en/residential/help/device/internet-router.html) router from [Swisscom](https://www.swisscom.ch) which is an Internet provider in Switzerland.
    diff --git a/source/_integrations/switch.command_line.markdown b/source/_integrations/switch.command_line.markdown index b7b9c2524e5c..16551f82d0fc 100644 --- a/source/_integrations/switch.command_line.markdown +++ b/source/_integrations/switch.command_line.markdown @@ -1,11 +1,11 @@ --- title: "Command line Switch" description: "Instructions on how to have switches call command line commands." -logo: command_line.png ha_category: - Switch ha_release: pre 0.7 ha_iot_class: Local Polling +ha_domain: command_line --- The `command_line` switch platform issues specific commands when it is turned on @@ -64,11 +64,11 @@ When set, the `friendly_name` had been previously used for API calls and backend configuration instead of the `object_id` ("identifier"), but [this behavior is changing](https://github.com/home-assistant/home-assistant/pull/4343) to make the `friendly_name` for display purposes only. This allows users to set -an `identifier` that emphasizes uniqueness and predictability for API and config +an `identifier` that emphasizes uniqueness and predictability for API and configuration purposes but have a prettier `friendly_name` still show up in the UI. As an additional benefit, if a user wanted to change the `friendly_name` / display name (e.g., from "Kitchen Lightswitch" to "Kitchen Switch" or -"Living Room Light", or remove the `friendly_name` altogether), he or she could +"Living Room Light", or remove the `friendly_name` altogether), they could do so without needing to change existing automations or API calls. See aREST device below for an example. diff --git a/source/_integrations/switch.knx.markdown b/source/_integrations/switch.knx.markdown index 3a26d28dc8dd..ce529244208c 100644 --- a/source/_integrations/switch.knx.markdown +++ b/source/_integrations/switch.knx.markdown @@ -1,11 +1,11 @@ --- title: "KNX Switch" description: "Instructions on how to integrate KNX switches with Home Assistant." -logo: knx.png ha_category: - Switch ha_release: 0.24 ha_iot_class: Local Push +ha_domain: knx ---
    diff --git a/source/_integrations/switch.markdown b/source/_integrations/switch.markdown index bfddce7d1d4b..46b5bae9f4d8 100644 --- a/source/_integrations/switch.markdown +++ b/source/_integrations/switch.markdown @@ -1,11 +1,11 @@ --- -title: "Switch" -description: "Instructions on how to set up your switches with Home Assistant." -logo: home-assistant.png +title: Switch +description: Instructions on how to set up your switches with Home Assistant. ha_category: - Switch -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal +ha_domain: switch --- Keeps track which switches are in your environment, their state and allows you to control them. diff --git a/source/_integrations/switch.modbus.markdown b/source/_integrations/switch.modbus.markdown index f27377d70e71..067148d940a3 100644 --- a/source/_integrations/switch.modbus.markdown +++ b/source/_integrations/switch.modbus.markdown @@ -1,11 +1,11 @@ --- title: "Modbus Switch" description: "Instructions on how to integrate Modbus switches into Home Assistant." -logo: modbus.png ha_category: - Switch ha_release: pre 0.7 ha_iot_class: Local Push +ha_domain: modbus --- The `modbus` switch platform allows you to control [Modbus](http://www.modbus.org/) coils or registers. @@ -119,7 +119,7 @@ It's possible to change the default 30 seconds scan interval for the switch stat ### Full example -Example a temperature sensor with a 10 seconds scan interval: +Example switches, for which the state is polled from Modbus every 10 seconds. ```yaml switch: diff --git a/source/_integrations/switch.mqtt.markdown b/source/_integrations/switch.mqtt.markdown index 001b70f7d3ff..4f4016de4061 100644 --- a/source/_integrations/switch.mqtt.markdown +++ b/source/_integrations/switch.mqtt.markdown @@ -1,11 +1,11 @@ --- title: "MQTT Switch" description: "Instructions on how to integrate MQTT switches into Home Assistant." -logo: mqtt.png ha_category: - Switch ha_release: 0.7 ha_iot_class: Configurable +ha_domain: mqtt --- The `mqtt` switch platform lets you control your MQTT enabled switches. @@ -28,47 +28,65 @@ switch: ``` {% configuration %} +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. + required: false + type: string command_topic: description: The MQTT topic to publish commands to change the switch state. required: false type: string -name: - description: The name to use when displaying this switch. +device: + description: "Information about the device this switch is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." required: false - type: string - default: MQTT Switch + type: map + keys: + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + identifiers: + description: A list of IDs that uniquely identify the device. For example a serial number. + required: false + type: [string, list] + manufacturer: + description: The manufacturer of the device. + required: false + type: string + model: + description: The model of the device. + required: false + type: string + name: + description: The name of the device. + required: false + type: string + sw_version: + description: The firmware version of the device. + required: false + type: string icon: description: Icon for the switch. required: false type: icon -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: false - type: string -state_on: - description: The payload that represents the on state. - required: false - type: string - default: "`payload_on` if defined, else ON" -state_off: - description: The payload that represents the off state. +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." required: false - type: string - default: "`payload_off` if defined, else OFF" -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. required: false type: string -payload_on: - description: The payload that represents enabled state. +name: + description: The name to use when displaying this switch. required: false type: string - default: "ON" -payload_off: - description: The payload that represents disabled state. + default: MQTT Switch +optimistic: + description: Flag that defines if switch works in optimistic mode. required: false - type: string - default: "OFF" + type: boolean + default: "`true` if no `state_topic` defined, else `false`." payload_available: description: The payload that represents the available state. required: false @@ -79,11 +97,16 @@ payload_not_available: required: false type: string default: offline -optimistic: - description: Flag that defines if switch works in optimistic mode. +payload_off: + description: The payload that represents `off` state. If specified, will be used for both comparing to the value in the `state_topic` (see `value_template` and `state_off` for details) and sending as `off` command to the `command_topic`. required: false - type: boolean - default: "`true` if no `state_topic` defined, else `false`." + type: string + default: "OFF" +payload_on: + description: The payload that represents `on` state. If specified, will be used for both comparing to the value in the `state_topic` (see `value_template` and `state_on` for details) and sending as `on` command to the `command_topic`. + required: false + type: string + default: "ON" qos: description: The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. required: false @@ -94,47 +117,24 @@ retain: required: false type: boolean default: false -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." +state_off: + description: The payload that represents the `off` state. Used when value that represents `off` state in the `state_topic` is different from value that should be sent to the `command_topic` to turn the device `off`. required: false type: string -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. + default: "`payload_off` if defined, else OFF" +state_on: + description: The payload that represents the `on` state. Used when value that represents `on` state in the `state_topic` is different from value that should be sent to the `command_topic` to turn the device `on`. required: false type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." + default: "`payload_on` if defined, else ON" +state_topic: + description: The MQTT topic subscribed to receive state updates. required: false - type: template -device: - description: "Information about the device this switch is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." + type: string +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract device's state from the `state_topic`. To determine the switches's state result of this template will be compared to `state_on` and `state_off`." required: false - type: map - keys: - identifiers: - description: A list of IDs that uniquely identify the device. For example a serial number. - required: false - type: [string, list] - connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' - required: false - type: list - manufacturer: - description: The manufacturer of the device. - required: false - type: string - model: - description: The model of the device. - required: false - type: string - name: - description: The name of the device. - required: false - type: string - sw_version: - description: The firmware version of the device. - required: false - type: string + type: string {% endconfiguration %}
    diff --git a/source/_integrations/switch.mysensors.markdown b/source/_integrations/switch.mysensors.markdown index 03acee61f654..4c6240447b41 100644 --- a/source/_integrations/switch.mysensors.markdown +++ b/source/_integrations/switch.mysensors.markdown @@ -1,15 +1,15 @@ --- title: "MySensors Switch" description: "Instructions on how to integrate MySensors switches into Home Assistant." -logo: mysensors.png ha_category: - DIY - Switch ha_iot_class: Local Push ha_release: 0.11 +ha_domain: mysensors --- -Integrates MySensors switches into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors switches into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. ## Supported actuator types @@ -17,44 +17,44 @@ The following actuator types are supported: ### MySensors version 1.4 and higher -S_TYPE | V_TYPE ----------|------------------- -S_DOOR | V_ARMED -S_MOTION | V_ARMED -S_SMOKE | V_ARMED -S_LIGHT | V_LIGHT -S_LOCK | V_LOCK_STATUS -S_IR | V_IR_SEND, V_LIGHT +| S_TYPE | V_TYPE | +| -------- | ------------------ | +| S_DOOR | V_ARMED | +| S_MOTION | V_ARMED | +| S_SMOKE | V_ARMED | +| S_LIGHT | V_LIGHT | +| S_LOCK | V_LOCK_STATUS | +| S_IR | V_IR_SEND, V_LIGHT | ### MySensors version 1.5 and higher -S_TYPE | V_TYPE --------------|---------------------- -S_LIGHT | V_STATUS -S_BINARY | [V_STATUS or V_LIGHT] -S_SPRINKLER | V_STATUS -S_WATER_LEAK | V_ARMED -S_SOUND | V_ARMED -S_VIBRATION | V_ARMED -S_MOISTURE | V_ARMED +| S_TYPE | V_TYPE | +| ------------ | --------------------- | +| S_LIGHT | V_STATUS | +| S_BINARY | [V_STATUS or V_LIGHT] | +| S_SPRINKLER | V_STATUS | +| S_WATER_LEAK | V_ARMED | +| S_SOUND | V_ARMED | +| S_VIBRATION | V_ARMED | +| S_MOISTURE | V_ARMED | ### MySensors version 2.0 and higher -S_TYPE | V_TYPE -----------------|--------- -S_WATER_QUALITY | V_STATUS +| S_TYPE | V_TYPE | +| --------------- | -------- | +| S_WATER_QUALITY | V_STATUS | All V_TYPES for each S_TYPE above are required to activate the actuator for the platform. Use either V_LIGHT or V_STATUS depending on library version for cases where that V_TYPE is required. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. ## Services -The MySensors switch platform exposes a service to change an IR code attribute for an IR switch device and turn the switch on. The IR switch will automatically be turned off after being turned on, if `optimistic` is set to `true` in the [config](/integrations/mysensors/#configuration) for the MySensors component. This will simulate a push button on a remote. If `optimistic` is `false`, the MySensors device will have to report its updated state to reset the switch. See the [example sketch](#ir-switch-sketch) for the IR switch below. +The MySensors switch platform exposes a service to change an IR code attribute for an IR switch device and turn the switch on. The IR switch will automatically be turned off after being turned on, if `optimistic` is set to `true` in the [configuration](/integrations/mysensors/#configuration) for the MySensors component. This will simulate a push button on a remote. If `optimistic` is `false`, the MySensors device will have to report its updated state to reset the switch. See the [example sketch](#ir-switch-sketch) for the IR switch below. -| Service | Description | -| ------- | ----------- | -| mysensors_send_ir_code | Set an IR code as a state attribute for a MySensors IR device switch and turn the switch on.| +| Service | Description | +| ---------------------- | -------------------------------------------------------------------------------------------- | +| mysensors.send_ir_code | Set an IR code as a state attribute for a MySensors IR device switch and turn the switch on. | The service can be used as part of an automation script. For example: @@ -66,7 +66,7 @@ automation: platform: time at: '5:30:00' action: - service: switch.mysensors_send_ir_code + service: mysensors.send_ir_code entity_id: switch.hvac_1_1 data: V_IR_SEND: '0xC284' # the IR code to send @@ -76,7 +76,7 @@ automation: platform: time at: '0:30:00' action: - service: switch.mysensors_send_ir_code + service: mysensors.send_ir_code entity_id: switch.hvac_1_1 data: V_IR_SEND: '0xC288' # the IR code to send @@ -201,6 +201,3 @@ void incomingMessage(const MyMessage &message) { } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/switch.rest.markdown b/source/_integrations/switch.rest.markdown index 2fec6559fbb4..e26b90a2a382 100644 --- a/source/_integrations/switch.rest.markdown +++ b/source/_integrations/switch.rest.markdown @@ -1,11 +1,11 @@ --- title: "RESTful Switch" description: "Instructions on how to integrate REST switches into Home Assistant." -logo: restful.png ha_category: - Switch ha_release: 0.7.6 ha_iot_class: Local Polling +ha_domain: rest --- The `rest` switch platform allows you to control a given endpoint that supports a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer). The switch can get the state via GET and set the state via POST on a given REST resource. diff --git a/source/_integrations/switch.rflink.markdown b/source/_integrations/switch.rflink.markdown index 263a788bc280..635759a45363 100644 --- a/source/_integrations/switch.rflink.markdown +++ b/source/_integrations/switch.rflink.markdown @@ -5,6 +5,7 @@ logo: rflink.png ha_category: - Switch ha_release: 0.38 +ha_domain: rflink --- The `rflink` integration supports devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). @@ -82,20 +83,20 @@ devices: default: 1 type: integer group: - description: Allow light to respond to group commands (ALLON/ALLOFF). + description: Allow switch to respond to group commands (ALLON/ALLOFF). required: false default: true type: boolean aliases: - description: "(**deprecated**) Alternative RFLink ID's this device is known by." + description: Alternative RFLink ID's this device is known by. required: false type: [list, string] group_aliases: - description: "(**deprecated**) `aliases` which only respond to group commands." + description: "`aliases` which only respond to group commands." required: false type: [list, string] no_group_aliases: - description: "(**deprecated**) `aliases` which do not respond to group commands." + description: "`aliases` which do not respond to group commands." required: false type: [list, string] {% endconfiguration %} diff --git a/source/_integrations/switch.rfxtrx.markdown b/source/_integrations/switch.rfxtrx.markdown index 31f1860b734a..3f9e35fba820 100644 --- a/source/_integrations/switch.rfxtrx.markdown +++ b/source/_integrations/switch.rfxtrx.markdown @@ -1,17 +1,17 @@ --- title: "RFXtrx Switch" description: "Instructions on how to integrate RFXtrx switches into Home Assistant." -logo: rfxtrx.png ha_category: - Switch ha_release: 0.7.5 +ha_domain: rfxtrx --- The `rfxtrx` platform support switches that communicate in the frequency range of 433.92 MHz. ## Configuration -First you have to set up your [rfxtrx hub](/integrations/rfxtrx/). +First you have to set up your [RFXtrx hub](/integrations/rfxtrx/). The easiest way to find your switches is to add this to your `configuration.yaml`: ```yaml @@ -68,7 +68,7 @@ signal_repetitions:
    -This integration and the [rfxtrx binary sensor](/integrations/binary_sensor.rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `false`. +This integration and the [RFXtrx binary sensor](/integrations/binary_sensor.rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `false`.
    @@ -88,9 +88,9 @@ If you need to generate codes for switches you can use a template (useful for ex {% raw %}0b11000{{ range(100,700) | random | int }}bc0cfe0{{ range(0,10) | random | int }}010f70{% endraw %} ``` -- Use this code to add a new switch in your configuration.yaml +- Use this code to add a new switch in your `configuration.yaml` - Launch your Home Assistant and go to the website. -- Enable learning mode on your switch (i.e. push learn button or plug it in a wall socket) +- Enable learning mode on your switch (i.e., push learn button or plug it in a wall socket) - Toggle your new switch in the Home Assistant interface ## Examples @@ -105,9 +105,9 @@ switch: signal_repetitions: 2 devices: 0b1100ce3213c7f210010f70: - name: Movment1 + name: Movement1 0b11000a02ef2gf210010f50: - name: Movment2 + name: Movement2 0b1111e003af16aa10000060: name: Door fire_event: true diff --git a/source/_integrations/switch.template.markdown b/source/_integrations/switch.template.markdown index 050b3f2b16a3..3901272e8bf6 100644 --- a/source/_integrations/switch.template.markdown +++ b/source/_integrations/switch.template.markdown @@ -5,8 +5,8 @@ ha_category: - Switch ha_release: 0.13 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: template --- The `template` platform creates switches that combines components. @@ -104,11 +104,11 @@ switch: turn_on: service: switch.turn_on data: - entity_id: switch.source + entity_id: switch.target turn_off: service: switch.turn_off data: - entity_id: switch.source + entity_id: switch.target ``` {% endraw %} @@ -151,7 +151,7 @@ switch: switches: skylight: friendly_name: "Skylight" - value_template: "{{ is_state('sensor.skylight.state', 'on') }}" + value_template: "{{ is_state('sensor.skylight', 'on') }}" turn_on: service: switch.turn_on data: diff --git a/source/_integrations/switch.xiaomi_aqara.markdown b/source/_integrations/switch.xiaomi_aqara.markdown index f6016df9043f..06789827df83 100644 --- a/source/_integrations/switch.xiaomi_aqara.markdown +++ b/source/_integrations/switch.xiaomi_aqara.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Switch" description: "Instructions on how to set up the Xiaomi switch within Home Assistant." -logo: xiaomi.png ha_category: - Switch ha_release: "0.50" ha_iot_class: Local Push +ha_domain: xiaomi_aqara --- The `xiaomi_aqara` switch platform allows you to get data from your [Xiaomi aqara](https://www.mi.com/en/) switches. diff --git a/source/_integrations/switch.xiaomi_miio.markdown b/source/_integrations/switch.xiaomi_miio.markdown index 17049dc3faf3..62d6f10d9747 100644 --- a/source/_integrations/switch.xiaomi_miio.markdown +++ b/source/_integrations/switch.xiaomi_miio.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Smart WiFi Socket and Smart Power Strip" description: "Instructions on how to integrate your Xiaomi Smart WiFi Socket aka Plug or Xiaomi Smart Power Strip within Home Assistant." -logo: xiaomi.png ha_category: - Switch ha_iot_class: Local Polling ha_release: 0.56 +ha_domain: xiaomi_miio --- The `xiaomi_miio` switch platform allows you to control the state of your Xiaomi Smart WiFi Socket aka Plug, Xiaomi Smart Power Strip and Xiaomi Chuangmi Plug V1. @@ -88,23 +88,23 @@ model: ## Platform Services -### Service `switch.xiaomi_miio_set_wifi_led_on` (Power Strip only) +### Service `xiaomi_miio.switch_set_wifi_led_on` (Power Strip only) -Turn the wifi led on. +Turn the wifi LED on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO switch entity. | -### Service `switch.xiaomi_miio_set_wifi_led_off` (Power Strip only) +### Service `xiaomi_miio.switch_set_wifi_led_off` (Power Strip only) -Turn the wifi led off. +Turn the wifi LED off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| | `entity_id` | no | Only act on a specific Xiaomi miIO switch entity. | -### Service `switch.xiaomi_miio_set_power_price` (Power Strip) +### Service `xiaomi_miio.switch_set_power_price` (Power Strip) Set the power price. @@ -113,7 +113,7 @@ Set the power price. | `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) +### Service `xiaomi_miio.switch_set_power_mode` (Power Strip V1 only) Set the power mode. diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index a47e696b121a..d6329ca4a792 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -1,14 +1,16 @@ --- -title: "Switchbot" -description: "Instructions on how to set up Switchbot switches." -logo: switchbot.png +title: SwitchBot +description: Instructions on how to set up Switchbot switches. ha_category: - Switch ha_release: 0.78 ha_iot_class: Local Polling +ha_codeowners: + - '@danielhiversen' +ha_domain: switchbot --- -The `switchbot` switch platform allows you to control Switchbot [devices](https://www.switch-bot.com/). +The `switchbot` switch platform allows you to control SwitchBot [devices](https://www.switch-bot.com/). ## Manual Configuration @@ -29,11 +31,15 @@ name: description: The name used to display the switch in the frontend. required: false type: string +password: + description: The password of the switch if set + required: false + type: string {% endconfiguration %} -## Switchbot Entity +## SwitchBot Entity -There are two attributes available on the Switchbot entity to give you more information about your device. +There are two attributes available on the SwitchBot entity to give you more information about your device. -- `last_run_success`: If `true` if the last action sent to the Switchbot succeeded. This attribute is useful for error trapping when Bluetooth connectivity is intermittent. If `false`, see home-assistant.log for specific error messgages. -- `assumed_state`: Always `true`. If the state of the Switchbot entity cannot be determined, it is assumed to be `on`. +- `last_run_success`: If `true` if the last action sent to the SwitchBot succeeded. This attribute is useful for error trapping when Bluetooth connectivity is intermittent. If `false`, see home-assistant.log for specific error messages. +- `assumed_state`: Always `true`. If the state of the SwitchBot entity cannot be determined, it is assumed to be `on`. diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown index 8c6b44df1fa5..191f50eb0bd6 100644 --- a/source/_integrations/switcher_kis.markdown +++ b/source/_integrations/switcher_kis.markdown @@ -1,11 +1,13 @@ --- -title: "Switcher" -description: "Controlling your Switcher V2 Water Heater." -logo: switcher_boiler.png +title: Switcher +description: Controlling your Switcher V2 Water Heater. ha_category: - Switch ha_release: 0.93 ha_iot_class: Local Push +ha_codeowners: + - '@tomerfi' +ha_domain: switcher_kis --- This `Switcher` integration allows you to control the [Switcher V2 Water Heater](https://www.switcher.co.il/). @@ -22,11 +24,6 @@ To retrieve your device's details, please follow the instructions [here](https:/ Please note, for the Switcher-V2-Python script to run successfully, you need to configure your device to work locally.
    -
    - - Please note, on the original script repository, users recently reported difficulties controlling the device after upgrading the firmware to the new 3.0 version.As this integration is based on that script, please do not upgrade to version 3.0 until this issue is resolved. You can follow the issue [here](https://github.com/NightRang3r/Switcher-V2-Python/issues/3). - -
    ```yaml switcher_kis: phone_id: 'REPLACE_WITH_PHONE_ID' diff --git a/source/_integrations/switchmate.markdown b/source/_integrations/switchmate.markdown index 2f21aac5de53..4030da9efa38 100644 --- a/source/_integrations/switchmate.markdown +++ b/source/_integrations/switchmate.markdown @@ -1,11 +1,13 @@ --- -title: "Switchmate" -description: "Instructions on how to set up Switchmate switches." -logo: switchmate-logo-rgb.png +title: Switchmate SimplySmart Home +description: Instructions on how to set up Switchmate switches. ha_category: - Switch ha_release: 0.78 ha_iot_class: Local Polling +ha_codeowners: + - '@danielhiversen' +ha_domain: switchmate --- This `Switchmate` switch platform allows you to control Switchmate [devices]( https://www.mysimplysmarthome.com/products/switchmate-switches/). diff --git a/source/_integrations/syncthru.markdown b/source/_integrations/syncthru.markdown index 77ee7dc94376..8ed1ffab0da6 100644 --- a/source/_integrations/syncthru.markdown +++ b/source/_integrations/syncthru.markdown @@ -1,11 +1,14 @@ --- -title: "Samsung SyncThru Printer" -description: "Instructions on how to integrate a Samsung printer providing SyncThru within Home Assistant." +title: Samsung SyncThru Printer +description: Instructions on how to integrate a Samsung printer providing SyncThru within Home Assistant. logo: samsung.png ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.66 +ha_codeowners: + - '@nielstron' +ha_domain: syncthru --- The Samsung SyncThru Printer platform allows you to read current data from your local Samsung printer. diff --git a/source/_integrations/synology.markdown b/source/_integrations/synology.markdown index 81f8cdea86a8..ae052eecfffc 100644 --- a/source/_integrations/synology.markdown +++ b/source/_integrations/synology.markdown @@ -1,11 +1,11 @@ --- -title: "Synology Camera" -description: "Instructions on how to integrate Synology Surveillance Station cameras within Home Assistant." -logo: synology.png +title: Synology +description: Instructions on how to integrate Synology Surveillance Station cameras within Home Assistant. ha_category: - Camera ha_release: 0.31 ha_iot_class: Local Polling +ha_domain: synology --- The `synology` camera platform allows you to watch the live streams of your [Synology](https://www.synology.com/) Surveillance Station based IP cameras in Home Assistant. diff --git a/source/_integrations/synology_chat.markdown b/source/_integrations/synology_chat.markdown index 4f42943f3f92..3c4f45fecd6a 100644 --- a/source/_integrations/synology_chat.markdown +++ b/source/_integrations/synology_chat.markdown @@ -1,10 +1,10 @@ --- -title: "Synology Chat" -description: "Instructions on how to add a Synology Chat Bot notifications to Home Assistant." +title: Synology Chat +description: Instructions on how to add a Synology Chat Bot notifications to Home Assistant. ha_release: 0.65 -logo: synology.png ha_category: - Notifications +ha_domain: synology_chat --- The `synology_chat` notification platform allows you to deliver notifications to your [Synology Chat](https://www.synology.com/en-us/dsm/feature/chat) install as a Synology Chat bot. diff --git a/source/_integrations/synology_srm.markdown b/source/_integrations/synology_srm.markdown index be12e23c5f4e..ea44c7be09d5 100644 --- a/source/_integrations/synology_srm.markdown +++ b/source/_integrations/synology_srm.markdown @@ -1,10 +1,12 @@ --- -title: "Synology SRM" -description: "Instructions on how to integrate Synology SRM routers into Home Assistant." -logo: synology.png +title: Synology SRM +description: Instructions on how to integrate Synology SRM routers into Home Assistant. ha_category: - Presence Detection ha_release: 0.87 +ha_codeowners: + - '@aerialls' +ha_domain: synology_srm --- This platform allows you to detect presence by looking at connected devices to a [Synology SRM](https://www.synology.com/en-us/srm) router. diff --git a/source/_integrations/synologydsm.markdown b/source/_integrations/synologydsm.markdown index 29c40eb41dff..6f41cd23660e 100644 --- a/source/_integrations/synologydsm.markdown +++ b/source/_integrations/synologydsm.markdown @@ -1,11 +1,11 @@ --- -title: "SynologyDSM Sensor" -description: "Instructions on how to integrate the SynologyDSM sensor within Home Assistant." -logo: synology.png +title: SynologyDSM +description: Instructions on how to integrate the SynologyDSM sensor within Home Assistant. ha_category: - System Monitor ha_release: 0.32 ha_iot_class: Local Polling +ha_domain: synologydsm --- The `synologydsm` sensor platform allows getting various statistics from your [Synology NAS](https://www.synology.com). @@ -29,7 +29,7 @@ sensor: {% configuration %} name: - description: The name of your device + description: The name to use in the frontend for your Synology device. required: false default: Synology DSM type: string @@ -50,17 +50,21 @@ password: description: The password of the user to connect to the Synology NAS. required: true type: string +api_version: + description: Define DSM version to allow backward compatibility with 5.x. Value can be `5` for DSM 5.x or `6` for DSM 6.x or later. + type: integer + required: false ssl: description: Determine if HTTPS should be used. required: false default: true type: boolean volumes: - description: Array of volumes to monitor. Defaults to all volumes. + description: "Array of volumes to monitor. Defaults to all volumes. Replace any spaces in the volume name with underscores, e.g., `volume 1` with `volume_1`." required: false type: list disks: - description: Array of disks to monitor. Defaults to all disks. + description: "Array of disks to monitor. Defaults to all disks. Use only disk names like `sda`, `sdb`, etc." required: false type: list monitored_conditions: @@ -109,9 +113,9 @@ monitored_conditions: disk_status: description: Displays the status of the hard disk (creates a new entry for each disk). disk_exceed_bad_sector_thr: - description: Displays true / false to indicate if the hard disk exceeded the maximum bad sector threshold (creates a new entry for each disk). + description: Displays true / false to indicate if the hard disk exceeded the maximum bad sector threshold (creates a new entry for each disk). (Does not work with DSM 5.x) disk_below_remain_life_thr: - description: Displays true / false to indicate if the hard disk dropped below the remain life threshold (creates a new entry for each disk). + description: Displays true / false to indicate if the hard disk dropped below the remain life threshold (creates a new entry for each disk). (Does not work with DSM 5.x) disk_temp: description: Displays the temperature of the hard disk (creates a new entry for each disk, uses the unit_system to display in C or F). volume_status: @@ -130,9 +134,6 @@ monitored_conditions: description: Displays the maximum temperature of all disks in the volume (creates a new entry for each volume). {% endconfiguration %} -
    -After booting Home Assistant it can take up to 15 minutes for the sensors to show up. This is due to the fact that sensors are created after Home Assistant has fully been initialized. -
    This sensor will wake up your Synology NAS if it's in hibernation mode. diff --git a/source/_integrations/syslog.markdown b/source/_integrations/syslog.markdown index e61b3a9dc602..9f9c716ffb4f 100644 --- a/source/_integrations/syslog.markdown +++ b/source/_integrations/syslog.markdown @@ -1,10 +1,12 @@ --- -title: "Syslog" -description: "Instructions on how to add syslog notifications to Home Assistant." -logo: syslog.png +title: Syslog +description: Instructions on how to add syslog notifications to Home Assistant. ha_category: - Notifications ha_release: pre 0.7 +ha_codeowners: + - '@fabaff' +ha_domain: syslog --- The `syslog` platform allows you to deliver notifications from Home Assistant to the local syslog. diff --git a/source/_integrations/system_health.markdown b/source/_integrations/system_health.markdown index 08944ce9c453..53b55ab484fb 100644 --- a/source/_integrations/system_health.markdown +++ b/source/_integrations/system_health.markdown @@ -1,11 +1,11 @@ --- -title: "System Health" -description: "System Health integration will report system info and allow to run system diagnostics." -logo: home-assistant.png +title: System Health +description: System Health integration will report system info and allow to run system diagnostics. ha_category: - - "Other" -ha_qa_scale: internal + - Other ha_release: 0.87 +ha_quality_scale: internal +ha_domain: system_health --- The System Health integration provides an API to offer information on the system and its components. It also allows to run diagnostic tools to diagnose problems. diff --git a/source/_integrations/system_log.markdown b/source/_integrations/system_log.markdown index 3f8fa87f5884..136c184b0f91 100644 --- a/source/_integrations/system_log.markdown +++ b/source/_integrations/system_log.markdown @@ -1,11 +1,11 @@ --- -title: "System Log" -description: "Summary of errors and warnings in Home Assistant during runtime." -logo: home-assistant.png +title: System Log +description: Summary of errors and warnings in Home Assistant during runtime. ha_category: - Other ha_release: 0.58 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: system_log --- The `system_log` integration stores information about all logged errors and warnings in Home Assistant. All collected information is accessible directly in the frontend, just navigate to the `Info` section under `Developer Tools`. In order to not overload Home Assistant with log data, only the 50 last errors and warnings will be stored. Older entries are automatically discarded from the log. It is possible to change the number of stored log entries using the parameter `max_entries`. @@ -140,4 +140,3 @@ automation: level: info ``` {% endraw %} - diff --git a/source/_integrations/systemmonitor.markdown b/source/_integrations/systemmonitor.markdown index f41871471a9a..27f6e5d13cf1 100644 --- a/source/_integrations/systemmonitor.markdown +++ b/source/_integrations/systemmonitor.markdown @@ -1,11 +1,11 @@ --- -title: "System Monitor" -description: "Instructions on how to monitor the Home Assistant host." -logo: system_monitor.png +title: System Monitor +description: Instructions on how to monitor the Home Assistant host. ha_category: - System Monitor ha_release: pre 0.7 ha_iot_class: Local Push +ha_domain: systemmonitor --- The `systemmonitor` sensor platform allows you to monitor disk usage, diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown index 053619516863..40c3a09c1ce8 100644 --- a/source/_integrations/tado.markdown +++ b/source/_integrations/tado.markdown @@ -1,49 +1,70 @@ --- -title: "Tado" -description: "Instructions on how to integrate Tado devices with Home Assistant." +title: Tado +description: Instructions on how to integrate Tado devices with Home Assistant. logo: tado.png ha_category: - Hub - Climate + - Water Heater - Presence Detection - Sensor ha_release: 0.41 ha_iot_class: Cloud Polling +ha_codeowners: + - '@michaelarnauts' +ha_domain: tado --- -The `tado` integration platform is used as an interface to the [my.tado.com](https://my.tado.com/webapp/#/account/sign-in) website. +The `tado` integration platform is used as an interface to the [my.tado.com](https://my.tado.com/) website. There is currently support for the following device types within Home Assistant: -- Climate - for every tado zone. +- Climate - for every Tado zone. +- Water Heater - for water heater zones. - [Presence Detection](#presence-detection) - Sensor - for some additional information of the zones. ## Configuration -To use your tado thermostats in your installation, add the following to your `configuration.yaml` file: +To use your Tado thermostats in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry with multiple accounts tado: - username: YOUR_USERNAME - password: YOUR_PASSWORD + - username: YOUR_USERNAME1 + password: YOUR_PASSWORD1 + - username: YOUR_USERNAME2 + password: YOUR_PASSWORD2 +``` + +In case of single account works as well: + +```yaml +# Example configuration.yaml entry with single account +tado: + username: YOUR_USERNAME + password: YOUR_PASSWORD ``` {% configuration %} username: - description: Your username for my.tado.com. + description: Your username for [my.tado.com](https://my.tado.com/). required: true type: string password: - description: Your password for my.tado.com. + description: Your password for [my.tado.com](https://my.tado.com/). required: true type: string +fallback: + description: Indicates if you want to fallback to Smart Schedule on the next Schedule change, or stay in Manual mode until you set the mode back to Auto. + required: false + type: boolean + default: true {% endconfiguration %} -The tado thermostats are internet connected thermostats. There exists an unofficial API at [my.tado.com](https://my.tado.com/webapp/#/account/sign-in), which is used by their website and now by this component. +The Tado thermostats are internet connected thermostats. There exists an unofficial API at [my.tado.com](https://my.tado.com/), which is used by their website and now by this component. -It currently supports presenting the current temperature, the setting temperature and the current operation mode. Switching the mode is also supported. If no user is at home anymore, the devices are showing the away-state. Switching to away-mode is not supported. +It currently supports presenting the current temperature, the setting temperature and the current operation mode. The operation mode can be set to manual, auto and off. If no user is at home anymore, all Tado zones show the away-state (Only with Tado assist mode). Manually switching between home-mode and away-mode is also supported. Any Tado climate card can be switched between these presence modes, this changes the setting for the entire home. ## Presence Detection diff --git a/source/_integrations/tahoma.markdown b/source/_integrations/tahoma.markdown index 104bf7368baa..1f519361f696 100644 --- a/source/_integrations/tahoma.markdown +++ b/source/_integrations/tahoma.markdown @@ -1,16 +1,20 @@ --- -title: "Tahoma" -description: "Instructions on how to integrate Somfy Tahoma devices with Home Assistant." +title: Tahoma +description: Instructions on how to integrate Somfy Tahoma devices with Home Assistant. logo: tahoma.png ha_category: - Hub - Binary Sensor - Cover + - Lock - Scene - Switch - Sensor ha_release: 0.59 ha_iot_class: Cloud Polling +ha_codeowners: + - '@philklei' +ha_domain: tahoma --- The `Tahoma` integration platform is used as an interface to the [tahomalink.com](https://www.tahomalink.com) website. It adds covers, scenes and a sun sensor from the Tahoma platform. @@ -20,6 +24,7 @@ There is currently support for the following device types within Home Assistant: - Binary Sensor - Sensor - Cover +- Lock - Switch - Scene diff --git a/source/_integrations/tank_utility.markdown b/source/_integrations/tank_utility.markdown index 4832d1d4df17..d0e40e41304a 100644 --- a/source/_integrations/tank_utility.markdown +++ b/source/_integrations/tank_utility.markdown @@ -1,10 +1,11 @@ --- -title: "Tank Utility Sensor" -description: "How to integrate Tank Utility sensors within Home Assistant." +title: Tank Utility +description: How to integrate Tank Utility sensors within Home Assistant. logo: tank_utility.png ha_category: - Energy ha_release: 0.53 +ha_domain: tank_utility --- Add [Tank Utility](https://www.tankutility.com/) propane tank monitors to Home Assistant. diff --git a/source/_integrations/tankerkoenig.markdown b/source/_integrations/tankerkoenig.markdown new file mode 100755 index 000000000000..41f4a61cc701 --- /dev/null +++ b/source/_integrations/tankerkoenig.markdown @@ -0,0 +1,99 @@ +--- +title: Tankerkoenig +description: Instructions on how to integrate Tankerkoenig sensors within Home Assistant. +logo: tankerkoenig.png +ha_category: + - Energy + - Sensor +ha_release: 0.107 +ha_iot_class: Cloud Polling +ha_domain: tankerkoenig +ha_codeowners: + - '@guillempages' +--- + +The `tankerkoenig` platform allows you to monitor the fuel prices with [tankerkoenig.de](https://www.tankerkoenig.de/) from within Home Assistant and setup automations based on the information. +One sensor entity will be created for each fuel station within the given radius and for each configured fuel type in it. + +You can also add additional stations manually, referencing them via their IDs. To find out the ID for a given fuel station, you can use the [TankstellenFinder](https://creativecommons.tankerkoenig.de/TankstellenFinder/index.html) tool. + +## Setup + +To use this sensor you need an API key from tankerkoenig. Go to [tankerkoenig API](https://creativecommons.tankerkoenig.de) and click on API-KEY in the top right, fill out the form and request a key. The API is free, but requests should be limited to less than once every 5 minutes. + +It is recommended to choose a radius that doesn't return too many fuel stations. The Terms & Conditions of tankerkoenig.de specify that the API is not meant for massive data fetching, but it does not explicitly mention a limit. Having a maximum of 10 monitored fuel stations is recommended, and a warning will be issued otherwise. + +## Configuration + +To enable this platform, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +tankerkoenig: + api_key: YOUR_API_KEY + radius: 1 + fuel_types: + - "diesel" +``` + +{% configuration %} +api_key: + description: The api key you got when you registered. + required: true + type: string +fuel_types: + description: The types of fuels you want to track. Allowed values are `e5`, `e10` and `diesel`. + required: false + default: ["e5", "e10", "diesel"] + type: list +latitude: + description: The latitude of the gas station to list. + required: inclusive + type: float + default: latitude of your home zone +longitude: + description: The longitude of the gas station to list. + required: inclusive + type: float + default: longitude of your home zone +radius: + description: The radius in km. in which to search for gas stations. Cannot be less than 1. + required: false + default: 2 + type: integer +scan_interval: + description: The time interval in seconds to poll the server for new data. You should not put values lower than 5 minutes here; otherwise you risk your API key being blocked. + required: false + default: 1800 (30min) + type: time +stations: + description: List of additional fuel stations to create entities for. + required: false + type: list +{% endconfiguration %} + +## Full example + +This is a full example of the platform: + +```yaml +tankerkoenig: + api_key: YOUR_API_KEY + fuel_types: + - "diesel" + - "e10" + latitude: 52.51627 + longitude: 13.3777 + radius: 1 + scan_interval: "0:10:01" + stations: + - 8531b393-1e42-423b-cb4d-e4b98cff8a0c +``` + +Assuming there are only two fuel stations within the specified range and location, you would get six sensor entities: + * sensor.tankerkoenig_berlin_paulstrasse_20_diesel + * sensor.tankerkoenig_berlin_paulstrasse_20_e10 + * sensor.tankerkoenig_aral_tankstelle_diesel + * sensor.tankerkoenig_aral_tankstelle_e10 + * sensor.tankerkoenig_svg_hamburg_strassen_diesel + * sensor.tankerkoenig_svg_hamburg_strassen_e10 diff --git a/source/_integrations/tapsaff.markdown b/source/_integrations/tapsaff.markdown index 83034e963bc6..3c9eb0d73235 100644 --- a/source/_integrations/tapsaff.markdown +++ b/source/_integrations/tapsaff.markdown @@ -1,11 +1,12 @@ --- -title: "Taps Aff" -description: "Instructions on how to use the Taps Aff binary sensor in Home Assistant." +title: Taps Aff +description: Instructions on how to use the Taps Aff binary sensor in Home Assistant. logo: tapsaff.png ha_category: - Weather ha_release: 0.47 ha_iot_class: Local Polling +ha_domain: tapsaff --- The `tapsaff` binary sensor provides the 'Taps Aff' status for a given location within the UK using [Taps Aff](https://www.taps-aff.co.uk/). diff --git a/source/_integrations/tautulli.markdown b/source/_integrations/tautulli.markdown index f36d6b03ffe4..e1050e10289f 100644 --- a/source/_integrations/tautulli.markdown +++ b/source/_integrations/tautulli.markdown @@ -1,11 +1,13 @@ --- -title: "Tautulli activity sensor" -description: "Instructions on how to set up Tautulli sensors in Home Assistant." -logo: tautulli.png +title: Tautulli +description: Instructions on how to set up Tautulli sensors in Home Assistant. ha_category: - Sensor ha_release: 0.82 ha_iot_class: Local Polling +ha_codeowners: + - '@ludeeus' +ha_domain: tautulli --- The `tautulli` sensor platform will monitor activity on a given [Tautulli Server][tautulli]. It will create a sensor that shows the number of currently active streams as the state. If you click the sensor for more details it will show you more statistics, the following stats are available by default: @@ -54,7 +56,7 @@ port: default: 8181 type: integer path: - description: The Base Url path of your Tautulli server. + description: The Base URL path of your Tautulli server. required: false type: string ssl: diff --git a/source/_integrations/tcp.markdown b/source/_integrations/tcp.markdown index 2beb8ec07b4f..b57289c0a1ec 100644 --- a/source/_integrations/tcp.markdown +++ b/source/_integrations/tcp.markdown @@ -1,12 +1,12 @@ --- -title: TCP Binary Sensor -description: "Instructions on how to set up TCP within Home Assistant." -logo: tcp_ip.png +title: TCP +description: Instructions on how to set up TCP within Home Assistant. ha_category: - Binary Sensor - Sensor ha_release: 0.14 ha_iot_class: Local Polling +ha_domain: tcp --- The TCP integration allows the integration of some services for which a specific Home Assistant integration does not exist. If the service communicates over a TCP socket with a simple request/reply mechanism then the chances are that this integration will allow integration with it. @@ -181,4 +181,4 @@ timeout: required: false type: integer default: 10 -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/ted5000.markdown b/source/_integrations/ted5000.markdown index 7376fd08b85d..1736d429bd8b 100644 --- a/source/_integrations/ted5000.markdown +++ b/source/_integrations/ted5000.markdown @@ -1,11 +1,12 @@ --- -title: "TED5000 electricity monitoring" -description: "How to add a TED5000 to Home Assistant." +title: The Energy Detective TED5000 +description: How to add a TED5000 to Home Assistant. logo: ted.png ha_category: - Energy -ha_release: "0.30" +ha_release: '0.30' ha_iot_class: Local Polling +ha_domain: ted5000 --- The `ted 5000` monitors electricity consumption/production by connecting to the [TED](https://www.theenergydetective.com/home) gateway, itself connected to one or several Measuring Transmitting Units (MTU). The platform creates up to two sensors per MTU, one for Wattage the other for Voltage. diff --git a/source/_integrations/teksavvy.markdown b/source/_integrations/teksavvy.markdown index 2601d76fadb1..cc1dc2b54a14 100644 --- a/source/_integrations/teksavvy.markdown +++ b/source/_integrations/teksavvy.markdown @@ -1,11 +1,12 @@ --- -title: "TekSavvy" -description: "Instructions on how to integrate TekSavvy data usage within Home Assistant." +title: TekSavvy +description: Instructions on how to integrate TekSavvy data usage within Home Assistant. logo: teksavvy.png ha_category: - Network ha_release: 0.62 ha_iot_class: Cloud Polling +ha_domain: teksavvy --- Integrate your [TekSavvy](https://myaccount.teksavvy.com/) account information into Home Assistant. diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown index d1e32de06e8c..67b0991aff04 100644 --- a/source/_integrations/telegram.markdown +++ b/source/_integrations/telegram.markdown @@ -1,13 +1,12 @@ --- -title: "Telegram" -description: "Instructions on how to add Telegram notifications to Home Assistant." -logo: telegram.png +title: Telegram +description: Instructions on how to add Telegram notifications to Home Assistant. ha_category: - Notifications ha_release: 0.7.5 +ha_domain: telegram --- - The `telegram` platform uses [Telegram](https://web.telegram.org) to deliver notifications from Home Assistant to your Android device, your Windows phone, or your iOS device. ## Setup @@ -15,10 +14,12 @@ The `telegram` platform uses [Telegram](https://web.telegram.org) to deliver not The requirements are: - You need a [Telegram bot](https://core.telegram.org/bots). Please follow those [instructions](https://core.telegram.org/bots#6-botfather) to create one and get the token for your bot. Keep in mind that bots are not allowed to contact users. You need to make the first contact with your user. Meaning that you need to send a message to the bot from your user. -- You need to configure a [Telegram bot in Home Assistant](/integrations/telegram_chatbot) and define there your API key and the allowed chat ids to interact with. -- The `chat_id` of an allowed user. +- You need to configure a [Telegram bot in Home Assistant](/integrations/telegram_bot) and define there your API key and the allowed chat ids to interact with. +- The `chat_id` of an allowed user. + +**Method 1:** You can get your `chat_id` by sending any message to the [GetIDs bot](https://t.me/getidsbot). -The quickest way to retrieve your `chat_id` is visiting `https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` or to use `$ curl -X GET https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` **after** you have sent the bot a message. Replace `YOUR_API_TOKEN` with your actual token. +**Method 2:** To retrieve your `chat_id` you can visit `https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` or to use `$ curl -X GET https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` **after** you have sent the bot a message. Replace `YOUR_API_TOKEN` with your actual token. The result set will include your chat ID as `id` in the `chat` section: @@ -49,9 +50,9 @@ The result set will include your chat ID as `id` in the `chat` section: } ``` -Another way to get your chat ID directly is described below. Start your Python interpreter from the command-line: +**Method 3:** Another way to get your chat ID directly is described below. Start your Python interpreter from the command-line: -```python +```shell $ python3 >>> import telegram >>> bot = telegram.Bot(token='YOUR_API_TOKEN') @@ -85,6 +86,10 @@ notify: chat_id: CHAT_ID_2 ``` +Refer to the platforms mentioned in the +[Telegram chatbot page](/integrations/telegram_bot/) for +`telegram_bot` configuration. + {% configuration %} name: description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. @@ -150,7 +155,7 @@ action: - file: /tmp/picture.jpg caption: Picture Title xy - url: http://somebla.ie/video.png - caption: I.e. for a Title + caption: i.e., for a Title ``` {% configuration %} @@ -226,7 +231,7 @@ action: - file: /tmp/video.mp4 caption: Video Title xy - url: http://somebla.ie/video.mp4 - caption: I.e. for a Title + caption: i.e., for a Title ``` {% configuration %} diff --git a/source/_integrations/telegram_chatbot.markdown b/source/_integrations/telegram_bot.markdown similarity index 84% rename from source/_integrations/telegram_chatbot.markdown rename to source/_integrations/telegram_bot.markdown index eb91c44efeb8..d64b52b4d992 100644 --- a/source/_integrations/telegram_chatbot.markdown +++ b/source/_integrations/telegram_bot.markdown @@ -1,16 +1,16 @@ --- -title: "Telegram chatbot" -description: "Telegram chatbot support" -logo: telegram.png +title: Telegram bot +description: Telegram bot support ha_category: - Hub ha_release: 0.42 ha_iot_class: Cloud Push +ha_domain: telegram_bot --- Use Telegram on your mobile or desktop device to send and receive messages or commands to/from your Home Assistant. -This integration creates notification services to send, or edit previously sent, messages from a [Telegram Bot account](https://core.telegram.org/bots) configured either with the [polling](/integrations/telegram_polling) method or with the [webhooks](/integrations/telegram_webhooks) one, and trigger events when receiving messages. +This integration creates notification services to send, or edit previously sent, messages from a [Telegram Bot account](https://core.telegram.org/bots) configured either with the [polling](/integrations/telegram_polling) platform or with the [webhooks](/integrations/telegram_webhooks) one, and trigger events when receiving messages. If you don't need to receive messages, you can use the [broadcast](/integrations/telegram_broadcast) platform instead. @@ -48,6 +48,7 @@ Send a photo. | `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | | `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | +| 'timeout' | yes | Timeout for send photo. Will help with timeout errors (poor internet connection, etc) | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | @@ -66,6 +67,7 @@ Send a video. | `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | | `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. | | `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | +| 'timeout' | yes | Timeout for send video. Will help with timeout errors (poor internet connection, etc) | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | @@ -84,6 +86,7 @@ Send a document. | `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | | `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | +| 'timeout' | yes | Timeout for send document. Will help with timeout errors (poor internet connection, etc) | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | @@ -223,7 +226,6 @@ Simple ping pong example. ```yaml alias: 'Telegram bot that reply pong to ping' -hide_entity: true trigger: platform: event event_type: telegram_command @@ -301,7 +303,6 @@ Text repeater: {% raw %} ```yaml - alias: 'Telegram bot that repeats text' - hide_entity: true trigger: platform: event event_type: telegram_text @@ -323,12 +324,11 @@ Message editor: {% raw %} ```yaml - alias: 'Telegram bot that edits the last sent message' - hide_entity: true trigger: platform: event event_type: telegram_callback event_data: - data: '/edit_msg' + command: '/edit_msg' action: - service: telegram_bot.answer_callback_query data_template: @@ -355,12 +355,11 @@ Keyboard editor: {% raw %} ```yaml - alias: 'Telegram bot that edits the keyboard' - hide_entity: true trigger: platform: event event_type: telegram_callback event_data: - data: '/remove button' + command: '/remove button' action: - service: telegram_bot.answer_callback_query data_template: @@ -380,12 +379,11 @@ Only acknowledges the 'NO' answer: {% raw %} ```yaml - alias: 'Telegram bot that simply acknowledges' - hide_entity: true trigger: platform: event event_type: telegram_callback event_data: - data: '/do_nothing' + command: '/do_nothing' action: - service: telegram_bot.answer_callback_query data_template: @@ -394,6 +392,28 @@ Only acknowledges the 'NO' answer: ``` {% endraw %} +Telegram callbacks also support arguments and commands the same way as normal messages. + +{% raw %} +```yaml +- alias: 'Telegram bot repeats arguments on callback query' + trigger: + platform: event + event_type: telegram_callback + event_data: + command: '/repeat' + action: + - service: telegram_bot.answer_callback_query + data_template: + show_alert: true + callback_query_id: '{{ trigger.event.data.id }}' + message: 'I repeat: {{trigger.event.data["args"]}}' +``` +{% endraw %} + +In this case, having a callback with `/repeat 1 2 3` with pop a notification saying `I repeat: [1, 2, 3]` + + For a more complex usage of the `telegram_bot` capabilities, using [AppDaemon](/docs/ecosystem/appdaemon/tutorial/) is advised. This is how the previous 4 automations would be through a simple AppDaemon app: @@ -401,76 +421,90 @@ This is how the previous 4 automations would be through a simple AppDaemon app: ```python import appdaemon.plugins.hass.hassapi as hass + class TelegramBotEventListener(hass.Hass): """Event listener for Telegram bot events.""" def initialize(self): """Listen to Telegram Bot events of interest.""" - self.listen_event(self.receive_telegram_text, 'telegram_text') - self.listen_event(self.receive_telegram_callback, 'telegram_callback') + self.listen_event(self.receive_telegram_text, "telegram_text") + self.listen_event(self.receive_telegram_callback, "telegram_callback") def receive_telegram_text(self, event_id, payload_event, *args): """Text repeater.""" - assert event_id == 'telegram_text' - user_id = payload_event['user_id'] - msg = 'You said: ``` %s ```' % payload_event['text'] - keyboard = [[("Edit message", "/edit_msg"), - ("Don't", "/do_nothing")], - [("Remove this button", "/remove button")]] - self.call_service('telegram_bot/send_message', - title='*Dumb automation*', - target=user_id, - message=msg, - disable_notification=True, - inline_keyboard=keyboard) + assert event_id == "telegram_text" + user_id = payload_event["user_id"] + msg = "You said: ``` %s ```" % payload_event["text"] + keyboard = [ + [("Edit message", "/edit_msg"), ("Don't", "/do_nothing")], + [("Remove this button", "/remove button")], + ] + self.call_service( + "telegram_bot/send_message", + title="*Dumb automation*", + target=user_id, + message=msg, + disable_notification=True, + inline_keyboard=keyboard, + ) def receive_telegram_callback(self, event_id, payload_event, *args): """Event listener for Telegram callback queries.""" - assert event_id == 'telegram_callback' - data_callback = payload_event['data'] - callback_id = payload_event['id'] - chat_id = payload_event['chat_id'] + assert event_id == "telegram_callback" + data_callback = payload_event["data"] + callback_id = payload_event["id"] + chat_id = payload_event["chat_id"] # keyboard = ["Edit message:/edit_msg, Don't:/do_nothing", # "Remove this button:/remove button"] - keyboard = [[("Edit message", "/edit_msg"), - ("Don't", "/do_nothing")], - [("Remove this button", "/remove button")]] + keyboard = [ + [("Edit message", "/edit_msg"), ("Don't", "/do_nothing")], + [("Remove this button", "/remove button")], + ] - if data_callback == '/edit_msg': # Message editor: + if data_callback == "/edit_msg": # Message editor: # Answer callback query - self.call_service('telegram_bot/answer_callback_query', - message='Editing the message!', - callback_query_id=callback_id, - show_alert=True) + self.call_service( + "telegram_bot/answer_callback_query", + message="Editing the message!", + callback_query_id=callback_id, + show_alert=True, + ) # Edit the message origin of the callback query - msg_id = payload_event['message']['message_id'] - user = payload_event['from_first'] - title = '*Message edit*' - msg = 'Callback received from %s. Message id: %s. Data: ``` %s ```' - self.call_service('telegram_bot/edit_message', - chat_id=chat_id, - message_id=msg_id, - title=title, - message=msg % (user, msg_id, data_callback), - inline_keyboard=keyboard) - - elif data_callback == '/remove button': # Keyboard editor: + msg_id = payload_event["message"]["message_id"] + user = payload_event["from_first"] + title = "*Message edit*" + msg = "Callback received from %s. Message id: %s. Data: ``` %s ```" + self.call_service( + "telegram_bot/edit_message", + chat_id=chat_id, + message_id=msg_id, + title=title, + message=msg % (user, msg_id, data_callback), + inline_keyboard=keyboard, + ) + + elif data_callback == "/remove button": # Keyboard editor: # Answer callback query - self.call_service('telegram_bot/answer_callback_query', - message='Callback received for editing the ' - 'inline keyboard!', - callback_query_id=callback_id) + self.call_service( + "telegram_bot/answer_callback_query", + message="Callback received for editing the " "inline keyboard!", + callback_query_id=callback_id, + ) # Edit the keyboard new_keyboard = keyboard[:1] - self.call_service('telegram_bot/edit_replymarkup', - chat_id=chat_id, - message_id='last', - inline_keyboard=new_keyboard) - - elif data_callback == '/do_nothing': # Only Answer to callback query - self.call_service('telegram_bot/answer_callback_query', - message='OK, you said no!', - callback_query_id=callback_id) + self.call_service( + "telegram_bot/edit_replymarkup", + chat_id=chat_id, + message_id="last", + inline_keyboard=new_keyboard, + ) + + elif data_callback == "/do_nothing": # Only Answer to callback query + self.call_service( + "telegram_bot/answer_callback_query", + message="OK, you said no!", + callback_query_id=callback_id, + ) ``` diff --git a/source/_integrations/telegram_broadcast.markdown b/source/_integrations/telegram_broadcast.markdown index c138ca1c1ca5..0e3f9c0d8654 100644 --- a/source/_integrations/telegram_broadcast.markdown +++ b/source/_integrations/telegram_broadcast.markdown @@ -1,10 +1,10 @@ --- title: "Telegram broadcast" description: "Telegram support to send messages only" -logo: telegram.png ha_category: - Notifications ha_release: 0.48 +ha_domain: telegram_bot --- Telegram implementation to support **sending messages only**. Your Home Assistant instance does not have to be exposed to the Internet and there is no polling to receive messages sent to the bot. @@ -38,7 +38,7 @@ parse_mode: type: string default: "`markdown`" proxy_url: - description: Proxy url if working behind one (`socks5://proxy_ip:proxy_port`). + description: Proxy URL if working behind one (`socks5://proxy_ip:proxy_port`). required: false type: string proxy_params: diff --git a/source/_integrations/telegram_polling.markdown b/source/_integrations/telegram_polling.markdown index 2292561224d6..58081ec887d1 100644 --- a/source/_integrations/telegram_polling.markdown +++ b/source/_integrations/telegram_polling.markdown @@ -1,10 +1,10 @@ --- title: "Telegram polling" description: "Telegram polling support" -logo: telegram.png ha_category: - Notifications ha_release: 0.42 +ha_domain: telegram_bot --- Telegram chatbot polling implementation. @@ -40,7 +40,7 @@ parse_mode: type: string default: "`markdown`" proxy_url: - description: Proxy url if working behind one (`socks5://proxy_ip:proxy_port`). + description: Proxy URL if working behind one (`socks5://proxy_ip:proxy_port`). required: false type: string proxy_params: diff --git a/source/_integrations/telegram_webhooks.markdown b/source/_integrations/telegram_webhooks.markdown index 81429f628917..ecbb54833cc6 100644 --- a/source/_integrations/telegram_webhooks.markdown +++ b/source/_integrations/telegram_webhooks.markdown @@ -1,10 +1,10 @@ --- title: "Telegram webhooks" description: "Telegram webhooks support" -logo: telegram.png ha_category: - Notifications ha_release: 0.42 +ha_domain: telegram_bot --- Telegram chatbot webhooks implementation as described in the Telegram [documentation](https://core.telegram.org/bots/webhooks). @@ -46,7 +46,7 @@ parse_mode: default: markdown type: string proxy_url: - description: Proxy url if working behind one (`socks5://proxy_ip:proxy_port`). + description: Proxy URL if working behind one (`socks5://proxy_ip:proxy_port`). required: false type: string proxy_params: diff --git a/source/_integrations/tellduslive.markdown b/source/_integrations/tellduslive.markdown index 1bbb8c34b818..fc99d063d2a9 100644 --- a/source/_integrations/tellduslive.markdown +++ b/source/_integrations/tellduslive.markdown @@ -1,7 +1,6 @@ --- -title: "Telldus Live" -description: "Instructions on how to integrate Telldus Live into Home Assistant." -logo: tellduslive.svg +title: Telldus Live +description: Instructions on how to integrate Telldus Live into Home Assistant. ha_category: - Hub - Binary Sensor @@ -11,18 +10,15 @@ ha_category: - Switch ha_release: 0.11 ha_config_flow: true -ha_qa_scale: gold ha_iot_class: Cloud Polling +ha_quality_scale: gold +ha_codeowners: + - '@fredrike' +ha_domain: tellduslive --- The `tellduslive` integration let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home. -
    - -If you are upgrading from 0.58 or older, you need to remove all Telldus configuration from your `configuration.yaml` file before continuing. - -
    - Home Assistant will automatically discover the presence of a Tellstick Net or Tellstick ZNet on your local network if the [discovery]({{site_root}}/integrations/discovery/) integration is enabled. When discovery and the key exchange with Telldus Live have been completed, you will be presented with an option to integrate with the cloud or local API for direct communication with your hardware in your LAN. Local API supports only one device at this stage. Local API is only supported with the Znet Lite products, the older hardware (such as Tellstick Net) does not support local API. ## Configuration diff --git a/source/_integrations/tellstick.markdown b/source/_integrations/tellstick.markdown index 9ecd64767654..ac421a253cb6 100644 --- a/source/_integrations/tellstick.markdown +++ b/source/_integrations/tellstick.markdown @@ -1,6 +1,6 @@ --- -title: "TellStick" -description: "Instructions on how to integrate your TellStick into Home Assistant." +title: TellStick +description: Instructions on how to integrate your TellStick into Home Assistant. logo: telldus_tellstick.png ha_release: pre 0.7 ha_category: @@ -10,6 +10,7 @@ ha_category: - Sensor - Switch ha_iot_class: Assumed State +ha_domain: tellstick --- The `tellstick` integration integrates [TellStick][tellstick-gateway] devices into Home Assistant. This integration allows users to add switches, lights, and sensors which are communicating with 433 MHz. There are a number of vendors (Capidi Elro, Intertechno, Nexa, Proove, Sartano, and Viking) who are selling products that work with TellStick. For more details, please check the TellStick [protocol list](http://developer.telldus.com/wiki/TellStick_conf). @@ -33,10 +34,10 @@ To get started, add the devices to your `configuration.yaml` file. tellstick: ``` -For Hass.io users there is a [TellStick add-on](/addons/tellstick/) available. +There is a [TellStick add-on](/addons/tellstick/) available in the Home Assistant add-on store. ```yaml -# Example configuration.yaml entry for Hass.io with the TellStick add-on +# Example configuration.yaml entry with the TellStick add-on tellstick: host: core-tellstick port: [50800, 50801] @@ -49,7 +50,7 @@ signal_repetitions: type: integer default: 1 host: - description: If you run TellStick on another server or with the Hass.io add-on. + description: If you run TellStick on another server or with the Home Assistant add-on. required: inclusive type: string port: diff --git a/source/_integrations/telnet.markdown b/source/_integrations/telnet.markdown index c996c2b794c8..26696454e4d0 100644 --- a/source/_integrations/telnet.markdown +++ b/source/_integrations/telnet.markdown @@ -1,10 +1,11 @@ --- -title: "Telnet Switch" -description: "Instructions on how to integrate telnet switches into Home Assistant." +title: Telnet +description: Instructions on how to integrate telnet switches into Home Assistant. ha_category: - Switch ha_release: 0.54 ha_iot_class: Local Polling +ha_domain: telnet --- The `telnet` switch platform allows you to control devices with telnet commands. diff --git a/source/_integrations/temper.markdown b/source/_integrations/temper.markdown index 08e46aed1191..3c419d21c352 100644 --- a/source/_integrations/temper.markdown +++ b/source/_integrations/temper.markdown @@ -1,10 +1,11 @@ --- -title: "TEMPer Sensor" -description: "Instructions on how to integrate TEMPer sensors into Home Assistant." +title: TEMPer +description: Instructions on how to integrate TEMPer sensors into Home Assistant. ha_category: - DIY ha_iot_class: Local Push ha_release: pre 0.7 +ha_domain: temper --- This `temper` sensor platform allows you to get the current temperature from a TEMPer device. diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 979c97edf0df..f8a857f56937 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -1,12 +1,15 @@ --- -title: "Template Sensor" -description: "Instructions on how to integrate Template Sensors into Home Assistant." +title: Template +description: Instructions on how to integrate Template Sensors into Home Assistant. ha_category: - Sensor ha_release: 0.12 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@PhracturedBlue' + - '@tetienne' +ha_domain: template --- The `template` platform supports sensors which get their values from other entities. @@ -311,7 +314,7 @@ sensor: The `template` sensors are not limited to use attributes from other entities but can also work with [Home Assistant's template extensions](/docs/configuration/templating/#home-assistant-template-extensions). -This template contains no entities that will trigger an update, so we add an `entity_id:` line with an entity that will force an update - here we're using a [date sensor](/integrations/time_date) to get a daily update: +This template contains no entities that will trigger an update (as `now()` is a function), so we add an `entity_id:` line with an entity that will force an update - here we're using a [date sensor](/integrations/time_date) to get a daily update: {% raw %} @@ -328,8 +331,25 @@ sensor: {% endraw %} -Useful entities to choose might be `sensor.date` which update once per day or `sensor.time` which updates once per minute. +In this case it is also possible to convert the entity-less template above into one that will be updated automatically: +{% raw %} + +````yaml +sensor: + - platform: template + sensors: + nonsmoker: + value_template: "{{ (( as_timestamp(strptime(states('sensor.date'), '%Y-%m-%d')) - as_timestamp(strptime('06.07.2018', '%d.%m.%Y')) ) / 86400 ) | round(2) }}" + friendly_name: 'Not smoking' + unit_of_measurement: "Days" +```` + +{% endraw %} + +Useful entities to choose might be `sensor.date` which update once per day or `sensor.time`, which updates once per minute. +Please note that the resulting template will be evaluated by Home Assistant state engine on every state change of these sensors, which in case of `sensor.time` happens every minute and might have a negative impact on performance. + An alternative to this is to create an interval-based automation that calls the service `homeassistant.update_entity` for the entities requiring updates. This modified example updates every 5 minutes: {% raw %} diff --git a/source/_integrations/tensorflow.markdown b/source/_integrations/tensorflow.markdown index f68cd5e73587..7c51761d28cb 100644 --- a/source/_integrations/tensorflow.markdown +++ b/source/_integrations/tensorflow.markdown @@ -1,11 +1,11 @@ --- -title: "TensorFlow" -description: "Detect and recognize objects with TensorFlow." -logo: tensorflow.png +title: TensorFlow +description: Detect and recognize objects with TensorFlow. ha_category: - Image Processing ha_iot_class: Local Polling ha_release: 0.82 +ha_domain: tensorflow --- The `tensorflow` image processing platform allows you to detect and recognize objects in a camera image using [TensorFlow](https://www.tensorflow.org/). 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. @@ -19,13 +19,13 @@ The `tensorflow` image processing platform allows you to detect and recognize ob ## Setup -You need to install the `tensorflow` Python packages with: `$ pip3 install tensorflow==1.11.0`. The wheel is not available for all platforms. See [the official install guide](https://www.tensorflow.org/install/) for other options. Hass.io is not yet supported but an addon is under development. +You need to install the `tensorflow` Python packages with: `$ pip3 install tensorflow==1.13.2`. The wheel is not available for all platforms. See [the official install guide](https://www.tensorflow.org/install/) for other options. The required packages are included in Home Assistant Supervised installations but only supported on amd64 architecture. This integration requires files to be downloaded, compiled on your computer, and added to the Home Assistant configuration directory. These steps can be performed using the sample script at [this gist](https://gist.github.com/hunterjm/6f9332f92b60c3d5e448ad936d7353c3). Alternatively, if you wish to perform the process manually, the process is as follows: - Clone [tensorflow/models](https://github.com/tensorflow/models/tree/master/research/object_detection) - Compile protobuf models located in `research/object_detection/protos` with `protoc` -- Create the following directory structure inside your config directory: +- Create the following directory structure inside your configuration directory: ```bash |- {config_dir} @@ -95,10 +95,10 @@ model: type: string default: tensorflow/object_detection/data/mscoco_label_map.pbtxt model_dir: - description: Full path to tensorflow models directory. + description: Full path to TensorFlow models directory. required: false type: string - default: /tensorflow inside config + default: "`/tensorflow` inside configuration" area: description: Custom detection area. Only objects fully in this box will be reported. Top of image is 0, bottom is 1. Same left to right. required: false @@ -155,9 +155,9 @@ image_processing: - truck ``` -## Optimising resources +## Optimizing resources -[Image processing components](/integrations/image_processing/) process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your config `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. +[Image processing components](/integrations/image_processing/) process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your configuration `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. ```yaml # Example advanced configuration.yaml entry @@ -171,7 +171,7 @@ image_processing: ```yaml # Example advanced automations.yaml entry -- alias: Tensorflow scanning +- alias: TensorFlow scanning trigger: - platform: state entity_id: diff --git a/source/_integrations/tesla.markdown b/source/_integrations/tesla.markdown index f80a34a1fda2..bb9873eb3cda 100644 --- a/source/_integrations/tesla.markdown +++ b/source/_integrations/tesla.markdown @@ -1,7 +1,6 @@ --- -title: "Tesla" -description: "Instructions on how to integrate Tesla car into Home Assistant." -logo: tesla.png +title: Tesla +description: Instructions on how to integrate Tesla car into Home Assistant. ha_category: - Car - Binary Sensor @@ -12,6 +11,11 @@ ha_category: - Switch ha_release: 0.53 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@zabuldon' + - '@alandtse' +ha_domain: tesla --- The `Tesla` integration offers integration with the [Tesla](https://auth.tesla.com/login) cloud service and provides presence detection as well as sensors such as charger state and temperature. @@ -19,15 +23,19 @@ The `Tesla` integration offers integration with the [Tesla](https://auth.tesla.c This integration provides the following platforms: - Binary sensors - such as parking and charger connection. -- Sensors - such as Battery level, Inside/Outside temperature, odometer, and estimated range. +- Sensors - such as Battery level, Inside/Outside temperature, odometer, estimated range, and charging rate. - Device tracker - to track location of your car -- Lock - Door lock. Enables you to control Tesla's door lock +- Lock - Door lock and charger door lock. Enables you to control Tesla's door and charger door lock - Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system. -- Switch - Charger and max range switch. Allow you to start/stop charging and set max range charging. +- Switch - Charger and max range switch to allow you to start/stop charging and set max range charging. Update switch to allow you to disable polling of vehicles to conserve battery. Sentry mode switch to enable or disable Sentry mode. ## Configuration -To use Tesla in your installation, add the following to your `configuration.yaml` file: +Home Assistant offers the Tesla integration through **Configuration** -> **Integrations** -> **Tesla**. + +Enter username and password and then continue. + +Alternatively, Home Assistant will also load Tesla via the `configuration.yaml`. Add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -46,8 +54,14 @@ password: required: true type: string scan_interval: - description: API polling interval in seconds. Minimum value can't be less than 300 (5 minutes). Very frequent polling can use battery. + description: API polling interval in seconds. Minimum value can't be less than 60 (1 minute). Very frequent polling can use battery. required: false type: integer - default: 300 + default: 660 {% endconfiguration %} + +## Options + +Tesla options are set via **Configuration** -> **Integrations** -> **Tesla** -> **Options**. + +* Wake cars on start - Whether to wake sleeping cars on Home Assistant startup. This allows a user to choose whether cars should continue to sleep (and not update information) or to wake up the cars potentially interrupting long term hibernation and increasing vampire drain. diff --git a/source/_integrations/tfiac.markdown b/source/_integrations/tfiac.markdown index 6590d8ff4d92..9154e4483f85 100644 --- a/source/_integrations/tfiac.markdown +++ b/source/_integrations/tfiac.markdown @@ -1,11 +1,14 @@ --- -title: "Tfiac AC" -description: "Instructions on how to integrate Tfiac AC devices with Home Assistant." -logo: tfiac.png +title: Tfiac +description: Instructions on how to integrate Tfiac AC devices with Home Assistant. ha_category: - Climate ha_release: 0.91 ha_iot_class: Local Polling +ha_codeowners: + - '@fredrike' + - '@mellado' +ha_domain: tfiac --- The `tfiac` integration integrates several vendors air conditioning systems, that uses the Tfiac mobile app, into Home Assistant. App currently available at [Play Store](https://play.google.com/store/apps/details?id=com.tcl.export) and [App Store](https://itunes.apple.com/app/tfiac/id1059938398). diff --git a/source/_integrations/thermoworks_smoke.markdown b/source/_integrations/thermoworks_smoke.markdown index 752bf0679d4c..af147f0fe79b 100644 --- a/source/_integrations/thermoworks_smoke.markdown +++ b/source/_integrations/thermoworks_smoke.markdown @@ -1,11 +1,12 @@ --- -title: "ThermoWorks Smoke Sensor" -description: "Pulls temperature data for a ThermoWorks Smoke Thermometer connected with Smoke Gateway." +title: ThermoWorks Smoke +description: Pulls temperature data for a ThermoWorks Smoke Thermometer connected with Smoke Gateway. logo: thermoworks.png ha_category: - Sensor ha_release: 0.81 ha_iot_class: Cloud Polling +ha_domain: thermoworks_smoke --- The `thermoworks_smoke` sensor platform pulls data for your [ThermoWorks Smoke Thermometer](https://www.thermoworks.com/Smoke). diff --git a/source/_integrations/thethingsnetwork.markdown b/source/_integrations/thethingsnetwork.markdown index 0e1e9a55e032..35c7f20879ec 100644 --- a/source/_integrations/thethingsnetwork.markdown +++ b/source/_integrations/thethingsnetwork.markdown @@ -1,12 +1,14 @@ --- -title: "The Things Network" -description: "Instructions for how to integrate The Things Network within Home Assistant." -logo: thethingsnetwork.png +title: The Things Network +description: Instructions for how to integrate The Things Network within Home Assistant. ha_category: - Hub - Sensor ha_release: 0.55 ha_iot_class: Configurable +ha_codeowners: + - '@fabaff' +ha_domain: thethingsnetwork --- The `thethingsnetwork` integration allows one to interact with the [The Things Network](https://www.thethingsnetwork.org). This community-driven and open network supports [LoRaWAN](https://www.lora-alliance.org/) for long range (~5 to 15km) communication with a low bandwidth (51 bytes/message). [Gateways](https://www.thethingsnetwork.org/docs/gateways/) transfers the received data from the sensors to the The Things Network. @@ -131,4 +133,4 @@ sensor: description: The sensor values with their unit of measurement required: true type: list -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/thingspeak.markdown b/source/_integrations/thingspeak.markdown index 3f6d2f4a78c9..552ca3824647 100644 --- a/source/_integrations/thingspeak.markdown +++ b/source/_integrations/thingspeak.markdown @@ -1,10 +1,11 @@ --- -title: "ThingSpeak" -description: "Record one entity in ThingSpeak" +title: ThingSpeak +description: Record one entity in ThingSpeak logo: thingspeak.png ha_category: - - "History" + - History ha_release: 0.32 +ha_domain: thingspeak --- The `thingspeak` integrations makes Home Assistant communicate with the [ThingSpeak API](https://thingspeak.com/). diff --git a/source/_integrations/thinkingcleaner.markdown b/source/_integrations/thinkingcleaner.markdown index 41a850b56976..2b0c92945b72 100644 --- a/source/_integrations/thinkingcleaner.markdown +++ b/source/_integrations/thinkingcleaner.markdown @@ -1,12 +1,12 @@ --- -title: "Thinking Cleaner" -description: "Instructions on how to integrate a ThinkingCleaner within Home Assistant." -logo: thinkingcleaner.png +title: Thinking Cleaner +description: Instructions on how to integrate a ThinkingCleaner within Home Assistant. ha_category: - Sensor - Switch ha_iot_class: Local Polling ha_release: 0.18 +ha_domain: thinkingcleaner --- There is currently support for the following device types within Home Assistant: @@ -21,23 +21,50 @@ The `thinkingcleaner` sensor platform simple displays information about your [Th To enable this sensor in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry sensor: - platform: thinkingcleaner ``` +{% configuration %} +host: + description: IP address of Thinking Cleaner device + required: false + type: string +{% endconfiguration %} + + This will automatically add sensors for each Thinking Cleaner in your network. -## switch +## Switch The `thinkingcleaner` switch platform allows you to control your [Thinking Cleaner](https://www.thinkingcleaner.com/) add-on. To enable this switch in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry switch: - platform: thinkingcleaner ``` +{% configuration %} +host: + description: IP address of Thinking Cleaner device + required: false + type: string +{% endconfiguration %} + + This will automatically add switches for each Thinking Cleaner in your network. + +## Example configuration using a Roomba with a static IP + +If your `thinkingcleaner` device has a static IP address, you can also supply this to the sensor and switch using the host parameter. This is optional and will disable the automatic lookup. + +```yaml +sensor: + - platform: thinkingcleaner + host: 10.0.0.55 +switch: + - platform: thinkingcleaner + host: 10.0.0.55 +``` diff --git a/source/_integrations/thomson.markdown b/source/_integrations/thomson.markdown index 9f809e8e5fb1..f35594df439f 100644 --- a/source/_integrations/thomson.markdown +++ b/source/_integrations/thomson.markdown @@ -1,13 +1,13 @@ --- -title: "Thomson" -description: "Instructions on how to integrate Thomson routers into Home Assistant." +title: Thomson +description: Instructions on how to integrate Thomson routers into Home Assistant. logo: technicolor.png ha_category: - Presence Detection ha_release: 0.7 +ha_domain: thomson --- - Thomson produced networking equipment (under the brand name SpeedTouch) till 2010 and was then renamed to Technicolor. This platform allows you to detect presence by looking at connected devices to a [Thomson](https://www.technicolor.com/) device. diff --git a/source/_integrations/threshold.markdown b/source/_integrations/threshold.markdown index 48053413f3de..7e6be5db352f 100644 --- a/source/_integrations/threshold.markdown +++ b/source/_integrations/threshold.markdown @@ -1,12 +1,14 @@ --- -title: "Threshold Binary Sensor" -description: "Instructions on how to integrate threshold binary sensors into Home Assistant." -logo: home-assistant.png +title: Threshold +description: Instructions on how to integrate threshold binary sensors into Home Assistant. ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.34 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: threshold --- The `threshold` binary sensor platform observes the state of another sensor. If the value is below (`lower`) or higher (`upper`) than the given threshold then state of the threshold sensor is changed. It support also a range if `lower` and `upper` are given. diff --git a/source/_integrations/tibber.markdown b/source/_integrations/tibber.markdown index d1de6b5caf21..27d99b63bcef 100644 --- a/source/_integrations/tibber.markdown +++ b/source/_integrations/tibber.markdown @@ -1,14 +1,17 @@ --- -title: "Tibber" -description: "Instructions on how to integrate Tibber within Home Assistant." +title: Tibber +description: Instructions on how to integrate Tibber within Home Assistant. logo: tibber.png ha_category: - Energy - Sensor - Notifications -ha_release: 0.80 -ha_qa_scale: silver +ha_release: 0.8 ha_iot_class: Cloud Polling +ha_quality_scale: silver +ha_codeowners: + - '@danielhiversen' +ha_domain: tibber --- The `tibber` integration provides a sensor with the current electricity price if you are a [Tibber](https://tibber.com/) customer. @@ -21,7 +24,7 @@ There is currently support for the following device types within Home Assistant: ## Setup -Go to [developer.tibber.com/](https://developer.tibber.com/) to get your API token. +Go to [developer.tibber.com/settings/accesstoken](https://developer.tibber.com/settings/accesstoken) to get your API token. ## Configuration diff --git a/source/_integrations/tikteck.markdown b/source/_integrations/tikteck.markdown index b92b1927bb96..90b5253671aa 100644 --- a/source/_integrations/tikteck.markdown +++ b/source/_integrations/tikteck.markdown @@ -1,11 +1,12 @@ --- -title: "Tikteck" -description: "Instructions on how to setup Tikteck LED bulbs within Home Assistant." +title: Tikteck +description: Instructions on how to setup Tikteck LED bulbs within Home Assistant. ha_category: - Light ha_iot_class: Local Polling logo: tikteck.png ha_release: 0.36 +ha_domain: tikteck --- Support for the Bluetooth smart bulb from [Tikteck](https://www.tikteck.com/). To enable these lights, add the following lines to your `configuration.yaml` file: @@ -25,7 +26,7 @@ light: {% configuration %} devices: - description: A list of devices with their bluetooth address. + description: A list of devices with their Bluetooth address. required: false type: list keys: diff --git a/source/_integrations/tile.markdown b/source/_integrations/tile.markdown index f2eb9afe5e95..7b20223c9851 100644 --- a/source/_integrations/tile.markdown +++ b/source/_integrations/tile.markdown @@ -1,11 +1,13 @@ --- -title: "Tile" -description: "Instructions on how to use Tile to track devices in Home Assistant." -logo: tile.png +title: Tile +description: Instructions on how to use Tile to track devices in Home Assistant. ha_release: 0.58 ha_category: - Presence Detection ha_iot_class: Cloud Polling +ha_codeowners: + - '@bachya' +ha_domain: tile --- The `tile` platform allows Home Assistant to utilize [Tile® Bluetooth trackers](https://www.thetileapp.com). diff --git a/source/_integrations/time_date.markdown b/source/_integrations/time_date.markdown index 315632069554..2be41354a75b 100644 --- a/source/_integrations/time_date.markdown +++ b/source/_integrations/time_date.markdown @@ -1,17 +1,18 @@ --- -title: "Time & Date" -description: "Instructions on how to integrate the time and the date within Home Assistant." -logo: home-assistant.png +title: Time & Date +description: Instructions on how to integrate the time and the date within Home Assistant. ha_category: - Calendar ha_iot_class: Local Push ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: time_date --- -The time and date (`time_date`) sensor platform simple displays the time in various formats, the date, or both. - -To enable this sensor in your installation, add the following to your `configuration.yaml` file: +The time and date (`time_date`) sensor platform adds one or more sensors to your Home Assistant state machine. +To have these sensors available in your installation, add the following to your `configuration.yaml` file (each option creates a separate sensor that contains appropriate data, e.g., `sensor.date` for the `date` option): ```yaml # Example configuration.yaml entry @@ -21,13 +22,14 @@ sensor: - 'time' - 'date' - 'date_time' + - 'date_time_utc' - 'date_time_iso' - 'time_date' - 'time_utc' - 'beat' ``` -- **display_options** array (*Required*): The option to display. The types *date_time*, *time_date*, and *date_time_iso* shows the date and the time. The other types just the time or the date. *beat* shows the [Swatch Internet Time](https://www.swatch.com/en_us/internet-time). +- **display_options** array (*Required*): The option to display. The types *date_time*, *date_time_utc*, *time_date*, and *date_time_iso* shows the date and the time. The other types just the time or the date. *beat* shows the [Swatch Internet Time](https://www.swatch.com/en_us/internet-time).

    diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index acdac91e7733..6df5a78919ae 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -1,11 +1,11 @@ --- -title: "Timer" -description: "Instructions on how to integrate timers into Home Assistant." -logo: home-assistant.png +title: Timer +description: Instructions on how to integrate timers into Home Assistant. ha_category: - Automation ha_release: 0.57 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: timer --- The `timer` integration aims to simplify automations based on (dynamic) durations. @@ -54,11 +54,11 @@ Pick an icon that you can find on [materialdesignicons.com](https://materialdesi | Event | Description | | --------------- | ----------- | -| timer.cancelled | Fired when a timer has been canceled | -| timer.finished | Fired when a timer has completed | -| timer.started | Fired when a timer has been started| -| timer.restarted | Fired when a timer has been restarted | -| timer.paused | Fired when a timer has been paused | +| `timer.cancelled` | Fired when a timer has been canceled | +| `timer.finished` | Fired when a timer has completed | +| `timer.started` | Fired when a timer has been started| +| `timer.restarted` | Fired when a timer has been restarted | +| `timer.paused` | Fired when a timer has been paused | ## Services @@ -96,6 +96,10 @@ Manually finish a running timer earlier than scheduled. You can also use `entity | ---------------------- | -------- | ----------- | | `entity_id` | no | Name of the entity to take action, e.g., `timer.timer0`. | +### Service `timer.reload` + +Reload `timer`'s configuration without restarting Home Assistant itself. This service takes no service data attributes. + ### Use the service Select service developer tool icon **Services** from the **Developer Tools**. Choose **timer** from the list of **Domains**, select the **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. diff --git a/source/_integrations/tmb.markdown b/source/_integrations/tmb.markdown new file mode 100644 index 000000000000..8d0c85332233 --- /dev/null +++ b/source/_integrations/tmb.markdown @@ -0,0 +1,60 @@ +--- +title: Transports Metropolitans de Barcelona +description: Instructions on how to integrate TMB iBus sensor within Home Assistant. +logo: tmb.png +ha_category: + - Transport +ha_release: 0.104 +ha_iot_class: Local Polling +ha_codeowners: + - '@alemuro' +ha_domain: tmb +--- + +This sensor will provide you the remaining time, in minutes, for the next bus in a specific stop by using the [iBus service](https://www.tmb.cat/en/barcelona/tmb-ibus). + +You must create an application on [developer.tmb.cat](https://developer.tmb.cat/account/applications/public/new) to obtain the `app_id` and `app_key` values that you will need. + +Add the data to your `configuration.yaml` file as shown in the example: + +```yaml +# Example configuration.yaml entry +sensor: +- platform: tmb + app_id: !secret tmb_app_id + app_key: !secret tmb_app_key + stops: + - line: V25 + stop: 3258 +``` + +{% configuration %} +app_id: + description: Your TMB APP identifier. + required: true + type: string +app_key: + description: Your TMB APP key. + required: true + type: string +stops: + description: List of bus stops to track. + required: false + type: list + keys: + line: + description: Identifier of the line to track. + required: true + type: string + stop: + description: Stop identifier. + required: true + type: integer + name: + description: Name you want to use to identifier that stop. + required: false + type: string + default: "LINE - STOP" +{% endconfiguration %} + +Data provided by [TMB](https://tmb.cat/). diff --git a/source/_integrations/tod.markdown b/source/_integrations/tod.markdown index 6dcad276aa1f..31084a6c20c3 100644 --- a/source/_integrations/tod.markdown +++ b/source/_integrations/tod.markdown @@ -1,12 +1,12 @@ --- -title: "Times of the Day Binary Sensor" -description: "Instructions on how to integrate Times of the Day binary sensors within Home Assistant." +title: Times of the Day +description: Instructions on how to integrate Times of the Day binary sensors within Home Assistant. ha_category: - Binary Sensor ha_release: 0.89 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: tod --- The `tod` platform supports binary sensors which get their values by checking if the current time is within defined time ranges. diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index 7c82331fc4d6..7ae7a723e763 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -1,11 +1,14 @@ --- -title: "Todoist" -description: "Instructions on how to integrate Todoist into Home Assistant." +title: Todoist +description: Instructions on how to integrate Todoist into Home Assistant. logo: todoist.png ha_category: - Calendar ha_iot_class: Cloud Polling ha_release: 0.54 +ha_codeowners: + - '@boralyl' +ha_domain: todoist --- This platform allows you to connect to your [Todoist Projects](https://todoist.com) and generate binary sensors. A different sensor will be created for each individual project, or you can specify "custom" projects which match against criteria you set (more on that below). These sensors will be `on` if you have a task due in that project or `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all. All tasks get updated roughly every 15 minutes. @@ -121,7 +124,7 @@ Home Assistant does its best to [determine what task in each project is "most" i ### Services -Todoist also comes with access to a service, `calendar.todoist_new_task`. This service can be used to create a new Todoist task. You can specify labels and a project, or you can leave them blank, and the task will go to your "Inbox" project. +Todoist also comes with access to a service, `todoist.new_task`. This service can be used to create a new Todoist task. You can specify labels and a project, or you can leave them blank, and the task will go to your "Inbox" project. Here are two example JSON payloads resulting in the same task: diff --git a/source/_integrations/tof.markdown b/source/_integrations/tof.markdown index 6aba789f39e7..f56eec6bd4fb 100644 --- a/source/_integrations/tof.markdown +++ b/source/_integrations/tof.markdown @@ -1,12 +1,12 @@ --- -title: "Time of Flight sensor using VL53L1X" -description: "Instructions on how to integrate a VL53L1X ToF sensor into Home Assistant." -logo: raspberry-pi.png +title: Time of Flight +description: Instructions on how to integrate a VL53L1X ToF sensor into Home Assistant. ha_category: - DIY - Sensor -ha_release: "0.90" +ha_release: '0.90' ha_iot_class: Local Polling +ha_domain: tof --- The Time of Flight sensor uses an invisible laser to measure distance with millimeter resolution. @@ -62,7 +62,8 @@ sensor: i2c_address: 0x29 xshut: 16 ``` -Several devices may be attached and a GPIO port from RPI is used for reset. XSHUT signal is generated pulsing LOW at initialization and after that, it is kept HIGH all time. This version uses VL53L1X long-range mode that may reach up to 4 meters. + +Several devices may be attached and a GPIO port from Raspberry Pi is used for reset. XSHUT signal is generated pulsing LOW at initialization and after that, it is kept HIGH all time. This version uses VL53L1X long-range mode that may reach up to 4 meters. ## Directions for installing i2c on Raspberry Pi @@ -75,7 +76,7 @@ $ sudo raspi-config Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. -Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: +Install dependencies for use the `smbus-cffi` module and enable your `homeassistant` user to join the _i2c_ group: ```bash # pi user environment: Install i2c dependencies and utilities diff --git a/source/_integrations/tomato.markdown b/source/_integrations/tomato.markdown index 8bea21703807..9cbaabdc8165 100644 --- a/source/_integrations/tomato.markdown +++ b/source/_integrations/tomato.markdown @@ -1,13 +1,13 @@ --- -title: "Tomato" -description: "Instructions on how to integrate Tomato routers into Home Assistant." -logo: tomato.png +title: Tomato +description: Instructions on how to integrate Tomato routers into Home Assistant. ha_category: - Presence Detection ha_release: pre 0.7 +ha_domain: tomato --- -The `tomato` platform requires an extra config variable called `http_id`. The +The `tomato` platform requires an extra configuration variable called `http_id`. The value can be obtained by logging in to the Tomato admin interface and search for `http_id` in the page source code. @@ -44,7 +44,7 @@ ssl: type: boolean default: false verify_ssl: - description: "If SSL verification for https resources needs to be turned off (for self-signed certs, etc.) this can take on boolean values `false` or `true` or you can pass a location on the device where a certificate can be used for verification e.g., `/mnt/NAS/router_cert.pem`." + description: "If SSL verification for HTTPS resources needs to be turned off (for self-signed certs, etc.) this can take on boolean values `false` or `true` or you can pass a location on the device where a certificate can be used for verification e.g., `/mnt/NAS/router_cert.pem`." required: false type: [string, boolean] default: true diff --git a/source/_integrations/toon.markdown b/source/_integrations/toon.markdown index ca9b5c45d6a8..59ffe07b3974 100644 --- a/source/_integrations/toon.markdown +++ b/source/_integrations/toon.markdown @@ -1,6 +1,6 @@ --- -title: "Toon" -description: "Instructions on how to integrate Toon within Home Assistant." +title: Toon +description: Instructions on how to integrate Toon within Home Assistant. ha_category: - Climate - Binary Sensor @@ -9,6 +9,10 @@ ha_category: ha_release: 0.56 logo: toon.png ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@frenck' +ha_domain: toon --- The `toon` integration platform can be used to control your Toon thermostat. This integration adds a climate device for your Toon thermostat, sensors for power and gas consumption, sensors for solar production and several binary sensors for things like boiler burner on/off, hot tap water and boiler health status. diff --git a/source/_integrations/torque.markdown b/source/_integrations/torque.markdown index b4403d7f0e9c..fb72efccf268 100644 --- a/source/_integrations/torque.markdown +++ b/source/_integrations/torque.markdown @@ -1,11 +1,12 @@ --- -title: "Torque (OBD2)" -description: "Instructions on how to integrate Torque sensors into Home Assistant." +title: Torque +description: Instructions on how to integrate Torque sensors into Home Assistant. logo: torque.png ha_category: - Car -ha_release: "0.10" +ha_release: '0.10' ha_iot_class: Cloud Polling +ha_domain: torque --- The `torque` platform will allow you to monitor [Torque](https://torque-bhp.com/) data relayed from a Bluetooth OBD2 stick via the Torque mobile application. diff --git a/source/_integrations/totalconnect.markdown b/source/_integrations/totalconnect.markdown index 0116385285cb..8b041f4a88f4 100644 --- a/source/_integrations/totalconnect.markdown +++ b/source/_integrations/totalconnect.markdown @@ -1,26 +1,40 @@ --- -title: "Honeywell TotalConnect Alarm Control Panel" -description: "Instructions on how to integrate TotalConnect alarms into Home Assistant." +title: Honeywell Total Connect Alarm +description: Instructions on how to integrate TotalConnect alarms into Home Assistant. logo: honeywell-tc.png ha_category: - Alarm + - Binary Sensor ha_release: 0.42 +ha_codeowners: + - '@austinmroczek' +ha_domain: totalconnect --- -The `totalconnect` platform provides connectivity with the Honeywell TotalConnect alarm systems used by many alarm companies. +The `totalconnect` integration provides connectivity with the Honeywell TotalConnect alarm systems used by many alarm companies. -This platform supports the following services: `alarm_arm_away`, `alarm_arm_home`, `alarm_arm_night` and `alarm_disarm`. +If you have issues running this component, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Raspbian, run the command `apt install libxml2-dev libxmlsec1-dev` with sudo. + +## Alarm Control Panel + +The integration provides an Alarm Control Panel for each TotalConnect location. It uses the name of your location from TotalConnect. For example, if your location name in TotalConnect is "Home", then you will get `alarm_control_panel.home` in Home Assistant. + +The alarm control panel supports the following services: `alarm_arm_away`, `alarm_arm_home`, `alarm_arm_night` and `alarm_disarm`. The `triggered` state also provides a state attribute called `triggered_source` giving more detail on what triggered the alarm: - `Police/Medical` is when sensors detected a burglar and/or a person pushed the Police or Medical button - `Fire/Smoke` is when fire or smoke is detected, or a person pushed the Fire button - `Carbon Monoxide` is when carbon monoxide is detected -If you have issues running this component, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Raspbian, run the command `apt install libxml2-dev libxmlsec1-dev` with sudo. +## Binary Sensor + +The integration provides a Binary Sensor for each TotalConnect zone. To see zones in TotalConnect "fault" status, your TotalConnect account must have "Sensor Events" enabled. Your alarm monitoring company may charge an extra fee to enable this. + +The TotalConnect API has limited zone type information. Home Assistant device class `door` is assigned to TotalConnect door, window, perimeter, motion sensor, and most alarm panel buttons. The sensor will appear as `True` if the door is open (either fault or triggered in TotalConnect) and `False` otherwise. Device class `smoke` is assigned to TotalConnect smoke detectors and buttons with physical alarm panel "Response Type" setting of "Fire No Verification". The sensor will appear as `True` if smoke is detected. Device class `gas` is assigned to TotalConnect carbon monoxide detectors. The sensor will appear as `True` if gas is detected. ## Configuration -To enable this, add the following lines to your `configuration.yaml`: +To enable TotalConnect, add the following lines to your `configuration.yaml`: ```yaml totalconnect: diff --git a/source/_integrations/touchline.markdown b/source/_integrations/touchline.markdown index 714f000c78a8..32353bd9fe9a 100644 --- a/source/_integrations/touchline.markdown +++ b/source/_integrations/touchline.markdown @@ -1,11 +1,12 @@ --- -title: "Roth Touchline" -description: "Instructions on how to integrate Roth Touchline within Home Assistant." +title: Roth Touchline +description: Instructions on how to integrate Roth Touchline within Home Assistant. logo: roth.png ha_category: - Climate ha_release: 0.61 ha_iot_class: Local Polling +ha_domain: touchline --- The `touchline` climate platform let you control [ROTH Touchline](http://www.roth-nordic.dk/dk/roth-touchline-tradloes-gulvvarmeregulering-1475.htm) floor heating thermostats from Roth. diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index 3332b859ee27..bfe2e596fbf2 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -1,6 +1,6 @@ --- -title: "TP-Link Smart Home Devices" -description: "Instructions on integrating TP-Link Smart Home Devices to Home Assistant." +title: TP-Link Kasa Smart +description: Instructions on integrating TP-Link Smart Home Devices to Home Assistant. logo: tp-link.png ha_category: - Hub @@ -8,6 +8,10 @@ ha_category: - Light ha_release: 0.89 ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@rytilahti' +ha_domain: tplink --- The `tplink` integration allows you to control your [TP-Link Smart Home Devices](https://www.tp-link.com/kasa-smart/) such as smart plugs and smart bulbs. @@ -17,7 +21,7 @@ There is currently support for the following device types within Home Assistant: - **Light** - **Switch** -In order to activate the support, you will have to enable the integration inside the config panel. +In order to activate the support, you will have to enable the integration inside the configuration panel. The supported devices in your network are automatically discovered, but if you want to control devices residing in other networks you will need to configure them manually as shown below. ## Supported Devices @@ -27,16 +31,20 @@ The following devices are known to work with this component. ### Plugs +Plugs are type `switch` when autodiscovery has been disabled. + - HS100 - HS103 - HS105 -- HS110 +- HS110 (This device is capable or reporting energy usage data to template sensors) -### Multi-Plug Strips +### Strip (Multi-Plug) - HS107 (indoor 2-outlet) -- HS300 (powerstrip 6-outlet) -- KP400 (outdoot 2-outlet) +- HS300 (powerstrip 6-outlet) (This device is capable or reporting energy usage data to template sensors) +- KP303 (powerstrip 3-outlet) +- KP400 (outdoor 2-outlet) +- KP200 (indoor 2-outlet) ### Wall Switches @@ -128,7 +136,11 @@ tplink: ## Extracting Energy Sensor data -In order to get the power consumption readings from supported devices, you'll have to create a [template sensor](/integrations/switch.template/). +Devices that are confirmed to support Consumption Reading; +1. HS110 +2. HS300 + +In order to get the power consumption readings from a TP-Link HS110 device, you'll have to create a [template sensor](/integrations/template/). In the example below, change all of the `my_tp_switch`'s to match your device's entity ID. {% raw %} diff --git a/source/_integrations/tplink_lte.markdown b/source/_integrations/tplink_lte.markdown index 8089adc25ff3..8f435c97cf22 100644 --- a/source/_integrations/tplink_lte.markdown +++ b/source/_integrations/tplink_lte.markdown @@ -1,12 +1,13 @@ --- -title: "TP-Link LTE" -description: "Instructions on how to integrate your TP-Link LTE routers within Home Assistant." +title: TP-Link LTE +description: Instructions on how to integrate your TP-Link LTE routers within Home Assistant. logo: tp-link.png ha_release: 0.83 ha_category: - Network - Notifications ha_iot_class: Local Polling +ha_domain: tplink_lte --- The TP-Link LTE integration for Home Assistant allows you to observe and control TP-Link LTE routers, currently only tested with TL-MR6400 (firmware 1.4.0). diff --git a/source/_integrations/traccar.markdown b/source/_integrations/traccar.markdown index d7ee6a91cf28..2a4ace76419a 100644 --- a/source/_integrations/traccar.markdown +++ b/source/_integrations/traccar.markdown @@ -1,14 +1,18 @@ --- -title: "Traccar GPS tracker" -description: "Instructions how to use Traccar GPS tracker to track devices in Home Assistant." +title: Traccar +description: Instructions how to use Traccar GPS tracker to track devices in Home Assistant. logo: traccar.png ha_release: 0.83 ha_category: - Presence Detection ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@ludeeus' +ha_domain: traccar --- -`Traccar` uses GPS for tracking and has support for over 1500 different types of devices. One option is to track the [Traccar Client](https://www.traccar.org/client/) app on a smartphone via `webhook`. The other option is to connect to an existing [Traccar Server](https://www.traccar.org/server/) installation which is also available as Hass.io addon. +`Traccar` uses GPS for tracking and has support for over 1500 different types of devices. One option is to track the [Traccar Client](https://www.traccar.org/client/) app on a smartphone via `webhook`. The other option is to connect to an existing [Traccar Server](https://www.traccar.org/server/) installation which is also available as Home Assistant add-on. ## Traccar Client diff --git a/source/_integrations/trackr.markdown b/source/_integrations/trackr.markdown index d5174a0721d0..ff8135be05f9 100644 --- a/source/_integrations/trackr.markdown +++ b/source/_integrations/trackr.markdown @@ -1,14 +1,13 @@ --- -title: "TrackR" -description: "Instructions on how to use TrackR to track devices in Home Assistant." -logo: trackr.png +title: TrackR +description: Instructions on how to use TrackR to track devices in Home Assistant. ha_release: 0.36 ha_category: - Presence Detection ha_iot_class: Cloud Polling +ha_domain: trackr --- - The `trackr` platform allows you to detect presence using [TrackR](https://www.thetrackr.com/) devices. The official TrackR mobile app handles the tracking of the TrackR devices using your phones Bluetooth and GPS. @@ -33,4 +32,3 @@ password: required: true type: string {% endconfiguration %} - diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown index 4a43f7baa50a..d3fdcbd1c18b 100644 --- a/source/_integrations/tradfri.markdown +++ b/source/_integrations/tradfri.markdown @@ -1,8 +1,7 @@ --- -title: "IKEA Trådfri (Tradfri)" -description: "Access and control your IKEA Trådfri Gateway and its connected Zigbee-based devices." +title: IKEA TRÅDFRI (TRADFRI) +description: Access and control your IKEA Trådfri Gateway and its connected Zigbee-based devices. featured: true -logo: ikea.svg ha_iot_class: Local Polling ha_config_flow: true ha_release: 0.43 @@ -11,9 +10,12 @@ ha_category: - Light - Sensor - Switch +ha_codeowners: + - '@ggravlingen' +ha_domain: tradfri --- -The `tradfri` integration allows you to connect your IKEA Trådfri Gateway to Home Assistant. The gateway can control compatible Zigbee-based lights (certified ZigBee Light Link products) connected to it. Home Assistant will automatically discover the gateway's presence on your local network if `discovery:` is present in your `configuration.yaml` file. +The `tradfri` integration allows you to connect your IKEA Trådfri Gateway to Home Assistant. The gateway can control compatible Zigbee-based lights (certified Zigbee Light Link products) connected to it. Home Assistant will automatically discover the gateway's presence on your local network if `discovery:` is present in your `configuration.yaml` file. You will be prompted to configure the gateway through the Home Assistant interface. The configuration process is very simple: when prompted, enter the security key printed on the sticker on the bottom of the IKEA Trådfri Gateway, then click *configure*. @@ -45,18 +47,22 @@ allow_tradfri_groups: ## Troubleshooting +### Incorrect security key + +`Fatal DTLS error: code 20` might indicate a missing or incorrect security key. Pay close attention as e.g., "I" and "l" can easily be confused. + ### Firmware updates After updating your IKEA Trådfri Gateway firmware it might be necessary to repeat the configuration process. One error you might experience after a firmware update is `Fatal DTLS error: code 115`. If you encounter problems: - when configured using the integration: remove the integration through Settings > Integrations > Tradfri > delete (trash can icon) -- with manual configuration: delete the `.tradfri_psk.conf` file in your `/.homeassistant` directory (`/config` directory if using Hass.io or Docker) +- with manual configuration: delete the `.tradfri_psk.conf` file in your `/config` directory (`/.homeassistant` directory if using Home Assistant Core) Then restart Home Assistant. When prompted, enter the security key and click *configure*, just like during initial setup. ### Compilation issues

    - This does not apply to Hass.io or Docker. + This does not apply to Home Assistant running in Docker Containers, including the default Home Assistant install.
    Please make sure you have `autoconf` installed (`$ sudo apt-get install autoconf`) if you want to use this component. Also, installing some dependencies might take considerable time (more than one hour) on slow devices. diff --git a/source/_integrations/trafikverket_train.markdown b/source/_integrations/trafikverket_train.markdown index 383e66fa81d1..4a28136f4f4d 100644 --- a/source/_integrations/trafikverket_train.markdown +++ b/source/_integrations/trafikverket_train.markdown @@ -1,12 +1,15 @@ --- -title: "Trafikverket Train" -description: "Instructions how to integrate Trafikverket Train within Home Assistant." +title: Trafikverket Train +description: Instructions how to integrate Trafikverket Train within Home Assistant. logo: trafikverket.png ha_category: - Transport - Sensor ha_release: 0.96 ha_iot_class: Cloud Polling +ha_codeowners: + - '@endor-force' +ha_domain: trafikverket_train --- Retrieve train departure information from [Trafikverket](https://www.trafikverket.se/). diff --git a/source/_integrations/trafikverket_weatherstation.markdown b/source/_integrations/trafikverket_weatherstation.markdown index 94b9fa8a3204..49b25451d167 100644 --- a/source/_integrations/trafikverket_weatherstation.markdown +++ b/source/_integrations/trafikverket_weatherstation.markdown @@ -1,11 +1,12 @@ --- -title: "Trafikverket WeatherStation" -description: "Instructions how to integrate Trafikverket WeatherStation within Home Assistant." +title: Trafikverket Weather Station +description: Instructions how to integrate Trafikverket WeatherStation within Home Assistant. logo: trafikverket.png ha_category: - Weather ha_release: 0.66 ha_iot_class: Cloud Polling +ha_domain: trafikverket_weatherstation --- Showing weather information provided by [Trafikverket](https://www.trafikverket.se/) weather stations in Sweden. diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown index 8981e96f6fce..f5a0bfc72dfc 100644 --- a/source/_integrations/transmission.markdown +++ b/source/_integrations/transmission.markdown @@ -1,13 +1,17 @@ --- -title: "Transmission" -description: "Instructions on how to integrate Transmission within Home Assistant." -logo: transmission.png +title: Transmission +description: Instructions on how to integrate Transmission within Home Assistant. ha_category: - Downloading - Switch - Sensor ha_release: 0.87 ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@engrbm87' + - '@JPHutchins' +ha_domain: transmission --- The `transmission` integration allows you to monitor your downloads with [Transmission](https://www.transmissionbt.com/) from within Home Assistant and setup automation based on the information. @@ -70,18 +74,18 @@ scan_interval: The Transmission Integration will add the following sensors and switches. Sensors: -- current_status: The status of your Transmission daemon. -- download_speed: The current download speed [MB/s]. -- upload_speed: The current upload speed [MB/s]. -- active_torrents: The current number of active torrents. -- paused_torrents: The current number of paused torrents. -- total_torrents: The total number of torrents present in the client. -- started_torrents: The current number of started torrents (downloading). -- completed_torrents: The current number of completed torrents (seeding) +- transmission_current_status: The status of your Transmission daemon. +- transmission_download_speed: The current download speed [MB/s]. +- transmission_upload_speed: The current upload speed [MB/s]. +- transmission_active_torrents: The current number of active torrents. +- transmission_paused_torrents: The current number of paused torrents. +- transmission_total_torrents: The total number of torrents present in the client. +- transmission_started_torrents: The current number of started torrents (downloading). +- transmission_completed_torrents: The current number of completed torrents (seeding) Switches: -- on_off: A switch to start/stop all torrents -- turtle_mode: A switch to enable turtle mode. +- transmission_switch: A switch to start/stop all torrents +- transmission_turtle_mode: A switch to enable turtle mode. ## Event Automation @@ -115,12 +119,14 @@ Example of configuration of an automation with completed torrents: ### Service `add_torrent` -Adds a new torrent to download. It can either be a URL (http, https or ftp), magnet link or a local file (make sure that the path is [white listed](/docs/configuration/basic/#whitelist_external_dirs)). +Adds a new torrent to download. It can either be a URL (HTTP, HTTPS or FTP), magnet link or a local file (make sure that the path is [white listed](/docs/configuration/basic/#whitelist_external_dirs)). | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | +| `name` | no | Name of the configured instance | `torrent` | no | Torrent to download + ## Templating ### Sensor `started_torrents` diff --git a/source/_integrations/transport_nsw.markdown b/source/_integrations/transport_nsw.markdown index a98c96f938a2..8d2cbaf7d092 100644 --- a/source/_integrations/transport_nsw.markdown +++ b/source/_integrations/transport_nsw.markdown @@ -1,11 +1,12 @@ --- -title: "Transport NSW" -description: "Instructions on how to integrate timetable data for Transport NSW (Australia) within Home Assistant." +title: Transport NSW +description: Instructions on how to integrate timetable data for Transport NSW (Australia) within Home Assistant. logo: transport_nsw.png ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.81 +ha_domain: transport_nsw --- The `transport_nsw` sensor will give you the time until the next departure from a Transport NSW stop for bus, train, light rail or ferry. @@ -46,7 +47,7 @@ route: required: false type: string destination: - description: Useful for ferry or train stops to filter the destination of the sensor, e.g. `Circular Quay`. + description: Useful for ferry or train stops to filter the destination of the sensor, e.g., `Circular Quay`. required: false type: string name: diff --git a/source/_integrations/travisci.markdown b/source/_integrations/travisci.markdown index b7c661fd9ecd..d4089dace5e8 100644 --- a/source/_integrations/travisci.markdown +++ b/source/_integrations/travisci.markdown @@ -1,11 +1,11 @@ --- -title: "Travis-CI Sensor" -description: "Instructions on how to integrate the test build results reported by Travis-CI within Home Assistant." -logo: travisci.svg +title: Travis-CI +description: Instructions on how to integrate the test build results reported by Travis-CI within Home Assistant. ha_category: - Sensor ha_release: 0.56 ha_iot_class: Cloud Polling +ha_domain: travisci --- With this sensor platform, you will be able to integrate the test build results reported by [Travis-CI](https://travis-ci.org/) working within Home Assistant. diff --git a/source/_integrations/trend.markdown b/source/_integrations/trend.markdown index 5999eef5cb85..83ffcda9d659 100644 --- a/source/_integrations/trend.markdown +++ b/source/_integrations/trend.markdown @@ -1,12 +1,12 @@ --- -title: "Trend Binary Sensor" -description: "Instructions on how to integrate Trend binary sensors into Home Assistant." +title: Trend +description: Instructions on how to integrate Trend binary sensors into Home Assistant. ha_category: - Utility -logo: home-assistant.png ha_release: 0.28 ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: trend --- The `trend` platform allows you to create sensors which show the trend of diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index 0cfbe44a62c2..ce1d463da841 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -1,7 +1,10 @@ --- -title: "Text-to-Speech (TTS)" -description: "Instructions on how to set up Text-to-Speech (TTS) with Home Assistant." +title: Text-to-Speech (TTS) +description: Instructions on how to set up Text-to-Speech (TTS) with Home Assistant. ha_release: 0.35 +ha_codeowners: + - '@pvizeli' +ha_domain: tts --- Text-to-Speech (TTS) enables Home Assistant to speak to you. @@ -18,7 +21,7 @@ tts:
    -Depending on your setup, you might need to set a base URL (`base_url`) inside the [http component](/integrations/http/) or in the parameters of this component. +Depending on your setup, you might need to set a base URL (`base_url`) inside the [HTTP component](/integrations/http/) or in the parameters of this component.
    @@ -41,7 +44,7 @@ time_memory: type: integer default: 300 base_url: - description: A base URL to use *instead* of the one set in the [http component](/integrations/http/). It is used as-is by the `tts` component. In particular, you need to include the protocol scheme `http://` or `https://` and the correct port number. They will not be automatically added for you. + description: A base URL to use *instead* of the one set in the [HTTP component](/integrations/http/). It is used as-is by the `tts` component. In particular, you need to include the protocol scheme `http://` or `https://` and the correct port number. They will not be automatically added for you. required: false type: string default: value of ``http.base_url`` @@ -73,7 +76,7 @@ In the above example, `base_url` is custom to this particular TTS platform confi ## When do you need to set `base_url` here? -The general answer is "whenever the global `base_url` set in [http component](/integrations/http/) is not adequate to allow the `say` service to run". The `say` service operates by generating a media file that contains the speech corresponding to the text passed to the service. Then the `say` service sends a message to the media device with a URL pointing to the file. The device fetches the media file at the URL and plays the media. Some combinations of a media device, network configuration and Home Assistant configuration can make it so that the device cannot fetch the media file. +The general answer is "whenever the global `base_url` set in [HTTP component](/integrations/http/) is not adequate to allow the `say` service to run". The `say` service operates by generating a media file that contains the speech corresponding to the text passed to the service. Then the `say` service sends a message to the media device with a URL pointing to the file. The device fetches the media file at the URL and plays the media. Some combinations of a media device, network configuration and Home Assistant configuration can make it so that the device cannot fetch the media file. The following sections describe some of the problems encountered with media devices. @@ -81,7 +84,7 @@ The following sections describe some of the problems encountered with media devi This problem occurs when your Home Assistant instance is configured to be accessed through SSL, and you are using a self-signed certificate. -The `tts` service will send an `https://` URL to the media device, which will check the certificate, and reject it. So it won't play your file. If you could make the device accept your certificate, it would play the file. However, many media devices do not allow changing settings to accept self-signed certificates. Ultimately, your option may be to serve files to the device as `http://` rather than `https://`. To do this, you *could* change the `base_url` setting in [http component](/integrations/http/), but that would turn off SSL for all services that use `base_url`. Instead, setting a `base_url` for the `tts` service allows turning off SSL only for this component. +The `tts` service will send an `https://` URL to the media device, which will check the certificate, and reject it. So it won't play your file. If you could make the device accept your certificate, it would play the file. However, many media devices do not allow changing settings to accept self-signed certificates. Ultimately, your option may be to serve files to the device as `http://` rather than `https://`. To do this, you *could* change the `base_url` setting in [HTTP component](/integrations/http/), but that would turn off SSL for all services that use `base_url`. Instead, setting a `base_url` for the `tts` service allows turning off SSL only for this component. ### Google cast devices @@ -91,7 +94,7 @@ The Google cast devices (Google Home, Chromecast, etc.) present the following pr * They do not work with URLs that contain hostnames established by local naming means. Let's say your Home Assistant instance is running on a machine made known locally as `ha`. All your machines on your local network are able to access it as `ha`. However, try as you may, your cast device won't download the media files from your `ha` machine. That's because your cast device ignores your local naming setup. In this example, the `say` service creates a URL like `http://ha/path/to/media.mp3` (or `https://...` if you are using SSL). Setting a `base_url` that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname. -* An alternative way to force Google cast devices to use internal DNS is to block them from accessing Google DNS at the firewall/router level. This would be useful in the case, for example, where your internal IP of HASS is a private IP and you have your internal DNS server (quite often a split-brain DNS scenario). This method works on both Google Home Mini and Google Chromecasts. +* An alternative way to force Google cast devices to use internal DNS is to block them from accessing Google DNS at the firewall/router level. This would be useful in the case, for example, where your internal IP of Home Assistant is a private IP and you have your internal DNS server (quite often a split-brain DNS scenario). This method works on both Google Home Mini and Google Chromecasts. ## Service say @@ -139,11 +142,11 @@ data_template: The integration has two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period. -## REST Api +## REST API -### POST /api/tts_get_url +### POST `/api/tts_get_url` -Returns an URL to the generated TTS file. Platform and message are required. +Returns a URL to the generated TTS file. Platform and message are required. ```json { diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index 23a420897166..bd95d59a8558 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -1,6 +1,6 @@ --- -title: "Tuya" -description: "Instructions on how to setup the Tuya hub within Home Assistant." +title: Tuya +description: Instructions on how to setup the Tuya hub within Home Assistant. logo: tuya.png ha_category: - Hub @@ -12,6 +12,7 @@ ha_category: - Switch ha_iot_class: Cloud Polling ha_release: 0.74 +ha_domain: tuya --- The `tuya` integration is the main integration to integrate all [Tuya Smart](https://www.tuya.com) related platforms. You will need your Tuya account information (username, password and account country code) to discover and control devices which related to your account. diff --git a/source/_integrations/twentemilieu.markdown b/source/_integrations/twentemilieu.markdown index df54c4ab44f1..a9bcecc16d69 100644 --- a/source/_integrations/twentemilieu.markdown +++ b/source/_integrations/twentemilieu.markdown @@ -1,6 +1,6 @@ --- -title: "Twente Milieu" -description: "Instructions on how to integrate Twente Milieu with Home Assistant." +title: Twente Milieu +description: Instructions on how to integrate Twente Milieu with Home Assistant. logo: twentemilieu.png ha_category: - Sensor @@ -8,6 +8,9 @@ ha_category: ha_release: 0.97 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@frenck' +ha_domain: twentemilieu --- The Twente Milieu integration allows you to track the next scheduled waste diff --git a/source/_integrations/twilio.markdown b/source/_integrations/twilio.markdown index aefa73638604..b06dbfd1c630 100644 --- a/source/_integrations/twilio.markdown +++ b/source/_integrations/twilio.markdown @@ -1,10 +1,11 @@ --- -title: "Twilio" -description: "Instructions on how to add Twilio notifications to Home Assistant." -logo: twilio.png +title: Twilio +description: Instructions on how to add Twilio notifications to Home Assistant. ha_category: - Hub -ha_release: "0.40" +ha_release: '0.40' +ha_config_flow: true +ha_domain: twilio --- The `twilio` integration enables the sending of notifications via SMS and the creation of calls with [Twilio](https://twilio.com). @@ -36,9 +37,9 @@ auth_token: ### Usage -After configuring the base Twilio component, add and configure either or both of the [twilio SMS](/integrations/twilio_sms) and [twilio Phone](/integrations/twilio_call) integrations to utilize the notification functionality. +After configuring the base Twilio component, add and configure either or both of the [Twilio SMS](/integrations/twilio_sms) and [Twilio Phone](/integrations/twilio_call) integrations to utilize the notification functionality. -To be able to receive events from Twilio, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP integration ([docs](/integrations/http/#base_url)). +To be able to receive events from Twilio, your Home Assistant instance needs to be accessible from the web and you need to have the `base_url` configured for the HTTP integration ([documentation](/integrations/http/#base_url)). To set it up, go to the integrations page in the configuration screen and find Twilio. Click on configure. Follow the instructions on the screen to configure Twilio. diff --git a/source/_integrations/twilio_call.markdown b/source/_integrations/twilio_call.markdown index bdbc0ef6eb3c..b9eeec9070c3 100644 --- a/source/_integrations/twilio_call.markdown +++ b/source/_integrations/twilio_call.markdown @@ -1,10 +1,12 @@ --- -title: "Twilio Call" -description: "Instructions on how to add user notifications to Home Assistant." -logo: twilio.png +title: Twilio Call +description: Instructions on how to add user notifications to Home Assistant. ha_category: - Notifications ha_release: 0.37 +ha_codeowners: + - '@robbiet480' +ha_domain: twilio_call --- The `twilio_call` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com). diff --git a/source/_integrations/twilio_sms.markdown b/source/_integrations/twilio_sms.markdown index 94b4b59edd8e..780eec8f3724 100644 --- a/source/_integrations/twilio_sms.markdown +++ b/source/_integrations/twilio_sms.markdown @@ -1,10 +1,12 @@ --- -title: "Twilio SMS" -description: "Instructions on how to add user notifications to Home Assistant." -logo: twilio.png +title: Twilio SMS +description: Instructions on how to add user notifications to Home Assistant. ha_category: - Notifications -ha_release: "0.20" +ha_release: '0.20' +ha_codeowners: + - '@robbiet480' +ha_domain: twilio_sms --- The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). diff --git a/source/_integrations/twitch.markdown b/source/_integrations/twitch.markdown index af97ab662662..b399b0dbbf0e 100644 --- a/source/_integrations/twitch.markdown +++ b/source/_integrations/twitch.markdown @@ -1,18 +1,32 @@ --- -title: "Twitch" -description: "Instructions on how to integrate Twitch sensors into Home Assistant." +title: Twitch +description: Instructions on how to integrate Twitch sensors into Home Assistant. logo: twitch.png ha_category: - Social -ha_release: "0.10" +ha_release: '0.10' ha_iot_class: Cloud Polling +ha_domain: twitch --- The `twitch` platform will allow you to monitor [Twitch](https://www.twitch.tv/) channel status from within Home Assistant and setup automation based on the information. -## Setup +## Setup Client ID -Create a new app at "Register Your Application" in the [Twitch developer portal](https://glass.twitch.tv/console/apps). Then get the **Client ID** for the new app. +Create a new app at "Register Your Application" in the [Twitch developer portal](https://glass.twitch.tv/console/apps). Then get the __Client ID__ for the new application. + +## Setup OAuth Token + +To enable the follow and subscription attributes, the OAuth token is needed to get the right permissions on the Twitch API. +If you don't need those, ignore the configuration setting: `token`. + +To get the OAuth token, visit the [OAuth Token Generator](https://twitchapps.com/tokengen/#), insert your __Client ID__ and `user_read user_subscriptions` inside __scopes__. + +Before clicking Summit (the broken image below the form), visit the [Twitch dev console](https://dev.twitch.tv/console) and add a new application. + +As __OAuth Redirect URLs__ add `https://twitchapps.com/tokengen/` and click __Create__ +. +Back at the Token Generator, click the __Summit__ button, accept the consent screen and get your __OAuth Token__. ## Configuration @@ -33,6 +47,10 @@ client_id: description: Your Twitch client ID. required: true type: string +token: + description: Your Twitch OAuth Token. + required: false + type: string channels: description: List of channels names required: true diff --git a/source/_integrations/twitter.markdown b/source/_integrations/twitter.markdown index 3ecf12d08bbd..e63d4287f46e 100644 --- a/source/_integrations/twitter.markdown +++ b/source/_integrations/twitter.markdown @@ -1,13 +1,12 @@ --- -title: "Twitter" -description: "Instructions on how to add Twitter notifications to Home Assistant." -logo: twitter.png +title: Twitter +description: Instructions on how to add Twitter notifications to Home Assistant. ha_category: - Notifications ha_release: 0.12 +ha_domain: twitter --- - The `twitter` notification platform uses [Twitter](https://twitter.com) to deliver notifications from Home Assistant. ## Setup diff --git a/source/_integrations/ubee.markdown b/source/_integrations/ubee.markdown index fa0ad03bd25a..51683c4eeb3e 100644 --- a/source/_integrations/ubee.markdown +++ b/source/_integrations/ubee.markdown @@ -1,10 +1,13 @@ --- -title: "Ubee Router" -description: "Instructions on how to integrate Ubee routers into Home Assistant." +title: Ubee Router +description: Instructions on how to integrate Ubee routers into Home Assistant. logo: ubee.png ha_category: - Presence Detection ha_release: 0.89 +ha_codeowners: + - '@mzdrale' +ha_domain: ubee --- This platform offers presence detection by looking at connected devices to a [Ubee Router](https://www.ubeeinteractive.com/). @@ -22,12 +25,12 @@ device_tracker: {% configuration %} model: - description: Ubee Router model, e.g. `EVW32C-0N`. If omitted, model will be detected automatically. + description: Ubee Router model, e.g., `EVW32C-0N`. If omitted, model will be detected automatically. required: false default: detect type: string host: - description: The IP address of your router, e.g. `192.168.1.1`. + description: The IP address of your router, e.g., `192.168.1.1`. required: true type: string username: @@ -41,11 +44,14 @@ password: {% endconfiguration %} Supported models: -- EVW3200-Wifi -- EVW320B -- EVW321B -- EVW32C-0N -- EVW3226@UPC + +- Ambit EVW320B +- Ambit EVW321B +- Ubee DDW36C +- Ubee DVW32CB +- Ubee EVW3200-Wifi +- Ubee EVW3226 (UPC) +- Ubee EVW32C-0N
    diff --git a/source/_integrations/ubus.markdown b/source/_integrations/ubus.markdown index e2ced94e0756..79ffd41b4882 100644 --- a/source/_integrations/ubus.markdown +++ b/source/_integrations/ubus.markdown @@ -1,15 +1,14 @@ --- -title: "OpenWRT (ubus)" -description: "Instructions on how to integrate OpenWRT routers into Home Assistant." +title: OpenWrt (ubus) +description: Instructions on how to integrate OpenWRT routers into Home Assistant. logo: openwrt.png ha_category: - Presence Detection ha_release: 0.7.6 +ha_domain: ubus --- -_This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/integrations/openwrt)._ - -This is a presence detection scanner for [OpenWRT](https://openwrt.org/) using [ubus](https://wiki.openwrt.org/doc/techref/ubus). It scans for changes in `hostapd.*`, which will detect and report changes in devices connected to the access point on the router. +This is a presence detection scanner for [OpenWrt](https://openwrt.org/) using [ubus](https://wiki.openwrt.org/doc/techref/ubus). It scans for changes in `hostapd.*`, which will detect and report changes in devices connected to the access point on the router. Before this scanner can be used you have to install the ubus RPC package on OpenWRT: @@ -17,7 +16,7 @@ Before this scanner can be used you have to install the ubus RPC package on Open opkg install rpcd-mod-file ``` -For OpenWRT version 18.06.x the package uhttpd-mod-ubus should also be installed: +For OpenWrt version 18.06.x the package uhttpd-mod-ubus should also be installed: ```bash opkg install uhttpd-mod-ubus @@ -104,7 +103,7 @@ logger: ```bash $ tail -f home-assistant.log | grep device_tracker ``` -4. If you see a python stack trace like the following, check your configuration for correct username/password. +4. If you see a Python stack trace like the following, check your configuration for correct username/password. ```txt 17-04-28 10:43:30 INFO (MainThread) [homeassistant.loader] Loaded device_tracker from homeassistant.components.device_tracker 17-04-28 10:43:30 INFO (MainThread) [homeassistant.loader] Loaded device_tracker.ubus from homeassistant.components.device_tracker.ubus @@ -119,7 +118,7 @@ $ tail -f home-assistant.log | grep device_tracker 17-04-28 10:43:31 INFO (MainThread) [homeassistant.core] Bus:Handling 17-04-28 10:43:31 INFO (MainThread) [homeassistant.core] Bus:Handling ``` -5. If you see lines like the following repeated at intervals that correspond to the check interval from the config (12 seconds by default), then Home Assistant is correctly polling the router, and you'll need to look at what the router is sending back. +5. If you see lines like the following repeated at intervals that correspond to the check interval from the configuration (12 seconds by default), then Home Assistant is correctly polling the router, and you'll need to look at what the router is sending back. ```txt 17-04-28 10:50:34 INFO (Thread-7) [homeassistant.components.device_tracker.ubus] Checking ARP ``` diff --git a/source/_integrations/ue_smart_radio.markdown b/source/_integrations/ue_smart_radio.markdown index 58ab28445721..3055b1ba32ec 100644 --- a/source/_integrations/ue_smart_radio.markdown +++ b/source/_integrations/ue_smart_radio.markdown @@ -1,14 +1,14 @@ --- -title: "Logitech UE Smart Radio" -description: "Instructions on how to integrate a Logitech UE Smart Radio player into Home Assistant." +title: Logitech UE Smart Radio +description: Instructions on how to integrate a Logitech UE Smart Radio player into Home Assistant. logo: ueradio.png ha_category: - Media Player -ha_release: "0.60" +ha_release: '0.60' ha_iot_class: Cloud Polling +ha_domain: ue_smart_radio --- - The `ue_radio` platform allows you to control a [Logitech UE Smart Radio](https://www.uesmartradio.com) from Home Assistant. This lets you control both Logitech UE Smart Radios and Logitech Squeezebox Radios that have been updated with the UE Smart Radio update. To add your UE Smart Radio player to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/uk_transport.markdown b/source/_integrations/uk_transport.markdown index 3c2d68650eca..10247ffe3560 100644 --- a/source/_integrations/uk_transport.markdown +++ b/source/_integrations/uk_transport.markdown @@ -1,11 +1,11 @@ --- -title: "UK transport" -description: "Display the current status of UK train and bus departures." -logo: train.png +title: UK Transport +description: Display the current status of UK train and bus departures. ha_category: - Transport ha_iot_class: Cloud Polling -ha_release: "0.50" +ha_release: '0.50' +ha_domain: uk_transport --- The `uk_transport` sensor will display the time in minutes until the next departure in a specified direction from of a configured train station or bus stop. The sensor uses [transportAPI](https://www.transportapi.com/) to query live departure data and requires a developer application ID and key which can be obtained [here](https://developer.transportapi.com/). The [free tier](https://www.transportapi.com/plans/) allows 1000 requests daily, which is sufficient for a single sensor refreshing every 87 seconds. @@ -78,27 +78,36 @@ Refer to the [API reference webpage](https://developer.transportapi.com/docs?ram Attributes can be accessed using the [template sensor](/integrations/template) as per this example: +{% raw %} + ```yaml # Example configuration.yaml entry for a template sensor to access the attributes of the next departing train. - platform: template sensors: next_train_status: friendly_name: 'Next train status' - value_template: {% raw %}'{{state_attr('sensor.next_train_to_wat', 'next_trains')[0].status}}'{% endraw %} + value_template: >- + {{state_attr('sensor.next_train_to_wat', 'next_trains')[0].status}} next_trains_origin: friendly_name: 'Next train origin' - value_template: {% raw %}'{{state_attr('sensor.next_train_to_wat', 'next_trains')[0].origin_name}}'{% endraw %} + value_template: >- + {{state_attr('sensor.next_train_to_wat', 'next_trains')[0].origin_name}} next_trains_estimated: friendly_name: 'Next train estimated' - value_template: {% raw %}'{{state_attr('sensor.next_train_to_wat', 'next_trains')[0].estimated}}'{% endraw %} + value_template: >- + {{state_attr('sensor.next_train_to_wat', 'next_trains')[0].estimated}} next_trains_scheduled: friendly_name: 'Next train scheduled' - value_template: {% raw %}'{{state_attr('sensor.next_train_to_wat', 'next_trains')[0].scheduled}}'{% endraw %} + value_template: >- + {{state_attr('sensor.next_train_to_wat', 'next_trains')[0].scheduled}} next_trains_platform: friendly_name: 'Next train platform' - value_template: {% raw %}'{{state_attr('sensor.next_train_to_wat', 'next_trains')[0].platform}}'{% endraw %} + value_template: >- + {{state_attr('sensor.next_train_to_wat', 'next_trains')[0].platform}} ``` +{% endraw %} + Bus sensors require as their `origin` a bus stop ATCO code which can be found by browsing OpenStreetMap data as follows: @@ -132,20 +141,20 @@ And the template sensor for viewing the next bus attributes. sensors: next_bus_route: friendly_name: 'Next bus route' - value_template: {% raw %}'{{state_attr('sensor.next_bus_to_wantage', 'next_buses')[0].route}}'{% endraw %} + value_template: {% raw %}"{{state_attr('sensor.next_bus_to_wantage', 'next_buses')[0].route}}"{% endraw %} next_bus_direction: friendly_name: 'Next bus direction' - value_template: {% raw %}'{{state_attr('sensor.next_bus_to_wantage', 'next_buses')[0].direction}}'{% endraw %} + value_template: {% raw %}"{{state_attr('sensor.next_bus_to_wantage', 'next_buses')[0].direction}}"{% endraw %} next_bus_scheduled: friendly_name: 'Next bus scheduled' - value_template: {% raw %}'{{state_attr('sensor.next_bus_to_wantage', 'next_buses')[0].scheduled}}'{% endraw %} + value_template: {% raw %}"{{state_attr('sensor.next_bus_to_wantage', 'next_buses')[0].scheduled}}"{% endraw %} next_bus_estimated: friendly_name: 'Next bus estimated' - value_template: {% raw %}'{{state_attr('sensor.next_bus_to_wantage', 'next_buses')[0].estimated}}'{% endraw %} + value_template: {% raw %}"{{state_attr('sensor.next_bus_to_wantage', 'next_buses')[0].estimated}}"{% endraw %} ``` ## Managing API requests -If you wish to manage the rate of API requests (e.g., to disable requests when you aren't interested in travel, so that you can request updates more frequently when you do travel) set a really long `scan_interval` in the config options, and use the service `homeassistant.update_entity` to request the update of an entity, rather than waiting for the next scheduled update. +If you wish to manage the rate of API requests (e.g., to disable requests when you aren't interested in travel, so that you can request updates more frequently when you do travel) set a really long `scan_interval` in the configuration options, and use the service `homeassistant.update_entity` to request the update of an entity, rather than waiting for the next scheduled update. Powered by [transportAPI](https://www.transportapi.com/) diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 78126ea16649..70c16212a2b5 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -1,14 +1,19 @@ --- -title: "UniFi" -description: "Instructions on how to configure UniFi integration with UniFi Controller by Ubiquiti." +title: Ubiquiti UniFi +description: Instructions on how to configure UniFi integration with UniFi Controller by Ubiquiti. logo: ubiquiti.png ha_category: - Hub - Presence Detection - Switch + - Sensor ha_release: 0.81 -ha_iot_class: Local Polling -ha_qa_scale: platinum +ha_iot_class: Local Push +ha_config_flow: true +ha_quality_scale: platinum +ha_codeowners: + - '@kane610' +ha_domain: unifi --- [UniFi](https://unifi-sdn.ubnt.com/) by [Ubiquiti Networks, inc.](https://www.ubnt.com/) is a software that binds gateways, switches and wireless access points together with one graphical front end. @@ -17,80 +22,27 @@ There is currently support for the following device types within Home Assistant: - [Presence Detection](#presence-detection) - [Switch](#switch) +- [Sensor](#sensor) ## Configuration -Home Assistant offers UniFi integration through **Configuration** -> **Integrations** -> **UniFi Controller**. +Home Assistant offers UniFi integration through **Configuration** -> **Integrations** -> **UniFi Controller**. Follow the instructions to get it set up. -Enter `host address`, `user name` and `password` and then continue to select which `site` you want to connect to Home Assistant. The user needs administrator privileges in order to control POE switches. +The user needs administrator privileges in order to control switches. -### Extra configuration for device tracker +### Extra configuration of the integration -You can augment the behavior of UniFi device tracker by adding - -```yaml -# Example configuration.yaml entry -unifi: - controllers: - - host: unifi - site: My site - ssid_filter: - - 'HomeSSID' - - 'IoTSSID' -``` - -{% configuration %} -host: - description: Same address as relevant config entry, needed to identify config entry. - type: string - required: true - default: None -site: - description: Same site as relevant config entry, needed to identify config entry. - type: string - required: true - default: None -block_client: - description: A list of Clients MAC Addresses that can be blocked from the network. - type: list - required: false - default: None -detection_time: - description: How long since the last seen time before the device is marked away, specified in seconds. - type: integer - required: false - default: 300 -dont_track_clients: - description: enable to not allow device tracker to track clients. - type: boolean - required: false - default: false -dont_track_devices: - description: enable to not allow device tracker to track devices. - type: boolean - required: false - default: false -dont_track_wired_clients: - description: enable to not allow device tracker to track wired clients. - type: boolean - required: false - default: false -ssid_filter: - description: Filter the SSIDs that tracking will occur on. - type: list - required: false - default: None -{% endconfiguration %} +All configuration options are offered from the front end. Enter what UniFi integration you want to change options on and press the cog wheel. ### Configuring Users -The UniFi controller allows you to create multiple users on it besides the main administrator. If all you want to use is the device tracker then it is recommended that you create a limited user that has `read-only` permissions for the Unifi device tracker. If you want blocking of network access or POE control as well you would need to have 'admin' permissions. +The UniFi controller allows you to create multiple users on it besides the main administrator. If all you want to use is the device tracker then it is recommended that you create a limited user that has `read-only` permissions for the UniFi device tracker. If you want blocking of network access or POE control as well you would need to have 'admin' permissions. ### Conflicts with MQTT -The Unifi controller can either be a dedicated hardware device (UniFi's cloud key), or as software any Linux system. If you run the Unifi controller on the same operating system as Home Assistant there may be conflicts in ports if you have the MQTT integration as well. +The UniFi controller can either be a dedicated hardware device (UniFi's cloud key), or as software any Linux system. If you run the UniFi controller on the same operating system as Home Assistant there may be conflicts in ports if you have the MQTT integration as well. -It is recommended that you run the Unifi controller in a dedicated virtual machine to avoid that situation. +It is recommended that you run the UniFi controller in a dedicated virtual machine to avoid that situation. ## Presence detection @@ -108,14 +60,20 @@ If Home Assistant and the UniFi controller are running on separate machines or V ### Block network access for clients -Allow control of network access to clients configured in the `configuration.yaml` file by adding a list of the MAC addresses. Items in this list will have a Home Assistant switch created, using the Unifi Device name, allowing for blocking and unblocking. +Allow control of network access to clients configured in the integration options by adding MAC addresses. Items in this list will have a Home Assistant switch created, using the UniFi Device name, allowing for blocking and unblocking. ### Control clients powered by POE -Entities appear automatically for each connected POE client. If no POE client device is in operation, no entity will be visible. Note: Unifi infrastructure devices such as access points and other switches are not (yet) supported, even if they are powered over ethernet themselves. +Entities appear automatically for each connected POE client. If no POE client device is in operation, no entity will be visible. Note: UniFi infrastructure devices such as access points and other switches are not (yet) supported, even if they are powered over ethernet themselves. Note that POE control actually configures the network port of the switch which the client is connected to. +## Sensor + +### Bandwidth sensor + +Get entities reporting receiving and transmitting bandwidth per network client. + ## Debugging integration If you have problems with UniFi or the integration you can add debug prints to the log. diff --git a/source/_integrations/unifi_direct.markdown b/source/_integrations/unifi_direct.markdown index 7da2f26488e6..f8cf49b3f777 100644 --- a/source/_integrations/unifi_direct.markdown +++ b/source/_integrations/unifi_direct.markdown @@ -1,15 +1,15 @@ --- -title: "Ubiquiti Unifi direct AP" -description: "Instructions on how to use a Unifi WAP as a device tracker." +title: Ubiquiti UniFi AP +description: Instructions on how to use a Unifi WAP as a device tracker. logo: ubiquiti.png ha_category: - Presence Detection ha_iot_class: Local Polling ha_release: 0.59 +ha_domain: unifi_direct --- - -This platform allows you to detect presence by looking at devices connected to a [UniFi AP](https://www.ubnt.com/products/#unifi). This device tracker differs form [Ubiquiti Unifi WAP](/integrations/unifi) because it doesn't require the Unifi controller software. +This platform allows you to detect presence by looking at devices connected to a [UniFi AP](https://www.ubnt.com/products/#unifi). This device tracker differs form [Ubiquiti UniFi WAP](/integrations/unifi) because it doesn't require the UniFi controller software. To use this device tracker in your installation, add the following to your `configuration.yaml` file: @@ -24,18 +24,17 @@ device_tracker: {% configuration %} host: - description: The hostname or IP address of your Unifi AP. + description: The hostname or IP address of your UniFi AP. required: true type: string username: - description: The SSH device username used to connect to your Unifi AP. + description: The SSH device username used to connect to your UniFi AP. required: true type: string password: - description: The SSH device password used to connect to your Unifi AP. + description: The SSH device password used to connect to your UniFi AP. required: true type: string {% endconfiguration %} See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. - diff --git a/source/_integrations/unifiled.markdown b/source/_integrations/unifiled.markdown index 3ed773231c13..c39a8cc575eb 100644 --- a/source/_integrations/unifiled.markdown +++ b/source/_integrations/unifiled.markdown @@ -1,14 +1,17 @@ --- -title: "UniFi LED" -description: "Instructions on how to configure the UniFi LED integration with UniFi LED Controller by Ubiquiti." +title: Ubiquiti UniFi LED +description: Instructions on how to configure the UniFi LED integration with UniFi LED Controller by Ubiquiti. logo: ubiquiti.png ha_category: - Light ha_release: 0.102 ha_iot_class: Local Polling +ha_codeowners: + - '@florisvdk' +ha_domain: unifiled --- -[UniFi LED](https://unifi-led.ui.com/) by [Ubiquiti Networks, inc.](https://www.ubnt.com/) is a system off controller managed led light panels and dimmers. +[UniFi LED](https://unifi-led.ui.com/) by [Ubiquiti Networks, inc.](https://www.ubnt.com/) is a system of controller managed LED light panels and dimmers. There is currently support for the following device type within Home Assistant: @@ -27,22 +30,22 @@ light: {% configuration %} host: - description: Ip address or hostname used to connect to the Unifi LED controller. + description: IP address or hostname used to connect to the UniFi LED controller. type: string required: true default: None port: - description: Port used to connect to the Unifi LED controller. + description: Port used to connect to the UniFi LED controller. type: string required: false default: 20443 username: - description: Username used to log into the Unifi LED controller. + description: Username used to log into the UniFi LED controller. type: string required: true default: None password: - description: Password used to log into the Unifi LED controller. + description: Password used to log into the UniFi LED controller. type: string required: true default: None @@ -50,4 +53,4 @@ password: ## Light -The light panels output state and brightness are synchronized with home assistant. +The light panels output state and brightness are synchronized with Home Assistant. diff --git a/source/_integrations/universal.markdown b/source/_integrations/universal.markdown index 0d703026305e..3c2ab8fe5f0a 100644 --- a/source/_integrations/universal.markdown +++ b/source/_integrations/universal.markdown @@ -1,11 +1,11 @@ --- -title: "Universal" -description: "Instructions on how to create a universal media player in Home Assistant." -logo: home-assistant.png +title: Universal Media Player +description: Instructions on how to create a universal media player in Home Assistant. ha_category: - Media Player -ha_qa_scale: internal ha_release: 0.11 +ha_quality_scale: internal +ha_domain: universal --- Universal Media Players combine multiple existing entities in Home Assistant into one media player entity. This is used for creating a single entity that controls an entire media center. @@ -76,13 +76,14 @@ When providing `select_source` as a command, it is recommended to also provide t ## Usage examples -#### Chromecast & Kodi control with switches +### Chromecast & Kodi control with switches In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The `turn_on` and `turn_off` commands will be redirected to the television, and the volume commands will be redirected to an audio receiver. The `select_source` command will be passed directly to an A/V receiver. The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the universal media player will change to reflect its status. {% raw %} + ```yaml media_player: platform: universal @@ -129,34 +130,30 @@ media_player: source: media_player.receiver|source source_list: media_player.receiver|source_list ``` + {% endraw %} #### Kodi CEC-TV control -In this example, a [Kodi Media Player](/integrations/kodi) runs in a CEC capable device (OSMC/OpenElec running in a Raspberry Pi 24/7, for example), and, with the JSON-CEC Kodi addon installed, it can turn on and off the attached TV. +In this example, a [Kodi Media Player](/integrations/kodi) runs in a CEC capable device (OSMC/OpenElec running in a Raspberry Pi 24/7, for example), and, with the JSON-CEC Kodi add-on installed, it can turn on and off the attached TV. We store the state of the attached TV in a hidden [input boolean](/integrations/input_boolean/), so we can differentiate the TV being on or off, while Kodi is always 'idle', and use the universal media player to render its state with a template. We can hide the Kodi Media Player too, and only show the universal one, which now can differentiate between the 'idle' and the 'off' state (being the second when it is idle and the TV is off). Because the input boolean used to store the TV state is only changing when using the Home Assistant `turn_on` and `turn_off` actions, and Kodi could be controlled by so many ways, we also define some automations to update this Input Boolean when needed. -In an Apple HomeKit scene, we can now expose this universal media player as an on/off switch in Homebridge, and, that way, use Siri to turn on and off the TV. - The complete configuration is: {% raw %} + ```yaml homeassistant: customize: input_boolean.kodi_tv_state: hidden: true - homebridge_hidden: true media_player.kodi: hidden: true - homebridge_hidden: true media_player.kodi_tv: friendly_name: Kodi - homebridge_name: Kodi - homebridge_media_player_switch: on_off input_boolean: kodi_tv_state: @@ -236,4 +233,5 @@ automation: - service: media_player.turn_off entity_id: media_player.kodi_tv ``` + {% endraw %} diff --git a/source/_integrations/upc_connect.markdown b/source/_integrations/upc_connect.markdown index 66ad6c559c03..bfe1d16ea61f 100644 --- a/source/_integrations/upc_connect.markdown +++ b/source/_integrations/upc_connect.markdown @@ -1,13 +1,14 @@ --- -title: "UPC ConnectBox" -description: "Instructions on how to integrate UPC ConnectBox into Home Assistant." -logo: upc.png +title: UPC Connect Box +description: Instructions on how to integrate UPC ConnectBox into Home Assistant. ha_category: - Presence Detection ha_release: 0.36 +ha_codeowners: + - '@pvizeli' +ha_domain: upc_connect --- - The `upc_connect` platform offers presence detection by looking at connected devices to a [Connect Box](https://www.upc.ch/en/internet/learn-about-internet/) from [Liberty Global](https://www.libertyglobal.com) (also known as UPC Cablecom in Switzerland) which is an Internet provider in Switzerland, Austria and the Netherlands (under Ziggo). To use a Connect Box in your installation, add the following to your `configuration.yaml` file: @@ -37,4 +38,4 @@ Also known to be working with the following devices: - Irish Virgin Media Super Hub 3.0 - Unitymedia Connect Box (DE) - Ziggo Connectbox (NL) - + - Compal CH7465LG ED 3.0 - Connect box (UPC / Vodafone CZ) diff --git a/source/_integrations/upcloud.markdown b/source/_integrations/upcloud.markdown index 4147a2440d7f..b92abf0662f7 100644 --- a/source/_integrations/upcloud.markdown +++ b/source/_integrations/upcloud.markdown @@ -8,6 +8,9 @@ ha_category: ha_release: 0.65 logo: upcloud.png ha_iot_class: Cloud Polling +ha_codeowners: + - '@scop' +ha_domain: upcloud --- The `upcloud` integration allows you to access the information about your [UpCloud](https://upcloud.com/) servers from Home Assistant. diff --git a/source/_integrations/updater.markdown b/source/_integrations/updater.markdown index 550422bab050..b57fe012f666 100644 --- a/source/_integrations/updater.markdown +++ b/source/_integrations/updater.markdown @@ -1,23 +1,19 @@ --- -title: "Updater" -description: "Detecting when Home Assistant updates are available." -logo: home-assistant.png +title: Updater +description: Detecting when Home Assistant updates are available. ha_category: - Binary Sensor -ha_qa_scale: internal ha_release: 0.8 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: updater --- -The `updater` binary sensor will check daily for new releases. The state will be "on" when an update is available. Otherwise, the state will be "off". The newer version, as well as the link to the release notes, are attributes of the updater. As [Hass.io](/hassio/) has its own schedule for release it doesn't make sense to use this binary sensor on Hass.io. +The `updater` binary sensor will check daily for new releases. The state will be "on" when an update is available. Otherwise, the state will be "off". The newer version, as well as the link to the release notes, are attributes of the updater. 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/tree/dev/homeassistant/components/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 This integration is by default enabled, unless you've disabled or removed the [`default_config:`](https://www.home-assistant.io/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: @@ -63,6 +59,7 @@ It is possible to report the integrations that you are using to the Home Assista For an added bonus, an automation integration can be created to send a message with a notifier when that state of this component's entity changes. {% raw %} + ```yaml # Example configuration.yaml entry automation: @@ -77,4 +74,5 @@ automation: data_template: message: "Home Assistant {{ state_attr('binary_sensor.updater', 'newest_version') }} is available." ``` + {% endraw %} diff --git a/source/_integrations/upnp.markdown b/source/_integrations/upnp.markdown index 83f2d8376ba6..d169c21989ca 100644 --- a/source/_integrations/upnp.markdown +++ b/source/_integrations/upnp.markdown @@ -1,12 +1,16 @@ --- -title: "UPnP" -description: "Internet Gateway Device (IGD) Protocol for Home Assistant." +title: UPnP +description: Internet Gateway Device (IGD) Protocol for Home Assistant. logo: upnp.png ha_category: - Network - Sensor ha_release: 0.18 -ha_iot_class: "Local Polling" +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@StevenLooman' +ha_domain: upnp --- The `upnp` integration enables you to collect network statistics from your router such as bytes in/out and packets in/out. This information is provided by the [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play)/[Internet Gateway Device (IGD) Protocol](https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol) if enabled on your router. @@ -41,7 +45,7 @@ port_mapping: type: boolean default: false sensors: - description: If the integration should enable the UPNP sensors. + description: If the integration should enable the UPnP sensors. required: false type: boolean default: true @@ -54,7 +58,7 @@ ports: description: Map of ports to map from internal to external. Pass 'hass' as internal port to use the port Home Assistant runs on. Note that you have to enable port_mapping if you wish to map ports. required: false type: map - default: Open same port on external router as that HASS runs locally and forwards it. + default: Open same port on external router as that Home Assistant runs locally and forwards it. {% endconfiguration %} ## Troubleshooting diff --git a/source/_integrations/uptime.markdown b/source/_integrations/uptime.markdown index 7ecee6736080..105953348bc0 100644 --- a/source/_integrations/uptime.markdown +++ b/source/_integrations/uptime.markdown @@ -1,12 +1,12 @@ --- -title: "Uptime Sensor" -description: "Instructions on how to integrate an uptime sensor into Home Assistant." +title: Uptime +description: Instructions on how to integrate an uptime sensor into Home Assistant. ha_category: - Utility ha_iot_class: Local Push -logo: home-assistant.png ha_release: 0.56 -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: uptime --- The `uptime` sensor platform displays the time since the last Home Assistant restart. diff --git a/source/_integrations/uptimerobot.markdown b/source/_integrations/uptimerobot.markdown index 06ddefdd0e99..d18b4cf82ea5 100644 --- a/source/_integrations/uptimerobot.markdown +++ b/source/_integrations/uptimerobot.markdown @@ -1,14 +1,17 @@ --- -title: "Uptime Robot" -description: "Instructions on how to set up Uptime Robot within Home Assistant." +title: Uptime Robot +description: Instructions on how to set up Uptime Robot within Home Assistant. logo: uptimerobot.png ha_category: - System Monitor ha_release: 0.72 ha_iot_class: Cloud Polling +ha_codeowners: + - '@ludeeus' +ha_domain: uptimerobot --- -The `uptimerobot` binary sensor platform allows you get the status for all of your monitors from your account on [Uptime Robot.]( https://uptimerobot.com). +The `uptimerobot` binary sensor platform allows you get the status for all of your monitors from your account on [Uptime Robot]( https://uptimerobot.com). ## Configuration @@ -28,6 +31,6 @@ api_key: type: string {% endconfiguration %} -All the data will be fetch from [Uptime Robot](https://uptimerobot.com). +All the data will be fetched from [Uptime Robot](https://uptimerobot.com). To get your API key, go to [My Settings](https://uptimerobot.com/dashboard#mySettings) on the Uptime Robot website, at the bottom you will find your "Main API Key". diff --git a/source/_integrations/uscis.markdown b/source/_integrations/uscis.markdown index 91ee0b7d97f3..d44a345b295d 100644 --- a/source/_integrations/uscis.markdown +++ b/source/_integrations/uscis.markdown @@ -1,11 +1,11 @@ --- -title: USCIS Sensor -description: "Instructions on how to set up USCIS within Home Assistant." -logo: uscis.png +title: U.S. Citizenship and Immigration Services (USCIS) +description: Instructions on how to set up USCIS within Home Assistant. ha_category: - Sensor ha_release: 0.68 ha_iot_class: Cloud Polling +ha_domain: uscis --- The `uscis` sensor integration allows you get updates on your USCIS case using your case/receipt number. The sensor gets the case information from [USCIS Website]( https://egov.uscis.gov/casestatus/landing.do) diff --git a/source/_integrations/usgs_earthquakes_feed.markdown b/source/_integrations/usgs_earthquakes_feed.markdown index ef639c6c9b44..49f2ae9911e1 100644 --- a/source/_integrations/usgs_earthquakes_feed.markdown +++ b/source/_integrations/usgs_earthquakes_feed.markdown @@ -1,11 +1,14 @@ --- -title: "USGS Earthquakes" -description: "Instructions on how to integrate the U.S. Geological Survey Earthquake Hazards Program Feed feed into Home Assistant." +title: U.S. Geological Survey Earthquake Hazards (USGS) +description: Instructions on how to integrate the U.S. Geological Survey Earthquake Hazards Program Feed feed into Home Assistant. logo: us-geological-survey.png ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.84 +ha_codeowners: + - '@exxamalte' +ha_domain: usgs_earthquakes_feed --- The `usgs_earthquakes_feed` platform lets you integrate a GeoJSON feed provided by the [U.S. Geological Survey](https://earthquake.usgs.gov/) with information about seismic events like earthquakes. It retrieves incidents from a feed and shows information of those incidents filtered by distance to Home Assistant's location. diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 0af65a471c49..f7a0633776f7 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -1,12 +1,14 @@ --- -title: "Utility Meter" -description: "Instructions on how to integrate the Utility Meter into Home Assistant." +title: Utility Meter +description: Instructions on how to integrate the Utility Meter into Home Assistant. ha_category: - Sensor ha_release: 0.87 ha_iot_class: Local Push -logo: energy_meter.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@dgomes' +ha_domain: utility_meter --- The `utility meter` integration provides functionality to track consumptions of various utilities (e.g., energy, gas, water, heating). @@ -16,7 +18,7 @@ From a user perspective, utility meters operate in cycles (usually monthly) for Some utility providers have different tariffs according to time/resource availability/etc. The utility meter enables you to define the various tariffs supported by your utility provider and accounts your consumptions in accordance. When tariffs are defined a new entity will show up indicating the current tariff. In order to change the tariff, the user must call a service, usually through an automation that can be based in time or other external source (eg. a REST sensor).
    -Sensors created with this integration are persistent, so values are retained across restarts of home assistant. The first cycle for each sensor, will be incomplete; a sensor tracking daily usage, will start to be accurate the next day after the integration was activated. A sensor tracking monthly usage, will present accurate data starting the first of the next month after being added to home assistant. +Sensors created with this integration are persistent, so values are retained across restarts of Home Assistant. The first cycle for each sensor will be incomplete; a sensor tracking daily usage will start to be accurate the next day after the integration was activated. A sensor tracking monthly usage will present accurate data starting the first of the next month after being added to Home Assistant.
    ## Configuration @@ -37,14 +39,14 @@ source: required: true type: string cycle: - description: How often to reset the counter. Valid values are `hourly`, `daily`, `weekly`, `monthly` and `yearly`. + description: How often to reset the counter. Valid values are `hourly`, `daily`, `weekly`, `monthly`, `quarterly` and `yearly`. required: true type: string offset: description: "Cycle reset occur at the beginning of the period (0 minutes, 0h00 hours, Monday, day 1, January). This option enables the offsetting of these beginnings. Supported formats: `offset: 'HH:MM:SS'`, `offset: 'HH:MM'` and Time period dictionary (see example below)." required: false default: 0 - type: time + type: time type: integer net_consumption: description: Set this to True if you would like to treat the source as a net meter. This will allow your counter to go both positive and negative. @@ -65,7 +67,7 @@ offset: # At least one of these must be specified: days: 1 hours: 0 - minutes: 0 + minutes: 0 ``` ## Services @@ -78,10 +80,19 @@ Reset the Utility Meter. All sensors tracking tariffs will be reset to 0. | ---------------------- | -------- | ----------- | | `entity_id` | no | String or list of strings that point at `entity_id`s of utility_meters. +### Service `utility_meter.calibrate` + +Calibrate the Utility Meter. Change the value of a given sensor. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of utility_meters. +| `value` | no | Number | Value to calibrate the sensor with | + ### Service `utility_meter.next_tariff` Change the current tariff to the next in the list. -This service must be called by the user for the tariff switching logic to occur (e.g. using an automation) +This service must be called by the user for the tariff switching logic to occur (e.g., using an automation) | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -90,7 +101,7 @@ This service must be called by the user for the tariff switching logic to occur ### Service `utility_meter.select_tariff` Change the current tariff to the given tariff. -This service must be called by the user for the tariff switching logic to occur (e.g. using an automation) +This service must be called by the user for the tariff switching logic to occur (e.g., using an automation) | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -151,8 +162,8 @@ When using the [DSMR component](/integrations/dsmr) to get data from the utility If you want to create a daily and monthly sensor for each tariff, you have to track separate sensors: -- `sensor.power_consumption_low` for off-peak power -- `sensor.power_consumption_normal` for peak power +- `sensor.energy_consumption_tarif_1` for tarif 1 power (for example off-peak) +- `sensor.energy_consumption_tarif_2` for for tarif 2 power (for example peak) - `sensor.gas_consumption` for gas consumption So, tracking daily and monthly consumption for each sensor, will require setting up 6 entries under the `utility_meter` component. @@ -160,26 +171,26 @@ So, tracking daily and monthly consumption for each sensor, will require setting ```yaml utility_meter: daily_power_offpeak: - source: sensor.power_consumption_low + source: sensor.energy_consumption_tarif_1 cycle: daily daily_power_peak: - source: sensor.power_consumption_normal + source: sensor.energy_consumption_tarif_2 cycle: daily daily_gas: source: sensor.gas_consumption cycle: daily monthly_power_offpeak: - source: sensor.power_consumption_low + source: sensor.energy_consumption_tarif_1 cycle: monthly monthly_power_peak: - source: sensor.power_consumption_normal + source: sensor.energy_consumption_tarif_2 cycle: monthly monthly_gas: source: sensor.gas_consumption cycle: monthly ``` -Additionally, you can add template sensors to compute daily and monthly total usage. +Additionally, you can add template sensors to compute daily and monthly total usage. {% raw %} ```yaml diff --git a/source/_integrations/uvc.markdown b/source/_integrations/uvc.markdown index 56a8711f279f..c076f7ee6277 100644 --- a/source/_integrations/uvc.markdown +++ b/source/_integrations/uvc.markdown @@ -1,16 +1,17 @@ --- -title: "UniFi Video Camera" -description: "Instructions on how to integrate UVC cameras within Home Assistant." +title: Ubiquiti UniFi Video +description: Instructions on how to integrate UVC cameras within Home Assistant. logo: ubiquiti.png ha_category: - Camera ha_release: 0.13 ha_iot_class: Local Polling +ha_domain: uvc --- The `uvc` camera platform allows you to integrate [UniFi Video Camera (UVC)](https://www.ubnt.com/products/#unifivideo) into Home Assistant. -The platform connects to the Unifi NVR software and automatically discovers/adds any camera connected to the NVR. +The platform connects to the UniFi NVR software and automatically discovers/adds any camera connected to the NVR. ### Setup diff --git a/source/_integrations/vacuum.markdown b/source/_integrations/vacuum.markdown index de6647273cd1..efc4e1771b98 100644 --- a/source/_integrations/vacuum.markdown +++ b/source/_integrations/vacuum.markdown @@ -1,7 +1,8 @@ --- -title: "Vacuum cleaner robots" -description: "Instructions on how to setup and use vacuum's in Home Assistant." +title: Vacuum +description: Instructions on how to setup and use vacuum's in Home Assistant. ha_release: 0.51 +ha_domain: vacuum --- The `vacuum` integration enables the ability to control home cleaning robots within Home Assistant. @@ -30,7 +31,7 @@ Start a new cleaning task. For the Xiaomi Vacuum and Neato use `vacuum.start` in | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | #### Service `vacuum.turn_off` @@ -38,7 +39,7 @@ Stop the current cleaning task and return to the dock. For the Xiaomi Vacuum and | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | #### Service `vacuum.start_pause` @@ -46,7 +47,7 @@ Start, pause or resume a cleaning task. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | #### Service `vacuum.start` @@ -54,7 +55,7 @@ Start or resume a cleaning task. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | #### Service `vacuum.pause` @@ -62,7 +63,7 @@ Pause a cleaning task. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | #### Service `vacuum.stop` @@ -70,7 +71,7 @@ Stop the current activity of the vacuum. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | #### Service `vacuum.return_to_base` @@ -78,7 +79,7 @@ Tell the vacuum to return home. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | #### Service `vacuum.locate` @@ -86,7 +87,7 @@ Locate the vacuum cleaner robot. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | #### Service `vacuum.clean_spot` @@ -94,7 +95,7 @@ Tell the vacuum cleaner to do a spot clean-up. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | #### Service `vacuum.set_fan_speed` @@ -102,7 +103,7 @@ Set the fan speed of the vacuum. The `fanspeed` can be a label, as `balanced` or | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | | `fan_speed` | no | Platform dependent vacuum cleaner fan speed, with speed steps, like 'medium', or by percentage, between 0 and 100. | #### Service `vacuum.send_command` @@ -111,6 +112,6 @@ Send a platform-specific command to the vacuum cleaner. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Else targets all. | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | | `command` | no | Command to execute. | | `params` | yes | Parameters for the command. | diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown index 8125ff62f418..a3417ae00698 100644 --- a/source/_integrations/vacuum.mqtt.markdown +++ b/source/_integrations/vacuum.mqtt.markdown @@ -1,18 +1,18 @@ --- title: "MQTT Vacuum" description: "Instructions on how to integrate your MQTT enabled Vacuum within Home Assistant." -logo: mqtt.png ha_category: - Vacuum ha_release: 0.54 +ha_domain: mqtt --- The `mqtt` vacuum integration allows you to control your MQTT-enabled vacuum. -There are two possible message schemas - `legacy` and `state`. +There are two possible message schemas - `legacy` and `state`, chosen by setting the `schema` configuration parameter. New installations should use the `state` schema as `legacy` is deprecated and might be removed someday in the future. The `state` schema is preferred because the vacuum will then be represented as a `StateVacuumDevice` which is the preferred parent vacuum entity. -This documentation has 3 sections. Config for `legacy` vacuum with examples, config for `state` vacuum with examples and shared section with examples which are the same for both schemas. +This documentation has 3 sections. Configuration for `legacy` vacuum with examples, configuration for `state` vacuum with examples and shared section with examples which are the same for both schemas. ## Configuration @@ -29,152 +29,152 @@ vacuum: Legacy MQTT vacuum configuration section. {% configuration %} -name: - description: The name of the vacuum. - required: false - type: string - default: MQTT Vacuum -schema: - description: The schema to use. - required: false - type: string - default: legacy -supported_features: - description: List of features that the vacuum supports (possible values are `turn_on`, `turn_off`, `pause`, `stop`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`)." - required: false - type: [string, list] - default: "`turn_on`, `turn_off`, `stop`, `return_home`, `status`, `battery`, `clean_spot`" -command_topic: - description: The MQTT topic to publish commands to control the vacuum. - required: false - type: string -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: false -payload_turn_on: - description: The payload to send to the `command_topic` to begin the cleaning cycle. - required: false - type: string - default: turn_on -payload_turn_off: - description: The payload to send to the `command_topic` to turn the vacuum off. - required: false - type: string - default: turn_off -payload_return_to_base: - description: The payload to send to the `command_topic` to tell the vacuum to return to base. - required: false - type: string - default: return_to_base -payload_stop: - description: The payload to send to the `command_topic` to stop the vacuum. - required: false - type: string - default: stop -payload_clean_spot: - description: The payload to send to the `command_topic` to begin a spot cleaning cycle. - required: false - type: string - default: clean_spot -payload_locate: - description: The payload to send to the `command_topic` to locate the vacuum (typically plays a song). +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false type: string - default: locate -payload_start_pause: - description: The payload to send to the `command_topic` to start or pause the vacuum. +battery_level_template: + description: Defines a [template](/topics/templating/) to define the battery level of the vacuum. This is required if `battery_level_topic` is set. required: false type: string - default: start_pause battery_level_topic: description: The MQTT topic subscribed to receive battery level values from the vacuum. required: false type: string -battery_level_template: - description: Defines a [template](/topics/templating/) to define the battery level of the vacuum. This is required if `battery_level_topic` is set. +charging_template: + description: Defines a [template](/topics/templating/) to define the charging state of the vacuum. This is required if `charging_topic` is set. required: false type: string charging_topic: description: The MQTT topic subscribed to receive charging state values from the vacuum. required: false type: string -charging_template: - description: Defines a [template](/topics/templating/) to define the charging state of the vacuum. This is required if `charging_topic` is set. +cleaning_template: + description: Defines a [template](/topics/templating/) to define the cleaning state of the vacuum. This is required if `cleaning_topic` is set. required: false type: string cleaning_topic: description: The MQTT topic subscribed to receive cleaning state values from the vacuum. required: false type: string -cleaning_template: - description: Defines a [template](/topics/templating/) to define the cleaning state of the vacuum. This is required if `cleaning_topic` is set. - required: false - type: string -docked_topic: - description: The MQTT topic subscribed to receive docked state values from the vacuum. +command_topic: + description: The MQTT topic to publish commands to control the vacuum. required: false type: string docked_template: description: Defines a [template](/topics/templating/) to define the docked state of the vacuum. This is required if `docked_topic` is set. required: false type: string -error_topic: - description: The MQTT topic subscribed to receive error messages from the vacuum. +docked_topic: + description: The MQTT topic subscribed to receive docked state values from the vacuum. required: false type: string error_template: description: Defines a [template](/topics/templating/) to define potential error messages emitted by the vacuum. This is required if `error_topic` is set. required: false type: string -fan_speed_topic: - description: The MQTT topic subscribed to receive fan speed values from the vacuum. +error_topic: + description: The MQTT topic subscribed to receive error messages from the vacuum. required: false type: string +fan_speed_list: + description: List of possible fan speeds for the vacuum. + required: false + type: [string, list] fan_speed_template: description: Defines a [template](/topics/templating/) to define the fan speed of the vacuum. This is required if `fan_speed_topic` is set. required: false type: string -set_fan_speed_topic: - description: The MQTT topic to publish commands to control the vacuum's fan speed. +fan_speed_topic: + description: The MQTT topic subscribed to receive fan speed values from the vacuum. required: false type: string -fan_speed_list: - description: List of possible fan speeds for the vacuum. +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." required: false - type: [string, list] -send_command_topic: - description: The MQTT topic to publish custom commands to the vacuum. + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. required: false type: string -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. +name: + description: The name of the vacuum. required: false type: string + default: MQTT Vacuum payload_available: description: The payload that represents the available state. required: false type: string default: online +payload_clean_spot: + description: The payload to send to the `command_topic` to begin a spot cleaning cycle. + required: false + type: string + default: clean_spot +payload_locate: + description: The payload to send to the `command_topic` to locate the vacuum (typically plays a song). + required: false + type: string + default: locate payload_not_available: description: The payload that represents the unavailable state. required: false type: string default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. +payload_return_to_base: + description: The payload to send to the `command_topic` to tell the vacuum to return to base. required: false type: string -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." + default: return_to_base +payload_start_pause: + description: The payload to send to the `command_topic` to start or pause the vacuum. required: false - type: template + type: string + default: start_pause +payload_stop: + description: The payload to send to the `command_topic` to stop the vacuum. + required: false + type: string + default: stop +payload_turn_off: + description: The payload to send to the `command_topic` to turn the vacuum off. + required: false + type: string + default: turn_off +payload_turn_on: + description: The payload to send to the `command_topic` to begin the cleaning cycle. + required: false + type: string + default: turn_on +qos: + description: The maximum QoS level of the state topic. + required: false + type: integer + default: 0 +retain: + description: If the published message should have the retain flag on or not. + required: false + type: boolean + default: false +schema: + description: The schema to use. Must be `legacy` or omitted to select the legacy schema". + required: false + type: string + default: legacy +send_command_topic: + description: The MQTT topic to publish custom commands to the vacuum. + required: false + type: string +set_fan_speed_topic: + description: The MQTT topic to publish commands to control the vacuum's fan speed. + required: false + type: string +supported_features: + description: List of features that the vacuum supports (possible values are `turn_on`, `turn_off`, `pause`, `stop`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`)." + required: false + type: [string, list] + default: "`turn_on`, `turn_off`, `stop`, `return_home`, `status`, `battery`, `clean_spot`" {% endconfiguration %} ### Legacy configuration example @@ -260,50 +260,36 @@ MQTT payload: State MQTT vacuum configuration section. {% configuration %} -name: - description: The name of the vacuum. - required: false - type: string - default: MQTT Vacuum -schema: - description: The schema to use. +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false type: string - default: legacy -supported_features: - description: "List of features that the vacuum supports (possible values are `start`, `stop`, `pause`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`)." - required: false - type: [string, list] - default: "`start`, `stop`, `return_home`, `status`, `battery`, `clean_spot`" command_topic: description: The MQTT topic to publish commands to control the vacuum. required: false type: string -qos: - description: The maximum QoS level of the state topic. +fan_speed_list: + description: List of possible fan speeds for the vacuum. required: false - type: integer - default: 0 -retain: - description: If the published message should have the retain flag on or not. + type: [string, list] +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." required: false - type: boolean - default: false -payload_start: - description: "The payload to send to the `command_topic` to begin the cleaning cycle." + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. required: false type: string - default: start -payload_stop: - description: "The payload to send to the `command_topic` to stop cleaning." +name: + description: The name of the vacuum. required: false type: string - default: stop -payload_return_to_base: - description: The payload to send to the `command_topic` to tell the vacuum to return to base. + default: MQTT Vacuum +payload_available: + description: The payload that represents the available state. required: false type: string - default: return_to_base + default: online payload_clean_spot: description: The payload to send to the `command_topic` to begin a spot cleaning cycle. required: false @@ -314,47 +300,65 @@ payload_locate: required: false type: string default: locate +payload_not_available: + description: The payload that represents the unavailable state. + required: false + type: string + default: offline payload_pause: description: The payload to send to the `command_topic` to pause the vacuum. required: false type: string default: pause -state_topic: - description: The MQTT topic subscribed to receive state messages from the vacuum. State topic is extracting json if no `value_template` is defined. +payload_return_to_base: + description: The payload to send to the `command_topic` to tell the vacuum to return to base. required: false type: string -value_template: - description: "Defines a [template](/topics/templating/) to extract possible states from the vacuum." + default: return_to_base +payload_start: + description: "The payload to send to the `command_topic` to begin the cleaning cycle." required: false type: string -set_fan_speed_topic: - description: The MQTT topic to publish commands to control the vacuum's fan speed. + default: start +payload_stop: + description: "The payload to send to the `command_topic` to stop cleaning." required: false type: string -fan_speed_list: - description: List of possible fan speeds for the vacuum. + default: stop +qos: + description: The maximum QoS level of the state topic. required: false - type: [string, list] + type: integer + default: 0 +retain: + description: If the published message should have the retain flag on or not. + required: false + type: boolean + default: false +schema: + description: The schema to use. Must be `state` to select the state schema". + required: false + type: string + default: legacy send_command_topic: description: The MQTT topic to publish custom commands to the vacuum. required: false type: string -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. +set_fan_speed_topic: + description: The MQTT topic to publish commands to control the vacuum's fan speed. required: false type: string -payload_available: - description: The payload that represents the available state. +state_topic: + description: The MQTT topic subscribed to receive state messages from the vacuum. State topic is extracting JSON if no `value_template` is defined. required: false type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. +supported_features: + description: "List of features that the vacuum supports (possible values are `start`, `stop`, `pause`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`)." required: false - type: string - default: offline -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. + type: [string, list] + default: "`start`, `stop`, `return_home`, `status`, `battery`, `clean_spot`" +value_template: + description: "Defines a [template](/topics/templating/) to extract possible states from the vacuum." required: false type: string {% endconfiguration %} @@ -417,7 +421,7 @@ Vacuum send_command allows three parameters: - params - optional If params are not provided it sends command as payload to MQTT send_command topic. -If params are provided service sends json as payload with such structure: +If params are provided service sends JSON as payload with such structure: ```json { @@ -492,7 +496,7 @@ Vacuum send_command allows three parameters: - params - optional If params are not provided it sends command as payload to MQTT send_command topic. -If params are provided service sends json as payload with such structure: +If params are provided service sends JSON as payload with such structure: ```json { @@ -525,5 +529,5 @@ This integration is supported by the cloud-free Xiaomi Vacuum Webinterface [Vale ### Retrofitting non-wifi vacuums -- Retrofitting your old Roomba with an ESP8266. [This repo](https://github.com/johnboiles/esp-roomba-mqtt) provides MQTT client firmware. -- If you own a non-wifi Neato, you can refer to [this repo](https://github.com/jeroenterheerdt/neato-serial) that uses a Raspberry Pi to retrofit an old Neato. +- Retrofitting your old Roomba with an ESP8266. [This repository](https://github.com/johnboiles/esp-roomba-mqtt) provides MQTT client firmware. +- If you own a non-wifi Neato, you can refer to [this repository](https://github.com/jeroenterheerdt/neato-serial) that uses a Raspberry Pi to retrofit an old Neato. diff --git a/source/_integrations/vacuum.template.markdown b/source/_integrations/vacuum.template.markdown index bee77c701878..4cc89d1b6f8a 100644 --- a/source/_integrations/vacuum.template.markdown +++ b/source/_integrations/vacuum.template.markdown @@ -4,8 +4,8 @@ description: "Instructions how to setup Template vacuums within Home Assistant." ha_category: Vacuum ha_release: 0.96 ha_iot_class: Local Push -logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal +ha_domain: template --- The `template` platform creates vacuums that combine integrations and provides the @@ -149,6 +149,8 @@ vacuum: service: script.vacuum_locate_vacuum set_fan_speed: service: script.vacuum_set_fan_speed + data_template: + speed: "{{ fan_speed }}" fan_speeds: - Low - Medium diff --git a/source/_integrations/vacuum.xiaomi_miio.markdown b/source/_integrations/vacuum.xiaomi_miio.markdown index 61eb90f249bb..b8a20c924d11 100644 --- a/source/_integrations/vacuum.xiaomi_miio.markdown +++ b/source/_integrations/vacuum.xiaomi_miio.markdown @@ -1,11 +1,11 @@ --- title: "Xiaomi Mi Robot Vacuum" description: "Instructions on how to integrate your Xiaomi Mi Robot Vacuum within Home Assistant." -logo: xiaomi.png ha_category: - Vacuum ha_release: 0.51 ha_iot_class: Local Polling +ha_domain: xiaomi_miio --- The `xiaomi_miio` vacuum platform allows you to control the state of your [Xiaomi Mi Robot Vacuum](https://www.mi.com/roomrobot/). @@ -18,8 +18,9 @@ Currently supported services are: - `return_to_base` - `locate` - `clean_spot` -- `set_fan_speed` -- remote control of your robot. +- `set_fan_speed` + Fan speeds: `Silent`, `Standard`, `Medium`, `Turbo` and `Gentle` (exclusively for mopping). +- `remote_control_*` (of your robot) - `xiaomi_clean_zone` ## Configuration @@ -54,15 +55,15 @@ name: ## Platform Services -In addition to all of the services provided by the `vacuum` integration (`start`, `pause`, `stop`, `return_to_base`, `locate`, `set_fan_speed` and `send_command`), the `xiaomi` platform introduces specific services to access the remote control mode of the robot. These are: +In addition to all of the services provided by the `vacuum` integration (`start`, `pause`, `stop`, `return_to_base`, `locate`, `set_fan_speed` and `send_command`), the `xiaomi_miio` platform introduces specific services to access the remote control mode of the robot. These are: -- `xiaomi_remote_control_start` -- `xiaomi_remote_control_stop` -- `xiaomi_remote_control_move` -- `xiaomi_remote_control_move_step` -- `xiaomi_clean_zone` +- `xiaomi_miio.vacuum_remote_control_start` +- `xiaomi_miio.vacuum_remote_control_stop` +- `xiaomi_miio.vacuum_remote_control_move` +- `xiaomi_miio.vacuum_remote_control_move_step` +- `xiaomi_miio.vacuum_clean_zone` -### Service `vacuum.xiaomi_remote_control_start` +### Service `xiaomi_miio.vacuum_remote_control_start` Start the remote control mode of the robot. You can then move it with `remote_control_move`; when done, call `remote_control_stop`. @@ -70,7 +71,7 @@ Start the remote control mode of the robot. You can then move it with `remote_co |---------------------------|----------|---------------------------------------------------| | `entity_id` | no | Only act on a specific robot | -### Service `vacuum.xiaomi_remote_control_stop` +### Service `xiaomi_miio.vacuum_remote_control_stop` Exit the remote control mode of the robot. @@ -78,7 +79,7 @@ Exit the remote control mode of the robot. |---------------------------|----------|---------------------------------------------------| | `entity_id` | no | Only act on a specific robot | -### Service `vacuum.xiaomi_remote_control_move` +### Service `xiaomi_miio.vacuum_remote_control_move` Remote control the robot. Please ensure you first set it in remote control mode with `remote_control_start`. @@ -89,7 +90,7 @@ Remote control the robot. Please ensure you first set it in remote control mode | `rotation` | no | Rotation: between -179 degrees and 179 degrees | | `duration` | no | The number of milliseconds that the robot should move for | -### Service `vacuum.xiaomi_remote_control_move_step` +### Service `xiaomi_miio.vacuum_remote_control_move_step` Enter remote control mode, make one move, stop, and exit remote control mode. @@ -100,7 +101,7 @@ Enter remote control mode, make one move, stop, and exit remote control mode. | `rotation` | no | Rotation: between -179 degrees and 179 degrees | | `duration` | no | The number of milliseconds that the robot should move for | -### Service `vacuum.xiaomi_clean_zone` +### Service `xiaomi_miio.vacuum_clean_zone` Start the cleaning operation in the areas selected for the number of repeats indicated. @@ -110,10 +111,11 @@ Start the cleaning operation in the areas selected for the number of repeats ind | `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. | -Example of `vacuum.xiaomi_clean_zone` use: +Example of `xiaomi_miio.vacuum_clean_zone` use: Inline array: {% raw %} + ```yaml automation: - alias: Test vacuum zone3 @@ -122,16 +124,18 @@ automation: platform: homeassistant condition: [] action: - - service: vacuum.xiaomi_clean_zone + - service: xiaomi_miio.vacuum_clean_zone data_template: entity_id: vacuum.xiaomi_vacuum repeats: '{{states('input_number.vacuum_passes')|int}}' zone: [[30914,26007,35514,28807], [20232,22496,26032,26496]] ``` + {% endraw %} Array with inline zone: {% raw %} + ```yaml automation: - alias: Test vacuum zone3 @@ -140,7 +144,7 @@ automation: platform: homeassistant condition: [] action: - - service: vacuum.xiaomi_clean_zone + - service: xiaomi_miio.vacuum_clean_zone data_template: entity_id: vacuum.xiaomi_vacuum repeats: '{{states('input_number.vacuum_passes')|int}}' @@ -148,9 +152,11 @@ automation: - [30914,26007,35514,28807] - [20232,22496,26032,26496] ``` + {% endraw %} Array mode: + ```yaml automation: - alias: Test vacuum zone3 @@ -159,7 +165,7 @@ automation: platform: homeassistant condition: [] action: - - service: vacuum.xiaomi_clean_zone + - service: xiaomi_miio.vacuum_clean_zone data: entity_id: vacuum.xiaomi_vacuum repeats: 1 @@ -184,39 +190,121 @@ In addition to [all of the attributes provided by the `vacuum` component](/integ - `main_brush_left` - `side_brush_left` - `filter_left` +- `sensor_dirty_left` - `cleaning_count` - `total_cleaned_area` - `total_cleaning_time` +- `clean_start` +- `clean_end` The following table shows the units of measurement for each attribute: -| Attribute | Unit of measurement | Description | -|---------------------------|---------------------|-------------------------------------------------------| -| `do_not_disturb` | | DND mode on / off | -| `cleaning_time` | minutes | Last / actual cleaning time in minutes | -| `cleaned_area` | square meter | Last / actual cleaned area in square meters | -| `main_brush_left` | hours | Hours left until a change of the main brush is needed | -| `side_brush_left` | hours | Hours left until a change of the side brush is needed | -| `filter_left` | hours | Hours left until a change of the filter is needed | -| `cleaning_count` | | Number of total cleaning cycles | -| `total_cleaned_area` | square meter | Total cleaned area in square meters | -| `total_cleaning_time` | minutes | Total cleaning time in minutes | +| Attribute | Unit of measurement | Description | +|---------------------------|---------------------|----------------------------------------------------------------| +| `do_not_disturb` | | DND mode on / off | +| `cleaning_time` | minutes | Last / actual cleaning time in minutes | +| `cleaned_area` | square meter | Last / actual cleaned area in square meters | +| `main_brush_left` | hours | Hours left until a change of the main brush is needed | +| `side_brush_left` | hours | Hours left until a change of the side brush is needed | +| `filter_left` | hours | Hours left until a change of the filter is needed | +| `sensor_dirty_left` | hours | Hours left until the wall and cliff sensors should be cleaned | +| `cleaning_count` | | Number of total cleaning cycles | +| `total_cleaned_area` | square meter | Total cleaned area in square meters | +| `total_cleaning_time` | minutes | Total cleaning time in minutes | +| `clean_start` | datetime | The last date/time the vacuum started cleaning (offset naive) | +| `clean_end` | datetime | The last date/time the vacuum finished cleaning (offset naive) | ## Retrieving the Access Token +### Xiaomi Home app (Xiaomi Aqara Gateway, android?) + +1. Install the Xiaomi Home app. +2. Sign In/make an account. +3. Make sure you set your region to: Mainland China (Seems to be the longest line with Chines characters) under settings -> Region (language can later be set on English). +4. Select your Gateway in Xiaomi Home app. +5. Then the 3 dots at the top right of the screen. +6. Then click on about. +7. Tap the version number (Plug-in version 2.77.1 as of January 2020) at the bottom of the screen repeatedly. +8. You should now see 2 extra options listed in English, this means you enabled developer mode. [if not, try all steps again!]. +9. Under "Hub info" there is quite some text in JSON format, this includes the "token" that you need. + +### Alternative methods +
    -As per Version 5.4.49 the Android Mi Home app stores the token readable in the log files. It can easily be retrieved in the folder Smarthome on in the Android device. Just open the text file inside the Smarthome/logs folder and search for the token. +If using an Android device to retrieve the Access Token only `v5.4.49` of Mi Home is confirmed working (December 2019). Use `v5.4.49` of Mi Home locate a text file under the `Smarthome/logs` folder where the 32 character token is stored. There will likely be several text files in this directory, search all of them for the word 'token' and you should find it there. Be advised that the latest version of Mi Home does not store the token in clear text.

    -The iPhone app still stores the token in the SQLite db as of v4.10.2 (Dec 22, 2018). +The iPhone app still stores the token in the SQLite db as of `v4.23.4` (Nov 17, 2019).

    -This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum, Mi Robot 2 (Roborock) Vacuum, Xiaomi Philips Lights and Xiaomi IR Remote. The Xiaomi Gateway uses another security method and requires a `key` (16 alphanumeric chars), which can be obtained -easily via a hidden menu item at the Mi-Home app or using the `miio` command line tool. - +After resetting the Wi-Fi settings of the Xiaomi robot vacuum, a new Access Token will be generated and therefore these instructions need to be followed again. +

    +These instructions are written for the Mi Home app - not for the new RoboRock app. +

    +This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum, Mi Robot 2 (Roborock) Vacuum, Xiaomi Philips Lights and Xiaomi IR Remote. The Xiaomi Gateway uses another security method and requires a `key` (16 alphanumeric chars), which can be obtained easily via a hidden menu item at the Mi-Home app or using the `miio` command line tool.
    +### Android (not rooted) + +> If using an Android device to retrieve the Access Token only `v5.4.49` of Mi Home is confirmed working (December 2019). + +1. To begin, set up your Robovac with the latest version of Mi Home on your primary Android device as you normally would. +2. Using `v5.4.49` of Mi Home locate a text file under the `Smarthome/logs` folder where the 32 character token is stored. +3. There will likely be several text files in this directory, search all of them for the word 'token' and you should find it there. Be advised that the latest version of Mi Home does not store the token in clear text. + +### Linux and Rooted Android + +1. To begin, set up your Robovac with the latest version of Mi Home on your primary Android device as you normally would. +2. Ensure successful operation using the latest Mi Home app and give the Vacuum a static IP in your router or however you do that on your LAN. +3. Install version `v5.4.54` of Mi Home on your rooted Android device and login (you can't have two version of Mi Home installed at the same time). +4. Ensure you are using the same server every time +5. Ensure successful operation using 5.4.54 (locate is a nice simple test) +6. Using adb we will now extract the token from the rooted phone +7. Use adb shell to connect to your device and become root (if using Magisck root do `adb shell -> su -> whoami` to ensure root access. +8. Then run grep -R '"token"' /data/data/com.xiaomi.smarthome and grab the token + +### iOS + +1. Configure the robot with the Mi Home app. Make sure to select the correct region, as Xiaomi uses different product names for different geographical areas. Note that the new RoboRock app is currently not supported for this method. +2. Using iTunes, create an unencrypted backup of your iPhone. +3. Install [iBackup Viewer](https://www.imactools.com/iphonebackupviewer/), open it, and open your backup. +4. Open the "Raw Data" module. +5. Navigate to `com.xiaomi.mihome`. +6. Search for a file that looks like this: `123456789_mihome.sqlite` (Note: `_mihome.sqlite` is *not* the correct file. Most likely, you will find this file in the `Documents` folder.) +7. Save this file to your filesystem. +8. Install [DB Browser for SQLite](https://sqlitebrowser.org/). +9. Open DB Browser and load the `.sqlite` file you saved from your backup. +10. Click on the `Execute SQL` tab. +11. Input and run this query: + + ```sql + SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%vacuum%" + ``` + +12. Copy the returned 96-digit hexadecimal string to your clipboard. +13. Open `Terminal` and execute this command: + + ```bash + echo '0: ' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000 + ``` + +14. Use the resulting 32-digit string as your token. (On your mac in front of the terminal session) + +### Bluestacks + +1. Configure the robot with the Mi-Home app. Make sure to select the correct region, as Xiaomi uses different product names for different geographical areas. Note that the new RoboRock app is currently not supported for this method. +2. Install [BlueStacks](https://www.bluestacks.com). +3. Set up [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/) in BlueStacks and login to synchronize devices. +4. Use [BlueStacks Tweaker](https://forum.xda-developers.com/general/general/bluestacks-tweaker-2-tool-modifing-t3622681) to access the filesystem and retrieve the token. +5. Copy `/data/data/com.xiaomi.smarthome/databases/miio2.db` file to your computer using the Bluestacks Tweakers filesystem tool. +6. Install [DB Browser for SQLite](https://sqlitebrowser.org/). +7. Open the DB Browser and load the `miio2.db` from your computer. +8. Select `Browse Data` tab from the DB Browser and switch to table called `devicerecord` +9. This will display all the connected devices information with the token. + ### Miio command line tool +Use of Miio should be done before the Vacuum is connected to Mi Home. If you already connected to the app you will need to delete it and then join the ad-hoc Wi-Fi network the Vacuum creates. If the vacuum is already paired it's likely this method will only return `???` as your token. + You can install the command line tool using the following command: ```bash @@ -248,147 +336,56 @@ The information output is: - `Address` - The IP that the device has on the network. - `Token` - The token of the device or `???` if it could not be automatically determined. -### Windows and Android - -To fetch the token follow these instructions depending on your mobile phone platform. - -1. Configure the robot with [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/). -2. Download and extract the [MiToolKit.zip](https://github.com/ultrara1n/MiToolkit/releases). -3. Enable developer mode and USB debugging on the Android phone and plug it into the computer. -4. Change the MiToolKit language to English if you need to. -5. Click "Extract Token". -6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup. -7. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly. -8. If you don't get a token, close MiToolKit completely, delete the folder MiToolkit\apps\com.xiaomi.smarthome and relaunch MiToolKit to force recreate a new backup (sometimes the files would not be overwritten before deleting the old ones). - -### Linux and Android (not rooted) -Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from an SQLite file inside your phone. +## Example on how to clean a specific room -Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-miio` to be installed correctly. +Example script using [`vacuum.send_command`](/integrations/vacuum/) to clean a specific room: -```bash -sudo apt-get install libffi-dev libssl-dev -``` - -If your Home Assistant installation is running in a [virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. - -```bash -sudo -u homeassistant -H -s -source /srv/homeassistant/bin/activate +```yaml +vacuum_kitchen: + alias: "Clean the kitchen" + sequence: + - service: vacuum.send_command + data: + entity_id: vacuum.xiaomi_vacuum_cleaner + command: app_segment_clean + params: [18] ``` -To fetch the token follow these instructions depending on your mobile phone platform. - -1. Configure the robot with [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/). -2. Enable developer mode, USB debugging and plug the Android phone into the computer. -3. Get ADB by running `apt-get install android-tools-adb` or `apt-get install adb`. -4. `adb devices` should list your device. Consult the ADB manual if necessary. -5. Issue a backup command via adb: `adb backup -noapk com.xiaomi.smarthome -f backup.ab` (set a password if prompted on your phone). Some devices may require single quotes in the command `adb backup '-noapk com.xiaomi.smarthome -f backup.ab'`. -6. Download the ['ADB Backup Extractor'](https://sourceforge.net/projects/adbextractor/files/latest/download). -7. Extract the data from the backup: (enter the password, if prompted) - ```bash - java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar - ``` -8. Untar the unpacked data: `tar -xvf unpacked.tar`. -9. The following command returns the token for your Xiaomi vacuum bot: - ```bash - sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name like "%Vacuum%";' - ``` - -### Linux and Android (rooted!) - -Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from an SQLite file inside your phone. - -Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-miio` to be installed correctly. - -```bash -sudo apt-get install libffi-dev libssl-dev -``` +Where params specify room numbers, for multiple rooms, params can be specified like `[17,18]`. -If your Home Assistant installation is running in a [virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. +Valid room numbers can be retrieved using miio command-line tool. It will only give room numbers and not the room names. To get the room names, one can just test the app_segment_clean command and see which room it cleans. ```bash -sudo -u homeassistant -H -s -source /srv/homeassistant/bin/activate +miio protocol call get_room_mapping ``` -To fetch the token follow these instructions depending on your mobile phone platform. +## Example on how to reset maintenance hours (brushes, filter, sensors) -1. Configure the robot with [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/). -2. Enable developer mode, USB debugging and root permission only for ADB on the Android phone and plug it into the computer. -3. Get ADB (e.g, using `apt-get install android-tools-adb`). -4. The command `adb devices` should list your device. -5. The command `adb root` (does work for development builds only: ones with `ro.debuggable=1`). -6. The command `adb shell` (for those using Magisk based root the this command won't work. After entering a shell, type `su` to enter the root shell and try again). -7. The following command returns a list of all registered devices including IP address and token: - ```bash - echo "select name,localIP,token from devicerecord;" | sqlite3 /data/data/com.xiaomi.smarthome/databases/miio2.db - ``` +The vacuum entity stores attribute values for when brushes, filters and sensors need to be +cleaned or replaced (`main_brush_left`, `side_brush_left`, `filter_left` and +`sensor_dirty_left`). The values are measured in hours. Once the parts are cleaned +or replaced you can then reset those values on the vacuum. Here is an example script using +[`vacuum.send_command`](/integrations/vacuum/) to reset the hours for the main brush: -### iOS - -1. Configure the robot with the Mi Home app. -2. Using iTunes, create an unencrypted backup of your iPhone. -3. Install [iBackup Viewer](https://www.imactools.com/iphonebackupviewer/), open it, and open your backup. -4. Open the "Raw Data" module. -5. Navigate to `com.xiaomi.mihome`. -6. Search for a file that looks like this: `123456789_mihome.sqlite` (Note: `_mihome.sqlite` is *not* the correct file). -7. Save this file to your filesystem. -8. Install [DB Browser for SQLite](https://sqlitebrowser.org/). -9. Open DB Browser and load the `.sqlite` file you saved from your backup. -10. Click on the `Execute SQL` tab. -11. Input and run this query: - ```sql - SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%vacuum%" - ``` -12. Copy the returned 32-digit hexadecimal string to your clipboard. -13. Open `Terminal` and execute this command: - ```bash - echo '0: ' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000 - ``` -14. Use the resulting string as your token. +```yaml +reset_main_brush_left: + alias: "Reset hours for main brush replacement" + sequence: + - service: vacuum.send_Command + data: + entity_id: vacuum.xiaomi_vacuum_cleaner + command: reset_consumable + params: ['main_brush_work_time'] +``` -### Bluestacks +Allowed `params` for the `reset_consumable` command: +* `['main_brush_work_time']` +* `['side_brush_work_time']` +* `['filter_work_time']` +* `['sensor_dirty_time']` -1. Configure the robot with the Mi-Home app. -2. Install [BlueStacks](https://www.bluestacks.com). -3. Set up [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/) in BlueStacks and login to synchronize devices. -4. Use [BlueStacks Tweaker](https://forum.xda-developers.com/general/general/bluestacks-tweaker-2-tool-modifing-t3622681) to access the filesystem and retrieve the token. -5. Copy `/data/data/com.xiaomi.smarthome/databases/miio2.db` file to your computer using the Bluestacks Tweakers filesystem tool. -6. Install [DB Browser for SQLite](https://sqlitebrowser.org/). -7. Open the DB Browser and load the `miio2.db` from your computer. -8. Select `Browse Data` tab from the DB Browser and switch to table called `devicerecord` -9. This will display all the connected devices information with the token. - -### Selecting token manually (Windows and Android) - -The following instruction explained an alternative method, in case the MiToolKit didn't work. - -Software Required: - -- Android ADB is contained in [Android SDK](https://developer.android.com/studio/releases/platform-tools) -- [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/) -- [Android Backup Extractor](https://sourceforge.net/projects/adbextractor/) -- [SQLite Browser](https://sqlitebrowser.org/) -1. Install an old Version of MiHome (e.g. Mi Home version 5.0.30) on your Android-Device -2. Open MiHome, log-in and add your devices -3. Enable USB-Debugging on your Android -4. Create a backup from your MiHome App, by using adb - ```bash - adb backup com.xiaomi.smarthome - ``` - Now the backup App opens on you Android-Device. You don't need to set a password, just click save. -5. Extract the backup-file with android-backup-extractor - ```bash - java -jar abe.jar unpack backup.ab backup.tar - ``` - After that, you will be able to open the file with WinRaR or what ever you like. -6. Go to \apps\com.xiaomi.smarthome\db -7. Open miio2.db with SQLite Browser -8. You can find your device tokens in "devicerecord" table - -## Retrieving the Zone Coordinates +## Retrieving Zoned Cleaning Coordinates ### Using FloleVac (Android) @@ -397,3 +394,20 @@ Software Required: 3. Open Map (make sure you're on the same network as your vacuum cleaner) 4. Select "Zone cleanup" and draw a box around the zone you'd like to clean 5. Long press "Cleanup" and the zone coordinates will be copied to your clipboard + +### Using RoboRock Control Center (requires Valetudo firmware) + +[RRCC](https://github.com/LazyT/rrcc) supports both rooted and non-rooted Vacuums and acts as a mostly fully featured replacement for Mi Home that works locally without the cloud. If you have installed the rooted firmware [Valetudo](https://github.com/Hypfer/Valetudo) you are able to SSH into your Vacuum and enable MQTT plus use map functions with no cloud requirement. + +Using the map editor you are able to acquire the co-ordinates required for zoned clean up. Here is an example script for zoned clean up: + +```yaml +vacuum_kitchen: + alias: "vacuum kitchen" + sequence: + - service: vacuum.send_command + data: + entity_id: 'vacuum.xiaomi_vacuum_cleaner' + command: app_zoned_clean + params: [[23084,26282,27628,29727,1]] +``` diff --git a/source/_integrations/vallox.markdown b/source/_integrations/vallox.markdown index 577cf87fe9f3..d67e96d2273e 100644 --- a/source/_integrations/vallox.markdown +++ b/source/_integrations/vallox.markdown @@ -1,12 +1,12 @@ --- -title: "Vallox Ventilation Units" -description: "Instructions on how to integrate Vallox ventilation units into Home Assistant." -logo: vallox.png +title: Valloxs +description: Instructions on how to integrate Vallox ventilation units into Home Assistant. ha_category: - Fan - Sensor ha_release: 0.96 ha_iot_class: Local Polling +ha_domain: vallox --- The `vallox` integration lets you control any Vallox ventilation unit that is supported by the [vallox_websocket_api](https://github.com/yozik04/vallox_websocket_api) (follow the link for a list of supported units). diff --git a/source/_integrations/vasttrafik.markdown b/source/_integrations/vasttrafik.markdown index 66c3c1e93315..5a93e80ea4a1 100644 --- a/source/_integrations/vasttrafik.markdown +++ b/source/_integrations/vasttrafik.markdown @@ -1,11 +1,12 @@ --- -title: "Västtrafik Public Transport" -description: "Instructions on how to integrate timetable data for traveling in Sweden within Home Assistant." +title: Västtrafik +description: Instructions on how to integrate timetable data for traveling in Sweden within Home Assistant. logo: vasttrafik.png ha_category: - Transport ha_iot_class: Cloud Polling -ha_release: "0.30" +ha_release: '0.30' +ha_domain: vasttrafik --- The `vasttrafik` sensor will provide you traveling details for the larger Göteborg area in Sweden from the [Västtrafik](https://vasttrafik.se/) public transportation service. diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index dd31e09655f1..54d4e75eb202 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -1,6 +1,6 @@ --- -title: "Velbus" -description: "Access and control your Velbus devices." +title: Velbus +description: Access and control your Velbus devices. logo: velbus.png ha_category: - Hub @@ -8,11 +8,17 @@ ha_category: - Climate - Sensor - Switch + - Light ha_iot_class: Local Push -ha_release: "0.50" +ha_release: '0.50' +ha_config_flow: true +ha_codeowners: + - '@Cereal2nd' + - '@brefra' +ha_domain: velbus --- -The `velbus` integration supports the Velbus USB, Velbus serial and a TCP/IP gateway. +The `velbus` integration is used to control [Velbus](https://www.velbus.eu/?lang=en) modules. It supports the Velbus USB, Velbus serial and a TCP/IP gateway. There is currently support for the following device types within Home Assistant: @@ -21,10 +27,13 @@ There is currently support for the following device types within Home Assistant: - Sensor - Switch - Cover +- Light + +The pushbutton LEDs of input modules are disabled by default. These can be enabled from the `Devices` panel in the `Configuration` page of the web interface. ## Configuration -There are 2 options in configuring the velbus integration: +There are 2 options in configuring the Velbus integration: - Via the Home Assistant user interface where it will let you enter the port string to connect to the Velbus bus. - Via the Home Assistant `configuration.yaml` file. @@ -35,12 +44,12 @@ velbus: port: 'PORT_STRING' ``` -## Port Sstring +## Port String The port string used in the user interface or the configuration file can have 2 formats: - For a serial device: /dev/ttyUSB00 -- For a tcp/ip device: 127.0.0.1:3678 +- For a TCP/IP device: 127.0.0.1:3678 {% configuration %} port: @@ -48,3 +57,86 @@ port: required: true type: string {% endconfiguration %} + +## Services + +- `velbus.sync clock`: Synchronize Velbus time to local clock. +- `velbus.set_memo_text`: Show memo text on Velbus display modules. + +### Service `velbus.sync_clock` + +You can use the service `velbus.sync clock` to synchronize the clock of the Velbus modules to the clock of the machine running Home Assistant. This is the same as the 'sync clock' button at the VelbusLink software. + +### Service `velbus.set_memo_text` + +You can use the service `velbus.set_memo_text` to provide the memo text to be displayed at Velbus modules like VMBGPO(D) and VMBELO. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------- | +| `address` | no | The module address in decimal format, which is displayed at the device list at the integration page. | +| `memo_text` | yes | Text to be displayed on module. When no memo text is supplied the memo text will be cleared. | + +Example: + +```yaml +script: + trash_memo: + alias: Trash memo text + sequence: + - data: + address: 65 + memo_text: "It's trash day" + service: velbus.set_memo_text +``` + +## Example automation + +The Velbus integration allows you to link a Velbus button (i.e., a button of a [VMBGPOD](https://www.velbus.eu/products/view/?id=416302&lang=en) module) to a controllable entity of Home Assistant. +The actual linking can be realized by two automation rules. One rule to control the device using the push button and a second rule to update the LED state of the push button as soon as the entity state changes. + +```yaml +# Control light living from Velbus push_button_10 +- id: 'Control_light_living_from_Velbus' + alias: Control light living using Velbus push_button_10 + trigger: + - entity_id: binary_sensor.push_button_10 + platform: state + to: 'on' + condition: [] + action: + - entity_id: light.living + service: light.toggle + +# Keep status LED push_button_10 in sync to status light living +- id: 'Update LED of push_button_10' + alias: Update LED state of push_button_10 + trigger: + - entity_id: light.living + platform: state + to: 'on' + - entity_id: light.living + platform: state + to: 'off' + condition: [] + action: + - condition: or + conditions: + - condition: and + conditions: + - condition: state + entity_id: light.led_push_button_10 + state: 'on' + - condition: state + entity_id: light.living + state: 'off' + - condition: and + conditions: + - condition: state + entity_id: light.led_push_button_10 + state: 'off' + - condition: state + entity_id: light.living + state: 'on' + - entity_id: light.led_push_button_10 + service: light.toggle +``` diff --git a/source/_integrations/velux.markdown b/source/_integrations/velux.markdown index be1a433f9ea3..c25eaac9adf2 100644 --- a/source/_integrations/velux.markdown +++ b/source/_integrations/velux.markdown @@ -1,12 +1,15 @@ --- -title: "Velux" -description: "Instructions on how to integrate Velux KLF 200 integration with Home Assistant." +title: Velux +description: Instructions on how to integrate Velux KLF 200 integration with Home Assistant. logo: velux.png ha_category: - Scene - Cover ha_release: 0.49 ha_iot_class: Local Polling +ha_codeowners: + - '@Julius2342' +ha_domain: velux --- [Velux](https://www.velux.com/) integration for Home Assistant allows you to connect to a Velux KLF 200 interface, to control [io-homecontrol](http://www.io-homecontrol.com) devices like windows and blinds. The module allows you to start scenes configured within KLF 200. @@ -35,7 +38,7 @@ host: required: true type: string password: - description: The password of the KLF 200 interface. Note that this is the same as the WiFi password (in the upper box on the back), *not* the password for the web login. + description: The password of the KLF 200 interface. Note that this is the same as the Wi-Fi password (in the upper box on the back), *not* the password for the web login. required: true type: string {% endconfiguration %} diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown index 701df65acc56..d1793746f852 100644 --- a/source/_integrations/venstar.markdown +++ b/source/_integrations/venstar.markdown @@ -1,34 +1,38 @@ --- -title: "Venstar Thermostat" -description: "Instructions for how to integrate Venstar WiFi thermostats within Home Assistant." +title: Venstar +description: Instructions for how to integrate Venstar WiFi thermostats within Home Assistant. logo: venstar.png ha_category: - Climate ha_release: 0.62 ha_iot_class: Local Polling +ha_domain: venstar --- - The `venstar` climate platform allows you to control [Venstar](https://www.venstar.com/) thermostats from Home Assistant. -Venstar thermostats feature a local API that allows for automation without the need for a cloud service. +Venstar thermostats feature a local API that allows for automation without the need for their Skyport cloud service. Currently supported and tested thermostats: -- Color Touch T7900 +- ColorTouch T7900 +- ColorTouch T7850 (No Humidity control) Currently supported functionality: - Setting heat/cool temperature when the thermostat is in the appropriate mode. - Changing the operation mode of the thermostat (heat/cool/off/auto) - Turning the fan on/off -- Reading and setting the humidity level and limits +- Reading and setting the humidity level and limits (T7900 only) - Turning on away preset - Turning on hold mode preset -The following values are supported for the hold_mode state attribute: -- `off`: *Enables* the scheduling functionality. +The following values are supported for the preset_mode state attribute: +- `none`: *Enables* the scheduling functionality. - `temperature`: *Disables* the schedule and holds the set temperature indefinitely. +- `away`: Places the thermostat in away mode + +Note - Please ensure that you update your thermostat to the latest firmware. Initially tested on firmware 5.10 and currently VH6.79. -Note - Please ensure you update your thermostat to the latest firmware. Currently tested on firmware 5.10. +Local API mode needs to be enabled via the thermostat's *Menu > WiFi > Local API Options > Local API - ON* To set it up, add the following information to your `configuration.yaml` file: @@ -52,6 +56,10 @@ password: description: Password for the thermostat. required: false type: string +pin: + description: Pin for Lockscreen (required if lock screen enabled) + required: false + type: string ssl: description: Whether to use SSL or not when communicating. required: false @@ -79,6 +87,7 @@ climate: ssl: true username: OPTIONAL_AUTH_USER_HERE password: OPTIONAL_AUTH_PASS_HERE + pin: LOCKSCREEN_PIN timeout: 5 humidifier: false ``` diff --git a/source/_integrations/vera.markdown b/source/_integrations/vera.markdown index a2611442c4f0..25a14b4cccd0 100644 --- a/source/_integrations/vera.markdown +++ b/source/_integrations/vera.markdown @@ -1,6 +1,6 @@ --- -title: "Vera" -description: "Instructions on how to setup Vera Z-Wave hubs and configure devices within Home Assistant." +title: Vera +description: Instructions on how to setup Vera Z-Wave hubs and configure devices within Home Assistant. logo: vera.png ha_category: - Hub @@ -13,9 +13,10 @@ ha_category: - Switch - Climate ha_release: pre 0.7 +ha_domain: vera --- -The [Vera](https://getvera.com/) hub is a controller mainly connecting to Z-Wave devices. +The [Vera](https://getvera.com/) hub is a controller mainly for connecting to Z-Wave devices. There is currently support for the following device types within Home Assistant: @@ -32,7 +33,7 @@ and will be automatically added when HA connects to your Vera controller. ## Configuration -To use Vera devices in your installation, add the following to your configuration.yaml file using the IP and port number of your Vera controller: +To use Vera devices in your installation, add the following to your `configuration.yaml` file using the IP and port number of your Vera controller: ```yaml vera: @@ -77,8 +78,8 @@ If you want to use a Z-Wave device from the Vera controller in Home Assistant au The `vera` platform allows you to get data from your [Vera](https://getvera.com/) sensors from within Home Assistant. -Please note that some vera sensors (such as _motion_ and _flood_ sensors) are _armable_ which means that vera will send alerts (email messages to txts) when they are _armed_ and change state. +Please note that some Vera sensors (such as _motion_ and _flood_ sensors) are _armable_ which means that Vera will send alerts (email messages to txts) when they are _armed_ and change state. Home Assistant will display the state of these sensors regardless of the _armed_ state. -To allow you to change the _armed state_ - Home Assistant will create a switch as well as a sensor for each _Armable_ sensor. You can hide these switches using customization if you wish. \ No newline at end of file +To allow you to change the _armed state_ - Home Assistant will create a switch as well as a sensor for each _Armable_ sensor. You can hide these switches using customization if you wish. diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown index 88c7b4d2e131..d16d01e6af1f 100644 --- a/source/_integrations/verisure.markdown +++ b/source/_integrations/verisure.markdown @@ -1,6 +1,6 @@ --- -title: "Verisure" -description: "Instructions on how to setup Verisure devices within Home Assistant." +title: Verisure +description: Instructions on how to setup Verisure devices within Home Assistant. logo: verisure.png ha_category: - Hub @@ -12,6 +12,7 @@ ha_category: - Switch ha_release: pre 0.7 ha_iot_class: Cloud Polling +ha_domain: verisure --- Home Assistant has support to integrate your [Verisure](https://www.verisure.com/) devices. @@ -90,7 +91,7 @@ code_digits: type: integer default: 4 giid: - description: The GIID of your installation (If you have more then one alarm system). To find the GIID for your systems run 'python verisure.py EMAIL PASSWORD installations'. + description: The GIID of your installation (If you have more then one alarm system). To find the GIID for your systems run `python verisure.py` EMAIL PASSWORD installations'. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/versasense.markdown b/source/_integrations/versasense.markdown new file mode 100644 index 000000000000..e41461bd51e7 --- /dev/null +++ b/source/_integrations/versasense.markdown @@ -0,0 +1,45 @@ +--- +title: VersaSense +description: Integrate your VersaSense MicroPnP devices. +date: 2019-11-19 14:00 +ha_release: 0.103 +ha_category: + - Hub + - Sensor + - Switch +ha_iot_class: Local Polling +ha_codeowners: + - '@flamm3blemuff1n' +ha_domain: versasense +--- + +The `VersaSense` integration supports the VersaSense Edge Gateway. The gateway is able to control hubs and their peripherals (sensors and actuators) in the mesh network. + +## Configuration + +```yaml +# Example configuration.yaml entry +versasense: + host: GATEWAY_URI +``` + +{% configuration %} +host: + description: "The IP address or hostname of the VersaSense gateway. Including *protocol* and *port*, e.g., `https://gateway.versasense.com:8889`" + required: true + type: string +{% endconfiguration %} + +## Supported hardware + +All VersaSense gateways with software version >= 1.0.2.10 + +The integration is tested with following peripherals and devices: + +- S03 S04: Temperature and Humidity sensor +- S06: Barometric Pressure sensor +- S10: Light sensor +- S17: Object detection sensor +- S19: Buzzer actuator +- Pxx: SmartMesh IP Hub +- M01: SmartMesh Edge Gateway diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown index 55e767fdba2c..b0cb092b89e0 100644 --- a/source/_integrations/version.markdown +++ b/source/_integrations/version.markdown @@ -1,12 +1,14 @@ --- -title: "Version Sensor" -description: "Instructions on how to integrate a version sensor into Home Assistant." +title: Version +description: Instructions on how to integrate a version sensor into Home Assistant. ha_category: - Utility ha_iot_class: Local Push -logo: home-assistant.png ha_release: 0.52 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: version --- The `version` sensor platform that can display the current Home Assistant versions. @@ -44,9 +46,9 @@ source: default: local {% endconfiguration %} -### Supported images for Hass.io and Docker +### Supported images for Home Assistant -`default`, `qemux86`, `qemux86-64`, `qemuarm`, `qemuarm-64`, `intel-nuc`, `raspberrypi`, `raspberrypi2`, `raspberrypi3`, `raspberrypi3-64`, `tinker`, `odroid-c2`, `odroid-xu` +`default`, `qemux86`, `qemux86-64`, `qemuarm`, `qemuarm-64`, `intel-nuc`, `raspberrypi`, `raspberrypi2`, `raspberrypi3`, `raspberrypi3-64`, `raspberrypi4`, `raspberrypi4-64`, `tinker`, `odroid-c2`, `odroid-xu` ## Alternatives for showing local version diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index b1392d7d1a76..e954274312e2 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -1,10 +1,14 @@ --- -title: "VeSync Integration" -description: "Instructions on how to set up Etekcity VeSync switches and outlets within Home Assistant." -logo: vesync.png +title: Etekcity VeSync +description: Instructions on how to set up Etekcity VeSync switches and outlets within Home Assistant. ha_category: - Switch ha_release: 0.66 +ha_config_flow: true +ha_codeowners: + - '@markperdue' + - '@webdjoe' +ha_domain: vesync --- The `vesync` integration enables you to control Etekcity smart switches and outlets connected to the VeSync App. diff --git a/source/_integrations/viaggiatreno.markdown b/source/_integrations/viaggiatreno.markdown index e08db055af5a..963f24bf50ef 100644 --- a/source/_integrations/viaggiatreno.markdown +++ b/source/_integrations/viaggiatreno.markdown @@ -1,11 +1,11 @@ --- -title: "ViaggiaTreno Italian Railroads" -description: "Instructions on how to integrate Italian Railroads data (from ViaggiaTreno API) into Home Assistant." -logo: train.png +title: Trenitalia ViaggiaTreno +description: Instructions on how to integrate Italian Railroads data (from ViaggiaTreno API) into Home Assistant. ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.58 +ha_domain: viaggiatreno --- The `viaggiatreno` sensor will give you information about configured train ids and stations using the public [ViaggiaTreno](http://viaggiatreno.it) API. diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown index 9cbaf4b3d36d..075ad9406b58 100644 --- a/source/_integrations/vicare.markdown +++ b/source/_integrations/vicare.markdown @@ -1,10 +1,13 @@ --- -title: "Viessmann climate controller" -description: "Instructions how to integrate Viessmann heating devices with Home Assistant" +title: Viessmann ViCare +description: Instructions how to integrate Viessmann heating devices with Home Assistant logo: viessmann.png ha_category: Climate ha_release: 0.99 ha_iot_class: Cloud Polling +ha_codeowners: + - '@oischinger' +ha_domain: vicare --- The `ViCare` integration lets you control [Viessmann](https://www.viessmann.com) devices via the Viessmann ViCare (REST) API. @@ -114,5 +117,3 @@ Sets the target temperature of domestic hot water to the given temperature. | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. To target all entities, use `all` keyword instead of entity_id. | `temperature` | no | New target temperature for water heater - - diff --git a/source/_integrations/vilfo.markdown b/source/_integrations/vilfo.markdown new file mode 100644 index 000000000000..1f29efe5531f --- /dev/null +++ b/source/_integrations/vilfo.markdown @@ -0,0 +1,34 @@ +--- +title: Vilfo Router +description: Instructions on how to integrate a Vilfo Router into Home Assistant. +ha_release: '0.106' +ha_category: + - Network + - System Monitor + - Sensor +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@ManneW' +ha_domain: vilfo +--- + +The `Vilfo Router` integration allows you to observe the state of your [Vilfo Router](https://www.vilfo.com) from Home Assistant. + +It currently supports reporting the current load of the device in percent and the current uptime measured in minutes. + +## Configuration + +The integration can be added using the UI. Go to **Configuration** >> **Integrations** and click the `+` sign button and select **Vilfo Router** from the list. + +To configure the integration you will need the hostname or IP of your router (`admin.vilfo.com` is the default hostname) as well as an API access token. + +### Obtaining an access token + +The access token for the API can be obtained through the Vilfo web-UI in the pane named "general". Visit [the official API documentation](https://www.vilfo.com/apidocs/#header-authorization) for more information on how to find your token. + +
    + +In version 1.0.13 of the Vilfo firmware, access tokens are invalidated when a new login to the web UI is made. To prevent web UI logins from interfering with the API calls, you can create a separate user solely for API purposes and use its access token. + +
    diff --git a/source/_integrations/vivotek.markdown b/source/_integrations/vivotek.markdown index 63a479470d0f..e2328235de80 100644 --- a/source/_integrations/vivotek.markdown +++ b/source/_integrations/vivotek.markdown @@ -1,14 +1,16 @@ --- -title: "Vivotek Camera" -description: "Instructions on how to integrate Vivotek cameras within Home Assistant." +title: VIVOTEK +description: Instructions on how to integrate VIVOTEK cameras within Home Assistant. ha_category: - Camera -logo: vivotek.jpg ha_release: 0.99 ha_iot_class: Local Polling +ha_codeowners: + - '@HarlemSquirrel' +ha_domain: vivotek --- -The `vivotek` camera platform allows you to integrate a Vivotek IP camera into Home Assistant. +The `vivotek` camera platform allows you to integrate a VIVOTEK IP camera into Home Assistant. Home Assistant will serve the images via its server, making it possible to view your IP cameras while outside of your network. The endpoint is `/api/camera_proxy/camera.[name]`. @@ -33,7 +35,7 @@ ip_address: name: description: This parameter allows you to override the name of your camera. required: false - default: Vivotek Camera + default: VIVOTEK Camera type: string username: description: The username for accessing your camera. @@ -43,6 +45,16 @@ password: description: The password for accessing your camera. required: true type: string +authentication: + description: "Type for authenticating the requests `basic` or `digest`." + required: false + default: basic + type: string +security_level: + description: The security level of the user accessing your camera. This could be `admin` or `viewer`. + required: false + default: admin + type: string ssl: description: Enable or disable SSL. Set to false to use an HTTP-only camera. required: false @@ -76,6 +88,8 @@ camera: ssl: true username: !secret fd_camera_username password: !secret fd_camera_pwd + authentication: digest + security_level: admin verify_ssl: false framerate: 5 stream_path: live2.sdp diff --git a/source/_integrations/vizio.markdown b/source/_integrations/vizio.markdown index 1d1fbccc8dd4..9a3a2fa43824 100644 --- a/source/_integrations/vizio.markdown +++ b/source/_integrations/vizio.markdown @@ -1,72 +1,99 @@ --- -title: "Vizio SmartCast Device" -description: "Instructions on how to integrate Vizio SmartCast TVs and sound bars into Home Assistant." -logo: vizio-smartcast.png +title: Vizio SmartCast +description: Instructions on how to integrate Vizio SmartCast TVs and sound bars into Home Assistant. ha_category: - Media Player ha_release: 0.49 ha_iot_class: Local Polling +ha_config_flow: true +ha_quality_scale: platinum +ha_codeowners: + - '@raman325' +ha_domain: vizio --- The `vizio` integration allows you to control [SmartCast](https://www.vizio.com/smartcast-app)-compatible TVs and sound bars (2016+ models). ## Find your device -Install the command line tool using `pip` (or download it manually): +If `zeroconf` discovery is enabled, your device will get discovered automatically. To discover your device manually, read the subsections below. -```bash -$ pip3 install pyvizio -``` +### Install `pyvizio` locally -or +
    -```bash -$ pip3 install git+https://github.com/vkorn/pyvizio.git@master -``` +If the `pip3` command is not found, try `pip` instead -or +
    -```bash -$ pip3 install -I . -``` +- To install, run `pip3 install pyvizio` in your terminal. +- If `pyvizio` is already installed locally, make sure you are using the latest version by running `pip3 install --upgrade pyvizio` in your terminal. + +### Discover devices Find your device using the following command: -```txt + +```bash pyvizio --ip=0 discover ``` -and note its IP address. If using the IP address by itself does not work, you may need to append `:9000` or `:7345` to it when using it as a parameter in future commands. +Write down its IP address and port number. If you have trouble finding a device you were expecting to, you can try increasing the discovery timeout period by adding the `--timeout` option (e.g., `pyvizio --ip=0 discover --timeout=10`). ## Pairing -Before adding your device to Home Assistant, you may need to pair it manually. In particular, it is unclear how a sound bar would notify you of a valid auth token. In this case, it might be best to first skip the pairing process entirely, specify a `device_class` of `soundbar` in your configuration, and try interacting with the entity to see if you have any success. If the media player controls aren't working, and if specifying different ports as mentioned above doesn't work, you will need to find a way to obtain the auth token during this process. +This integration requires an access token in order to communicate with TVs (speakers do not need an access token). An access token can be obtained by going through a pairing process, either manually, or through the HA frontend. + +### Pair using the HA frontend -To obtain an auth token, follow these steps: + - **Using `configuration.yaml`:** If you have a `vizio` entry in `configuration.yaml` but don't provide an access token value in your configuration, after you initialize HomeAssistant, you will see a Vizio SmartCast device ready to be configured. When you open the configuration window, you will be guided through the pairing process. While HA will store the access token for the life of your `vizio` entity, it is a good idea to note the access token value displayed in the window and add it to your `configuration.yaml`. This will ensure that you will not have to go through the pairing process again in the future if you decide to rebuild your HA instance. +- **Using discovery or manual setup through the Integrations menu:** To initiate the pairing process, submit your initial configuration with an empty Access Token value. + +### Pair manually using the CLI + +The following script, written by [JeffLIrion](https://github.com/JeffLIrion) can be run to obtain an auth token. You will need to replace `` with your IP and `` (which is typically 7345 or 9000). + +```bash +#!/bin/bash + +VIZIO_IP="" +VIZIO_PORT="" + +curl -k -H "Content-Type: application/json" -X PUT -d '{"DEVICE_ID":"pyvizio","DEVICE_NAME":"Python Vizio"}' https://${VIZIO_IP}:${VIZIO_PORT}/pairing/start + +read -p "PIN: " VIZIO_PIN +read -p "PAIRING_REQ_TOKEN: " VIZIO_PAIRING_REQ_TOKEN + +curl -k -H "Content-Type: application/json" -X PUT -d '{"DEVICE_ID": "pyvizio","CHALLENGE_TYPE": 1,"RESPONSE_VALUE": "'"${VIZIO_PIN}"'","PAIRING_REQ_TOKEN": '"${VIZIO_PAIRING_REQ_TOKEN}"'}' https://${VIZIO_IP}:${VIZIO_PORT}/pairing/pair +``` + +### Pair manually using `pyvizio` + +To obtain an auth token manually, follow these steps: Make sure that your device is on before continuing. -| Parameter | Description | -|:----------------|:---------------------| -| `ip` | IP address (possibly including port) obtained from the previous section | -| `device_type` | The type of device you are connecting to. Options are `tv` or `soundbar` | +| Parameter | Description | +| :------------ | :---------------------------------------------------------------------- | +| `ip` | `IP Address:Port` (obtained from the previous section) | +| `device_type` | The type of device you are connecting to. Options are `tv` or `speaker` | Enter the following command to initiate pairing: ```bash -$ pyvizio --ip={ip} --device_type={device_type} pair +pyvizio --ip={ip:port} --device_type={device_type} pair ``` Initiation will show you two different values: -| Value | Description | -|:----------------|:---------------------| -| Challenge type | Usually it should be `"1"`. If not, use the additional parameter `--ch_type=your_type` in the next step | -| Challenge token | Token required to finalize pairing in the next step | +| Value | Description | +| :-------------- | :------------------------------------------------------------------------------------------------------ | +| Challenge type | Usually, it should be `"1"`. | +| Challenge token | Token required to finalize pairing in the next step | At this point, a PIN code should be displayed at the top of your TV. With all these values, you can now finish pairing: ```bash -$ pyvizio --ip={ip} --device_type={device_type} pair-finish --token={challenge_token} --pin={pin} +pyvizio --ip={ip:port} --device_type={device_type} pair-finish --token={challenge_token} --pin={pin} --ch_type={challenge_type} ``` You will need the authentication token returned by this command to configure Home Assistant. @@ -77,33 +104,94 @@ To add your Vizio TV to your installation, add the following to your `configurat ```yaml # Example configuration.yaml entry -media_player: - - platform: vizio - host: IP_ADDRESS +vizio: + - host: "DEVICE_IP:DEVICE_PORT" access_token: AUTH_TOKEN ``` {% configuration %} host: - description: IP address of your device. + description: "`IP Address:Port` for your device (port is optional but recommended)." required: true type: string +name: + description: Nickname for your device that will be used to generate the device's entity ID. If multiple Vizio devices are configured, the value must be unique for each entry. + required: false + type: string + default: Vizio SmartCast access_token: - description: Authentication token you received in the last step of the pairing process (if applicable). + description: Authentication token you received in the last step of the pairing process. This token is only needed if your device is a TV, and you can opt not to provide it in your configuration and instead go through the pairing process via the HA frontend. required: false type: string device_class: - description: The class of your device. Valid options are `tv` or `soundbar` + description: The class of your device. Valid options are `tv` or `speaker`. required: false type: string default: tv -suppress_warning: - description: Set to `true` to disable self-signed certificate warnings. +volume_step: + description: The number of steps that the volume will be increased or decreased by at a time. required: false - default: false - type: string + type: integer + default: 1 +apps: + description: Use this section to define app specific settings (only applicable for Vizio Smart TVs). + required: false + type: map + keys: + include: + description: List of apps to include in the source list. Cannot be used in combination with `exclude`. + required: exclusive + type: list + exclude: + description: List of apps to exclude from the source list. Cannot be used in combination with `include`. + required: exclusive + type: list + additional_configs: + description: List of manually configured apps that aren't available in the default app list provided by the integration. + required: false + type: map + keys: + name: + description: The name of the app that will be used in the source list and used to launch the app. + required: true + type: string + config: + description: The app configuration that will be used to detect and launch the app. + required: true + type: map + keys: + APP_ID: + description: See [Obtaining an app configuration](#obtaining-an-app-configuration) section below. + required: true + type: string + NAME_SPACE: + description: See [Obtaining an app configuration](#obtaining-an-app-configuration) section below. + required: true + type: integer + MESSAGE: + description: See [Obtaining an app configuration](#obtaining-an-app-configuration) section below. + required: false + type: string + default: null {% endconfiguration %} +### Obtaining an app configuration + +If there is an app you want to be able to launch from Home Assistant that isn't detected by default, you will need to specify the app configuration in `configuration.yaml`. In order to determine the values to specify for each configuration parameter, launch the app you want to configure on your device, and run the following command (requires `pyvizio` to be installed locally): + +```bash +pyvizio --ip={IP:PORT} get-current-app-config +``` + +`pyvizio` will return the value of the three parameters (`APP_ID`, `NAME_SPACE`, `MESSAGE`) for the currently running app which you can then include in your configuration. + +### Obtaining a list of valid apps to include or exclude +To get the list of apps that can be excluded or included, run the following command (requires `pyvizio` to be installed locally): + +```bash +pyvizio --ip=0 get-apps-list +``` + ## Notes and limitations ### Turning device on @@ -113,7 +201,3 @@ If the `Power Mode` of your device is set to `Eco Mode`, turning the device on w ### Changing tracks Changing tracks works like switching channels. If the current input is anything other than regular TV, this command might not do anything. - -### Sources - -The source list shows all external devices connected to the Vizio device through HDMI, plus a list of internal devices (TV mode, Chromecast, etc.) diff --git a/source/_integrations/vlc.markdown b/source/_integrations/vlc.markdown index bd1b7dd0add1..7d650229650e 100644 --- a/source/_integrations/vlc.markdown +++ b/source/_integrations/vlc.markdown @@ -1,15 +1,23 @@ --- -title: "VLC" -description: "Instructions on how to integrate VLC media player into Home Assistant." -logo: videolan.png +title: VLC media player +description: Instructions on how to integrate VLC media player into Home Assistant. ha_category: - Media Player ha_release: 0.35 ha_iot_class: Local Polling +ha_domain: vlc --- The `vlc` platform allows you to control [VLC media player](https://www.videolan.org/vlc/index.html). +
    + +The VLC media player integration, is currently only available for installations that are based on the Home Assistant Core in a Python virtual environment. + +
    + +## Configuration + To add a VLC media player to your installation, add the following to your `configuration.yaml` file: ```yaml @@ -45,7 +53,7 @@ media_player: arguments: '--alsa-audio-device=hw:1,0' ``` -##### Additional configuration on macOS +## Additional configuration on macOS On macOS `python-vlc` won’t find the VLC plugin directory unless you add this to the user’s `.bash_profile` that is running Home Assistant: @@ -53,14 +61,10 @@ On macOS `python-vlc` won’t find the VLC plugin directory unless you add this export VLC_PLUGIN_PATH=$VLC_PLUGIN_PATH:/Applications/VLC.app/Contents/MacOS/plugins ``` -##### Additional configuration for Rasperry Pi +## Additional configuration for Raspberry Pi You need to add the `homeassistant` user to the `audio` group: ```bash sudo usermod -a -G audio homeassistant ``` - -##### VLC currently not supported with Hass.io - -According to the forum topic ["How to add VLC into my Hassio"](https://community.home-assistant.io/t/how-to-add-vlc-into-my-hassio/23000/5), it is not possible to install packages like VLC on Hass.io. diff --git a/source/_integrations/vlc_telnet.markdown b/source/_integrations/vlc_telnet.markdown index be761f1c8f4c..38155b14643e 100644 --- a/source/_integrations/vlc_telnet.markdown +++ b/source/_integrations/vlc_telnet.markdown @@ -1,11 +1,13 @@ --- -title: "VLC Telnet" -description: "Instructions on how to integrate VLC media player into Home Assistant using the telnet interface." -logo: videolan.png +title: VLC media player Telnet +description: Instructions on how to integrate VLC media player into Home Assistant using the telnet interface. ha_category: - Media Player ha_release: 0.95 ha_iot_class: Local Polling +ha_codeowners: + - '@rodripf' +ha_domain: vlc_telnet --- The `vlc_telnet` platform allows you to control a [VLC media player](https://www.videolan.org/vlc/index.html) using the built in telnet interface. @@ -60,6 +62,7 @@ media_player: password: your-secure-password ``` -##### Additional configuration for Rasperry Pi +## Home Assistant Add-on -You can run a VLC Media Player inside your Hassio installation using the [hassio-local-vlc add-on](https://github.com/rodripf/hassio-local-vlc). Using it you can play files on the local network, Internet or files and playlist locally saved to the /share folder of your Hassio installation. +You can run a VLC Media Player on your Home Assistant installation using the a community provided [add-on](https://github.com/rodripf/hassio-local-vlc). +Using it you can play files on the local network, Internet or files and playlist locally saved to the `/share` folder of your Home Assistant installation. diff --git a/source/_integrations/voicerss.markdown b/source/_integrations/voicerss.markdown index f125858799af..92e07b85c8a0 100644 --- a/source/_integrations/voicerss.markdown +++ b/source/_integrations/voicerss.markdown @@ -1,10 +1,11 @@ --- -title: "VoiceRSS" -description: "Instructions on how to setup VoiceRSS TTS with Home Assistant." +title: VoiceRSS +description: Instructions on how to setup VoiceRSS TTS with Home Assistant. logo: voicerss.png ha_category: - Text-to-speech ha_release: 0.35 +ha_domain: voicerss --- The `voicerss` text-to-speech platform uses [VoiceRSS](http://www.voicerss.org/) Text-to-Speech engine to read a text with natural sounding voices. diff --git a/source/_integrations/volkszaehler.markdown b/source/_integrations/volkszaehler.markdown index 93b45faf79ab..7c194d7d48d1 100644 --- a/source/_integrations/volkszaehler.markdown +++ b/source/_integrations/volkszaehler.markdown @@ -1,11 +1,12 @@ --- -title: "Volkszaehler" -description: "Instructions on how to integrate Volkszaehler sensors into Home Assistant." +title: Volkszaehler +description: Instructions on how to integrate Volkszaehler sensors into Home Assistant. logo: volkszaehler.png ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.78 +ha_domain: volkszaehler --- The `volkszaehler` sensor platform is consuming the system information provided by the [Volkszaehler](https://wiki.volkszaehler.org/) API. diff --git a/source/_integrations/volumio.markdown b/source/_integrations/volumio.markdown index 7c8ffc360d9b..30ae1f073a0b 100644 --- a/source/_integrations/volumio.markdown +++ b/source/_integrations/volumio.markdown @@ -1,10 +1,11 @@ --- -title: "Volumio Media Player" -description: "How to set up the Volumio media player platform" +title: Volumio +description: How to set up the Volumio media player platform logo: volumio.png ha_category: - Media Player ha_release: 0.41 +ha_domain: volumio --- The `Volumio` platform allows you to control a [Volumio](https://volumio.org/) media player from Home Assistant. diff --git a/source/_integrations/volvooncall.markdown b/source/_integrations/volvooncall.markdown index ce169746f6b3..e6f31e399f64 100644 --- a/source/_integrations/volvooncall.markdown +++ b/source/_integrations/volvooncall.markdown @@ -1,11 +1,11 @@ --- -title: "Volvo On Call" -description: "Instructions for how to integrate Volvo On Call into Home Assistant." -logo: volvo.png +title: Volvo On Call +description: Instructions for how to integrate Volvo On Call into Home Assistant. ha_category: - Car ha_release: 0.39 ha_iot_class: Cloud Polling +ha_domain: volvooncall --- The `volvooncall` integration offers integration with the [Volvo On Call](https://www.volvocars.com/intl/why-volvo/human-innovation/future-of-driving/connectivity/volvo-on-call) cloud service and offers presence detection as well as sensors such as odometer and fuel level. diff --git a/source/_integrations/vultr.markdown b/source/_integrations/vultr.markdown index f4d8c54b0788..2a5e99e0a747 100644 --- a/source/_integrations/vultr.markdown +++ b/source/_integrations/vultr.markdown @@ -1,6 +1,6 @@ --- -title: "Vultr" -description: "Instructions on how to integrate Vultr within Home Assistant." +title: Vultr +description: Instructions on how to integrate Vultr within Home Assistant. ha_category: - System Monitor - Binary Sensor @@ -9,6 +9,7 @@ ha_category: ha_release: 0.58 logo: vultr.png ha_iot_class: Cloud Polling +ha_domain: vultr --- The `vultr` integration allows you to access information about and interact with your [Vultr](https://www.vultr.com) subscriptions (Virtual Private Servers) from Home Assistant. diff --git a/source/_integrations/w800rf32.markdown b/source/_integrations/w800rf32.markdown index a60a126a60ea..011855030a7c 100644 --- a/source/_integrations/w800rf32.markdown +++ b/source/_integrations/w800rf32.markdown @@ -1,12 +1,13 @@ --- -title: "W800rf32" -description: "Instructions on how to integrate a W800rf32(a) into Home Assistant." +title: WGL Designs W800RF32 +description: Instructions on how to integrate a W800rf32(a) into Home Assistant. logo: w800rf32.png ha_category: - Hub - Binary Sensor ha_release: 0.83 ha_iot_class: Local Push +ha_domain: w800rf32 --- The `w800rf32` integration supports W800RF32 devices by [WGL Designs](http://www.wgldesigns.com/w800.html) which diff --git a/source/_integrations/wake_on_lan.markdown b/source/_integrations/wake_on_lan.markdown index 664020e3561f..2b4d1a82b51b 100644 --- a/source/_integrations/wake_on_lan.markdown +++ b/source/_integrations/wake_on_lan.markdown @@ -1,15 +1,15 @@ --- -title: "Wake on LAN" -description: "Instructions on how to setup the Wake on LAN integration in Home Assistant." -logo: ethernet.png +title: Wake on LAN +description: Instructions on how to setup the Wake on LAN integration in Home Assistant. ha_category: - Network - Switch ha_release: 0.49 ha_iot_class: Local Push +ha_domain: wake_on_lan --- -The `wake_on_lan` integration enables the ability to send _magic packets_ to [Wake on LAN](https://en.wikipedia.org/wiki/Wake-on-LAN) capable devices, to turn them on. +The `wake_on_lan` integration enables the ability to send _magic packets_ to [Wake on LAN](https://en.wikipedia.org/wiki/Wake-on-LAN) capable devices to turn them on. There is currently support for the following device types within Home Assistant: @@ -61,12 +61,12 @@ To enable this switch in your installation, add the following to your `configura # Example configuration.yaml entry switch: - platform: wake_on_lan - mac_address: "00-01-02-03-04-05" + mac: MAC_ADDRESS ``` {% configuration %} -mac_address: - description: MAC address to send the wake up command to. +mac: + description: "The MAC address to send the wake up command to, e.g, `00:01:02:03:04:05`." required: true type: string name: diff --git a/source/_integrations/waqi.markdown b/source/_integrations/waqi.markdown index 14cefc5cd396..0cef8d208040 100644 --- a/source/_integrations/waqi.markdown +++ b/source/_integrations/waqi.markdown @@ -1,17 +1,27 @@ --- -title: "World Air Quality Index" -description: "Instructions on how to setup World Air Quality Index sensor in Home Assistant." -logo: waqi.png +title: World Air Quality Index (WAQI) +description: Instructions on how to setup World Air Quality Index sensor in Home Assistant. ha_category: - Health ha_release: 0.34 ha_iot_class: Cloud Polling +ha_codeowners: + - '@andrey-git' +ha_domain: waqi --- The `waqi` sensor platform will query [World Air Quality Index](https://aqicn.org/city/beijing/) service to check AQI value for a specific set of locations. The resulting indexes will be added to the Home Assistant as sensor outputs. +## Setup + This sensor requires an API token. Please obtain one at [AQICN API token](https://aqicn.org/data-platform/token/#/). +The locations field is a search for a location. E.g., "brisbane" or "Brisban" would find Brisbane, Australia and all associated stations in the area. + +The format for station fields is exactly from the website, e.g., you would provide the location string "[South Brisbane, Australia](http://aqicn.org/city/australia/queensland/south-brisbane/)" for the linked location. + +## Configuration + To enable this sensor, add the following lines to your `configuration.yaml` file: ```yaml diff --git a/source/_integrations/water_heater.markdown b/source/_integrations/water_heater.markdown index 9ac03694e2cd..99705da79778 100644 --- a/source/_integrations/water_heater.markdown +++ b/source/_integrations/water_heater.markdown @@ -1,7 +1,8 @@ --- -title: "Water Heater" -description: "Instructions on how to setup water heater devices within Home Assistant." +title: Water Heater +description: Instructions on how to setup water heater devices within Home Assistant. ha_release: 0.81 +ha_domain: water_heater --- The `water_heater` integration is built for the controlling and monitoring of hot water heaters. @@ -32,7 +33,7 @@ Sets target temperature of water heater device. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Else targets all. +| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Use `entity_id: all` to target all. | `temperature` | no | New target temperature for water heater | `operation_mode` | yes | Operation mode to set the temperature to. This defaults to current_operation mode if not set, or set incorrectly. @@ -57,7 +58,7 @@ Set operation mode for water heater device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Else targets all. +| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Use `entity_id: all` to target all. | `operation_mode` | no | New value of operation mode #### Automation example @@ -80,7 +81,7 @@ Turn away mode on or off for water heater device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Else targets all. +| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Use `entity_id: all` to target all. | `away_mode` | no | New value of away mode. 'on'/'off' or True/False #### Automation example diff --git a/source/_integrations/waterfurnace.markdown b/source/_integrations/waterfurnace.markdown index c5c6dd52c8ad..216aabae787e 100644 --- a/source/_integrations/waterfurnace.markdown +++ b/source/_integrations/waterfurnace.markdown @@ -1,11 +1,11 @@ --- -title: "WaterFurnace" -description: "Instructions on how to integrate WaterFurnace Geothermal System into Home Assistant." -logo: waterfurnace.png +title: WaterFurnace +description: Instructions on how to integrate WaterFurnace Geothermal System into Home Assistant. ha_category: - Sensor ha_release: 0.62 ha_iot_class: Cloud Polling +ha_domain: waterfurnace --- The `waterfurnace` integration communicates with the WaterFurnace Symphony website's WebSocket to show you many of the sensors in your system. While not an official API, this is the same backend the Symphony website is based on, and should be reasonably stable. diff --git a/source/_integrations/watson_iot.markdown b/source/_integrations/watson_iot.markdown index f01c6696e462..e20d6c57281f 100644 --- a/source/_integrations/watson_iot.markdown +++ b/source/_integrations/watson_iot.markdown @@ -1,10 +1,10 @@ --- -title: "IBM Watson IoT Platform" -description: "Record events in the IBM Watson IoT Platform." -logo: ibm.png +title: IBM Watson IoT Platform +description: Record events in the IBM Watson IoT Platform. ha_category: - History ha_release: 0.72 +ha_domain: watson_iot --- The `watson_iot` integration enables you to link the devices in Home Assistant @@ -16,7 +16,7 @@ To use this component, you first need to register a gateway device type and then a gateway device in your IoT platform instance. For instructions on how to do this check the [official documentation](https://cloud.ibm.com/docs/services/IoT?topic=iot-platform-getting-started#IoT_connectGateway) which provides the details on doing this. After you register the gateway device -for your home-assistant you'll need 4 pieces of information: +for your Home Assistant instance you'll need four pieces of information: - Organization ID - Gateway device Type @@ -36,19 +36,19 @@ watson_iot: {% configuration %} organization: - description: The Organization ID for your Watson IoT Platform instance + description: The Organization ID for your Watson IoT Platform instance. required: true type: string type: - description: The device type for the gateway device to use + description: The device type for the gateway device to use. required: true type: string id: - description: The device id for the gateway device to use + description: The device id for the gateway device to use. required: true type: string token: - description: The authentication token for the gateway device + description: The authentication token for the gateway device. required: true type: string exclude: diff --git a/source/_integrations/watson_tts.markdown b/source/_integrations/watson_tts.markdown index 8326a7aed998..3795ebc7fa4f 100644 --- a/source/_integrations/watson_tts.markdown +++ b/source/_integrations/watson_tts.markdown @@ -1,10 +1,12 @@ --- -title: "Watson TTS" -description: "Instructions on how to setup IBM Watson TTS with Home Assistant." -logo: watson_tts.png +title: IBM Watson TTS +description: Instructions on how to setup IBM Watson TTS with Home Assistant. ha_category: - Text-to-speech ha_release: 0.94 +ha_codeowners: + - '@rutkai' +ha_domain: watson_tts --- The `watson_tts` text-to-speech platform that works with [IBM Watson Cloud](https://www.ibm.com/watson/services/text-to-speech/) to create the spoken output. @@ -38,7 +40,7 @@ watson_url: description: "The endpoint to which the service will connect." required: false type: string - default: https://stream.watsonplatform.net/text-to-speech/api + default: "`https://stream.watsonplatform.net/text-to-speech/api`" watson_apikey: description: "Your secret apikey generated on the IBM Cloud admin console." required: true diff --git a/source/_integrations/waze_travel_time.markdown b/source/_integrations/waze_travel_time.markdown index 2f65bb76550d..640e9a7c44af 100644 --- a/source/_integrations/waze_travel_time.markdown +++ b/source/_integrations/waze_travel_time.markdown @@ -1,11 +1,11 @@ --- -title: "Waze Travel Time" -description: "Instructions on how to add Waze travel time to Home Assistant." -logo: waze.png +title: Waze Travel Time +description: Instructions on how to add Waze travel time to Home Assistant. ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.67 +ha_domain: waze_travel_time --- The `waze_travel_time` sensor provides travel time from the [Waze](https://www.waze.com/). @@ -64,8 +64,25 @@ vehicle_type: description: "Set the vehicle type for the sensor: car, taxi, or motorcycle, otherwise the default is car." required: false type: string +avoid_ferries: + description: "If this is set to true, Waze will avoid ferries on your route." + required: false + type: boolean + default: false +avoid_toll_roads: + description: "If this is set to true, Waze will avoid toll roads on your route." + required: false + type: boolean + default: false +avoid_subscription_roads: + description: "If this is set to true, Waze will avoid roads needing a vignette / subscription on your route." + required: false + type: boolean + default: false {% endconfiguration %} +When using the `avoid_toll_roads`, `avoid_subscription_roads` and `avoid_ferries` options be aware that Waze will sometimes still route you over toll roads or ferries if a valid vignette/subscription is assumed. Default behavior is that Waze will route you over roads having subscription options, so best is to set both `avoid_toll_roads` and `avoid_subscription_roads` or `avoid_ferries` if needed and experiment to ensure the desired outcome. + ## Example using dynamic destination Using the flexible option to set a sensor value to the `destination`, you can setup a single Waze integration that will calculate travel time to multiple optional locations on demand. @@ -118,6 +135,15 @@ sensor: region: 'US' units: imperial # 'metric' for Metric, 'imperial' for Imperial vehicle_type: motorcycle # vehicle type used for routing + + # Avoiding toll, subscription + - platform: waze_travel_time + name: Westerscheldetunnel + origin: 51.330436, 3.802043 + destination: 51.445677, 3.749929 + region: 'EU' + avoid_toll_roads: true + avoid_subscription_roads: true ``` {% endraw %} @@ -126,4 +152,3 @@ sensor: If you plan to use [Waze's live map](https://developers.google.com/waze/iframe/) in Lovelace [iframe](/lovelace/iframe/) then use [https://embed.waze.com/iframe](https://embed.waze.com/iframe) and not the live map URL itself. - diff --git a/source/_integrations/weather.darksky.markdown b/source/_integrations/weather.darksky.markdown index d69779f364b2..49a2b4030870 100644 --- a/source/_integrations/weather.darksky.markdown +++ b/source/_integrations/weather.darksky.markdown @@ -7,6 +7,7 @@ ha_category: - Weather ha_release: 0.61 ha_iot_class: Cloud Polling +ha_domain: darksky --- The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location. diff --git a/source/_integrations/weather.markdown b/source/_integrations/weather.markdown index 36f03d1c0815..3c74ca7b68ad 100644 --- a/source/_integrations/weather.markdown +++ b/source/_integrations/weather.markdown @@ -1,11 +1,13 @@ --- -title: "Weather" -description: "Instructions on how to setup your Weather platforms with Home Assistant." -logo: home-assistant.png +title: Weather +description: Instructions on how to setup your Weather platforms with Home Assistant. ha_category: - Weather -ha_qa_scale: internal ha_release: 0.32 +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: weather --- The `weather` platforms gather meteorological information from web services and display the conditions and other details about the weather at the given location. Read the integration documentation for your particular weather provider to learn how to set it up. diff --git a/source/_integrations/webhook.markdown b/source/_integrations/webhook.markdown index 319fa2a4e22a..fb2d4fa5ec81 100644 --- a/source/_integrations/webhook.markdown +++ b/source/_integrations/webhook.markdown @@ -1,5 +1,7 @@ --- -ha_release: 0.80 +ha_release: 0.8 +title: Webhook +ha_domain: webhook --- diff --git a/source/_integrations/weblink.markdown b/source/_integrations/weblink.markdown deleted file mode 100644 index bdbe73101c4f..000000000000 --- a/source/_integrations/weblink.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "Weblink" -description: "Instructions on how to setup Links within Home Assistant." -logo: home-assistant.png -ha_category: - - Front End -ha_release: 0.13 -ha_qa_scale: internal ---- - -The `weblink` integration allows you to display links in the Home Assistant frontend. - -
    -The below documentation applies to the classic "States" user interface. Starting with Home Assistant 0.86, Lovelace is the new default interface. For information on configuring weblinks in Lovelace please follow [these instructions](/lovelace/entities/#weblink) instead. -
    - -## Configuration - -To use this integration in your installation, add something like the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weblink: - entities: - - name: Router - url: http://192.168.1.1/ - - name: Home Assistant - url: https://www.home-assistant.io - - name: Grafana - url: /grafana -``` - -{% configuration %} -name: - description: Text for the link. - required: true - type: string -url: - description: The URL (absolute URL or absolute path) for the link. - required: true - type: string -icon: - description: Icon for entry. - required: false - type: icon -{% endconfiguration %} - -Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index 9dde34ff73ac..3658040ee3d2 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -1,12 +1,15 @@ --- -title: "LG webOS Smart TV" -description: "Instructions on how to integrate a LG webOS Smart TV within Home Assistant." +title: LG webOS Smart TV +description: Instructions on how to integrate a LG webOS Smart TV within Home Assistant. logo: webos.png ha_category: - Media Player - Notifications ha_iot_class: Local Polling ha_release: 0.18 +ha_codeowners: + - '@bendavid' +ha_domain: webostv --- The `webostv` platform allows you to control a [LG](https://www.lg.com/) webOS Smart TV. @@ -16,42 +19,30 @@ There is currently support for the following device types within Home Assistant: - [Media Player](#media-player) - [Notifications](#notifications) -## Media Player - To begin with enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](https://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others). Once basic configuration is added to your `configuration.yaml` file. A notification should be visible in the frontend's **Notification** section. Follow the instructions and accept the pairing request on your TV. -Pairing information will be saved to the `filename:` provided in the configuration. This process is IP address-sensitive, in case the IP address of your TV would change in future. +Pairing information will be saved to a configuration file `webostv.conf` in the Home Assistant configuration directory. This process is IP address-sensitive, in case the IP address of your TV would change in future. -### Configuration +## Configuration To add a TV to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry -media_player: - - platform: webostv +webostv: ``` {% configuration %} host: description: "The IP of the LG webOS Smart TV, e.g., `192.168.0.10`." - required: false + required: true type: string name: description: The name you would like to give to the LG webOS Smart TV. required: false type: string -filename: - description: "The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. **NOTE**: When using multiple TVs each TV will need its own unique file." - required: false - type: string - default: webostv.conf -timeout: - description: The timeout for communication with the TV in seconds. - required: false - type: time turn_on_action: description: Defines an [action](/docs/automation/action/) to turn the TV on. required: false @@ -67,35 +58,50 @@ customize: type: list {% endconfiguration %} -If you do not specify `host:`, all LG webOS Smart TVs within your network will be auto-discovered. - -### Example +### Full configuration example A full configuration example will look like the sample below: ```yaml # Example configuration.yaml entry +webostv: + host: 192.168.0.10 + name: Living Room TV + turn_on_action: + service: persistent_notification.create + data: + message: "Turn on action" + customize: + sources: + - livetv + - youtube + - makotv + - netflix + media_player: - - platform: webostv - host: 192.168.0.10 - name: Living Room TV - filename: webostv.conf - timeout: 5 - turn_on_action: - service: persistent_notification.create - data: - message: "Turn on action" - customize: - sources: - - livetv - - youtube - - makotv - - netflix + +notify: ``` Avoid using `[ ]` in the `name:` of your device. -### Turn on action +### Using multiple TVs + +It is also possible to use multiple TVs with this integration. + +```yaml +# Example configuration.yaml entry with multiple TVs +webostv: + - name: Living Room TV + host: 192.168.1.100 + - name: Bedroom TV + host: 192.168.1.101 +``` + +Please note, the above provides a minimal example, however, all options are +available for each individual TV. + +## Turn on action Home Assistant is able to turn on a LG webOS Smart TV if you specify an action, like HDMI-CEC or WakeOnLan. @@ -107,29 +113,32 @@ On newer models (2017+), WakeOnLan may need to be enabled in the TV settings by # Example configuration.yaml entry wake_on_lan: # enables `wake_on_lan` domain +webostv: + host: 192.168.0.10 + #other settings + turn_on_action: + service: wake_on_lan.send_magic_packet + data: + mac: "B4:E6:2A:1E:11:0F" + media_player: - - platform: webostv - host: 192.168.0.10 - #other settings - turn_on_action: - service: wake_on_lan.send_magic_packet - data: - mac: "B4:E6:2A:1E:11:0F" + +notify: ``` Any other [actions](/docs/automation/action/) to power on the device can be configured. -### Sources +## Sources To obtain complete list of available sources currently configured on the TV, once the webOS TV is configured and linked, while its powered on head to the **Developer Tools** > **States**, find your `media_player.` and use the sources listed in `source_list:` remembering to split them per line into your `sources:` configuration. -### Change channel through play_media service +## Change channel through play_media service -The `play_media` service can be used in a script to switch to the specified tv channel. It selects the best matching channel according to the `media_content_id` parameter: +The `play_media` service can be used in a script to switch to the specified TV channel. It selects the best matching channel according to the `media_content_id` parameter: - 1. Channel number *(i.e. '1' or '6')* - 2. Exact channel name *(i.e. 'France 2' or 'CNN')* - 3. Substring in channel name *(i.e. 'BFM' in 'BFM TV')* + 1. Channel number *(i.e., '1' or '6')* + 2. Exact channel name *(i.e., 'France 2' or 'CNN')* + 3. Substring in channel name *(i.e., 'BFM' in 'BFM TV')* ```yaml # Example action entry in script to switch to channel number 1 @@ -147,67 +156,65 @@ data: media_content_type: "channel" ``` -### Next/Previous buttons +## Next/Previous buttons -The behaviour of the next and previsous buttons is different depending on the active source: +The behavior of the next and previous buttons is different depending on the active source: - - if the source is 'LiveTV' (television): next/previous buttons act as channel up/down - - otherwise: next/previous buttons act as next/previous track +- if the source is 'LiveTV' (television): next/previous buttons act as channel up/down +- otherwise: next/previous buttons act as next/previous track -## Notifications +### Sound output -The `webostv` notify platform allows you to send notifications to a LG webOS Smart TV. +The current sound output of the TV can be found under the state attributes. +To change the sound output, the following service is available: -When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. +#### Service `webostv.select_sound_output` -To add a TV to your installation, add the following to your `configuration.yaml` file and follow the configurator instructions: +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------- | +| `entity_id` | no | Target a specific webostv media player. | +| `sound_output` | no | Name of the sound output to switch to. | -```yaml -# Example configuration.yaml entry -notify: - - platform: webostv - host: 192.168.0.112 - name: livingroom_tv - filename: webostv.conf -``` +### Generic commands and buttons -{% configuration %} -host: - description: The IP of the LG webOS Smart TV, e.g., 192.168.0.10 - required: true - type: string -name: - description: The name you would like to give to the LG webOS Smart TV. - required: true - type: string -filename: - description: "The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. **NOTE**: When using multiple TVs each TV will need its own unique file." - required: false - type: string - default: webostv.conf -icon: - description: The path to an image file to use as the icon in notifications. - required: false - type: [string, icon] -{% endconfiguration %} +Available services: `button`, `command` + +### Service `webostv.button` + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Target a specific webostv media player. | +| `button` | no | Name of the button. Known possible values are `LEFT`, `RIGHT`, `DOWN`, `UP`, `HOME`, `BACK`, `ENTER`, `DASH`, `INFO`, `ASTERISK`, `CC`, `EXIT`, `MUTE`, `RED`, `GREEN`, `BLUE`, `VOLUMEUP`, `VOLUMEDOWN`, `CHANNELUP`, `CHANNELDOWN`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9` | + +### Service `webostv.command` -A possible automation could be: +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `entity_id` | no | Target a specific webostv media player. | +| `command` | no | Endpoint for the command, e.g., `media.controls/rewind`. The full list of known endpoints is available at | + +### Example -{% raw %} ```yaml -# Example configuration.yaml entry -automation: - - alias: Open a window - trigger: - platform: numeric_state - entity_id: sensor.netatmo_livingroom_co2 - above: 999 - action: - service: notify.livingroom_tv - data: - message: "You should open a window! (Livingroom Co2: {{ states('sensor.netatmo_livingroom_co2') }}ppm)" +script: + home_button: + sequence: + - service: webostv.button + data: + entity_id: media_player.lg_webos_smart_tv + button: "HOME" + + rewind_command: + sequence: + - service: webostv.command + data: + entity_id: media_player.lg_webos_smart_tv + command: "media.controls/rewind" ``` -{% endraw %} + +## Notifications + +The `webostv` notify platform allows you to send notifications to a LG webOS Smart TV. The icon can be overridden for individual notifications by providing a path to an alternative icon image to use: diff --git a/source/_integrations/websocket_api.markdown b/source/_integrations/websocket_api.markdown index 302f220173b1..35d004b11d35 100644 --- a/source/_integrations/websocket_api.markdown +++ b/source/_integrations/websocket_api.markdown @@ -1,11 +1,13 @@ --- -title: "Websocket API" -description: "Instructions on how to setup the WebSocket API within Home Assistant." -logo: home-assistant.png +title: Home Asssitant WebSocket API +description: Instructions on how to setup the WebSocket API within Home Assistant. ha_category: - - "Other" -ha_qa_scale: internal + - Other ha_release: 0.34 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: websocket_api --- The `websocket_api` integration set up a WebSocket API and allows one to interact with a Home Assistant instance that is running headless. This integration depends on the [`http` component](/integrations/http/). diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown index b1227ef48636..ce664b6c1d85 100644 --- a/source/_integrations/wemo.markdown +++ b/source/_integrations/wemo.markdown @@ -1,15 +1,17 @@ --- -title: "Belkin WeMo" -description: "Instructions on how to integrate Belkin WeMo devices into Home Assistant." -logo: belkin_wemo.png +title: Belkin WeMo +description: Instructions on how to integrate Belkin WeMo devices into Home Assistant. ha_category: - Hub - Binary Sensor - Fan - Light - Switch -featured: true ha_release: pre 0.7 +ha_config_flow: true +ha_codeowners: + - '@sqldiablo' +ha_domain: wemo --- The `wemo` integration is the main integration to integrate various [Belkin WeMo](https://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/) devices with Home Assistant. @@ -19,13 +21,13 @@ There is currently support for the following device types within Home Assistant: - Binary Sensor - Fan (Belkin WeMo (Holmes) Smart Humidifier) - Light (Belkin WeMo LED lights and [Smart Dimmer Switch](https://www.belkin.com/us/F7C059-Belkin/p/P-F7C059/)) -- Switch ([Belkin WeMo Switches](https://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/) and includes support for Wemo enabled [Mr. Coffee](https://www.mrcoffee.com/wemo-landing-page.html) smart coffee makers.) +- Switch ([Belkin WeMo Switches](https://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/) and includes support for WeMo enabled [Mr. Coffee](https://www.mrcoffee.com/wemo-landing-page.html) smart coffee makers.) ## Configuration {% configuration %} discovery: - description: Setting this value to false will prevent the automatic discovery of WeMo devices by the wemo platform and the discovery platform (static devices will still be discovered) + description: Setting this value to false will prevent the automatic discovery of WeMo devices by the WeMo platform and the discovery platform (static devices will still be discovered) required: false type: boolean default: true @@ -102,5 +104,5 @@ There are several services which can be used for automations and control of the | `toggle` | Calling this service will toggle the humidifier between on and off states. | `turn_off` | Calling this service will turn the humidifier off (entity_id is required). | `turn_on` | Calling this service will turn the humidifier on and set the speed to the last used speed (defaults to medium, entity_id is required). -| `wemo_set_humidity` | Calling this service will set the desired relative humidity setting on the device (entity_id is a required list of 1 or more entities to set humidity on, and target_humidity is a required float value between 0 and 100 (this value will be rounded down and mapped to one of the valid desired humidity settings of 45, 50, 55, 60, or 100 that are supported by the WeMo humidifier)). -| `wemo_reset_filter_life` | Calling this service will reset the humdifier's filter life back to 100% (entity_id is a required list of 1 or more entities to reset the filter life on). Call this service when you change the filter on your humidifier. +| `wemo.set_humidity` | Calling this service will set the desired relative humidity setting on the device (entity_id is a required list of 1 or more entities to set humidity on, and target_humidity is a required float value between 0 and 100 (this value will be rounded down and mapped to one of the valid desired humidity settings of 45, 50, 55, 60, or 100 that are supported by the WeMo humidifier)). +| `wemo.reset_filter_life` | Calling this service will reset the humdifier's filter life back to 100% (entity_id is a required list of 1 or more entities to reset the filter life on). Call this service when you change the filter on your humidifier. diff --git a/source/_integrations/whois.markdown b/source/_integrations/whois.markdown index 216768ef7603..0d84c856c4c9 100644 --- a/source/_integrations/whois.markdown +++ b/source/_integrations/whois.markdown @@ -1,11 +1,11 @@ --- -title: "Whois Sensor" -description: "Instructions on how to integrate WHOIS lookup sensor within Home Assistant." -logo: icann.png +title: Whois +description: Instructions on how to integrate WHOIS lookup sensor within Home Assistant. ha_category: - Network ha_release: 0.57 ha_iot_class: Cloud Polling +ha_domain: whois --- The `whois` sensor platform allows you to perform daily WHOIS lookups against your owned domains. This provides you with information such as `expiration_date`, `name_servers` and `registrar` details. diff --git a/source/_integrations/wink.markdown b/source/_integrations/wink.markdown index 5dbd141bb099..1a203caceed7 100644 --- a/source/_integrations/wink.markdown +++ b/source/_integrations/wink.markdown @@ -1,6 +1,6 @@ --- -title: "Wink" -description: "Instructions on how to set up the Wink hub within Home Assistant." +title: Wink +description: Instructions on how to set up the Wink hub within Home Assistant. logo: wink.png ha_category: - Hub @@ -15,9 +15,10 @@ ha_category: - Sensor - Switch - Water Heater -featured: true +featured: false ha_iot_class: Cloud Polling ha_release: pre 0.7 +ha_domain: wink --- [Wink](https://www.wink.com/) is a home automation hub that can control a whole wide range of devices on the market. Or, as they say in their own words: @@ -52,7 +53,7 @@ Wink requests three pieces of information from the user when they sign up for a 2. `Website:` The external address of your Home Assistant instance. If not externally accessible you can use your email address. 3. `Redirect URI:` This should be `http://192.168.1.5:8123/auth/wink/callback` replacing the IP with the internal IP of your Home Assistant box. -No settings are required in the `configuration.yaml` other than `wink:`. +No settings are required in the `configuration.yaml` other than `wink:`. After adding `wink:` to your `configuration.yaml` and restarting Home Assistant you will see a persistent notification on the frontend with a `CONFIGURE` button that will guide you through the setup via the frontend configurator. @@ -130,25 +131,25 @@ You can use the service wink/refresh_state_from_wink to pull the most recent sta ## Service `pull_newly_added_devices_from_wink` -You can use the service wink/add_new_devices to pull any newly paired Wink devices to an already running instance of Home-Assistant. Any new devices will also be added if Home-Assistant is restarted. +You can use the service wink/add_new_devices to pull any newly paired Wink devices to an already running instance of Home Assistant. Any new devices will also be added if Home Assistant is restarted. ## Service `delete_wink_device` You can use the service wink/delete_wink_device to remove/unpair a device from Wink. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String that points at the `entity_id` of device to delete. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------- | +| `entity_id` | no | String that points at the `entity_id` of device to delete. | ## Service `pair_new_device` You can use the service wink/pair_new_device to pair a new device to your Wink hub/relay -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `hub_name` | no | The name of the hub to pair a new device to. -| `pairing_mode` | no | One of the following [zigbee, zwave, zwave_exclusion, zwave_network_rediscovery, lutron, bluetooth, kidde] -| `kidde_radio_code` | conditional | A string of 8 1s and 0s one for each dip switch on the kidde device left --> right = 1 --> 8 (Required if pairing_mode = kidde) +| Service data attribute | Optional | Description | +| ---------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `hub_name` | no | The name of the hub to pair a new device to. | +| `pairing_mode` | no | One of the following [zigbee, zwave, zwave_exclusion, zwave_network_rediscovery, lutron, bluetooth, kidde] | +| `kidde_radio_code` | conditional | A string of 8 1s and 0s one for each dip switch on the kidde device left --> right = 1 --> 8 (Required if pairing_mode = kidde) |
    Calling service wink/pull_newly_added_wink_devices after a device is paired will add that new device to Home Assistant. The device will also show up on the next restart of Home Assistant. @@ -158,10 +159,10 @@ Calling service wink/pull_newly_added_wink_devices after a device is paired will You can use the service wink/rename_wink_device to change the name of a device. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String that points at the `entity_id` of device to rename. -| `name` | no | The name to change it to. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------- | +| `entity_id` | no | String that points at the `entity_id` of device to rename. | +| `name` | no | The name to change it to. |
    Home Assistant entity_ids for Wink devices are based on the Wink device's name. Calling this service will not change the entity_id of the device until Home Assistant is restarted. @@ -181,10 +182,10 @@ The Wink hub, by default, can only be accessed via the cloud. This means it requ You can use the service wink/set_siren_auto_shutoff to set how long the siren will sound before shutting off. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `auto_shutoff` | no | Int. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome) -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------ | +| `auto_shutoff` | no | Int. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome) | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren. | Example: @@ -205,10 +206,10 @@ The following services only work with the Dome siren/chime. You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `volume` | no | String. One of ["low", "medium", "high"] -| `entity_id` | yes | String or list of strings that point at `entity_id`s of the siren/chime. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------ | +| `volume` | no | String. One of ["low", "medium", "high"] | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of the siren/chime. | Example: @@ -225,10 +226,10 @@ script: You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `volume` | no | String. One of ["low", "medium", "high"] -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------------- | +| `volume` | no | String. One of ["low", "medium", "high"] | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. | Example: @@ -245,10 +246,10 @@ script: You can use the service wink/enable_chime to set the tone and enable the chime on your Dome siren/chime. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep", "inactive"] -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep", "inactive"] | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. | Example: @@ -265,10 +266,10 @@ script: You can use the service wink/set_siren_tone to set the tone on your Dome siren. This tone will be used the next time the siren is executed. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep"] -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep"] | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. | Example: @@ -285,10 +286,10 @@ script: You can use the service wink/set_siren_strobe_enabled to enable or disable the strobe when the siren is executed. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean. True or False. -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------------- | +| `enabled` | no | Boolean. True or False. | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. | Example: @@ -305,10 +306,10 @@ script: You can use the service wink/set_chime_strobe_enabled to enable or disable the strobe when the chime is executed. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean. True or False. -| `entity_id` | yes | String or list of strings that point at `entity_id`s of chime/chime. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------------- | +| `enabled` | no | Boolean. True or False. | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of chime/chime. | Example: @@ -325,11 +326,11 @@ script: You can use the service wink/set_nimbus_dial_state to update an individual dial's value/position and its labels -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of strings that point at `entity_id`s of chime/chime. -| `value` | no | A number, should be between the dials min and max value (See set_nimbus_dial_configuration below) -| `labels` | yes | A list of strings the first being the value set on the dial's face and the second being the value on the dial face when the Nimbus is pressed +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of chime/chime. | +| `value` | no | A number, should be between the dials min and max value (See set_nimbus_dial_configuration below) | +| `labels` | yes | A list of strings the first being the value set on the dial's face and the second being the value on the dial face when the Nimbus is pressed | Example: @@ -350,16 +351,16 @@ script: You can use the service wink/set_nimbus_dial_configuration to update an individual dial's configuration. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of strings that point at `entity_id`s of chime/chime. -| `rotation` | yes | One of "cw" or "ccw" the direction the dial hand should rotate. -| `ticks` | yes | A positive number, the number of times the hand should move. -| `scale` | yes | One of "linear" or "log" How the dial should move in response to higher values. -| `min_value` | yes | A number, the minimum value that the dial can have. -| `max_value` | yes | A number, the maximum value that the dial can have. -| `min_position` | yes | A number generally [0-360], the minimum position for the dial's hand. -| `max_value` | yes | A number generally [0-360], the maximum position for the dial's hand. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of chime/chime. | +| `rotation` | yes | One of "cw" or "ccw" the direction the dial hand should rotate. | +| `ticks` | yes | A positive number, the number of times the hand should move. | +| `scale` | yes | One of "linear" or "log" How the dial should move in response to higher values. | +| `min_value` | yes | A number, the minimum value that the dial can have. | +| `max_value` | yes | A number, the maximum value that the dial can have. | +| `min_position` | yes | A number generally [0-360], the minimum position for the dial's hand. | +| `max_value` | yes | A number generally [0-360], the maximum position for the dial's hand. | Example: @@ -400,7 +401,7 @@ The requirement is that you have setup [Wink](/integrations/wink/) from above. - Motion sensors - Ring Door bells (No hub required) - Liquid presence sensors -- Z-wave lock key codes +- Z-Wave lock key codes - Lutron connected bulb remote buttons - Wink Relay buttons and presence detection - Wink spotter loudness and vibration (No Wink hub required) @@ -435,7 +436,7 @@ The above devices are confirmed to work, but others may work as well. Wink Cover garage door functionality varies on the product. Home Assistant can open, close, and view state of GoControl/Linear openers. For Chamberlain MyQ-enabled openers, Home Assistant is limited to show current state (open or closed) only using this Wink cover. This restriction was imposed by Chamberlain for third party control. Wink suggests that MyQ customers should contact Chamberlain directly to inquire about expanding permissions. -The [MyQ Cover](/integrations/myq) does provide full functionality for opening and closing Chamberlain MyQ-enabled garage doors. If installed along with the Wink Component, a duplicate garage door entity may exist. In that case, the semi-functional Wink garage door entity can be hidden via customize.yaml. +The [MyQ Cover](/integrations/myq) does provide full functionality for opening and closing Chamberlain MyQ-enabled garage doors. If installed along with the Wink Component, a duplicate garage door entity may exist. In that case, the semi-functional Wink garage door entity can be hidden via `customize.yaml`. The requirement is that you have setup [Wink](/integrations/wink/) from above. @@ -474,7 +475,7 @@ The requirement is that you have setup [Wink](/integrations/wink/) from above. ### Supported light devices -- Z-wave switches with dimming +- Z-Wave switches with dimming - Hue - Lightify - GE link @@ -495,20 +496,20 @@ The requirement is that you have setup [Wink](/integrations/wink/) from above. - Kwikset - Schlage - August (No Wink hub required) (August Connect required) -- Generic Z-wave +- Generic Z-Wave
    The following services have only been confirmed on Schlage locks.
    -### Service `wink_set_lock_alarm_mode` +### Service `set_lock_alarm_mode` -You can use the service wink/wink_set_lock_alarm_mode to set the alarm mode of your lock. +You can use the service wink/set_lock_alarm_mode to set the alarm mode of your lock. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `mode` | no | String one of tamper, activity, or forced_entry -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------- | +| `mode` | no | String one of tamper, activity, or forced_entry | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | Example: @@ -516,19 +517,19 @@ Example: script: set_locks_to_tamper: sequence: - - service: wink.wink_set_lock_alarm_mode + - service: wink.set_lock_alarm_mode data: mode: "tamper" ``` -### Service `wink_set_lock_alarm_sensitivity` +### Service `set_lock_alarm_sensitivity` -You can use the service wink/wink_set_lock_alarm_sensitivity to set the alarm sensitivity of your lock. +You can use the service wink/set_lock_alarm_sensitivity to set the alarm sensitivity of your lock. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `sensitivity` | no | String one of low, medium_low, medium, medium_high, high. -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------- | +| `sensitivity` | no | String one of low, medium_low, medium, medium_high, high. | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | Example: @@ -536,19 +537,19 @@ Example: script: set_locks_to_high_sensitivity: sequence: - - service: wink.wink_set_lock_alarm_sensitivity + - service: wink.set_lock_alarm_sensitivity data: sensitivity: "high" ``` -### Service `wink_set_lock_alarm_state` +### Service `set_lock_alarm_state` -You can use the service wink/wink_set_lock_alarm_state to set the alarm state of your lock. +You can use the service wink/set_lock_alarm_state to set the alarm state of your lock. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean enabled or disabled, true or false -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------- | +| `enabled` | no | Boolean enabled or disabled, true or false | | | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | | | Example: @@ -556,19 +557,19 @@ Example: script: disable_all_locks_alarm: sequence: - - service: wink.wink_set_lock_alarm_state + - service: wink.set_lock_alarm_state data: enabled: false ``` -### Service `wink_set_lock_beeper_state` +### Service `set_lock_beeper_state` -You can use the service wink/wink_set_lock_beeper_state to set the beeper state of your lock. +You can use the service wink/set_lock_beeper_state to set the beeper state of your lock. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean enabled or disabled, true or false -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------- | +| `enabled` | no | Boolean enabled or disabled, true or false | | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | | Example: @@ -576,19 +577,19 @@ Example: script: disable_all_locks_beepers: sequence: - - service: wink.wink_set_lock_beeper_state + - service: wink.set_lock_beeper_state data: enabled: false ``` -### Service `wink_set_lock_vacation_mode` +### Service `set_lock_vacation_mode` -You can use the service wink/wink_set_lock_vacation_mode to set the vacation mode of your lock. +You can use the service wink/set_lock_vacation_mode to set the vacation mode of your lock. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean enabled or disabled, true or false -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------- | +| `enabled` | no | Boolean enabled or disabled, true or false | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | Example: @@ -596,20 +597,20 @@ Example: script: enabled_vacation_mode_on_all_locks: sequence: - - service: wink.wink_set_lock_vacation_mode + - service: wink.set_lock_vacation_mode data: enabled: false ``` -### Service `wink_add_new_lock_key_code` +### Service `add_new_lock_key_code` -You can use the service wink/wink_add_new_lock_key_code to add a new user code to your Wink lock. +You can use the service wink/add_new_lock_key_code to add a new user code to your Wink lock. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of strings that point at `entity_id`s of locks. -| `name` | no | the name of the new key code -| `code` | no | The new code. Must match length of existing codes. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of locks. | +| `name` | no | the name of the new key code | +| `code` | no | The new code. Must match length of existing codes. |
    Calling service wink/pull_newly_added_wink_devices will add the new key code to Home Assistant. The device will also show up on the next restart of Home Assistant. @@ -648,7 +649,7 @@ The requirement is that you have set up [Wink](/integrations/wink/) from above. ## Supported switch devices - Wink Pivot power genius (No Wink hub required) -- non-dimming Z-wave in-wall switches (dimming switches show up as lights) +- non-dimming Z-Wave in-wall switches (dimming switches show up as lights) - Wink Relay load controlling switches - Rachio sprinkler controller (No Wink hub required) - iHome smart plug (No Wink hub required) diff --git a/source/_integrations/wirelesstag.markdown b/source/_integrations/wirelesstag.markdown index df5917376659..2f43d1582e17 100644 --- a/source/_integrations/wirelesstag.markdown +++ b/source/_integrations/wirelesstag.markdown @@ -1,7 +1,6 @@ --- -title: "WirelessTag" -description: "Instructions on how to integrate your Wireless Tags sensors within Home Assistant." -logo: wirelesstag.png +title: Wireless Sensor Tags +description: Instructions on how to integrate your Wireless Tags sensors within Home Assistant. ha_category: - Hub - Binary Sensor @@ -9,6 +8,7 @@ ha_category: - Switch ha_iot_class: Cloud Polling and Local Push ha_release: 0.68 +ha_domain: wirelesstag --- The `wirelesstag` implementation allows you to integrate your [wirelesstag.net](https://wirelesstag.net/) sensors tags in Home Assistant. diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index 5dce6f9877a6..6de0a2b05d0b 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -1,12 +1,15 @@ --- -title: "Withings" -description: "Instructions on how to integrate Withings health products within Home Assistant." -logo: withings.png +title: Withings +description: Instructions on how to integrate Withings health products within Home Assistant. ha_category: - Health - Sensor ha_release: 0.99 ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@vangorra' +ha_domain: withings --- The `withings` sensor platform consumes data from various health products produced by [Withings](https://www.withings.com). @@ -43,14 +46,14 @@ 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 (see note). - - 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". + - Note: In order for "Check Configuration" to be visible, you must enable "Advanced Mode" on your user profile. The "Check Configuration" tool can be found by clicking "Configuration" from the sidebar (cog icon) and then clicking "Server Control". - Restart Home Assistant. - Go to the integrations page. - Add a Withings integration. This will open a new tab/window on the withings site. - On the Withings site, choose the profile of the data you want to sync. - Authorize the application. Your browser will redirect you to the redirect uri you provided during account setup. - 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`. + `http://domain` portion of the URL to something you know is accessible, locally or publicly. 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. - Once authorized, the tab/window will close and the integration page will prompt to select a profile. Select the profile you chose while on the withings site. @@ -81,3 +84,56 @@ profiles: required: true type: map {% endconfiguration %} + +## Bonus: Template Sensors to Convert Kilograms to Pounds + +In a text editor, replace ```USER_PROFILE_NAME``` in the template sensors below with your withings User Profile Name defined in the Withings integration configuration. + + +{% raw %} + +```yaml +# Example configuration.yaml entry +sensors: + - platform: template + sensors: + withings_weight_lbs_USER_PROFILE_NAME: + friendly_name: "withings weight_lbs_USER_PROFILE_NAME" + unit_of_measurement: 'lbs' + value_template: "{{ (states('sensor.withings_weight_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + icon_template: mdi:weight-pound + + - platform: template + sensors: + withings_bone_mass_lbs_USER_PROFILE_NAME: + friendly_name: "withings bone_mass_lbs_USER_PROFILE_NAME" + unit_of_measurement: 'lbs' + value_template: "{{ (states('sensor.withings_bone_mass_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + icon_template: mdi:weight-pound + + - platform: template + sensors: + withings_fat_free_mass_lbs_USER_PROFILE_NAME: + friendly_name: "withings fat_free_mass_lbs_USER_PROFILE_NAME" + unit_of_measurement: 'lbs' + value_template: "{{ (states('sensor.withings_fat_free_mass_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + icon_template: mdi:weight-pound + + - platform: template + sensors: + withings_fat_mass_lbs_USER_PROFILE_NAME: + friendly_name: "withings fat_mass_lbs_USER_PROFILE_NAME" + unit_of_measurement: 'lbs' + value_template: "{{ (states('sensor.withings_fat_mass_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + icon_template: mdi:weight-pound + + - platform: template + sensors: + withings_muscle_mass_lbs_USER_PROFILE_NAME: + friendly_name: "withings muscle_mass_lbs_USER_PROFILE_NAME" + unit_of_measurement: 'lbs' + value_template: "{{ (states('sensor.withings_muscle_mass_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + icon_template: mdi:weight-pound +``` + +{% endraw %} diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index 58d01125884a..52186c783c72 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -1,14 +1,17 @@ --- -title: "WLED" -description: "Instructions on how to integrate WLED with Home Assistant." -logo: wled.png +title: WLED +description: Instructions on how to integrate WLED with Home Assistant. ha_category: - Light - Sensor - Switch ha_release: 0.102 ha_iot_class: Local Polling -ha_qa_scale: platinum +ha_config_flow: true +ha_quality_scale: platinum +ha_codeowners: + - '@frenck' +ha_domain: wled --- [WLED](https://github.com/Aircoookie/WLED) is a fast and feature-rich @@ -36,19 +39,23 @@ integration will be available. ## Lights This integration adds the WLED device as a light in Home Assistant. -Home Assistant threats every segment of the LED strip as a separate light +Home Assistant treats every segment of the LED strip as a separate light entity. Only native supported features of a light in Home Assistant are supported (which includes effects). -## Sensors +## Sensors -This integration provides sensors for the following information from WLED: +This integration provides sensors for the following information from WLED: -- Estimated current. -- Uptime. -- Free memory. +- Estimated current (in mA). +- Uptime (disabled by default) +- Free memory (in bytes, disabled by default). +- Wi-Fi Signal Strength (in %m disabled by default). +- Wi-Fi Signal Strength (RSSI in dBm). +- Wi-Fi Channel (disabled by default). +- Wi-Fi BSSID (disabled by default). ## Switches @@ -60,4 +67,20 @@ The integration will create a number of switches: ## Services -This integration currently does not offer any additional services. +Currently, the WLED integration provides one service for controlling effect. +More services for other WLED features are expected to be added in the future. + +### Service `wled.effect` + +This service allows for controlling the WLED effect. + +| Service Data Attribute | Required | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | A WLED entity ID, or list entity IDs, to apply the effect to. Use `entity_id: all` to target all WLED entities. | +| `effect` | no | Name or ID of the WLED light effect. | +| `intensity` | no | Intensity of the effect. | +| `speed` | no | Speed of the effect. Number between `0` (slow) and `255` (fast). | +| `reverse` | no | Reverse the effect. Either `true` to reverse or `false` otherwise. | + +A list of all available effects (and the behavior of the intensity for each +effect) [is documented in the WLED Wiki](https://github.com/Aircoookie/WLED/wiki/List-of-effects-and-palettes#effects). diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index 7bc5e20e92fd..a1db0001d47b 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -1,23 +1,24 @@ --- -title: "Workday Binary Sensor" -description: "Steps to configure the binary workday sensor." -logo: home-assistant.png +title: Workday +description: Steps to configure the binary workday sensor. ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.41 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: workday --- -The `workday` binary sensor indicates, whether the current day is a workday or not. It allows specifying, which days of the week counts as workdays and also -uses the python module [holidays](https://pypi.python.org/pypi/holidays) to incorporate information about region-specific public holidays. +The `workday` binary sensor indicates, whether the current day is a workday or not. It allows specifying, which days of the week will count as workdays and also +uses the Python module [holidays](https://pypi.python.org/pypi/holidays) to incorporate information about region-specific public holidays. ## Setup Check the [country list](https://github.com/dr-prodigy/python-holidays#available-countries) for available province. ## Configuration - To enable the `workday` sensor in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -69,26 +70,40 @@ The keyword `holiday` is used for public holidays identified by the holidays mod
    If you use the sensor for Norway (`NO`) you need to wrap `NO` in quotes or write the name in full. -Otherwise the value is evaluated as `false`. +Otherwise, the value is evaluated as `false`. If you use the sensor for Canada (`CA`) with Ontario (`ON`) as `province:` then you need to wrap `ON` in quotes. -Otherwise the value is evaluated as `true` (check the YAML documentation for further details) and the sensor will not work. +Otherwise, the value is evaluated as `true` (check the YAML documentation for further details) and the sensor will not work. + +One other thing to watch is how the `holiday` keyword is used. Your first instinct might be to add it to the `exclude` configuration, thinking that it means to skip the holidays. Actually it means to exclude the days in the holidays’ list from the workdays. So when you exclude `holiday` and a workday falls on that day, then that workday is excluded. Meaning the sensor will be off. If you want the workday flagged without regarding holidays, make sure that there is something in your `Excludes` configuration other than `holiday`.
    -## Full example +## Full examples -This examples excludes Saturdays, Sundays and holiday. Two custom holidays are added. +This example excludes Saturdays, Sundays but not a holiday. Two custom holidays are added. +Even though `sat` and `sun` was not included in `workdays` and in theory, it would not need to be excluded, but because we do not what holidays excluded, we add them so exclude would not default and skip the holidays. Therefore as the note above, 2/17/2020 in the US would still be a workday. ```yaml -# Example configuration.yaml entry +# Example 1 configuration.yaml entry +binary_sensor: + - platform: workday + country: US + workdays: [mon, tue, wed, thu, fri] + excludes: [sat, sun] +``` + +This example excludes Saturdays, Sundays and holidays. Two custom holidays are added. +The date February 24th, 2020 is a Monday but will be excluded because it was added to the `add_holiday` configuration. + +```yaml +# Example 2 configuration.yaml entry binary_sensor: - platform: workday country: DE workdays: [mon, wed, fri] excludes: [sat, sun, holiday] - add_holidays: - - '2018-12-26' - - '2018-12-31' + add_holidays: + - '2020-02-24' ``` ## Automation example diff --git a/source/_integrations/worldclock.markdown b/source/_integrations/worldclock.markdown index c6af2b2c93a1..490f7b3dc3db 100644 --- a/source/_integrations/worldclock.markdown +++ b/source/_integrations/worldclock.markdown @@ -1,12 +1,14 @@ --- -title: "Worldclock" -description: "Instructions on how to integrate a Worldclock within Home Assistant." -logo: home-assistant.png +title: Worldclock +description: Instructions on how to integrate a Worldclock within Home Assistant. ha_category: - Calendar ha_iot_class: Local Push ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal +ha_codeowners: + - '@fabaff' +ha_domain: worldclock --- The `worldclock` sensor platform simply displays the current time in a different time zone. @@ -36,6 +38,6 @@ name: For valid time zones check the **TZ** column in the [Wikipedia overview](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Or get the full list from the [pytz](https://pypi.python.org/pypi/pytz) module. -```python +```shell python3 -c "import pytz;print(pytz.all_timezones)" ``` diff --git a/source/_integrations/worldtidesinfo.markdown b/source/_integrations/worldtidesinfo.markdown index 34a99c5fc3fa..341af74e66e1 100644 --- a/source/_integrations/worldtidesinfo.markdown +++ b/source/_integrations/worldtidesinfo.markdown @@ -1,10 +1,10 @@ --- -title: "World Tides" -description: "Instructions on how to add Tides information to Home Assistant." -logo: worldtidesinfo.png +title: World Tides +description: Instructions on how to add Tides information to Home Assistant. ha_category: - Environment ha_release: 0.52 +ha_domain: worldtidesinfo --- The `worldtidesinfo` sensor platform uses details from [World Tides](https://www.worldtides.info/) to provide information about the prediction for the tides for any location in the world. diff --git a/source/_integrations/worxlandroid.markdown b/source/_integrations/worxlandroid.markdown index 43443c9d00bd..bbd644c901e5 100644 --- a/source/_integrations/worxlandroid.markdown +++ b/source/_integrations/worxlandroid.markdown @@ -1,11 +1,12 @@ --- -title: "Worx Landroid" -description: "Instructions on how to integrate Worx Landroid WG796E.1 or WG797E as sensors within Home Assistant." +title: Worx Landroid +description: Instructions on how to integrate Worx Landroid WG796E.1 or WG797E as sensors within Home Assistant. logo: worx.png ha_category: - DIY ha_release: 0.54 ha_iot_class: Local Polling +ha_domain: worxlandroid --- The `worxlandroid` sensor platform allows you to get the current state, battery level and error status Worx Landroid WG796E.1 or WG797E. @@ -30,7 +31,7 @@ pin: required: true type: integer allow_unreachable: - description: This will allow the mower to be outside of wifi range without raising an error. + description: This will allow the mower to be outside of Wi-Fi range without raising an error. required: false type: boolean default: true diff --git a/source/_integrations/wsdot.markdown b/source/_integrations/wsdot.markdown index b463e0685ff5..958e93d3d32c 100644 --- a/source/_integrations/wsdot.markdown +++ b/source/_integrations/wsdot.markdown @@ -1,11 +1,12 @@ --- -title: "Washington State DOT" -description: "Instructions on how to integrate WSDOT data into your home." +title: Washington State Department of Transportation (WSDOT) +description: Instructions on how to integrate WSDOT data into your home. logo: wsdot.png ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.37 +ha_domain: wsdot --- The `wsdot` sensor will give you travel time information from the [Washington State Department of Transportation (WSDOT)](https://wsdot.com/). diff --git a/source/_integrations/wunderground.markdown b/source/_integrations/wunderground.markdown index abc4df68b4f5..473d6a0dbac4 100644 --- a/source/_integrations/wunderground.markdown +++ b/source/_integrations/wunderground.markdown @@ -1,11 +1,12 @@ --- -title: "Weather Underground (WUnderground)" -description: "Instructions on how to integrate Weather Underground (WUnderground) Weather within Home Assistant." +title: Weather Underground (WUnderground) +description: Instructions on how to integrate Weather Underground (WUnderground) Weather within Home Assistant. logo: wunderground.png ha_category: - Weather ha_release: 0.27 ha_iot_class: Cloud Polling +ha_domain: wunderground --- The `wunderground` platform uses [Weather Underground](https://www.wunderground.com/) as a source for current weather information. diff --git a/source/_integrations/wunderlist.markdown b/source/_integrations/wunderlist.markdown index 0a3e3367744e..6fada54fe3f8 100644 --- a/source/_integrations/wunderlist.markdown +++ b/source/_integrations/wunderlist.markdown @@ -1,10 +1,11 @@ --- -title: "Wunderlist" -description: "Instructions on how to use Wunderlist with Home Assistant." +title: Wunderlist +description: Instructions on how to use Wunderlist with Home Assistant. logo: wunderlist.png ha_category: - Calendar ha_release: 0.84 +ha_domain: wunderlist --- The `wunderlist` integration allows you to create tasks in [Wunderlist](https://www.wunderlist.com) from Home Assistant. You can use this if you want Home Assistant to send you a task that you should not forget, e.g., Congratulate Dani. @@ -14,7 +15,7 @@ The `wunderlist` integration allows you to create tasks in [Wunderlist](https:// Wunderlist API uses OAuth2, so you need to obtain a `client_id` and an `access_token`. There are two ways: -1. Go to the [Wunderlist IOT app page](https://wunderlist-iot.herokuapp.com), log in with your Wunderlist account and accept the application permissions. +1. Go to the [Wunderlist IoT app page](https://wunderlist-iot.herokuapp.com), log in with your Wunderlist account and accept the application permissions. It will print for you the `client_id` and the `access_token`. 2. Or you can create your own application and `access_token` following the instructions at the [Wunderlist developer page](https://developer.wunderlist.com/). @@ -43,11 +44,11 @@ access_token: This integration offers a new service domain `wunderlist` with the service `create_task`. You can call this service with the argument `list_name` the argument `name` and the optional parameter `starred` to create a new task. -| Service data attribute | Optional | Description | Example | -|------------------------|----------|-------------|---------| -| list_name | no | Name of the list | "Shopping list" -| name | no | Name of the new task | "Spanish Jam" | -| starred | yes | Create the task starred or not | false | +| Service data attribute | Optional | Description | Example | +| ---------------------- | -------- | ------------------------------ | --------------- | +| list_name | no | Name of the list | "Shopping list" | +| name | no | Name of the new task | "Spanish Jam" | +| starred | yes | Create the task starred or not | false | ## Disclaimer diff --git a/source/_integrations/wwlln.markdown b/source/_integrations/wwlln.markdown index e9ef0048341f..1134683fbaa5 100644 --- a/source/_integrations/wwlln.markdown +++ b/source/_integrations/wwlln.markdown @@ -1,11 +1,13 @@ --- -title: "World Wide Lightning Location Network (WWLLN)" -description: "Instructions on how to integrate WWLLN within Home Assistant." -logo: wwlln.jpg +title: World Wide Lightning Location Network (WWLLN) +description: Instructions on how to integrate WWLLN within Home Assistant. ha_category: Geolocation ha_release: 0.96 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@bachya' +ha_domain: wwlln --- The `wwlln` integration displays lightning strike information from the @@ -65,7 +67,7 @@ the standard ones: | latitude | Latitude of the lightning strike. | | longitude | Longitude of the lightning strike. | | source | `wwlln` to be used in conjunction with the `geo_location` automation trigger. | -| external_id | The external ID used in the feed to identify the earthquake in the feed. | +| external_id | The external ID used in the feed to identify the lightning strike in the feed. | | publication_date | Date and time when this event occurred. | ## Full Configuration diff --git a/source/_integrations/x10.markdown b/source/_integrations/x10.markdown index 8127de694b4e..014419d72749 100644 --- a/source/_integrations/x10.markdown +++ b/source/_integrations/x10.markdown @@ -1,11 +1,11 @@ --- -title: "X10" -description: "Instructions on how to setup X10 devices within Home Assistant." -logo: x10.gif +title: Heyu X10 +description: Instructions on how to setup X10 devices within Home Assistant. ha_category: - Light ha_iot_class: Local Polling ha_release: 0.25 +ha_domain: x10 --- The `x10` light platform allows you to control your X10 based lights with Home Assistant. diff --git a/source/_integrations/xbox_live.markdown b/source/_integrations/xbox_live.markdown index da9419bcd2a6..d47283e9259c 100644 --- a/source/_integrations/xbox_live.markdown +++ b/source/_integrations/xbox_live.markdown @@ -1,11 +1,13 @@ --- -title: "Xbox Live" -description: "Instructions on how to set up Xbox Live sensors in Home Assistant." -logo: xbox-live.png +title: Xbox Live +description: Instructions on how to set up Xbox Live sensors in Home Assistant. ha_category: - Social ha_iot_class: Cloud Polling ha_release: 0.28 +ha_codeowners: + - '@MartinHjelmare' +ha_domain: xbox_live --- The Xbox Live integration is able to track [Xbox](https://xbox.com/) profiles. @@ -17,7 +19,7 @@ Please also make sure to connect your Xbox account on that site. The configuration requires you to specify XUIDs which are the unique identifiers for profiles. These can be determined on [XboxAPI.com](https://xboxapi.com/) by either looking at your own profile page or using their interactive documentation -to search for gamertags. +to search for gamertags. Sensor names default to the gamertag associated with an XUID. To use the Xbox Live sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/xeoma.markdown b/source/_integrations/xeoma.markdown index 4017f37c8fb6..ea99c6d8bd5e 100644 --- a/source/_integrations/xeoma.markdown +++ b/source/_integrations/xeoma.markdown @@ -1,11 +1,11 @@ --- -title: "Xeoma Camera" -description: "Instructions on how to integrate camera video feeds from a Xeoma server in Home Assistant" -logo: xeoma.png +title: Xeoma +description: Instructions on how to integrate camera video feeds from a Xeoma server in Home Assistant ha_category: - Camera ha_iot_class: Local Polling ha_release: 0.62 +ha_domain: xeoma --- The `Xeoma` camera platform allows you to view the video feeds from a [Xeoma](https://felenasoft.com/xeoma) video surveillance server. diff --git a/source/_integrations/xfinity.markdown b/source/_integrations/xfinity.markdown deleted file mode 100644 index 33b4728054f2..000000000000 --- a/source/_integrations/xfinity.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: "Xfinity Gateway" -description: "Instructions on how to integrate Xfinity Gateways into Home Assistant." -ha_category: - - Presence Detection -logo: xfinity.svg -ha_release: 0.90 -ha_iot_class: "Local Polling" ---- - -The `xfinity` device tracker platform offers presence detection by looking at connected devices to an Xfinity gateway. - -It was tested with an Xfinity Gateway model TG1682G. - -## Configuration - -To use an Xfinity Gateway in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: xfinity -``` - -{% configuration %} -host: - description: The IP address of your router, e.g., `192.168.1.1`. - required: false - type: string - default: 10.0.0.1 -{% endconfiguration %} - -See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_integrations/xiaomi.markdown b/source/_integrations/xiaomi.markdown index 5c742048fab1..ef038ec5fa29 100644 --- a/source/_integrations/xiaomi.markdown +++ b/source/_integrations/xiaomi.markdown @@ -1,11 +1,11 @@ --- -title: "Xiaomi Cameras" -description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant." -logo: xiaomi.png +title: Xiaomi +description: Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant. ha_category: - Camera ha_release: 0.72 ha_iot_class: Local Polling +ha_domain: xiaomi --- The `Xiaomi` camera platform allows you to utilize Xiaomi Cameras within Home Assistant. diff --git a/source/_integrations/xiaomi_aqara.markdown b/source/_integrations/xiaomi_aqara.markdown index a299ddfeec12..a8a66bf3a9c2 100644 --- a/source/_integrations/xiaomi_aqara.markdown +++ b/source/_integrations/xiaomi_aqara.markdown @@ -1,11 +1,14 @@ --- -title: "Xiaomi Gateway (Aqara)" -description: "Instructions for how to integrate the Xiaomi Gateway (Aqara) within Home Assistant." -logo: xiaomi.png +title: Xiaomi Gateway (Aqara) +description: Instructions for how to integrate the Xiaomi Gateway (Aqara) within Home Assistant. ha_category: - Hub ha_release: 0.57 ha_iot_class: Local Push +ha_codeowners: + - '@danielhiversen' + - '@syssi' +ha_domain: xiaomi_aqara --- The `xiaomi_aqara` integration allows you to integrate [Xiaomi](https://www.mi.com/en/) Aqara-compatible devices into Home Assistant. @@ -65,6 +68,8 @@ xiaomi_aqara: - key: xxxxxxxxxxxxxxxx ``` +For one gateway to avoid errors, don't provide the MAC address. + ### Multiple Gateways ```yaml @@ -273,12 +278,12 @@ That means that Home Assistant is not getting any response from your Xiaomi gate - You should generate the key again using an Android Phone or alternatively an emulator such as [bluestacks](https://www.bluestacks.com). In some instances, there is an issue with keys being generated using the iOS application. - You need to make sure to have multicast support on your network. If you are running Home Assistant in a virtual machine (like Proxmox), try `echo 0 >/sys/class/net/vmbr0/bridge/multicast_snooping` on the host and restart the service or reboot the host. - If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g., `$ sudo apt-get install python3-dev libssl-dev libffi-dev`). -- If your gateway's MAC address starts with `04:CF:8C`, there is a good chance that the required port `9898` is closed on your gateway (you can check it with the Nmap utility, using the command `sudo nmap -sU {gateway_ip} -p 9898`). To fix that issue, you need to do these steps: +- If your gateway's MAC address starts with `04:CF:8C` or `7C:49:EB`, there is a good chance that the required port `9898` is closed on your gateway (you can check it with the Nmap utility, using the command `sudo nmap -sU {gateway_ip} -p 9898`). To fix that issue, you need to do these steps: - Find a specific screw bit (like a fork) to open the gateway case. - Find a USB-UART cable/module and connect it to your computer. - Solder 3 wires - RX, TX and GND like [here](https://cs5-3.4pda.to/14176168/IMG_20181020_201150.jpg). - Turn on the gateway (220V). - - Open a serial terminal application (e.g. PuTTY) and connect to the serial port assigned to the USB-UART module (baudrate: 115200). + - Open a serial terminal application (e.g., PuTTY) and connect to the serial port assigned to the USB-UART module (baudrate: 115200). - Wait until the gateway is booted up, connect the RX, TX and GND wires to the UART module (don't connect the Vcc (power) wire!). - You will see all the messages from the gateway. - Send the command `psm-set network open_pf 3` (the command has to end with a `CR` newline character). diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 1cc8a0f20824..34f5b04f5a6d 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -1,11 +1,14 @@ --- -title: "Xiaomi Mi WiFi Repeater 2" -description: "Instructions how to integrate your Xiaomi Mi WiFi Repeater 2 within Home Assistant." -logo: xiaomi.png +title: Xiaomi miio +description: Instructions how to integrate your Xiaomi Mi WiFi Repeater 2 within Home Assistant. ha_category: - Presence Detection ha_iot_class: Local Polling ha_release: 0.67 +ha_codeowners: + - '@rytilahti' + - '@syssi' +ha_domain: xiaomi_miio --- The `xiaomi_miio` device tracker platform is observing your Xiaomi Mi WiFi Repeater 2 and reporting all associated WiFi clients. diff --git a/source/_integrations/xiaomi_tv.markdown b/source/_integrations/xiaomi_tv.markdown index 083113d7f6e2..9d4ee55efb92 100644 --- a/source/_integrations/xiaomi_tv.markdown +++ b/source/_integrations/xiaomi_tv.markdown @@ -1,11 +1,13 @@ --- -title: "Xiaomi TV" -description: "Instructions on how to integrate a Xiaomi TV into Home Assistant." -logo: xiaomi.png +title: Xiaomi TV +description: Instructions on how to integrate a Xiaomi TV into Home Assistant. ha_category: - Media Player ha_release: 0.64 ha_iot_class: Assumed State +ha_codeowners: + - '@simse' +ha_domain: xiaomi_tv --- The `xiaomi_tv` platform allows you to control a [Xiaomi TV](https://www.mi.com/en/mitv3s/65flat/). diff --git a/source/_integrations/xmpp.markdown b/source/_integrations/xmpp.markdown index 9c0083da870a..26d93ac8c4b5 100644 --- a/source/_integrations/xmpp.markdown +++ b/source/_integrations/xmpp.markdown @@ -1,13 +1,15 @@ --- -title: "Jabber (XMPP)" -description: "Instructions on how to add Jabber (XMPP) notifications to Home Assistant." -logo: xmpp.png +title: Jabber (XMPP) +description: Instructions on how to add Jabber (XMPP) notifications to Home Assistant. ha_category: - Notifications ha_release: pre 0.7 +ha_codeowners: + - '@fabaff' + - '@flowolf' +ha_domain: xmpp --- - The `xmpp` notification platform allows you to deliver notifications from Home Assistant to a [Jabber (XMPP)](https://xmpp.org/) account. ## Configuration @@ -17,7 +19,7 @@ To enable Jabber notifications in your installation, add the following to your ` ```yaml # Example configuration.yaml entry notify: - - name: NOTIFIER_NAME # e.g. jabber + - name: NOTIFIER_NAME # e.g., jabber platform: xmpp sender: YOUR_JID password: YOUR_JABBER_ACCOUNT_PASSWORD @@ -31,7 +33,7 @@ name: type: string default: notify sender: - description: "The Jabber ID (JID) that will act as origin of the messages. Add your JID including the domain, e.g. your_name@jabber.org." + description: "The Jabber ID (JID) that will act as origin of the messages. Add your JID including the domain, e.g., your_name@jabber.org." required: true type: string resource: @@ -102,7 +104,7 @@ To send files and images, your jabber server must support [XEP_0363](https://xmp Be aware that images are uploaded onto the Jabber server of your provider. They reside there un-encrypted and could be accessed by the server admins. Usually images are deleted after a few days.

    -Home-Assistant supports TLS encryption to ensure transport encryption. TLS is enforced by default. You can disable it with the [`tls`](#tls) flag -- which is not recommended. +Home Assistant supports TLS encryption to ensure transport encryption. TLS is enforced by default. You can disable it with the [`tls`](#tls) flag -- which is not recommended.
    diff --git a/source/_integrations/xs1.markdown b/source/_integrations/xs1.markdown index 59c9e1904ad1..ad42cca52f4d 100644 --- a/source/_integrations/xs1.markdown +++ b/source/_integrations/xs1.markdown @@ -1,7 +1,6 @@ --- -title: "EZcontrol XS1" -description: "Instructions on how to integrate an XS1 Gateway within Home Assistant." -logo: xs1.jpg +title: EZcontrol XS1 +description: Instructions on how to integrate an XS1 Gateway within Home Assistant. ha_category: - Hub - Climate @@ -9,9 +8,10 @@ ha_category: - Switch ha_release: 0.88 ha_iot_class: Local Polling +ha_domain: xs1 --- -The [EZcontrol XS1](http://www.ezcontrol.de/content/view/36/28/) integration for Home Assistant allows you to observe and control devices configured on the XS1 Gateway. Please have a look at the official docs for using this gateway [Bedienungsanleitung v3.0.0.0](http://www.ezcontrol.de/support/downloads/XS1/xs1manual/Bedienungsanleitung_EZcontrol_XS1_3.0.0.0-2.pdf). +The [EZcontrol XS1](http://www.ezcontrol.de/content/view/36/28/) integration for Home Assistant allows you to observe and control devices configured on the XS1 Gateway. Please have a look at the official documentation for using this gateway [Bedienungsanleitung v3.0.0.0](http://www.ezcontrol.de/support/downloads/XS1/xs1manual/Bedienungsanleitung_EZcontrol_XS1_3.0.0.0-2.pdf). ## Configuration diff --git a/source/_integrations/yale_smart_alarm.markdown b/source/_integrations/yale_smart_alarm.markdown index f09406bbc681..832633aed323 100644 --- a/source/_integrations/yale_smart_alarm.markdown +++ b/source/_integrations/yale_smart_alarm.markdown @@ -1,10 +1,11 @@ --- -title: "Yale Smart Alarm Control" -description: "Instructions on how to integrate Yale Smart Alarms into Home Assistant." +title: Yale Smart Living +description: Instructions on how to integrate Yale Smart Alarms into Home Assistant. logo: yale.png ha_category: - Alarm ha_release: 0.78 +ha_domain: yale_smart_alarm --- The `yale_smart_alarm` platform provides connectivity with the Yale Smart Alarm systems and Smart Hub through Yale's API. diff --git a/source/_integrations/yamaha.markdown b/source/_integrations/yamaha.markdown index 400f94a220b6..4231c030500d 100644 --- a/source/_integrations/yamaha.markdown +++ b/source/_integrations/yamaha.markdown @@ -1,10 +1,11 @@ --- -title: "Yamaha Network Receivers" -description: "Instructions on how to integrate Yamaha Network Receivers into Home Assistant." +title: Yamaha Network Receivers +description: Instructions on how to integrate Yamaha Network Receivers into Home Assistant. logo: yamaha.png ha_category: - Media Player ha_release: 0.16 +ha_domain: yamaha --- The `yamaha` platform allows you to control [Yamaha Network Receivers](https://usa.yamaha.com/products/audio-visual/av-receivers-amps/rx) from Home Assistant. @@ -56,7 +57,7 @@ zone_names: ### Discovery notes - If the `discovery` integration is enabled, all units on the network - will be discovered using UPNP. + will be discovered using UPnP. - For receivers that support more than one zone, Home Assistant will add one media player per zone supported by the player, named "$name Zone 2" and "$name Zone 3". @@ -70,7 +71,7 @@ zone_names: ### Supported operations -- Media players created by yamaha support powering on/off, mute, +- Media players created by Yamaha support powering on/off, mute, volume control and source selection. Playback controls, for instance play and stop are available for sources that supports it. - The `play_media` service is implemented for `NET RADIO` source @@ -127,7 +128,7 @@ script: ``` -### Service `yamaha_enable_output` +### Service `enable_output` Enable or disable an output port (HDMI) on the receiver. diff --git a/source/_integrations/yamaha_musiccast.markdown b/source/_integrations/yamaha_musiccast.markdown index eb37674ece61..68afcada03ea 100644 --- a/source/_integrations/yamaha_musiccast.markdown +++ b/source/_integrations/yamaha_musiccast.markdown @@ -1,10 +1,13 @@ --- -title: "Yamaha MusicCast Receivers" -description: "Instructions on how to integrate Yamaha MusicCast Receivers into Home Assistant." +title: Yamaha MusicCast +description: Instructions on how to integrate Yamaha MusicCast Receivers into Home Assistant. logo: yamaha.png ha_category: - Media Player ha_release: 0.53 +ha_codeowners: + - '@jalmeroth' +ha_domain: yamaha_musiccast --- The `yamaha_musiccast` platform allows you to control [Yamaha MusicCast Receivers](https://usa.yamaha.com/products/audio_visual/hifi_components/index.html) from Home Assistant. diff --git a/source/_integrations/yandex_transport.markdown b/source/_integrations/yandex_transport.markdown index bbb22373c3bf..30b3ad551990 100644 --- a/source/_integrations/yandex_transport.markdown +++ b/source/_integrations/yandex_transport.markdown @@ -1,11 +1,14 @@ --- -title: "Yandex transport" -description: "Instructions on how to set up Yandex transport with Home Assistant." +title: Yandex Transport +description: Instructions on how to set up Yandex transport with Home Assistant. logo: yandex.png ha_category: - Sensor - Transport -ha_release: "0.100" +ha_release: '0.100' +ha_codeowners: + - '@rishatik92' +ha_domain: yandex_transport --- The `yandex_tranport` sensor platform uses [Yandex Maps](https://maps.yandex.ru/) it will give you the time until the next departure time from a bus/tramway/etc stop. diff --git a/source/_integrations/yandextts.markdown b/source/_integrations/yandextts.markdown index 1787af7cc073..e6669e787098 100644 --- a/source/_integrations/yandextts.markdown +++ b/source/_integrations/yandextts.markdown @@ -1,10 +1,11 @@ --- -title: "Yandex TTS" -description: "Instructions on how to setup Yandex SpeechKit TTS with Home Assistant." +title: Yandex TTS +description: Instructions on how to setup Yandex SpeechKit TTS with Home Assistant. logo: yandex.png ha_category: - Text-to-speech ha_release: 0.36 +ha_domain: yandextts --- The `yandextts` text-to-speech platform uses [Yandex SpeechKit](https://tech.yandex.com/speechkit/) Text-to-Speech engine to read a text with natural sounding voices. diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index 11ff99f2eda7..11f962667567 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -1,22 +1,27 @@ --- -title: "Yeelight Wifi Bulb" -description: "Instructions on how to setup Yeelight Wifi devices within Home Assistant." +title: Yeelight +description: Instructions on how to setup Yeelight Wifi devices within Home Assistant. logo: yeelight.png ha_category: - Light ha_release: 0.32 ha_iot_class: Local Polling +ha_codeowners: + - '@rytilahti' + - '@zewelor' +ha_domain: yeelight --- -The `yeelight` integration allows you to control your Yeelight Wifi bulbs with Home Assistant. There are two possible methods for configuration of the Yeelight: Manual or Automatic. +The `yeelight` integration allows you to control your Yeelight Wi-Fi bulbs with Home Assistant. There are two possible methods for configuration of the Yeelight: Manual or Automatic. There is currently support for the following device types within Home Assistant: -- **Light** - The yeelight platform for supporting lights. -- **Sensor** - The yeelight platform for supporting sensors. Currently only nightlight mode sensor, for ceiling lights. +- **Light** - The Yeelight platform for supporting lights. +- **Sensor** - The Yeelight platform for supporting sensors. Currently only nightlight mode sensor, for ceiling lights. -### Example configuration (Automatic) -After the lights are connected to the WiFi network and have been detected in Home Assistant, the discovered names will be shown in the `Light` section of the `Overview` view. Add the following lines to your `customize.yaml` file: +## Example configuration (Automatic) + +After the lights are connected to the Wi-Fi network and have been detected in Home Assistant, the discovered names will be shown in the `Light` section of the `Overview` view. Add the following lines to your `customize.yaml` file: ```yaml # Example customize.yaml entry @@ -26,7 +31,7 @@ light.yeelight_color2_XXXXXXXXXXXX: friendly_name: Downstairs Toilet ``` -### Example configuration (Manual) +## Example configuration (Manual) To enable those lights, add the following lines to your `configuration.yaml` file: @@ -76,7 +81,7 @@ devices: required: false type: string model: - description: "Yeelight model. Possible values are `mono1`, `color1`, `color2`, `strip1`, `bslamp1`, `ceiling1`, `ceiling2`, `ceiling3`, `ceiling4`. The setting is used to enable model specific features f.e. a particular color temperature range." + description: "Yeelight model. Possible values are `mono1`, `color1`, `color2`, `strip1`, `bslamp1`, `ceiling1`, `ceiling2`, `ceiling3`, `ceiling4`, `ceiling13`. The setting is used to enable model specific features f.e. a particular color temperature range. Its also used to setup device, if its not available and discovery if disabled, during Home Assistant startup. If model is not specified, it will be guessed, by integration by looking at supported properties, reported by device." required: false type: string custom_effects: @@ -104,9 +109,10 @@ custom_effects: type: list {% endconfiguration %} -#### Music mode +### Music mode + Per default the bulb limits the amount of requests per minute to 60, a limitation which can be bypassed by enabling the music mode. In music mode the bulb is commanded to connect back to a socket provided by the integration and it tries to keep the connection open, which may not be wanted in all use-cases. -**Also note that bulbs in music mode will not update their state to "unavailable" if they are disconnected, which can cause delays in Home Assistant. Bulbs in music mode may also not react to commands from HASS the first time if the connection is dropped. If you experience this issue, turn the light off and back on again in the frontend and everything will return to normal.** +**Also note that bulbs in music mode will not update their state to "unavailable" if they are disconnected, which can cause delays in Home Assistant. Bulbs in music mode may also not react to commands from Home Assistant the first time if the connection is dropped. If you experience this issue, turn the light off and back on again in the frontend and everything will return to normal.** ### Initial setup @@ -134,10 +140,10 @@ This integration is tested to work with the following models. If you have a diff | `color2` | YLDP06YL | LED Bulb (Color) - 2nd generation | | `strip1` | YLDD01YL | Lightstrip (Color) | | `strip1` | YLDD02YL | Lightstrip (Color) | -| ? | YLDD04YL | Lightstrip (Color) -| `bslamp1` | MJCTD01YL | Xiaomi Mijia Bedside Lamp - WIFI Version! | +| ? | YLDD04YL | Lightstrip (Color) | +| `bslamp1` | MJCTD01YL | Xiaomi Mijia Bedside Lamp - Wi-Fi Version! | | `bslamp1` | MJCTD02YL | Xiaomi Mijia Bedside Lamp II | -| `RGBW` | MJDP02YL | Mi Led smart Lamp - white and color WIFI Version | +| `RGBW` | MJDP02YL | Mi LED smart Lamp - white and color Wi-Fi Version| | `lamp1` | MJTD01YL | Xiaomi Mijia Smart LED Desk Lamp (autodiscovery isn't possible because the device doesn't support mDNS due to the small amount of RAM) | | `ceiling1` | YLXD01YL | Yeelight Ceiling Light | | `ceiling2` | YLXD03YL | Yeelight Ceiling Light - Youth Version | @@ -145,8 +151,9 @@ This integration is tested to work with the following models. If you have a diff | `ceiling3` | YLXD05YL | Yeelight Ceiling Light (Jiaoyue 480) | | `ceiling4` | YLXD02YL | Yeelight Ceiling Light (Jiaoyue 650) | | `mono` | YLTD03YL | Yeelight Serene Eye-Friendly Desk Lamp | +| `ceiling13` | YLXD01YL | Yeelight LED Ceiling Light | -## Platform Services +## Services ### Service `yeelight.set_mode` @@ -200,7 +207,7 @@ Changes the light to the specified color temperature. If the light is off, it wi ### Service `yeelight.set_color_flow_scene` -Starts a color flow. Difference between this and [yeelight.start_flow](#service-yeelightstart_flow), this service call uses different Yeelight api call. If the light was off, it will be turned on. There might be some firmware differences, in handling complex flows, etc. +Starts a color flow. Difference between this and [yeelight.start_flow](#service-yeelightstart_flow), this service call uses different Yeelight API call. If the light was off, it will be turned on. There might be some firmware differences, in handling complex flows, etc. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------------------------------------------| @@ -258,13 +265,13 @@ This example shows how you can add your custom effects in your configuration. To Possible transitions are `RGBTransition`, `HSVTransition`, `TemperatureTransition`, `SleepTransition`. Where the array values are as per the following: - - RGBTransition: [red, green, blue, duration, brightness] with red / green / blue being an integer between 0 and 255, duration being in milliseconds (minimum of 50) and final brightness to transition to 0-100 (%) - - HSVTransition: [hue, saturation, duration, brightness] with hue being an integer between 0 and 359, saturation 0 -100, duration in milliseconds (minimum 50) and final brightness 0-100 (%) - - TemperatureTransition: [temp, duration, brightness] with temp being the final color temperature between 1700 and 6500, duration in milliseconds (minimum 50) and final brightness to transition to 0-100 (%) - - SleepTransition: [duration] with duration being in integer for effect time in milliseconds (minimum 50) -More info about transitions and their expected parameters can be found in [python-yeelight documentation](https://yeelight.readthedocs.io/en/stable/flow.html). +- RGBTransition: [red, green, blue, duration, brightness] with red / green / blue being an integer between 0 and 255, duration being in milliseconds (minimum of 50) and final brightness to transition to 0-100 (%). +- HSVTransition: [hue, saturation, duration, brightness] with hue being an integer between 0 and 359, saturation 0 -100, duration in milliseconds (minimum 50) and final brightness 0-100 (%). +- TemperatureTransition: [temp, duration, brightness] with temp being the final color temperature between 1700 and 6500, duration in milliseconds (minimum 50) and final brightness to transition to 0-100 (%). +- SleepTransition: [duration] with duration being in integer for effect time in milliseconds (minimum 50). +More info about transitions and their expected parameters can be found in [python-yeelight documentation](https://yeelight.readthedocs.io/en/stable/flow.html). ```yaml yeelight: diff --git a/source/_integrations/yeelightsunflower.markdown b/source/_integrations/yeelightsunflower.markdown index 7da22be327ac..aee48a0bbdbb 100644 --- a/source/_integrations/yeelightsunflower.markdown +++ b/source/_integrations/yeelightsunflower.markdown @@ -1,11 +1,14 @@ --- -title: "Yeelight Sunflower Bulb" -description: "Instructions on how to setup Yeelight Sunflower hub and bulbs within Home Assistant." +title: Yeelight Sunflower +description: Instructions on how to setup Yeelight Sunflower hub and bulbs within Home Assistant. logo: yeelight.png ha_category: - Light ha_release: 0.39 ha_iot_class: Local Polling +ha_codeowners: + - '@lindsaymarkward' +ha_domain: yeelightsunflower --- The `yeelightsunflower` light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant. diff --git a/source/_integrations/yessssms.markdown b/source/_integrations/yessssms.markdown index 322cde2d07f3..a41bac51895c 100644 --- a/source/_integrations/yessssms.markdown +++ b/source/_integrations/yessssms.markdown @@ -1,10 +1,12 @@ --- -title: "Yesss SMS" -description: "Instructions on how to add Yesss-SMS notifications to Home Assistant." -logo: yesssat.png +title: yesss! SMS +description: Instructions on how to add Yesss-SMS notifications to Home Assistant. ha_category: - Notifications ha_release: 0.57 +ha_codeowners: + - '@flowolf' +ha_domain: yessssms --- The `yessssms` platform is using the Austrian mobile operator [Yesss.at](https://yesss.at) and others to send SMS via their web-site. diff --git a/source/_integrations/yi.markdown b/source/_integrations/yi.markdown index 9c220a1f7763..856320725df7 100644 --- a/source/_integrations/yi.markdown +++ b/source/_integrations/yi.markdown @@ -1,11 +1,13 @@ --- -title: "Yi Home Camera" -description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant." -logo: yi.png +title: Yi Home Cameras +description: Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant. ha_category: - Camera ha_release: 0.56 ha_iot_class: Local Polling +ha_codeowners: + - '@bachya' +ha_domain: yi --- The `yi` camera platform allows you to utilize [Yi Home Cameras](https://www.yitechnology.com/) within Home Assistant. Specifically, this platform supports the line of Yi Home Cameras that are based on the Hi3518e Chipset. This includes: @@ -21,7 +23,7 @@ To successfully implement this platform, the Home Assistant host should be capab ### Installing Alternative Firmware -In order to integrate the camera with Home Assistant, it is necessary to install a custom firmware on the device. Instructions for doing so can be found via the [yi-hack-v3 GitHub project](https://github.com/shadow-1/yi-hack-v3). +In order to integrate the camera with Home Assistant, it is necessary to install a custom firmware on the device. Instructions for doing so can be found via the [yi-hack-v3 GitHub project](https://github.com/shadow-1/yi-hack-v3) or if you have a 2019 version camera [yi-hack-6FUS_4.5.0 GitHub project](https://github.com/roleoroleo/yi-hack-6FUS_4.5.0). Once installed, please ensure that you have enabled FTP and Telnet on your device. diff --git a/source/_integrations/yr.markdown b/source/_integrations/yr.markdown index f266364f81c6..6c3151563eac 100644 --- a/source/_integrations/yr.markdown +++ b/source/_integrations/yr.markdown @@ -1,11 +1,14 @@ --- -title: "YR" -description: "Instructions on how to integrate Yr.no within Home Assistant." +title: Yr +description: Instructions on how to integrate Yr.no within Home Assistant. logo: yr.png ha_category: - Weather ha_release: 0.11 ha_iot_class: Cloud Polling +ha_codeowners: + - '@danielhiversen' +ha_domain: yr --- The `yr` platform uses [YR.no](https://www.yr.no/) as a source for current diff --git a/source/_integrations/yweather.markdown b/source/_integrations/yweather.markdown index 3f794b62e54f..d7f9d87af713 100644 --- a/source/_integrations/yweather.markdown +++ b/source/_integrations/yweather.markdown @@ -1,12 +1,12 @@ --- -title: "Yahoo Weather" -description: "Instructions on how to integrate Yahoo Weather within Home Assistant." -logo: yahooweather.png +title: Yahoo Weather +description: Instructions on how to integrate Yahoo Weather within Home Assistant. ha_category: - Weather - Sensor ha_release: 0.24 ha_iot_class: Cloud Polling +ha_domain: yweather ---
    diff --git a/source/_integrations/zabbix.markdown b/source/_integrations/zabbix.markdown index a7cbae866cef..4f581f386a40 100644 --- a/source/_integrations/zabbix.markdown +++ b/source/_integrations/zabbix.markdown @@ -1,12 +1,13 @@ --- -title: "Zabbix" -description: "Instructions on how to integrate Zabbix into Home Assistant." +title: Zabbix +description: Instructions on how to integrate Zabbix into Home Assistant. logo: zabbix.png ha_category: - System Monitor - Sensor ha_release: 0.37 ha_iot_class: Local Polling +ha_domain: zabbix --- The `zabbix` integration is the main integration to connect to a [Zabbix](https://www.zabbix.com/) monitoring instance via the Zabbix API. diff --git a/source/_integrations/zamg.markdown b/source/_integrations/zamg.markdown index 3fda67db4b57..5e9ff97c4810 100644 --- a/source/_integrations/zamg.markdown +++ b/source/_integrations/zamg.markdown @@ -1,12 +1,13 @@ --- -title: "ZAMG" -description: "Instructions on how to integrate ZAMG within Home Assistant." +title: Zentralanstalt für Meteorologie und Geodynamik (ZAMG) +description: Instructions on how to integrate ZAMG within Home Assistant. logo: zamg.png ha_category: - Weather - Sensor ha_release: 0.35 ha_iot_class: Cloud Polling +ha_domain: zamg --- The `zamg` platform uses meteorological details published by the Austrian weather service [Zentralanstalt für Meteorologie und Geodynamik (ZAMG)](https://www.zamg.ac.at). diff --git a/source/_integrations/zengge.markdown b/source/_integrations/zengge.markdown index b141d328173a..680eca6e9639 100644 --- a/source/_integrations/zengge.markdown +++ b/source/_integrations/zengge.markdown @@ -1,11 +1,11 @@ --- -title: "Zengge" -description: "Instructions on how to integrate Zengge Bluetooth bulbs into Home Assistant." -logo: zengge.png +title: Zengge +description: Instructions on how to integrate Zengge Bluetooth bulbs into Home Assistant. ha_category: - Light ha_iot_class: Local Polling ha_release: 0.36 +ha_domain: zengge --- The `zengge` platform allows you to integrate your [Zengge Bluetooth bulbs](http://www.zengge.com/) into Home Assistant. diff --git a/source/_integrations/zeroconf.markdown b/source/_integrations/zeroconf.markdown index 7cb0c209973a..cb95e5514351 100644 --- a/source/_integrations/zeroconf.markdown +++ b/source/_integrations/zeroconf.markdown @@ -1,15 +1,19 @@ --- -title: "Zeroconf/Avahi/Bonjour" -description: "Exposes Home Assistant using the Zeroconf protocol." +title: Zero-configuration networking (zeroconf) +description: Exposes Home Assistant using the Zeroconf protocol. ha_category: - Network -ha_qa_scale: internal ha_release: 0.18 +ha_quality_scale: internal +ha_codeowners: + - '@robbiet480' + - '@Kane610' +ha_domain: zeroconf --- -The `zeroconf` integration will scan the network for supported devices and services. Discovered integrations will show up in the discovered section on the integrations page in the config panel. It will also make Home Assistant discoverable for other services in the network. Zeroconf is also sometimes known as Bonjour, Rendezvous, and Avahi. +The `zeroconf` integration will scan the network for supported devices and services. Discovered integrations will show up in the discovered section on the integrations page in the configuration panel. It will also make Home Assistant discoverable for other services in the network. Zeroconf is also sometimes known as Bonjour, Rendezvous, and Avahi. -Integrations can opt-in to be found by adding either [a Zeroconf section](https://developers.home-assistant.io/docs/en/next/creating_integration_manifest.html#zeroconf) or [a HomeKit section](https://developers.home-assistant.io/docs/en/next/creating_integration_manifest.html#homekit) to their manifest.json. +Integrations can opt-in to be found by adding either [a Zeroconf section](https://developers.home-assistant.io/docs/en/next/creating_integration_manifest.html#zeroconf) or [a HomeKit section](https://developers.home-assistant.io/docs/en/next/creating_integration_manifest.html#homekit) to their `manifest.json`. ## Configuration diff --git a/source/_integrations/zestimate.markdown b/source/_integrations/zestimate.markdown index 9468b7c03217..c0d7f2e1f72d 100644 --- a/source/_integrations/zestimate.markdown +++ b/source/_integrations/zestimate.markdown @@ -1,11 +1,11 @@ --- -title: "Zestimate" -description: "Instructions on how to integrate the Zestimate sensor into Home Assistant." +title: Zestimate +description: Instructions on how to integrate the Zestimate sensor into Home Assistant. ha_category: - Sensor -logo: zillow.png ha_release: 0.65 ha_iot_class: Cloud Polling +ha_domain: zestimate --- The `zestimate` sensor allows one to track the Zestimate® value of properties using the [Zillow API](https://www.zillow.com/howto/api/APIOverview.htm). According to Zillow's website, a Zestimate® home valuation is Zillow's estimated market value. It is not an appraisal. Use it as a starting point to determine a home's value. The Zestimate® is provided by [Zillow](https://www.zillow.com), a website primarily for listing homes to buy/sell/rent in the United States. diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index 768978d39928..e6110542bc14 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -1,6 +1,6 @@ --- -title: "Zigbee Home Automation" -description: "Instructions on how to integrate your Zigbee Home Automation (ZHA) devices within Home Assistant." +title: Zigbee Home Automation +description: Instructions on how to integrate your Zigbee Home Automation (ZHA) devices within Home Assistant. logo: zigbee.png ha_category: - Hub @@ -10,31 +10,42 @@ ha_category: - Lock - Sensor - Switch + - Cover ha_release: 0.44 ha_iot_class: Local Polling featured: true +ha_config_flow: true +ha_codeowners: + - '@dmulcahey' + - '@adminiuga' +ha_domain: zha --- -[Zigbee Home Automation](https://zigbee.org/zigbee-for-developers/applicationstandards/zigbeehomeautomation/) -integration for Home Assistant allows you to connect many off-the-shelf Zigbee based devices to Home Assistant, using one of the available Zigbee radio modules compatible with [zigpy](https://github.com/zigpy/zigpy) (an open source Python library implementing a Zigbee stack, which in turn relies on separate libraries which can each interface a with Zigbee radio module a different manufacturer). +[Zigbee Home Automation](https://zigbeealliance.org) +integration for Home Assistant allows you to connect many off-the-shelf Zigbee based devices to Home Assistant, using one of the available Zigbee radio modules that is compatible with [zigpy](https://github.com/zigpy/zigpy) (an open source Python library implementing a Zigbee stack, which in turn relies on separate libraries which can each interface a with Zigbee radio module a different manufacturer). There is currently support for the following device types within Home Assistant: - Binary Sensor -- Sensor +- Cover +- Fan - Light - Lock +- Sensor - Switch -- Fan ## ZHA exception and deviation handling -Zigbee devices that deviate from or do not fully conform to the standard specifications set by the [Zigbee Alliance](https://www.zigbee.org) may require the development of custom [ZHA Device Handlers](https://github.com/dmulcahey/zha-device-handlers) (ZHA custom quirks handler implementation) to for all their functions to work properly with the ZHA integration in Home Assistant. These ZHA Device Handlers for Home Assistant can thus be used to parse custom messages to and from Zigbee devices. +Zigbee devices that deviate from or do not fully conform to the standard specifications set by the [Zigbee Alliance](https://zigbeealliance.org) may require the development of custom [ZHA Device Handlers](https://github.com/dmulcahey/zha-device-handlers) (ZHA custom quirks handler implementation) to for all their functions to work properly with the ZHA integration in Home Assistant. These ZHA Device Handlers for Home Assistant can thus be used to parse custom messages to and from Zigbee devices. The custom quirks implementations for zigpy implemented as ZHA Device Handlers for Home Assistant are a similar concept to that of [Hub-connected Device Handlers for the SmartThings Classics platform](https://docs.smartthings.com/en/latest/device-type-developers-guide/) as well as that of [Zigbee-Shepherd Converters as used by Zigbee2mqtt](https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html), meaning they are each virtual representations of a physical device that expose additional functionality that is not provided out-of-the-box by the existing integration between these platforms. ## Known working Zigbee radio modules +- dresden elektronik deCONZ based Zigbee radios (via the [zigpy-deconz](https://github.com/zigpy/zigpy-deconz) library for zigpy) + - [ConBee II (a.k.a. ConBee 2) USB adapter from dresden elektronik](https://phoscon.de/conbee2) + - [ConBee USB adapter from dresden elektronik](https://phoscon.de/conbee) + - [RaspBee Raspberry Pi Shield from dresden elektronik](https://phoscon.de/raspbee) - EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy) - [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) - [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html) @@ -42,25 +53,50 @@ The custom quirks implementations for zigpy implemented as ZHA Device Handlers f - Telegesis ETRX357USB (Note! This first have to be flashed with other EmberZNet firmware) - Telegesis ETRX357USB-LRS (Note! This first have to be flashed with other EmberZNet firmware) - Telegesis ETRX357USB-LRS+8M (Note! This first have to be flashed with other EmberZNet firmware) +- Texas Instruments CC253x, CC26x2R, and CC13x2 based radios (via the [zigpy-cc](https://github.com/sanyatuning/zigpy-cc) library for zigpy) + - [CC2531 USB stick hardware flashed with custom Z-Stack coordinator firmware from the Zigbee2mqtt project](https://www.zigbee2mqtt.io/getting_started/what_do_i_need.html) + - [CC2530 + CC2591 USB stick hardware flashed with custom Z-Stack coordinator firmware from the Zigbee2mqtt project](https://www.zigbee2mqtt.io/getting_started/what_do_i_need.html) + - [CC2530 + CC2592 dev board hardware flashed with custom Z-Stack coordinator firmware from the Zigbee2mqtt project](https://www.zigbee2mqtt.io/getting_started/what_do_i_need.html) + - [CC2652R dev board hardware flashed with custom Z-Stack coordinator firmware from the Zigbee2mqtt project](https://www.zigbee2mqtt.io/getting_started/what_do_i_need.html) + - [CC1352P-2 dev board hardware flashed with custom Z-Stack coordinator firmware from the Zigbee2mqtt project](https://www.zigbee2mqtt.io/getting_started/what_do_i_need.html) + - [CC2538 + CC2592 dev board hardware flashed with custom Z-Stack coordinator firmware from the Zigbee2mqtt project](https://www.zigbee2mqtt.io/getting_started/what_do_i_need.html) - XBee Zigbee based radios (via the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy) - Digi XBee Series 3 (xbee3-24) modules - Digi XBee Series 2C (S2C) modules - Digi XBee Series 2 (S2) modules (Note! This first have to be flashed with Zigbee Coordinator API firmware) -- Dresden-Elektronik deCONZ based Zigbee radios (via the [zigpy-deconz](https://github.com/zigpy/zigpy-deconz) library for zigpy) - - [ConBee II (a.k.a. ConBee 2) USB adapter from Dresden-Elektronik](https://shop.dresden-elektronik.de/conbee-2.html) - - [ConBee USB adapter from Dresden-Elektronik](https://www.dresden-elektronik.de/conbee/) - - [RaspBee Raspberry Pi Shield from Dresden-Elektronik](https://www.dresden-elektronik.de/raspbee/) - ZiGate based radios (via the [zigpy-zigate](https://github.com/doudz/zigpy-zigate) library for zigpy and require firmware 3.1a or later) - [ZiGate USB-TTL](https://zigate.fr/produit/zigate-ttl/) - [ZiGate USB-DIN](https://zigate.fr/produit/zigate-usb-din/) - [PiZiGate](https://zigate.fr/produit/pizigate-v1-0/) - - [Wifi ZiGate](https://zigate.fr/produit/zigate-pack-wifi-v1-3/) (work in progress) + - [Wifi ZiGate](https://zigate.fr/produit/zigate-pack-wifi-v1-3/) + +## Configuration - GUI + +From the Home Assistant front page go to **Configuration** and then select **Integrations** from the list. + +Use the plus button in the bottom right to add a new integration called **ZHA**. -## Configuration +In the popup: + +- USB Device Path - on a Linux system will be something like `/dev/ttyUSB0` or `/dev/ttyACM0` +- Radio type - select device type `ezsp`, `deconz`, `ti_cc`, `xbee` or `zigate` +- Submit + +| Radio Type | Zigbee Radio Hardware | +| ------------- | ------------- | +| `ezsp` | EmberZNet based radios, Telegesis ETRX357USB*** (using EmberZNet firmware) | +| `deconz` | ConBee, ConBee II | +| `xbee` | Digi XBee Series 2, 2C, 3 | + +- Press `Submit` to save changes. + +The success dialog will appear or an error will be displayed in the popup. An error is likely if Home Assistant can't access the USB device or your device is not up to date. Refer to [Troubleshooting](#troubleshooting) below for more information. + +## Configuration - Manual To configure the component, select ZHA on the Integrations page and provide the path to your Zigbee USB stick. -Or, you can manually confiure `zha` section in `configuration.yaml`. The path to the database which will persist your network data is required. +Or, you can manually configure `zha` section in `configuration.yaml`. The path to the database which will persist your network data is required. ```yaml # Example configuration.yaml entry @@ -70,13 +106,14 @@ zha: ``` If you are use ZiGate, you have to use some special usb_path configuration: - - ZiGate USB TTL or DIN: `/dev/ttyUSB0` or `auto` to auto discover the zigate - - PiZigate : `pizigate:/dev/serial0` - - Wifi Zigate : `socket://[IP]:[PORT]` for example `socket://192.168.1.10:9999` + +- ZiGate USB TTL or DIN: `/dev/ttyUSB0` or `auto` to auto discover the zigate +- PiZigate : `pizigate:/dev/serial0` +- Wifi Zigate : `socket://[IP]:[PORT]` for example `socket://192.168.1.10:9999` {% configuration %} radio_type: - description: One of `ezsp`, `xbee`, `deconz` or `zigate`. + description: One of `deconz`, `ezsp`, `ti_cc`, `xbee` or `zigate`. required: false type: string default: ezsp @@ -102,6 +139,14 @@ enable_quirks: To add new devices to the network, call the `permit` service on the `zha` domain. Do this by clicking the Service icon in Developer tools and typing `zha.permit` in the **Service** dropdown box. Next, follow the device instructions for adding, scanning or factory reset. +## Adding devices + +Go to the **Configuration** page and select the **ZHA** integration that was added by the configuration steps above. + +Click on **ADD DEVICES** to start a scan for new devices. + +Reset your Zigbee devices according to the device instructions provided by the manufacturer (e.g., turn on/off lights up to 10 times, switches usually have a reset button/pin). + ## Troubleshooting ### Add Philips Hue bulbs that have previously been added to another bridge @@ -121,12 +166,41 @@ Using a Philips Hue Dimmer Switch is probably the easiest way to factory-reset y Follow the instructions on [https://github.com/vanviegen/hue-thief/](https://github.com/vanviegen/hue-thief/) (EZSP-based Zigbee USB stick required) -### ZHA Start up issue with Home-Assistant Docker/Hass.io installs on linux hosts +### ZHA Start up issue with Home Assistant Supervised or Home Assistant Core on Docker -On Linux hosts ZHA can fail to start during HA startup or restarts because the zigbee USB device is being claimed by the host's modemmanager service. To fix this disable the modemmanger on the host system. +On Linux hosts ZHA can fail to start during HA startup or restarts because the Zigbee USB device is being claimed by the host's modemmanager service. To fix this disable the modemmanger on the host system. To remove modemmanager from an Debian/Ubuntu host run this command: ```bash sudo apt-get purge modemmanager ``` + +### Can't connect to USB device and using Docker + +If you are using Docker and can't connect, you most likely need to forward your device from the host machine to the Docker instance. This can be achieved by adding the device mapping to the end of the startup string or ideally using Docker compose. + +#### Docker Compose + +Install Docker-Compose for your platform (Linux - `sudo apt-get install docker-compose`). + +Create a `docker-compose.yml` with the following data: + +```yaml +version: '2' +services: + homeassistant: + # customisable name + container_name: home-assistant + + # must be image for your platform, this is the rpi3 variant + image: homeassistant/raspberrypi3-homeassistant + volumes: + - :/config + - /etc/localtime:/etc/localtime:ro + devices: + # your usb device forwarding to the docker image + - /dev/ttyUSB0:/dev/ttyUSB0 + restart: always + network_mode: host +``` diff --git a/source/_integrations/zhong_hong.markdown b/source/_integrations/zhong_hong.markdown index 69c69edc1ca6..ab023eeae9c2 100644 --- a/source/_integrations/zhong_hong.markdown +++ b/source/_integrations/zhong_hong.markdown @@ -1,17 +1,17 @@ --- -title: "ZhongHong Thermostats Controller" -description: "Instructions on how to integrate ZhongHong Support thermostats within Home Assistant." +title: ZhongHong +description: Instructions on how to integrate ZhongHong Support thermostats within Home Assistant. logo: zhong_hong.png ha_category: - Climate ha_release: 0.72 ha_iot_class: Local Push +ha_domain: zhong_hong --- - The `zhong_hong` climate platform lets you control [Zhonghong HVAC Gateway Controller](http://zhonghongtech.cn/v1/index.shtml) thermostats through Home Assistant. -To set it up, add the following information to your configuration.yaml file: +To set it up, add the following information to your `configuration.yaml` file: ```yaml climate: diff --git a/source/_integrations/zigbee.markdown b/source/_integrations/zigbee.markdown index 9424890bad27..9348dbd11573 100644 --- a/source/_integrations/zigbee.markdown +++ b/source/_integrations/zigbee.markdown @@ -1,6 +1,6 @@ --- -title: "Zigbee" -description: "Instructions on how to integrate a Zigbee network with Home Assistant." +title: Zigbee +description: Instructions on how to integrate a Zigbee network with Home Assistant. logo: zigbee.png ha_category: - Binary Sensor @@ -9,6 +9,7 @@ ha_category: - Switch ha_release: 0.12 ha_iot_class: Local Polling +ha_domain: zigbee --- [Zigbee](https://zigbee.org/what-is-zigbee/) integration for Home Assistant allows you to utilize modules such as the [XBee](https://www.digi.com/xbee) as wireless General Purpose Input/Output (GPIO) devices. The integration requires a local Zigbee device to be connected to a serial port. Through this, it will send and receive commands to and from other devices on the Zigbee mesh network. diff --git a/source/_integrations/ziggo_mediabox_xl.markdown b/source/_integrations/ziggo_mediabox_xl.markdown index df55f5e2bc72..250527324dd0 100644 --- a/source/_integrations/ziggo_mediabox_xl.markdown +++ b/source/_integrations/ziggo_mediabox_xl.markdown @@ -1,11 +1,12 @@ --- -title: "Ziggo Mediabox XL" -description: "Instructions on how to integrate the Ziggo Mediabox XL into Home Assistant." +title: Ziggo Mediabox XL +description: Instructions on how to integrate the Ziggo Mediabox XL into Home Assistant. logo: ziggo.png ha_category: - Media Player ha_iot_class: Local Polling -ha_release: "0.60" +ha_release: '0.60' +ha_domain: ziggo_mediabox_xl --- The `ziggo_mediabox_xl` integration allows you to control a [Ziggo](https://www.ziggo.nl/) Mediabox XL from Home Assistant. diff --git a/source/_integrations/zone.markdown b/source/_integrations/zone.markdown index 4eccefd4d130..de594d22d561 100644 --- a/source/_integrations/zone.markdown +++ b/source/_integrations/zone.markdown @@ -1,11 +1,13 @@ --- -title: "Zone" -description: "Instructions on how to set up zones within Home Assistant." -logo: home-assistant.png +title: Zone +description: Instructions on how to set up zones within Home Assistant. ha_category: - Organization -ha_qa_scale: internal ha_release: 0.69 +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_domain: zone --- Zones allow you to specify certain regions on earth (for now). When a device tracker sees a device to be within a zone, the state will take the name from the zone. Zones can also be used as a [trigger](/getting-started/automation-trigger/#zone-trigger) or [condition](/getting-started/automation-condition/#zone-condition) inside automation setups. @@ -36,7 +38,7 @@ zone: {% configuration %} name: description: The friendly name of the zone. - required: false + required: true type: string latitude: description: The latitude of the center point of the zone. diff --git a/source/_integrations/zoneminder.markdown b/source/_integrations/zoneminder.markdown index 7052152886fe..7c1c150afa66 100644 --- a/source/_integrations/zoneminder.markdown +++ b/source/_integrations/zoneminder.markdown @@ -1,6 +1,6 @@ --- -title: "ZoneMinder" -description: "How to integrate ZoneMinder into Home Assistant." +title: ZoneMinder +description: How to integrate ZoneMinder into Home Assistant. logo: zoneminder.png ha_category: - Hub @@ -10,6 +10,9 @@ ha_category: - Switch ha_release: 0.31 ha_iot_class: Local Polling +ha_codeowners: + - '@rohankapoorcom' +ha_domain: zoneminder --- The `zoneminder` integration sets up Home Assistant with your [ZoneMinder](https://www.zoneminder.com) instance. diff --git a/source/_integrations/zwave.markdown b/source/_integrations/zwave.markdown index 03b7fce9a067..4544965cf3cc 100644 --- a/source/_integrations/zwave.markdown +++ b/source/_integrations/zwave.markdown @@ -1,7 +1,6 @@ --- -title: "Z-Wave" -description: "Instructions on how to integrate your existing Z-Wave within Home Assistant." -logo: z-wave.png +title: Z-Wave +description: Instructions on how to integrate your existing Z-Wave within Home Assistant. ha_category: - Hub - Binary Sensor @@ -15,6 +14,10 @@ ha_category: featured: true ha_iot_class: Local Push ha_release: 0.7 +ha_config_flow: true +ha_codeowners: + - '@home-assistant/z-wave' +ha_domain: zwave --- The [Z-Wave](https://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Please see the [Z-Wave getting started section](/docs/z-wave/) for in-depth documentation on how to use and setup the Z-Wave component. diff --git a/source/_lovelace/alarm-panel.markdown b/source/_lovelace/alarm-panel.markdown index 09e25d85f7d8..a31020d0ac05 100644 --- a/source/_lovelace/alarm-panel.markdown +++ b/source/_lovelace/alarm-panel.markdown @@ -1,10 +1,10 @@ --- title: "Alarm Panel Card" sidebar_label: Alarm Panel -description: "The Alarm Panel allows you to Arm and Disarm your Alarm Control Panel Integrations" +description: "The Alarm Panel card allows you to Arm and Disarm your alarm control panel integrations." --- -The Alarm Panel allows you to Arm and Disarm your Alarm Control Panel Integrations. +The Alarm Panel card allows you to Arm and Disarm your alarm control panel integrations.

    Screenshot of the alarm panel card diff --git a/source/_lovelace/button.markdown b/source/_lovelace/button.markdown new file mode 100644 index 000000000000..858bbb81a886 --- /dev/null +++ b/source/_lovelace/button.markdown @@ -0,0 +1,102 @@ +--- +title: "Button Card" +sidebar_label: Button +description: "The Button card allows you to add buttons to perform tasks." +--- + +The Button card allows you to add buttons to perform tasks. + +

    +Screenshot of the button card +Screenshot of the Button card. +

    + +```yaml +type: button +entity: light.living_room +``` + +{% configuration %} +type: + required: true + description: button + type: string +entity: + required: false + description: Home Assistant entity ID. + type: string +name: + required: false + description: Overwrites friendly name. + type: string + default: Name of Entity +icon: + required: false + description: Overwrites icon or entity picture. + type: string + default: Entity Domain Icon +show_name: + required: false + description: Show name. + type: boolean + default: "true" +show_icon: + required: false + description: Show icon. + type: boolean + default: "true" +icon_height: + required: false + description: Set the height for the icon. This is in pixels which is handled by the configuration UI. (Advanced users can use other CSS values if they like) + type: string + default: auto +state_color: + required: false + description: Set to `true` to have icons colored when entity is active + type: boolean + default: true +tap_action: + required: false + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). + type: map +hold_action: + required: false + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). + type: map +double_tap_action: + required: false + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). + type: map +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string +{% endconfiguration %} + +## Options For Exemptions + +{% configuration badges %} +user: + required: true + description: User id that can see the view tab. + type: string +{% endconfiguration %} + +## Examples + +Title and Script Service Example: + +```yaml +type: button +name: Turn Off Lights +tap_action: + action: call-service + service: script.turn_on + service_data: + entity_id: script.turn_off_lights +``` + +

    +Screenshot of the button card +Screenshot of the Button card with Title and Script Service. +

    diff --git a/source/_lovelace/conditional.markdown b/source/_lovelace/conditional.markdown index e26ee05ca743..a82ba6c92126 100644 --- a/source/_lovelace/conditional.markdown +++ b/source/_lovelace/conditional.markdown @@ -1,10 +1,10 @@ --- title: Conditional Card sidebar_label: Conditional -description: Displays another card based on entity states. +description: The Conditional card displays another card based on entity states. --- -Displays another card based on entity states. +The Conditional card displays another card based on entity states. {% configuration %} type: @@ -18,7 +18,7 @@ conditions: keys: entity: required: true - description: HA entity ID. + description: Home Assistant entity ID. type: string state: required: false @@ -38,7 +38,7 @@ card: Note: Conditions with more than one entity are treated as an 'and' condition. This means that for the card to show, *all* entities must meet the state requirements set. -### Examples +## Examples ```yaml type: conditional diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index 23c614811b4d..d36977174c64 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -1,10 +1,10 @@ --- title: "Entities Card" sidebar_label: Entities -description: "Entities will be the most common type of card that will also be the most familiar to people using the standard interface. It groups items together very close to how groups used to do." +description: "The Entities card is the most common type of card. It groups items together into lists." --- -Entities will be the most common type of card that will also be the most familiar to people using the standard interface. It groups items together very close to how groups used to do. +The Entities card is the most common type of card. It groups items together into lists. {% configuration %} type: @@ -32,6 +32,19 @@ theme: required: false description: Set to any theme within `themes.yaml`. type: string +state_color: + required: false + description: Set to `true` to have icons colored when entity is active + type: boolean + default: false +header: + required: false + description: Header widget to render. See [header documentation](/lovelace/header-footer/). + type: map +footer: + required: false + description: Footer widget to render. See [footer documentation](/lovelace/header-footer/). + type: map {% endconfiguration %} ## Options For Entities @@ -61,102 +74,41 @@ image: type: string secondary_info: required: false - description: "Show additional info. Values: `entity-id`, `last-changed`." + description: "Show additional info. Values: `entity-id`, `last-changed`, `last-triggered` (only for automations and scripts)." type: string format: required: false description: "How the state should be formatted. Currently only used for timestamp sensors. Valid values are: `relative`, `total`, `date`, `time` and `datetime`." type: string +header: + required: false + description: Header widget to render. See [header documentation](/lovelace/header-footer/). + type: map +footer: + required: false + description: Footer widget to render. See [footer documentation](/lovelace/header-footer/). + type: map +action_name: + required: false + description: Button label. (Only applies to `script` and `scene` rows) + type: string +state_color: + required: false + description: Set to `true` to have icons colored when entity is active + type: boolean + default: false tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`toggle`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none {% endconfiguration %} ## Special Row Elements @@ -201,6 +153,10 @@ type: required: true description: cast type: string +dashboard: + required: false + description: Path to the dashboard of the view that needs to be shown. + type: string view: required: true description: Path to the view that needs to be shown. @@ -222,6 +178,42 @@ hide_if_unavailable: default: false {% endconfiguration %} +### Conditional + +Special row that displays based on entity states. + +{% configuration %} +type: + required: true + description: conditional + type: string +conditions: + required: true + description: List of entity IDs and matching states. + type: list + keys: + entity: + required: true + description: HA entity ID. + type: string + state: + required: false + description: Entity state is equal to this value.* + type: string + state_not: + required: false + description: Entity state is unequal to this value.* + type: string +row: + required: true + description: Row to display if all conditions match. + type: map +{% endconfiguration %} + +*one is required (`state` or `state_not`) + +Note: Conditions with more than one entity are treated as an 'and' condition. This means that for the card to show, *all* entities must meet the state requirements set. + ### Divider {% configuration %} @@ -258,13 +250,13 @@ type: type: string url: required: true - description: "Website URL (or internal URL e.g. `/hassio/dashboard` or `/panel_custom_name`)" + description: "Website URL (or internal URL e.g., `/hassio/dashboard` or `/panel_custom_name`)" type: string name: required: false description: Link label type: string - default: url path + default: URL path icon: required: false description: "Icon to display (e.g., `mdi:home`)" @@ -280,6 +272,9 @@ Entity rows: type: entities title: Entities card sample show_header_toggle: true +header: + image: 'https://www.home-assistant.io/images/lovelace/header-footer/balloons-header.png' + type: picture entities: - entity: alarm_control_panel.alarm name: Alarm Panel diff --git a/source/_lovelace/entity-button.markdown b/source/_lovelace/entity-button.markdown deleted file mode 100644 index 812c77eb1858..000000000000 --- a/source/_lovelace/entity-button.markdown +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: "Entity Button Card" -sidebar_label: Entity Button -description: "The Entity Button card allows you to add buttons to perform tasks" ---- - -The Entity Button card allows you to add buttons to perform tasks. - -

    -Screenshot of the entity button card -Screenshot of the Entity Button card. -

    - -```yaml -type: entity-button -entity: light.living_room -``` - -{% configuration %} -type: - required: true - description: entity-button - type: string -entity: - required: true - description: Home Assistant entity ID. - type: string -name: - required: false - description: Overwrites friendly name. - type: string - default: Name of Entity -icon: - required: false - description: Overwrites icon or entity picture. - type: string - default: Entity Domain Icon -show_name: - required: false - description: Show name. - type: boolean - default: "true" -show_icon: - required: false - description: Show icon. - type: boolean - default: "true" -icon_height: - required: false - description: Set the height for the icon. This is in pixels which is handled by the config ui. (Advanced users can use other CSS values if they like) - type: string - default: auto -tap_action: - required: false - description: Action to take on tap - type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`toggle`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" -hold_action: - required: false - description: Action to take on tap-and-hold - type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" -double_tap_action: - required: false - description: Action to take on double tap - type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" -theme: - required: false - description: "Set to any theme within `themes.yaml`" - type: string -{% endconfiguration %} - -## Options For Confirmation - -If you define confirmation as an object instead of boolean, you can add more customization and configurations: -{% configuration %} -text: - required: false - description: Text to present in the confirmation dialog. - type: string -exemptions: - required: false - description: "List of `exemption` objects. See below" - type: list -{% endconfiguration %} - -## Options For Exemptions - -{% configuration badges %} -user: - required: true - description: User id that can see the view tab. - type: string -{% endconfiguration %} - -## Examples - -Title and Script Service Example: - -```yaml -type: entity-button -name: Turn Off Lights -tap_action: - action: call-service - service: script.turn_on - service_data: - entity_id: script.turn_off_lights -entity: script.turn_off_lights -``` - -

    -Screenshot of the entity button card -Screenshot of the Entity Button card with Title and Script Service. -

    diff --git a/source/_lovelace/entity-filter.markdown b/source/_lovelace/entity-filter.markdown index 089930c171fa..3f6e6da06e54 100644 --- a/source/_lovelace/entity-filter.markdown +++ b/source/_lovelace/entity-filter.markdown @@ -1,10 +1,10 @@ --- title: "Entity Filter Card" sidebar_label: Entity Filter -description: "This card allows you to define a list of entities that you want to track only when in a certain state. Very useful for showing lights that you forgot to turn off or show a list of people only when they're at home. " +description: "The Entity Filter card allows you to define a list of entities that you want to track only when in a certain state. Very useful for showing lights that you forgot to turn off or show a list of people only when they're at home. " --- -This card allows you to define a list of entities that you want to track only when in a certain state. Very useful for showing lights that you forgot to turn off or show a list of people only when they're at home. +The Entity Filter card allows you to define a list of entities that you want to track only when in a certain state. Very useful for showing lights that you forgot to turn off or show a list of people only when they're at home. This type of card can also be used together with rest of cards that allow multiple entities, allowing you to use [glance](/lovelace/glance/) or [picture-glance](/lovelace/picture-glance/). By default it uses [entities](/lovelace/entities/) card model. diff --git a/source/_lovelace/gauge.markdown b/source/_lovelace/gauge.markdown index 235b019ea732..4d0f362f1ac9 100644 --- a/source/_lovelace/gauge.markdown +++ b/source/_lovelace/gauge.markdown @@ -1,10 +1,10 @@ --- title: "Gauge Card" sidebar_label: Gauge -description: "The Gauge card allows you to display sensor information visually" +description: "The Gauge card is a basic card that allows visually seeing sensor data." --- -Gauge card is a basic card that allows visually seeing sensor data. +The Gauge card is a basic card that allows visually seeing sensor data.

    Screenshot of the gauge card diff --git a/source/_lovelace/glance.markdown b/source/_lovelace/glance.markdown index fb9b54191ac0..45b808d4c9fd 100644 --- a/source/_lovelace/glance.markdown +++ b/source/_lovelace/glance.markdown @@ -1,10 +1,10 @@ --- title: "Glance Card" sidebar_label: Glance -description: "The Glance card allows you to see a list of entities at a glance." +description: "The Glance card is useful to group multiple sensors in a compact overview." --- -Glance cards are very compact. Very useful to group together multiple sensors for a quick and easy overview. Keep in mind that this can be used together with [entity-filter](/lovelace/entity-filter/) cards to create dynamic cards. +The Glance card is useful to group multiple sensors in a compact overview. Keep in mind that this can be used together with [entity-filter](/lovelace/entity-filter/) cards to create dynamic cards.

    Screenshot of the glance card @@ -47,6 +47,11 @@ columns: required: false description: Number of columns to show. If not specified the number will be set automatically. type: integer +state_color: + required: false + description: Set to `true` to have icons colored when entity is active + type: boolean + default: true {% endconfiguration %} ## Options For Entities @@ -82,123 +87,16 @@ show_state: default: true tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" -{% endconfiguration %} - -## Options For Confirmation - -If you define confirmation as an object instead of boolean, you can add more customization and configurations: -{% configuration %} -text: - required: false - description: Text to present in the confirmation dialog. - type: string -exemptions: - required: false - description: "List of `exemption` objects. See below" - type: list {% endconfiguration %} ## Options For Exemptions diff --git a/source/_lovelace/history-graph.markdown b/source/_lovelace/history-graph.markdown index 29d155e143da..04fa9819ced1 100644 --- a/source/_lovelace/history-graph.markdown +++ b/source/_lovelace/history-graph.markdown @@ -1,10 +1,10 @@ --- title: "History Graph Card" sidebar_label: History Graph -description: "History graph is a basic card, allowing you to display a graph for each of the entities in the list specified as config." +description: "The History Graph card allows you to display a graph for each of the entities listed." --- -History graph is a basic card, allowing you to display a graph for each of the entities in the list specified as config. +The History Graph card allows you to display a graph for each of the entities listed.

    Screenshot of the history graph card for entities without a unit_of_measurement diff --git a/source/_lovelace/horizontal-stack.markdown b/source/_lovelace/horizontal-stack.markdown index 0c3c05a45810..4fc74ed3aa3e 100644 --- a/source/_lovelace/horizontal-stack.markdown +++ b/source/_lovelace/horizontal-stack.markdown @@ -1,10 +1,10 @@ --- title: "Horizontal Stack Card" sidebar_label: Horizontal Stack -description: "Horizontal stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column." +description: "The Horizontal Stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column." --- -Horizontal stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column. +The Horizontal Stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column. {% configuration %} type: diff --git a/source/_lovelace/iframe.markdown b/source/_lovelace/iframe.markdown index 332a08947f0b..24db48ba9eee 100644 --- a/source/_lovelace/iframe.markdown +++ b/source/_lovelace/iframe.markdown @@ -1,18 +1,18 @@ --- -title: "Iframe Card" -sidebar_label: Iframe -description: "Embed data from other webservices in your dashboard." +title: "Webpage Card" +sidebar_label: Webpage +description: "The Webpage card allows you to embed your favorite webpage right into Home Assistant." --- -Embed data from other webservices in your dashboard. You can also embed files stored in your `/www` folder and reference them using `/local/`. +The Webpage card allows you to embed your favorite webpage right into Home Assistant. You can also embed files stored in your `/www` folder and reference them using `/local/`.

    You can't embed sites using HTTP if you are using HTTPS for your Home Assistant.

    - Windy weather radar as iframe - Windy weather radar as iframe. + Windy weather radar as Webpage + Windy weather radar as Webpage.

    {% configuration %} diff --git a/source/_lovelace/light.markdown b/source/_lovelace/light.markdown index 7f47b443c6a5..36d2a53f6269 100644 --- a/source/_lovelace/light.markdown +++ b/source/_lovelace/light.markdown @@ -30,6 +30,11 @@ name: description: Overwrites friendly name. type: string default: Name of Entity +icon: + required: false + description: Overwrites icon. + type: string + default: Entity Domain Icon theme: required: false description: Set to any theme within `themes.yaml`. diff --git a/source/_lovelace/map.markdown b/source/_lovelace/map.markdown index 401568ca6775..eb2ae770851e 100644 --- a/source/_lovelace/map.markdown +++ b/source/_lovelace/map.markdown @@ -1,10 +1,10 @@ --- title: "Map Card" sidebar_label: Map -description: "A card that allows you to display entities on a map" +description: "The Map card that allows you to display entities on a map" --- -A card that allows you to display entities on a map. +The Map card that allows you to display entities on a map

    Screenshot of the map card diff --git a/source/_lovelace/markdown.markdown b/source/_lovelace/markdown.markdown index 87a6e06d5a7d..d4eaa7a0feb7 100644 --- a/source/_lovelace/markdown.markdown +++ b/source/_lovelace/markdown.markdown @@ -1,13 +1,12 @@ --- title: "Markdown Card" sidebar_label: Markdown -description: "Markdown card is used to render markdown" +description: "The Markdown card is used to render Markdown" --- -Markdown card is used to render [Markdown](https://commonmark.org/help/). +The Markdown card is used to render [Markdown](https://commonmark.org/help/). The renderer uses [Marked.js](https://marked.js.org), which supports [several specifications of Markdown](https://marked.js.org/#/README.md#specifications), including CommonMark, GitHub Flavored Markdown (GFM) and `markdown.pl`. -

    Screenshot of the markdown card @@ -32,7 +31,7 @@ card_size: required: false type: integer default: none - description: The algorithm for placing cards aesthetically in lovelace may have problems with the markdown card if it contains templates. You can use this value to help it estimate the height of the card in units of 50 pixels (approximately 3 lines of text in default size). (e.g., `4`) + description: The algorithm for placing cards aesthetically in Lovelace may have problems with the Markdown card if it contains templates. You can use this value to help it estimate the height of the card in units of 50 pixels (approximately 3 lines of text in default size). (e.g., `4`) entity_id: required: false type: [string, list] @@ -58,8 +57,10 @@ content: > A special template variable - `config` is set up for the `content` of the card. It contains the configuration of the card. -E.g. +For example: + {% raw %} + ```yaml type: entity-filter entities: @@ -78,4 +79,5 @@ card: And the door is {% if is_state('binary_sensor.door', 'on') %} open {% else %} closed {% endif %}. ``` + {% endraw %} diff --git a/source/_lovelace/media-control.markdown b/source/_lovelace/media-control.markdown index f3c7b961340c..960fdfad15f4 100644 --- a/source/_lovelace/media-control.markdown +++ b/source/_lovelace/media-control.markdown @@ -1,10 +1,10 @@ --- title: "Media Control Card" sidebar_label: Media Control -description: "The media controller card is used to display Media Player entities on an interface with easy to use controls. " +description: "The Media Control card is used to display media player entities on an interface with easy to use controls." --- -The media control card is used to display [Media Player](/integrations/#search/media-player) entities on an interface with easy to use controls. +The Media Control card is used to display [Media Player](/integrations/#media-player) entities on an interface with easy to use controls.

    Screenshot of the media player control card diff --git a/source/_lovelace/picture-elements.markdown b/source/_lovelace/picture-elements.markdown index 59920f2a60a1..deeab7960576 100644 --- a/source/_lovelace/picture-elements.markdown +++ b/source/_lovelace/picture-elements.markdown @@ -1,10 +1,10 @@ --- title: "Picture Elements Card" sidebar_label: Picture Elements -description: "Picture elements card is one of the most versatile types of cards" +description: "The Picture Elements card is one of the most versatile types of cards. The cards allow you to position icons or text and even services! On an image based on coordinates." --- -Picture elements card is one of the most versatile types of cards. +The Picture Elements card is one of the most versatile types of cards. The cards allow you to position icons or text and even services! On an image based on coordinates. Imagine floor plan, imagine [picture-glance](/lovelace/picture-glance/) with no restrictions! @@ -64,109 +64,16 @@ title: type: string tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`toggle`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" {% endconfiguration %} ### Icon representing an entity state @@ -188,6 +95,11 @@ title: required: false description: Icon tooltip. Set to null to hide. type: string +state_color: + required: false + description: Set to `true` to have icons colored when entity is active + type: boolean + default: true tap_action: required: false description: Action to take on tap @@ -200,22 +112,22 @@ tap_action: default: "`more-info`" navigation_path: required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + description: "Path to navigate to (e.g., `/lovelace/0/`) when `action` defined as `navigate`" type: string default: none url_path: required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + description: "Path to navigate to (e.g., `https://www.home-assistant.io`) when `action` defined as `url`" type: string default: none service: required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + description: "Service to call (e.g., `media_player.media_play_pause`) when `action` defined as `call-service`" type: string default: none service_data: required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + description: "Service data to include (e.g., `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none confirmation: @@ -223,76 +135,18 @@ tap_action: description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" type: [boolean, map] default: "false" +tap_action: + required: false + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). + type: map hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" style: required: true description: Position and style the element using CSS. @@ -311,6 +165,11 @@ entity: required: true description: Entity id type: string +attribute: + required: false + description: If present, the corresponding attribute will be shown, + instead of the entity's state + type: string prefix: required: false description: Text before entity state. @@ -325,109 +184,16 @@ title: type: string tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`,, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" style: required: true description: Position and style the element using CSS. @@ -482,109 +248,16 @@ entity: type: string tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" style: required: true description: Position and style the element using CSS. @@ -609,109 +282,16 @@ title: type: string tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" image: required: false description: The image to display. @@ -765,7 +345,7 @@ conditions: keys: entity: required: true - description: HA entity ID. + description: Home Assistant entity ID. type: string state: required: false @@ -781,20 +361,6 @@ elements: type: list {% endconfiguration %} -## Options For Confirmation - -If you define confirmation as an object instead of boolean, you can add more customization and configurations: -{% configuration %} -text: - required: false - description: Text to present in the confirmation dialog. - type: string -exemptions: - required: false - description: "List of `exemption` objects. See below" - type: list -{% endconfiguration %} - ## Options For Exemptions {% configuration badges %} @@ -819,7 +385,7 @@ style: {% endconfiguration %} The process for creating and referencing custom elements is the same as for custom cards. -Please see the [developer docs on creating custom cards](https://developers.home-assistant.io/docs/en/lovelace_custom_card.html) +Please see the [developer documentation](https://developers.home-assistant.io/docs/en/lovelace_custom_card.html) for more information. ## How to use the style object @@ -895,6 +461,13 @@ elements: style: top: 82% left: 79% + - type: state-label + entity: climate.kitchen + attribute: current_temperature + suffix: "°C" + style: + top: 33% + left: 15% - type: service-button title: Turn lights off style: diff --git a/source/_lovelace/picture-entity.markdown b/source/_lovelace/picture-entity.markdown index 4c5fac805577..907e410501fa 100644 --- a/source/_lovelace/picture-entity.markdown +++ b/source/_lovelace/picture-entity.markdown @@ -1,10 +1,10 @@ --- title: Picture Entity Card sidebar_label: Picture Entity -description: Displays the entity in form of an image. Instead of images from URL it can also show the picture of `camera` entities. +description: The Picture Entity card displays an entity in the form of an image. Instead of images from URL, it can also show the picture of camera entities. --- -Displays the entity in form of an image. Instead of images from URL it can also show the picture of `camera` entities. +The Picture Entity card displays an entity in the form of an image. Instead of images from URL, it can also show the picture of `camera` entities.

    Picture entity card @@ -65,123 +65,16 @@ theme: type: string tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" -{% endconfiguration %} - -## Options For Confirmation - -If you define confirmation as an object instead of boolean, you can add more customization and configurations: -{% configuration %} -text: - required: false - description: Text to present in the confirmation dialog. - type: string -exemptions: - required: false - description: "List of `exemption` objects. See below" - type: list {% endconfiguration %} ## Options For Exemptions @@ -223,9 +116,10 @@ state_image: "off": /local/bed_light_off.png ``` -Displaying a live feed from an FFMPEG camera: +Displaying a live feed from an FFmpeg camera: {% raw %} + ```yaml type: picture-entity entity: camera.backdoor @@ -237,6 +131,7 @@ tap_action: entity_id: camera.backdoor filename: '/shared/backdoor-{{ now().strftime("%Y-%m-%d-%H%M%S") }}.jpg' ``` + {% endraw %} The filename needs to be a path that is writable by Home Assistant in your system. You may need to configure `whitelist_external_dirs` ([documentation](/docs/configuration/basic/)). diff --git a/source/_lovelace/picture-glance.markdown b/source/_lovelace/picture-glance.markdown index c26ce3d3c23f..b1f538974f4c 100644 --- a/source/_lovelace/picture-glance.markdown +++ b/source/_lovelace/picture-glance.markdown @@ -1,10 +1,10 @@ --- title: "Picture Glance Card" sidebar_label: Picture Glance -description: "Show an image card and corresponding entity states as icon" +description: "The Picture Glance card shows an image and corresponding entity states as an icon. The entities on the right side allow toggle actions, others show the more information dialog." --- -Show an image card and corresponding entity states as icon. The entities on the right side allow toggle actions, others show the more-info-dialog. +The Picture Glance card shows an image and corresponding entity states as an icon. The entities on the right side allow toggle actions, others show the more information dialog.

    Picture glance card for a living room @@ -56,7 +56,7 @@ aspect_ratio: type: string entity: required: false - description: Entity to use for `state_image`. + description: Entity to use for `state_image` and `state_filter`. type: string show_state: required: false @@ -69,109 +69,16 @@ theme: type: string tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" {% endconfiguration %} ## Options For Entities @@ -194,113 +101,16 @@ show_state: default: true tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g., `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - service: - required: false - description: "Service to call (e.g., `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g., `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g., `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - service: - required: false - description: "Service to call (e.g., `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g., `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" -{% endconfiguration %} - -## Options For Confirmation - -If you define confirmation as an object instead of boolean, you can add more customization and configurations: -{% configuration %} -text: - required: false - description: Text to present in the confirmation dialog. - type: string -exemptions: - required: false - description: "List of `exemption` objects. See below" - type: list {% endconfiguration %} ## Options For Exemptions @@ -320,6 +130,7 @@ Specify different [CSS filters](https://developer.mozilla.org/en-US/docs/Web/CSS state_filter: "on": brightness(110%) saturate(1.2) "off": brightness(50%) hue-rotate(45deg) +entity: switch.decorative_lights ``` ## Examples diff --git a/source/_lovelace/picture.markdown b/source/_lovelace/picture.markdown index 6a97fb0e5e4f..c38959d6ca0d 100644 --- a/source/_lovelace/picture.markdown +++ b/source/_lovelace/picture.markdown @@ -1,10 +1,10 @@ --- title: "Picture Card" sidebar_label: Picture -description: "A very simple card that allows you to set an image to use for navigation to various paths in your interface or to call a service." +description: "The Picture card allows you to set an image to use for navigation to various paths in your interface or to call a service." --- -A very simple card that allows you to set an image to use for navigation to various paths in your interface or to call a service. +The Picture card allows you to set an image to use for navigation to various paths in your interface or to call a service.

    Screenshot of the picture card @@ -26,123 +26,16 @@ theme: type: string tap_action: required: false - description: Action to take on tap + description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`call-service`, `navigate`, `url`, `none`)" - type: string - default: "`none`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" hold_action: required: false - description: Action to take on tap-and-hold + description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action). type: map - keys: - action: - required: true - description: "Action to perform (`call-service`, `navigate`, `url`, `none`)" - type: string - default: "`none`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" double_tap_action: required: false - description: Action to take on double tap + description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action). type: map - keys: - action: - required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" - type: string - default: "`more-info`" - navigation_path: - required: false - description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" - type: string - default: none - url_path: - required: false - description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" - type: string - default: none - service: - required: false - description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" - type: string - default: none - service_data: - required: false - description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" - type: string - default: none - confirmation: - required: false - description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" - type: [boolean, map] - default: "false" -{% endconfiguration %} - -## Options For Confirmation - -If you define confirmation as an object instead of boolean, you can add more customization and configurations: -{% configuration %} -text: - required: false - description: Text to present in the confirmation dialog. - type: string -exemptions: - required: false - description: "List of `exemption` objects. See below" - type: list {% endconfiguration %} ## Options For Exemptions diff --git a/source/_lovelace/plant-status.markdown b/source/_lovelace/plant-status.markdown index 4a51516674a5..221345752a11 100644 --- a/source/_lovelace/plant-status.markdown +++ b/source/_lovelace/plant-status.markdown @@ -1,10 +1,10 @@ --- title: "Plant Status Card" sidebar_label: Plant Status -description: "The Plant card gives you an easy way of viewing the status of your plants" +description: "The Plant Status card is for all the lovely botanists out there." --- -A card for all the lovely botanists out there. +The Plant Status card is for all the lovely botanists out there.

    Screenshot of the plant status card diff --git a/source/_lovelace/sensor.markdown b/source/_lovelace/sensor.markdown index d856949503d8..d47eef1de3a8 100644 --- a/source/_lovelace/sensor.markdown +++ b/source/_lovelace/sensor.markdown @@ -1,10 +1,10 @@ --- title: "Sensor Card" sidebar_label: Sensor -description: "The sensor card gives you information about the sensor state" +description: "The Sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time." --- -The sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time. +The Sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time.

    Screenshot of the sensor card diff --git a/source/_lovelace/shopping-list.markdown b/source/_lovelace/shopping-list.markdown index ac066ceb7a6f..276128687cc5 100644 --- a/source/_lovelace/shopping-list.markdown +++ b/source/_lovelace/shopping-list.markdown @@ -1,10 +1,10 @@ --- title: "Shopping List Card" sidebar_label: Shopping List -description: "The Shopping List Card allows you to add, edit, check-off, and clear items from your shopping list" +description: "The Shopping List card allows you to add, edit, check-off, and clear items from your shopping list." --- -The Shopping List Card allows you to add, edit, check-off, and clear items from your shopping list. +The Shopping List card allows you to add, edit, check-off, and clear items from your shopping list. Setup of the [Shopping List Intent](/integrations/shopping_list/) is required diff --git a/source/_lovelace/thermostat.markdown b/source/_lovelace/thermostat.markdown index 941092e775e6..b56883fe9847 100644 --- a/source/_lovelace/thermostat.markdown +++ b/source/_lovelace/thermostat.markdown @@ -1,10 +1,10 @@ --- title: "Thermostat Card" sidebar_label: Thermostat -description: "The thermostat card allows you to control a climate entity." +description: "The Thermostat card gives control of your climate entity. Allowing you to change the temperature and mode of the entity." --- -The thermostat card gives control of your climate entity. +The Thermostat card gives control of your climate entity. Allowing you to change the temperature and mode of the entity.

    Screenshot of the thermostat card diff --git a/source/_lovelace/vertical-stack.markdown b/source/_lovelace/vertical-stack.markdown index c918c3cc4ef6..6d12f2dc03ca 100644 --- a/source/_lovelace/vertical-stack.markdown +++ b/source/_lovelace/vertical-stack.markdown @@ -1,10 +1,10 @@ --- title: "Vertical Stack Card" sidebar_label: Vertical Stack -description: "The Vertical Stack card allows you to stack multiple cards together" +description: "The Vertical Stack card allows you to group multiple cards so they always sit in the same column." --- -Vertical stack allows you to group multiple cards so they always sit in the same column. +The Vertical Stack card allows you to group multiple cards so they always sit in the same column. {% configuration %} type: diff --git a/source/_lovelace/weather-forecast.markdown b/source/_lovelace/weather-forecast.markdown index 64354728c2e7..5edc5aa6081d 100644 --- a/source/_lovelace/weather-forecast.markdown +++ b/source/_lovelace/weather-forecast.markdown @@ -1,10 +1,10 @@ --- title: "Weather Forecast Card" sidebar_label: Weather Forecast -description: "The Weather card allows you a visual card to display the weather." +description: "The Weather Forecast card displays the weather. Very useful to include on interfaces that people display on the wall." --- -The weather forecast is a card to display the weather. Very useful to include on interfaces that people display on the wall. +The Weather Forecast card displays the weather. Very useful to include on interfaces that people display on the wall.

    Screenshot of the weather card diff --git a/source/_posts/2015-05-14-release-notes.markdown b/source/_posts/2015-05-14-release-notes.markdown index 5fb47c858cc6..e2009dd82a91 100644 --- a/source/_posts/2015-05-14-release-notes.markdown +++ b/source/_posts/2015-05-14-release-notes.markdown @@ -38,7 +38,7 @@ homeassistant: ``` __MySensors__ - [Andythigpen](https://github.com/andythigpen) and [Theolind](https://github.com/theolind) have added support for the [MySensors platform](http://www.mysensors.org) to Home Assistant. + [Andythigpen](https://github.com/andythigpen) and [Theolind](https://github.com/theolind) have added support for the [MySensors platform](http://www.mysensors.org) to Home Assistant. ```yaml # Example configuration.yaml entry diff --git a/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown b/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown index 05a28c95ea37..57c1f6060ed6 100644 --- a/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown +++ b/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown @@ -43,11 +43,11 @@ automation: event: sunset offset: "-01:00:00" - platform: state - entity_id: group.all_devices + entity_id: all state: home condition: - platform: state - entity_id: group.all_devices + entity_id: all state: home - platform: time after: "16:00:00" diff --git a/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown b/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown index 30c63dd2cdf2..4fa16538b3d6 100644 --- a/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown +++ b/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown @@ -15,7 +15,7 @@ We discovered two issues annoying enough to warrant the release of 0.7.5: This release also includes some new platforms (because they keep coming!): - + - Light: [blinkstick platform](/integrations/blinksticklight) added ([@alanbowman](https://github.com/alanbowman)) - Device Tracker: [SNMP platform](/integrations/snmp) added ([@tomduijf](https://github.com/tomduijf)) diff --git a/source/_posts/2016-01-17-extended-support-for-diy-solutions.markdown b/source/_posts/2016-01-17-extended-support-for-diy-solutions.markdown index b39db3f69e02..6cdce85ed422 100644 --- a/source/_posts/2016-01-17-extended-support-for-diy-solutions.markdown +++ b/source/_posts/2016-01-17-extended-support-for-diy-solutions.markdown @@ -13,7 +13,7 @@ First release of 2016 and we are on 🔥! The [main repository][github-ha] has p [github-ha]: https://github.com/home-assistant/home-assistant/ [release-pr]: https://github.com/home-assistant/home-assistant/pull/883#partial-users-participants - + - [MySensors] revamped and switch support added ([@MartinHjelmare][@MartinHjelmare]) - Full refactor of RPi GPIO. Now includes [binary sensor][rpi-bs] and [switch][rpi-s] ([@sfam]) @@ -53,7 +53,6 @@ First release of 2016 and we are on 🔥! The [main repository][github-ha] has p [Cast]: /integrations/cast [Universal media player]: /integrations/universal [Netatmo]: /integrations/netatmo#sensor -[Alarm.com]: /integrations/alarmdotcom [Proliphix]: /integrations/proliphix/ [rpi-bs]: /integrations/rpi_gpio#binary-sensor [rpi-s]: /integrations/rpi_gpio#switch diff --git a/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown b/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown index 35ea53dbe132..672fab2fc190 100644 --- a/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown +++ b/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown @@ -13,7 +13,7 @@ The focus of 0.13 was on test coverage, big cheers to [@rmkraus] for his hard wo

    - Examples of the new [input_select] and [weblink] components. + Examples of the new [input_select] and weblink components.

    Not only did we gain a lot of test coverage, we also attracted a lot of new developers that contributed a variety of components and platforms: @@ -32,7 +32,7 @@ Not only did we gain a lot of test coverage, we also attracted a lot of new deve - Component: Added support for [Bloomsky Weather Station] ([@haraldnagel]) - Component: Added support for pushing stats to [graphite] ([@kk7ds]) - Component: Added support for [SCSGate] devices ([@flavio]) - - Component: Added [weblink] component to link to other pages ([@MagnusKnutas]) + - Component: Added weblink component to link to other pages ([@MagnusKnutas]) - Component: Support for Ubiquiti mFI [sensors][mfi.sensor] and [switchable devices][mfi.switch] added ([@kk7ds]) - Alarm control panel: Added [Caddx/GE/Interlogix NetworX][nx584] support ([@kk7ds]) - Camera: [MJPEG] camera's will now show real stream instead of a 2fps stream ([@stjohnjohnson]) @@ -92,7 +92,6 @@ Not only did we gain a lot of test coverage, we also attracted a lot of new deve [Bloomsky Weather Station]: /integrations/bloomsky/ [graphite]: /integrations/graphite/ [SCSGate]: /integrations/scsgate/ -[weblink]: /integrations/weblink/ [mfi.switch]: /integrations/mfi#switch [mfi.sensor]: /integrations/mfi#sensor [nx584]: /integrations/nx584 diff --git a/source/_posts/2016-02-18-multi-room-audio-with-snapcast.markdown b/source/_posts/2016-02-18-multi-room-audio-with-snapcast.markdown index 7803554a2b9f..fce1cd41c3fc 100644 --- a/source/_posts/2016-02-18-multi-room-audio-with-snapcast.markdown +++ b/source/_posts/2016-02-18-multi-room-audio-with-snapcast.markdown @@ -15,7 +15,7 @@ You'll need two key software packages, besides Home Assistant. The first is [Mop Finally, you also need a player to control Mopidy. Any MPD-compatible player will work, and there are several [Mopidy-only web-based options](https://docs.mopidy.com/en/latest/ext/web/#ext-web) available. On Android, [Remotedy](https://play.google.com/store/apps/details?id=se.anil.remotedy) is particularly nice since you can access multiple Mopidy instances in one place. -Home Assistant will provide device status, and volume control for each room. If you want to play music in all your rooms (on all your clients), access the server instance of Mopidy. If you want to play music only in a specific room, access that specific Mopidy instance. If you're using a web UI for Mopidy, you can add links to each instance in Home Assistant with the [weblink] component. +Home Assistant will provide device status, and volume control for each room. If you want to play music in all your rooms (on all your clients), access the server instance of Mopidy. If you want to play music only in a specific room, access that specific Mopidy instance. If you're using a web UI for Mopidy, you can add links to each instance in Home Assistant with the weblink component.

    @@ -134,6 +134,5 @@ weblink: url: xxxx ``` -[weblink]: /integrations/weblink/ [snapcast]: /integrations/snapcast [mpd]: /integrations/mpd diff --git a/source/_posts/2016-05-21-release-020.markdown b/source/_posts/2016-05-21-release-020.markdown index ab894fddc31b..355de586afaf 100644 --- a/source/_posts/2016-05-21-release-020.markdown +++ b/source/_posts/2016-05-21-release-020.markdown @@ -8,7 +8,7 @@ author_twitter: balloob categories: Release-Notes --- - + Tons of new supported things in 0.20. diff --git a/source/_posts/2016-06-01-community-highlights.markdown b/source/_posts/2016-06-01-community-highlights.markdown index 755532a5968f..6dfe83f7d919 100644 --- a/source/_posts/2016-06-01-community-highlights.markdown +++ b/source/_posts/2016-06-01-community-highlights.markdown @@ -13,7 +13,7 @@ Our community is amazingly helpful and creative. If you haven't been there yet, ### SceneGen - cli for making scenes -[SceneGen] is a new command line utility developed by [Andrew Cockburn] that helps with creating scene configurations for Home Assistant. To use it, you put your house in the preferred state, run SceneGen and it will print the scene configuration for your current states. +SceneGen is a new command line utility developed by [Andrew Cockburn] that helps with creating scene configurations for Home Assistant. To use it, you put your house in the preferred state, run SceneGen and it will print the scene configuration for your current states. ### Videos @@ -36,7 +36,6 @@ Muhammed Kilic has created a video how to make your Home Assistant instance acce

    [chat room]: https://discord.gg/c5DvZ4e -[SceneGen]: https://github.com/acockburn/scenegen [Andrew Cockburn]: https://github.com/acockburn [BRUH Automation]: http://www.bruhautomation.com/ [Nick Touran]: https://partofthething.com diff --git a/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown b/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown index da50f1aed529..4e59abc3cbf0 100644 --- a/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown +++ b/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown @@ -21,7 +21,7 @@ Thanks to [Next Thing Co.](https://www.nextthing.co/) and their CHIP which is ac Size comparison of a Cubieboard, OrangePi One, and CHIP.

    -If you start using a PocketCHIP you will definitely look like a Blackberry or a GameBoy user. Typing is done with your thumbs :-) +If you start using a PocketCHIP you will definitely look like a Blackberry or a Game Boy user. Typing is done with your thumbs :-) First a couple of tweaks like setting up `sudo`, upgrading the existing installation, change passwords, enabling ssh, and removal of the annoying stuff then installation of Home Assistant. There is not much to tell...it's straight-forward. For the sake of completeness below the notes about what I did. diff --git a/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown b/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown index 1881baaef42c..39d7a4dd884b 100644 --- a/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown +++ b/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown @@ -21,7 +21,7 @@ hass --script db_migrator --config /path/to/config You can omit the `--config` option if you use the default configuration directory. Run the script with `--help` to get more options. - + - Config: Improved support for storing [secrets][secrets] ([@kellerza]) - Sensor: Support for [Yahoo! Weather][yahoo-weather] ([@pvizeli]) diff --git a/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown b/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown index 794084047361..47d40348a433 100644 --- a/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown +++ b/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown @@ -12,7 +12,7 @@ It's time for 0.26 and it's again full of new features and fixes. First I want t This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you'll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to [@Teagan42] for her hard work on this! - + - Core: Introduce notion of unit system (deprecates temperature unit option) ([@Teagan42]) - Front end: Speed improvements ([@balloob]) 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 57f421e33ee1..38d024e4be39 100644 --- a/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown +++ b/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown @@ -28,7 +28,7 @@ As you might have noticed, this release has been delayed by 5 days. This was due ### Hide automation rules -Since 0.28 [automation rules](/blog/2016/09/10/notify-group-reload-api-pihole/#reload-automation-rules) can be reloaded directly from the frontend. By default all automation rules are shown. If you want to [hide an automation rule](/getting-started/automation-create-first/), use `hide_entity: true`. +Since 0.28 [automation rules](/blog/2016/09/10/notify-group-reload-api-pihole/#reload-automation-rules) can be reloaded directly from the frontend. ### All changes diff --git a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown index 8621f25ec019..ea14e2ea6406 100644 --- a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown +++ b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown @@ -107,7 +107,7 @@ sensor - Fix some html5 push notification configuration options were discarded after first use ([@T3m3z]) - Fix Homematic device name with autodiscovery ([@pvizeli]) - Make 'pin' optional for zigbee device config ([@flyte]) -- Fix when sending a notification to a service with target attached (i.e. `notify.html5_unnamed_device_2`) the target was not submitted to the platform as a list causing iteration over every character in the string. ([@robbiet480]) +- Fix when sending a notification to a service with target attached (i.e., `notify.html5_unnamed_device_2`) the target was not submitted to the platform as a list causing iteration over every character in the string. ([@robbiet480]) - Fix for Slack targets ([@fabaff]) - Fix for Pushover targets ([@Nixon506E]) diff --git a/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown b/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown index c203587f26ff..3f144e3cda63 100644 --- a/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown +++ b/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown @@ -28,7 +28,7 @@ For a long time we have had a bunch of [weather sensors][weather-sensors] but it ### All changes - + - Cover: New [garadget] platform ([@JasonCarter80]) - Media player: New support for [Emby][emby-media] ([@mezz64]) @@ -104,7 +104,7 @@ We've added a warning to 0.32 to catch platforms accidentally slowing down Home Our website has now an additional category called "Ecosystem". This will become the place where tools, apps, and other helper for the Home Assistant ecosystem can store their documentation or guides. - [iOS](/ecosystem/ios/) -- [SceneGen](/ecosystem/scenegen/) +- SceneGen ### Breaking changes diff --git a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown b/source/_posts/2016-12-03-remote-websockets-sonarr.markdown index 17987ef2acea..03fba69d3c7a 100644 --- a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown +++ b/source/_posts/2016-12-03-remote-websockets-sonarr.markdown @@ -36,14 +36,14 @@ The support for multiple hosts is a result of allowing mixed configurations with This release includes a new [websockets][websockets] based API by [@balloob] to power the next generation of Home Assistant frontends. The current frontend has been partly migrated to use it and will be further migrated in the future. -## All changes +## All changes - New services and improved device support for [HomeMatic][homematic] ([@pvizeli], [@danielperna84]) - Device tracker: New support for [GPSLogger][gpslogger] ([@dainok]) - Sensor: Support for [Sonarr][sonarr] ([@hborawski]) - Sensor: [World Air Quality Index][waqi] sensor ([@valentinalexeev], [@fabaff]) - Sensor: Support for [Dutch Smart Meter Requirements][dsmr] ([@aequitas]) -- Switch: [Hook][hook] support by hooksmarthome.com ([@dasos]) +- Switch: Hook support by hooksmarthome.com ([@dasos]) - Camera: Integration for [Nest cameras][nest-cam] ([@technicalpickles]) - Light: Support for light effects ([@Diaoul]) - Sensor: New [Threshold][threshold] sensor ([@fabaff]) @@ -212,7 +212,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [gpslogger]: /integrations/gpslogger [harmony]: /integrations/harmony [homematic]: /integrations/homematic/ -[hook]: /integrations/hook [nest-cam]: /integrations/nest#camera [nest]: /integrations/nest/ [nginx]: /ecosystem/nginx/ @@ -226,4 +225,3 @@ Experiencing issues introduced by this release? Please report them in our [issue [threshold]: /integrations/threshold [websockets]: /developers/websocket_api/ [waqi]: /integrations/waqi - diff --git a/source/_posts/2017-01-28-face-coffee-wink.markdown b/source/_posts/2017-01-28-face-coffee-wink.markdown index 6447f6396d77..437948e8d34a 100644 --- a/source/_posts/2017-01-28-face-coffee-wink.markdown +++ b/source/_posts/2017-01-28-face-coffee-wink.markdown @@ -29,12 +29,12 @@ Although the old method is not insecure, the new method is a lot more secure. Up ### New customization options [@Andrey-git] has added some great new options to the customize functionality. It is now possible to specify customizations as a wildcard for entities or for a specific domain. -### Major Wink and HDMI CEC improvements +### Major Wink and HDMI-CEC improvements [@w1ll1am23] did an amazing job fixing a ton of bugs and issues with the Wink integration. Biggest improvement is that it now is able to automatically refresh the authentication tokens. This means that if you have your email address and password in your `configuration.yaml` file, no `client_id` and `client_secret` are needed, and token which was generated with the generator located in the [Wink][wink] documentation. The new Wink support will cause renaming of all the binary sensors and will also create new sensors for devices that weren't previously detected or supported in the older version. -Thanks to [@konikvranik] the [HDMI CEC][cec] integration got a huge update with a lot of improvements. This update should make it easier to work with HDMI CEC and give you more control. +Thanks to [@konikvranik] the [HDMI-CEC][cec] integration got a huge update with a lot of improvements. This update should make it easier to work with HDMI-CEC and give you more control. ### First Coffee Maker supported [@stu-gott] has added support for the first coffee maker in Home Assistant: [Mr. Coffee Smart Optimal Brew][coffee]. Happy brewing! @@ -93,7 +93,7 @@ Thanks to [@konikvranik] the [HDMI CEC][cec] integration got a huge update with - Light - Zwave: Use only supported features for devices ([@turbokongen]) - Media player - Kodi: Support for volume stepping ([@armills]) - Media player- roku: Use `is_screensaver`, update IDLE state, and use device name ([@robbiet480], [@xhostplus]) -- Switch - HDMI CEC: Support for devices and commands ([@konikvranik]) +- Switch - HDMI-CEC: Support for devices and commands ([@konikvranik]) - Lock - Zwave: Improvements to Zwave lock platform ([@turbokongen]) - TTS: Invalidate broken file cache entries ([@stu-gott]) - Light - Hue: Improvements ([@robbiet480]) diff --git a/source/_posts/2017-02-03-hassbian-toybox.markdown b/source/_posts/2017-02-03-hassbian-toybox.markdown index 1dc2e7ceca59..ef918205df0d 100644 --- a/source/_posts/2017-02-03-hassbian-toybox.markdown +++ b/source/_posts/2017-02-03-hassbian-toybox.markdown @@ -16,7 +16,7 @@ Changes from previous image are big and small but lets start with the interestin A set of script written to add extra functionality to your Raspberry Pi installation. This scripts are run as the `pi` user and installs a set of tools or packages. Currently includes: - - Install Libcec. Adds local [HDMI CEC support][cec]. + - Install Libcec. Adds local [HDMI-CEC support][cec]. - Install Mossquitto. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support. - Install OpenZWave. Installs OpenZWave and prepares for using a USB or GPIO ZWave controller. - Install Samba. Installs the Samba packages and shares your configuration over smb to be available to edit on any computer without the need for separate file transfer software. This share is unsecured and it's usage is not recommended if your installation is publicly available. diff --git a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown b/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown index e08c2206076b..b2ecfa575e78 100644 --- a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown +++ b/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown @@ -43,9 +43,9 @@ The [`yeelight`][yeelight] component has been ported to use a more stable and fe - [Rflink][rflink] 433Mhz gateway platform and components ([@aequitas]) - Lock: Support for [Nuki.io][nuki] smart locks ([@pschmitt]) - Sensor: [QNAP][qnap] Sensor ([@colinodell]) -- Switch: Add support for [FRITZ!DECT][fritz] wireless switches based on fritzhome ([@BastianPoe]) +- Switch: Add support for FRITZ!DECT wireless switches based on fritzhome ([@BastianPoe]) - Sensor: Add [moon][moon] sensor ([@fabaff]) -- Media player: Support for the [Orange Livebox Play TV][orange] appliance ([@pschmitt]) +- Media player: Support for the Orange Livebox Play TV appliance ([@pschmitt]) - Media player: [Apple TV][apple-tv] support ([@postlund]) - MQTT: [MQTT discovery][mqtt-discovery] support ([@balloob], [@fabaff]) - Notify: [Mailgun][mailgun] notify service ([@pschmitt]) @@ -203,7 +203,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [ffmpeg-bin]: /integrations/ffmpeg_motion [ffmpeg]: /integrations/ffmpeg/ [filters]: /topics/templating/#home-assistant-template-extensions -[fritz]: /integrations/fritzdect [hue]: /integrations/hue [light]: /cookbook/custom_ui_by_andrey-git [mailgun]: /integrations/mailgun @@ -212,7 +211,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [mqtt-discovery]: /integrations/mqtt/#discovery [nuki]: /integrations/nuki [openevse]: /integrations/openevse -[orange]: /integrations/liveboxplaytv [owm]: /integrations/openweathermap#sensor [python-yeelight]: https://gitlab.com/stavros/python-yeelight [qnap]: /integrations/qnap 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 b692820f1add..3d890216fb2d 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 @@ -160,7 +160,7 @@ And a final shout out to [Pascal][@pvizeli]. He keeps improving the performance - Lock - Nuki: Reduce battery drain on Nuki Lock ([@pschmitt]) - Notify - Webostv: Only try to pair notify.webostv when not paired ([@andersonshatch]) - KNX: Fix slow status updates from the knx bus ([@keerts]) -- HDMI CEC: HDMI_CEC customization [Breaking change] ([@balloob], [@andrey-git]) +- HDMI-CEC: HDMI_CEC customization [Breaking change] ([@balloob], [@andrey-git]) - Sensor - Moon: Remove unit of measurement ([@fabaff]) - Z-Wave: Add initial Z-Wave config panel ([@balloob]) - History: Allow printing the number of states returned by history and time it took to extract and add day ([@andrey-git]) diff --git a/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown b/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown index ff381ec664fa..d03d206803d8 100644 --- a/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown +++ b/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown @@ -93,7 +93,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Upgrade paho-mqtt to 1.2.3 ([@fabaff] - [#7214]) - Workround for wemo subscription bug. ([@pavoni] - [#7245]) ([wemo docs]) ([switch.wemo docs]) - Fix telegram webhooks ([@MartinHjelmare] - [#7236]) ([telegram_bot docs]) ([telegram_bot.webhooks docs]) -- Work around bad content-type in Hook api response ([@KlaasH] - [#7267]) ([switch.hook docs]) +- Work around bad content-type in Hook api response ([@KlaasH] - [#7267]) - Recorder: Check for ENTITY_ID key that contains None value ([@balloob] - [#7287]) ([recorder docs]) ## Release 0.43.2 - April 27 @@ -132,7 +132,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Bump pywemo version. ([@pavoni] - [#7004]) - Fix Synology camera content type ([@balloob] - [#7010]) ([camera.synology docs]) - Fix two more instances of JSON parsing synology ([@balloob] - [#7014]) -- Bump pyalarmdotcom to support new version of aiohttp ([@Xorso] - [#7021]) ([alarm_control_panel.alarmdotcom docs]) +- Bump pyalarmdotcom to support new version of aiohttp ([@Xorso] - [#7021]) - Fix US states check (fixes #7015) ([@fabaff] - [#7017]) - Remove deprecated remote classes ([@balloob] - [#7011]) (breaking change) - Replace 'vendor_id' with 'arch' (fixes #7003) ([@fabaff] - [#7023]) @@ -417,7 +417,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [@turbokongen]: https://github.com/turbokongen [@viswa-swami]: https://github.com/viswa-swami -[alarm_control_panel.alarmdotcom docs]: /integrations/alarmdotcom [arduino docs]: /integrations/arduino/ [automation docs]: /integrations/automation/ [binary_sensor.ping docs]: /integrations/ping#binary-sensor @@ -472,7 +471,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.tplink docs]: /integrations/tplink [switch.wake_on_lan docs]: /integrations/wake_on_lan#switch [switch.wemo docs]: /integrations/wemo -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [telegram_bot.polling docs]: /integrations/telegram_polling [telegram_bot.webhooks docs]: /integrations/telegram_webhooks [tts.google docs]: /integrations/google_translate @@ -492,9 +491,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [@KlaasH]: https://github.com/KlaasH [cover.zwave docs]: /integrations/zwave#cover [recorder docs]: /integrations/recorder/ -[switch.hook docs]: /integrations/hook [switch.wemo docs]: /integrations/wemo -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [telegram_bot.webhooks docs]: /integrations/telegram_webhooks [wemo docs]: /integrations/wemo/ [#7271]: https://github.com/home-assistant/home-assistant/pull/7271 diff --git a/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown b/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown index e735288d37c8..902188189616 100644 --- a/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown +++ b/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown @@ -21,7 +21,7 @@ To allow you to customize your installation further, we have included a tool cal - Install Hue. Configures the Python executable to allow usage of low numbered ports for use with Emulated Hue component that's used with Amazon Echo, Google Home and Mycroft.ai. - Install Mosquitto MQTT server. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support. - - Install Libcec. Adds local [HDMI CEC support][cec]. + - Install Libcec. Adds local [HDMI-CEC support][cec]. - Install Open Z-Wave-pip. Installs Python Open Z-Wave from a pip package. This is the quickest and recommended way of installing Z-Wave support but does not OZWCP pre-installed. - Install Open Z-Wave. Installs Python Open Z-Wave and OZWCP from git. - Install Samba. Allows anyone on your network to edit your configuration from any computer. This share is unsecured and it's usage is not recommended if you share your network with others. diff --git a/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown b/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown index b4b4636072f1..ea557720d744 100644 --- a/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown +++ b/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown @@ -114,7 +114,7 @@ influxdb: - Don't use len(SEQUENCE) as condition value ([@fabaff] - [#7249]) - Workround for wemo subscription bug. ([@pavoni] - [#7245]) ([wemo docs]) ([switch.wemo docs]) - Fix telegram webhooks ([@MartinHjelmare] - [#7236]) ([telegram_bot docs]) ([telegram_bot.webhooks docs]) -- Work around bad content-type in Hook api response ([@KlaasH] - [#7267]) ([switch.hook docs]) +- Work around bad content-type in Hook api response ([@KlaasH] - [#7267]) - Rfxtrx upgrade lib 0.18 ([@danielhiversen] - [#7273]) ([rfxtrx docs]) - WIP: HassIO allow to access to container logs. ([@pvizeli] - [#7271]) - Update aiolifx ([@amelchio] - [#7279]) ([light.lifx docs]) @@ -483,11 +483,10 @@ influxdb: [sensor.zamg docs]: /integrations/zamg#sensor [sensor.zha docs]: /integrations/zha [switch.flux docs]: /integrations/flux -[switch.hook docs]: /integrations/hook [switch.thinkingcleaner docs]: /integrations/thinkingcleaner#switch [switch.wemo docs]: /integrations/wemo [switch.zha docs]: /integrations/zha -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [telegram_bot.polling docs]: /integrations/telegram_polling [telegram_bot.webhooks docs]: /integrations/telegram_webhooks [updater docs]: /integrations/updater/ 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 fd7684ca0221..8bf09909cb90 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 @@ -413,9 +413,9 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.wunderground docs]: /integrations/wunderground [sun docs]: /integrations/sun/ [switch.rpi_pfio docs]: /integrations/rpi_pfio#switch -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [telegram_bot.polling docs]: /integrations/telegram_polling -[telegram_bot.services.yaml docs]: /integrations/telegram_chatbot/#notification-services +[telegram_bot.services.yaml docs]: /integrations/telegram_bot/#notification-services [telegram_bot.webhooks docs]: /integrations/telegram_webhooks [tradfri docs]: /integrations/tradfri/ [vera docs]: /integrations/vera/ @@ -434,5 +434,5 @@ Experiencing issues introduced by this release? Please report them in our [issue [device_tracker.ubus docs]: /integrations/ubus [hassio docs]: /integrations/hassio/ [media_player.volumio docs]: /integrations/volumio -[telegram_bot.__init__ docs]: /integrations/telegram_chatbot/ +[telegram_bot.__init__ docs]: /integrations/telegram_bot/ [discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-06-04-release-46.markdown b/source/_posts/2017-06-04-release-46.markdown index e9de42940d87..2f402e7a76b1 100644 --- a/source/_posts/2017-06-04-release-46.markdown +++ b/source/_posts/2017-06-04-release-46.markdown @@ -369,7 +369,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.broadlink docs]: /integrations/broadlink#switch [switch.rachio docs]: /integrations/rachio#switch [switch.rflink docs]: /integrations/switch.rflink/ -[telegram_bot.__init__ docs]: /integrations/telegram_chatbot/ +[telegram_bot.__init__ docs]: /integrations/telegram_bot/ [telegram_bot.polling docs]: /integrations/telegram_polling [telegram_bot.webhooks docs]: /integrations/telegram_webhooks [tellduslive docs]: /integrations/tellduslive/ diff --git a/source/_posts/2017-06-17-release-47.markdown b/source/_posts/2017-06-17-release-47.markdown index af58001c4d27..a1463d5f2e73 100644 --- a/source/_posts/2017-06-17-release-47.markdown +++ b/source/_posts/2017-06-17-release-47.markdown @@ -547,7 +547,7 @@ automation: [switch.raspihats docs]: /integrations/raspihats#switch [switch.rest docs]: /integrations/switch.rest/ [switch.template docs]: /integrations/switch.template/ -[telegram_bot.__init__ docs]: /integrations/telegram_chatbot/ +[telegram_bot.__init__ docs]: /integrations/telegram_bot/ [telegram_bot.polling docs]: /integrations/telegram_polling [telegram_bot.webhooks docs]: /integrations/telegram_webhooks [updater docs]: /integrations/updater/ diff --git a/source/_posts/2017-07-02-release-48.markdown b/source/_posts/2017-07-02-release-48.markdown index e3d54c7e0256..651d975d5fdd 100644 --- a/source/_posts/2017-07-02-release-48.markdown +++ b/source/_posts/2017-07-02-release-48.markdown @@ -504,7 +504,7 @@ light: [switch.verisure docs]: /integrations/verisure [switch.wake_on_lan docs]: /integrations/wake_on_lan#switch [tado docs]: /integrations/tado/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [telegram_bot.webhooks docs]: /integrations/telegram_webhooks [tellduslive docs]: /integrations/tellduslive/ [tts docs]: /integrations/tts/ diff --git a/source/_posts/2017-07-16-release-49.markdown b/source/_posts/2017-07-16-release-49.markdown index e7d2c1100b28..6f8201c89167 100644 --- a/source/_posts/2017-07-16-release-49.markdown +++ b/source/_posts/2017-07-16-release-49.markdown @@ -488,7 +488,7 @@ amcrest: [@maikelwever]: https://github.com/maikelwever [@ypollart]: https://github.com/ypollart [binary_sensor.rfxtrx docs]: /integrations/binary_sensor.rfxtrx/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [#8545]: https://github.com/home-assistant/home-assistant/pull/8545 [#8571]: https://github.com/home-assistant/home-assistant/pull/8571 [#8601]: https://github.com/home-assistant/home-assistant/pull/8601 diff --git a/source/_posts/2017-07-29-release-50.markdown b/source/_posts/2017-07-29-release-50.markdown index 2c701c3336e1..3cb91e69300a 100644 --- a/source/_posts/2017-07-29-release-50.markdown +++ b/source/_posts/2017-07-29-release-50.markdown @@ -119,7 +119,7 @@ conversation: - The kitchen is magic ``` -- Switch fritzdect: attributes have been renamed to use underscores and no capital letters ([@thomasklingbeil] - [#8436]) ([switch.fritzdect docs]) (breaking change) +- Switch fritzdect: attributes have been renamed to use underscores and no capital letters ([@thomasklingbeil] - [#8436]) (breaking change) - Yahoo Weather: no longer allow configuring forecasts but include all instead. ([@fanthos] - [#8626]) ([weather.yweather docs]) (breaking change) - The Home Assistant Z-Wave Cover implementation has been updated to support the latest development version of OpenZWave. If you are currently applying a workaround to your OpenZWave installation to support the barrier command class, you'll need to make sure you update your workaround to the latest development version of OpenZWave. ([@firstof9] - [#8574]) ([cover docs]) ([cover.zwave docs]) (breaking change) @@ -170,7 +170,7 @@ conversation: - bump python-mirobo version for more robust protocol handling, make the platform to update on startup ([@rytilahti] - [#8602]) ([switch.xiaomi_vacuum docs]) - Binary sensor ping fixed for hassio ([@gollo] - [#8573]) ([binary_sensor.ping docs]) - Simplified percent conversion, better logging ([@open-homeautomation] - [#8568]) ([sensor.knx docs]) -- make attributes in the fritzdect module easier to process ([@thomasklingbeil] - [#8436]) ([switch.fritzdect docs]) (breaking change) +- make attributes in the fritzdect module easier to process ([@thomasklingbeil] - [#8436]) (breaking change) - Allow set_cover_position in scenes ([@peckham] - [#8613]) - better but still not great ([@cribbstechnologies] - [#8618]) - Upgrade youtube_dl to 2017.7.23 ([@fabaff] - [#8617]) ([media_extractor docs]) @@ -391,7 +391,6 @@ conversation: [shopping_list docs]: /integrations/shopping_list/ [snips docs]: /integrations/snips/ [statsd docs]: /integrations/statsd/ -[switch.fritzdect docs]: /integrations/fritzdect [switch.mqtt docs]: /integrations/switch.mqtt/ [switch.wink docs]: /integrations/wink#switch [switch.xiaomi docs]: /integrations/switch.xiaomi_aqara/ diff --git a/source/_posts/2017-08-12-release-51.markdown b/source/_posts/2017-08-12-release-51.markdown index 8ce4edd22698..76f8cd2fb655 100644 --- a/source/_posts/2017-08-12-release-51.markdown +++ b/source/_posts/2017-08-12-release-51.markdown @@ -442,7 +442,7 @@ vacuum: [switch.rainmachine docs]: /integrations/rainmachine#switch [switch.wink docs]: /integrations/wink#switch [switch.xiaomi_vacuum docs]: /integrations/vacuum.xiaomi_miio/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [updater docs]: /integrations/updater/ [vacuum docs]: /integrations/vacuum/ [vacuum.demo docs]: /integrations/vacuum.demo/ diff --git a/source/_posts/2017-08-26-release-0-52.markdown b/source/_posts/2017-08-26-release-0-52.markdown index 7ff53669dc5f..b678fea3dec5 100644 --- a/source/_posts/2017-08-26-release-0-52.markdown +++ b/source/_posts/2017-08-26-release-0-52.markdown @@ -92,7 +92,7 @@ usps: - eliqonline: The optional channel_id configuration variable of the Eliqonline sensor needs to be a positive integer. ([@molobrakos] - [#9072]) ([sensor.eliqonline docs]) (breaking change) - MySensors: Not a breaking change per se but users that have not been following the mysensors [serial API](https://www.mysensors.org/download/serial_api_20) could face dropped messages after this change. Messages are now validated according to the API before being passed along from/to devices. See [0.11 release notes](https://github.com/theolind/pymysensors/releases/tag/0.11) for more info. ([@MartinHjelmare] - [#9069]) ([mysensors docs]) ([binary_sensor.mysensors docs]) ([climate.mysensors docs]) ([cover.mysensors docs]) ([device_tracker.mysensors docs]) ([light.mysensors docs]) ([notify.mysensors docs]) ([sensor.mysensors docs]) ([switch.mysensors docs]) (breaking change) - Automatic has disabled password authentication on their API. Home Assistant will now use OAuth2 to authenticate accounts. The following steps must be taken to transition your setup: - 1) Log in to your Automatic developer account. In the Automatic Developer Apps Manager, specify the OAuth Redirect URL in the developer page. This should be configured to `/api/automatic/callback`. (Example: `http://hassio.local:8123/api/automatic/callback`) Note that this URL only needs to be accessible from the browser you use to perform the authentication. + 1) Log in to your Automatic developer account. In the Automatic Developer Apps Manager, specify the OAuth Redirect URL in the developer page. This should be configured to `/api/automatic/callback`. (Example: `http://homeassistant.local:8123/api/automatic/callback`) Note that this URL only needs to be accessible from the browser you use to perform the authentication. 2) Remove username/password from your automatic device tracker configuration in configuration.yaml. 3) If you have authorized your account for `scope:current_location`, add `current_location: true` to your automatic device tracker configuration in configuration.yaml. 4) When you restart Home Assistant, click on the Automatic Configure link in the Configurator card, and follow the instructions to authorize Home Assistant.

    NOTE: Automatic's API is currently not correctly authorizing with refresh tokens, so Step 4 currently needs to be performed after every restart. ([@armills] - [#8962] [#9002]) ([configurator docs]) ([device_tracker.automatic docs]) (breaking change) diff --git a/source/_posts/2017-09-09-release-53.markdown b/source/_posts/2017-09-09-release-53.markdown index 27abd107487d..60b0cf9b522f 100644 --- a/source/_posts/2017-09-09-release-53.markdown +++ b/source/_posts/2017-09-09-release-53.markdown @@ -62,7 +62,7 @@ This release ships a new KNX implementation thanks to @Julius2342. It will insta - Bayesian Binary Sensor ([@jlmcgehee21] - [#8810]) ([binary_sensor.bayesian docs]) (new-platform) - Add Tank Utility sensor ([@krismolendyke] - [#9132]) ([sensor.tank_utility docs]) (new-platform) - Tesla platform ([@zabuldon] - [#9211]) ([tesla docs]) ([binary_sensor.tesla docs]) ([climate.tesla docs]) ([device_tracker.tesla docs]) ([lock.tesla docs]) ([sensor.tesla docs]) (new-platform) -- mopar sensor ([@happyleavesaoc] - [#9136]) ([sensor.mopar docs]) (new-platform) +- mopar sensor ([@happyleavesaoc] - [#9136]) (new-platform) - Add Geofency device tracker ([@gunnarhelgason] - [#9106]) ([device_tracker.geofency docs]) (new-platform) - Added DWD WarnApp Sensor ([@runningman84] - [#8657]) ([sensor.dwdwarnapp docs]) (new-platform) - Add input_text component ([@BioSehnsucht] - [#9112]) ([input_text docs]) (new-platform) @@ -147,7 +147,7 @@ frontend: - Allow panels with external URL ([@andrey-git] - [#9214]) - Use ZCL mandatory attribute to determine ZHA light capabilities ([@jkl1337] - [#9232]) ([light.zha docs]) - A bugfix for pushbullet ([@danielhiversen] - [#9237]) ([notify.pushbullet docs]) -- mopar sensor ([@happyleavesaoc] - [#9136]) ([sensor.mopar docs]) (new-platform) +- mopar sensor ([@happyleavesaoc] - [#9136]) (new-platform) - Upgrade discord.py to 0.16.11 ([@fabaff] - [#9239]) ([notify.discord docs]) - Skip automatic events older than latest data ([@armills] - [#9230]) ([device_tracker.automatic docs]) - title and message was swapped in pushbullet ([@danielhiversen] - [#9241]) ([notify.pushbullet docs]) @@ -419,7 +419,6 @@ frontend: [sensor.dwdwarnapp docs]: /integrations/dwd_weather_warnings/ [sensor.fitbit docs]: /integrations/fitbit [sensor.homematic docs]: /integrations/homematic -[sensor.mopar docs]: /integrations/mopar [sensor.radarr docs]: /integrations/radarr [sensor.season docs]: /integrations/season [sensor.shodan docs]: /integrations/shodan @@ -439,7 +438,7 @@ frontend: [switch.rest docs]: /integrations/switch.rest/ [switch.rfxtrx docs]: /integrations/switch.rfxtrx/ [switch.knx docs]: /integrations/switch.knx/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tesla docs]: /integrations/tesla/ [tradfri docs]: /integrations/tradfri/ [volvooncall docs]: /integrations/volvooncall/ diff --git a/source/_posts/2017-09-23-release-54.markdown b/source/_posts/2017-09-23-release-54.markdown index b9cd78296f5a..74f96dcd0c2c 100644 --- a/source/_posts/2017-09-23-release-54.markdown +++ b/source/_posts/2017-09-23-release-54.markdown @@ -60,7 +60,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Allow multiple observations of same entity ([@jlmcgehee21] - [#9391]) ([binary_sensor.bayesian docs]) - Break up Alexa per functionality ([@balloob] - [#9400]) ([alexa docs]) - Upgrade psutil to 5.3.1 ([@fabaff] - [#9403]) ([sensor.systemmonitor docs]) -- fix mopar sensor ([@happyleavesaoc] - [#9389]) ([sensor.mopar docs]) +- fix mopar sensor ([@happyleavesaoc] - [#9389]) - Support specifying no Apple TVs ([@postlund] - [#9394]) ([apple_tv docs]) - Update netdisco to 1.2.0 ([@balloob] - [#9408]) - components/xiaomi: Add initial discovery using NetDisco. ([@pfalcon] - [#9283]) @@ -329,7 +329,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.fitbit docs]: /integrations/fitbit [sensor.homematic docs]: /integrations/homematic [sensor.knx docs]: /integrations/sensor.knx/ -[sensor.mopar docs]: /integrations/mopar [sensor.onewire docs]: /integrations/onewire [sensor.swiss_public_transport docs]: /integrations/swiss_public_transport [sensor.systemmonitor docs]: /integrations/systemmonitor diff --git a/source/_posts/2017-10-07-release-55.markdown b/source/_posts/2017-10-07-release-55.markdown index ecf114145a2f..ef0742b215dc 100644 --- a/source/_posts/2017-10-07-release-55.markdown +++ b/source/_posts/2017-10-07-release-55.markdown @@ -49,7 +49,7 @@ This release introduces a new sensor: [Tibber][sensor.tibber docs]. The sensor p - OwnTracks: Fix handler is None checking ([@balloob] - [#9794]) ([device_tracker.owntracks docs]) - Changed yaml.load into yaml.safe_load ([@GenericStudent] - [#9841]) ([google docs]) - Bugfix/9811 jinja autoescape ([@GenericStudent] - [#9842]) -- Livebox Play TV bug: fix #9839 ([@pschmitt] - [#9880]) ([media_player.liveboxplaytv docs]) +- Livebox Play TV bug: fix #9839 ([@pschmitt] - [#9880]) ## If you need help... ...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. @@ -61,7 +61,7 @@ Experiencing issues introduced by this release? Please report them in our [issue ## Breaking Changes -- history_graph component: If your component used `history.get_significant_states` function then you need to adjust the string `entity_id` parameter has been changed to a list of strings `entity_ids` parameter. ([@andrey-git] - [#9472]) ([history_graph docs]) (breaking change) +- history_graph component: If your component used `history.get_significant_states` function then you need to adjust the string `entity_id` parameter has been changed to a list of strings `entity_ids` parameter. ([@andrey-git] - [#9472]) (breaking change) - UPNP component: The `external_port` configuration option was removed. ([@balloob] - [#9560]) ([upnp docs]) (breaking change) - New Wink services: pair new device, rename, delete and add new lock key code. All device attributes that are multi-words are now separated by "_" and no longer " ". ([@w1ll1am23] - [#9303]) ([wink docs]) ([binary_sensor.wink docs]) ([lock.wink docs]) (breaking change) - TP-Link Switch: Attribute names now uses underscores and unnecessary capitalization was removed. ([@djchen] - [#9607]) ([switch.tplink docs]) (breaking change) @@ -383,7 +383,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [forum]: https://community.home-assistant.io/ [issue]: https://github.com/home-assistant/home-assistant/issues [discord]: https://discord.gg/c5DvZ4e -[history_graph docs]: /integrations/history_graph/ [#9754]: https://github.com/home-assistant/home-assistant/pull/9754 [#9776]: https://github.com/home-assistant/home-assistant/pull/9776 [#9785]: https://github.com/home-assistant/home-assistant/pull/9785 @@ -402,4 +401,3 @@ Experiencing issues introduced by this release? Please report them in our [issue [device_tracker.owntracks docs]: /integrations/owntracks [google docs]: /integrations/google_translate [light.tradfri docs]: /integrations/tradfri -[media_player.liveboxplaytv docs]: /integrations/liveboxplaytv diff --git a/source/_posts/2017-10-21-release-56.markdown b/source/_posts/2017-10-21-release-56.markdown index 0bb5badf2426..b25ba71446f4 100644 --- a/source/_posts/2017-10-21-release-56.markdown +++ b/source/_posts/2017-10-21-release-56.markdown @@ -174,7 +174,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - OwnTracks: Fix handler is None checking ([@balloob] - [#9794]) ([device_tracker.owntracks docs]) - Changed yaml.load into yaml.safe_load ([@GenericStudent] - [#9841]) - Bugfix/9811 jinja autoescape ([@GenericStudent] - [#9842]) -- Fix #9839 ([@pschmitt] - [#9880]) ([media_player.liveboxplaytv docs]) +- Fix #9839 ([@pschmitt] - [#9880]) - Upgrade python-telegram-bot to 8.1.1 ([@azogue] - [#9882]) ([telegram_bot docs]) - Xknx improvements ([@Julius2342] - [#9871]) ([knx docs]) ([climate.knx docs]) - zha: Update to bellows 0.4.0 ([@rcloran] - [#9890]) ([zha docs]) ([sensor.zha docs]) @@ -211,7 +211,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Update directpy to 0.2 ([@arsaboo] - [#9948]) - Update enocean to 0.40 ([@arsaboo] - [#9949]) ([enocean docs]) - Update hikvision to 1.2 ([@arsaboo] - [#9953]) ([switch.hikvisioncam docs]) -- Update fritzhome to 1.0.3 ([@arsaboo] - [#9951]) ([switch.fritzdect docs]) +- Update fritzhome to 1.0.3 ([@arsaboo] - [#9951]) - Update fritzconnection to 0.6.5 ([@arsaboo] - [#9950]) ([device_tracker.fritz docs]) ([sensor.fritzbox_callmonitor docs]) ([sensor.fritzbox_netmonitor docs]) - Upgraded pyhomematic ([@danielperna84] - [#9956]) ([homematic docs]) - Add emeter attributes ([@gollo] - [#9903]) ([light.tplink docs]) @@ -472,7 +472,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.denon docs]: /integrations/denon [media_player.denonavr docs]: /integrations/denonavr/ [media_player.dunehd docs]: /integrations/dunehd -[media_player.liveboxplaytv docs]: /integrations/liveboxplaytv [media_player.monoprice docs]: /integrations/monoprice [media_player.plex docs]: /integrations/plex#media-player [media_player.yamaha docs]: /integrations/yamaha @@ -520,7 +519,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [shiftr docs]: /integrations/shiftr/ [skybell docs]: /integrations/skybell/ [switch.flux docs]: /integrations/flux -[switch.fritzdect docs]: /integrations/fritzdect [switch.hikvisioncam docs]: /integrations/hikvisioncam [switch.rainmachine docs]: /integrations/rainmachine#switch [switch.skybell docs]: /integrations/skybell#switch @@ -529,7 +527,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.tplink docs]: /integrations/tplink [switch.wink docs]: /integrations/wink#switch [switch.xiaomi_miio docs]: /integrations/switch.xiaomi_miio/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tesla docs]: /integrations/tesla/ [toon docs]: /integrations/toon/ [tradfri docs]: /integrations/tradfri/ diff --git a/source/_posts/2017-11-04-release-57.markdown b/source/_posts/2017-11-04-release-57.markdown index 38f721c9348d..84d201f4700d 100644 --- a/source/_posts/2017-11-04-release-57.markdown +++ b/source/_posts/2017-11-04-release-57.markdown @@ -151,7 +151,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix no data event triggers ([@armills] - [#10049]) ([automation.event docs]) - fixing a typo in the old library which broke hub gen2 compatibility ([@sander76] - [#9990]) - Add fail2ban sensor ([@fronzbot] - [#9975]) ([sensor.fail2ban docs]) (new-platform) -- Show current program thumbnail as media_image ([@pschmitt] - [#10033]) ([media_player.liveboxplaytv docs]) +- Show current program thumbnail as media_image ([@pschmitt] - [#10033]) - Add link to docs and update ordering ([@fabaff] - [#10062]) ([duckdns docs]) - Remove STATE_UNKNOWN ([@fabaff] - [#10064]) ([sensor.glances docs]) - update library for xiaomi_aqara, change from pyCrypto to cryptography ([@danielhiversen] - [#10066]) ([xiaomi_aqara docs]) @@ -577,7 +577,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [mailbox docs]: /integrations/mailbox/ [media_extractor docs]: /integrations/media_extractor/ [media_player docs]: /integrations/media_player/ -[media_player.liveboxplaytv docs]: /integrations/liveboxplaytv [media_player.monoprice docs]: /integrations/monoprice [media_player.plex docs]: /integrations/plex#media-player [media_player.russound_rnet docs]: /integrations/russound_rnet diff --git a/source/_posts/2017-11-18-release-58.markdown b/source/_posts/2017-11-18-release-58.markdown index 2fb8a97bfdce..c95fc35b0564 100644 --- a/source/_posts/2017-11-18-release-58.markdown +++ b/source/_posts/2017-11-18-release-58.markdown @@ -135,7 +135,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Adapt to new yarl API ([@tinloaf] - [#10527]) ([tts.google docs]) - Update nederlandse_spoorwegen.py to include platform information ([@hmmbob] - [#10494]) ([sensor.nederlandse_spoorwegen docs]) - Pin yarl ([@tinloaf] - [#10528]) -- Support configuration of region (no service url neccessary ([@molobrakos] - [#10513]) ([volvooncall docs]) +- Support configuration of region (no service url necessary ([@molobrakos] - [#10513]) ([volvooncall docs]) - Fix import in tests ([@andrey-git] - [#10525]) - Update axis.py ([@Kane610] - [#10412]) ([axis docs]) - Add attribute to show who last un/set alarm (SPC) ([@mbrrg] - [#9906]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) @@ -186,7 +186,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Change generic thermostat to control heating on mode change Off -> Auto ([@milanvo] - [#10601]) ([climate.generic_thermostat docs]) - Improve WUnderground config validation ([@milanvo] - [#10573]) ([sensor.wunderground docs]) - update hbmqtt to 0.9.1 ([@masarliev] - [#10611]) -- Allow to pass YandexTTS options via sevice call ([@andrey-git] - [#10578]) ([tts docs]) ([tts.yandextts docs]) +- Allow to pass YandexTTS options via service call ([@andrey-git] - [#10578]) ([tts docs]) ([tts.yandextts docs]) - Snapcast: bump version and enable reconnect. ([@janLo] - [#10626]) ([media_player.snapcast docs]) - Fix async missing decorators ([@armills] - [#10628]) - Alexa slot synonym fix ([@devspacenine] - [#10614]) @@ -469,7 +469,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.snmp docs]: /integrations/snmp#switch [switch.xiaomi_miio docs]: /integrations/switch.xiaomi_miio/ [system_log docs]: /integrations/system_log/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [telegram_bot.polling docs]: /integrations/telegram_polling [tradfri docs]: /integrations/tradfri/ [tts docs]: /integrations/tts/ diff --git a/source/_posts/2017-12-17-release-60.markdown b/source/_posts/2017-12-17-release-60.markdown index 5f1c4dede425..b4afdf02547c 100644 --- a/source/_posts/2017-12-17-release-60.markdown +++ b/source/_posts/2017-12-17-release-60.markdown @@ -56,7 +56,7 @@ Yahoo! has discontinued their financial service. To fill this gap we have now th - Fix allday events in custom_calendars ([@maxlaverse] - [#11272]) ([calendar.caldav docs]) - Fix unpredictable entity names in concord232 binary_sensor ([@rwa] - [#11292]) ([binary_sensor.concord232 docs]) - Fix leak sensors always showing Unknown until Wet ([@OverloadUT] - [#11313]) ([binary_sensor.isy994 docs]) -- Don't block on sevice call for alexa ([@pvizeli] - [#11358]) ([alexa.smart_home docs]) +- Don't block on service call for alexa ([@pvizeli] - [#11358]) ([alexa.smart_home docs]) - iOS 10 should be served javascript_version:es5 ([@mnoorenberghe] - [#11387]) ## If you need help... @@ -121,7 +121,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Added force_update for REST sensor ([@foxel] - [#11016]) ([sensor.miflora docs]) ([sensor.mqtt docs]) ([sensor.rest docs]) - Add support for Logitech UE Smart Radios. ([@GreenTurtwig] - [#10077]) ([media_player.ue_smart_radio docs]) (new-platform) - Make notify.html5 depend on config ([@balloob] - [#11052]) ([notify.html5 docs]) -- This change fixes the error `OSError: [WinError 193]` on Windows debuggers (i.e. PyCharm) ([@tringler] - [#11034]) +- This change fixes the error `OSError: [WinError 193]` on Windows debuggers (i.e., PyCharm) ([@tringler] - [#11034]) - Added support for cover in tellstick ([@perfalk] - [#10858]) ([tellstick docs]) ([cover.tellstick docs]) (new-platform) - Add a caldav calendar component ([@maxlaverse] - [#10842]) ([calendar.caldav docs]) (new-platform) - Add GPS coords to meraki ([@addelovein] - [#10998]) ([device_tracker.meraki docs]) @@ -142,7 +142,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix incorrect comment. ([@emosenkis] - [#11111]) - Update Warrant ([@balloob] - [#11101]) ([cloud docs]) - Fixed typo in automation.py ([@ryanm101] - [#11116]) ([config.automation docs]) -- Add media position properties ([@pschmitt] - [#10076]) ([media_player.liveboxplaytv docs]) +- Add media position properties ([@pschmitt] - [#10076]) - update pyripple ([@nkgilley] - [#11122]) ([sensor.ripple docs]) - Skip HASS emulated Hue bridges from detection. ([@andreacampi] - [#11128]) ([hue docs]) - Always consume the no_throttle keyword argument. ([@andreacampi] - [#11126]) @@ -334,7 +334,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [logbook docs]: /integrations/logbook/ [media_extractor docs]: /integrations/media_extractor/ [media_player.denonavr docs]: /integrations/denonavr/ -[media_player.liveboxplaytv docs]: /integrations/liveboxplaytv [media_player.samsungtv docs]: /integrations/samsungtv [media_player.sonos docs]: /integrations/sonos [media_player.ue_smart_radio docs]: /integrations/ue_smart_radio diff --git a/source/_posts/2018-01-14-release-61.markdown b/source/_posts/2018-01-14-release-61.markdown index fba4b0fd1a8e..ca46f72339d4 100644 --- a/source/_posts/2018-01-14-release-61.markdown +++ b/source/_posts/2018-01-14-release-61.markdown @@ -56,7 +56,7 @@ broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_10 ## Release 0.61.1 - January 16 - Fix zha color probe ([@rcloran] - [#11670]) ([zha docs]) ([light.zha docs]) -- Move several local services to their right domain ([@amelchio] - [#11677]) ([calendar.todoist docs]) ([media_player.snapcast docs]) ([media_player.soundtouch docs]) ([sensor.mopar docs]) ([switch.broadlink docs]) ([switch.scsgate docs]) (breaking change) +- Move several local services to their right domain ([@amelchio] - [#11677]) ([calendar.todoist docs]) ([media_player.snapcast docs]) ([media_player.soundtouch docs]) ([switch.broadlink docs]) ([switch.scsgate docs]) (breaking change) - Rfxtrx fix ([@danielhiversen] - [#11678]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) - History order bugfix and opt-in option ([@rwa] - [#11686]) ([history docs]) - Fix purge with MariaDB / MySQL ([@tinloaf] - [#11713]) @@ -155,7 +155,7 @@ Note however, that this feature was replaced by a new ignore_string config optio broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107 broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107 ``` - ([@amelchio] - [#11677]) ([calendar.todoist docs]) ([media_player.snapcast docs]) ([media_player.soundtouch docs]) ([sensor.mopar docs]) ([switch.broadlink docs]) ([switch.scsgate docs]) (breaking change) + ([@amelchio] - [#11677]) ([calendar.todoist docs]) ([media_player.snapcast docs]) ([media_player.soundtouch docs]) ([switch.broadlink docs]) ([switch.scsgate docs]) (breaking change) ## All changes @@ -760,7 +760,7 @@ Note however, that this feature was replaced by a new ignore_string config optio [switch.transmission docs]: /integrations/transmission [switch.xiaomi_miio docs]: /integrations/switch.xiaomi_miio/ [tahoma docs]: /integrations/tahoma/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [timer docs]: /integrations/timer/ [tts.baidu docs]: /integrations/baidu [tts.marytts docs]: /integrations/marytts @@ -789,7 +789,6 @@ Note however, that this feature was replaced by a new ignore_string config optio [media_player.snapcast docs]: /integrations/snapcast [media_player.soundtouch docs]: /integrations/soundtouch [rfxtrx docs]: /integrations/rfxtrx/ -[sensor.mopar docs]: /integrations/mopar [switch.broadlink docs]: /integrations/broadlink#switch [switch.scsgate docs]: /integrations/scsgate#switch [zha docs]: /integrations/zha/ diff --git a/source/_posts/2018-01-27-release-62.markdown b/source/_posts/2018-01-27-release-62.markdown index 76c0f78059a9..87f1ceb3bf6f 100644 --- a/source/_posts/2018-01-27-release-62.markdown +++ b/source/_posts/2018-01-27-release-62.markdown @@ -83,7 +83,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Enable probot move ([@fabaff] - [#11690]) - fixed not to include spaces or dots in attribute names ([@olskar] - [#11694]) ([sensor.mold_indicator docs]) (breaking change) - Add attributes ([@fabaff] - [#11698]) ([sensor.random docs]) -- Feature/fritzdect errorhandling ([@BastianPoe] - [#11490]) ([switch.fritzdect docs]) +- Feature/fritzdect errorhandling ([@BastianPoe] - [#11490]) - Tesla bug fix #11598 ([@zabuldon] - [#11707]) - Update mold_indicator.py ([@olskar] - [#11715]) ([sensor.mold_indicator docs]) - Override default name for TP-Link devices ([@DanNixon] - [#11710]) ([light.tplink docs]) ([switch.tplink docs]) @@ -116,7 +116,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Service for setting a fixed scene of Xiaomi MIIO lights ([@syssi] - [#10819]) ([light.xiaomi_miio docs]) - Homematic ip tilt covers ([@steffenslavetinsky] - [#11650]) ([cover.homematic docs]) - plant - check history for min_brightness ([@ChristianKuehnel] - [#9534]) ([plant docs]) -- add generic rollershutter agian, was missing in last merge ([@philklei] - [#11788]) ([tahoma docs]) +- add generic rollershutter again, was missing in last merge ([@philklei] - [#11788]) ([tahoma docs]) - Additional attributes and services of the Xiaomi Air Purifier introduced ([@syssi] - [#11249]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) - flux led version 0.20 ([@danielhiversen] - [#11791]) - Hyperion: fix ([@starkillerOG] - [#11793]) ([light.hyperion docs]) @@ -468,7 +468,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.xiaomi_aqara docs]: /integrations/sensor.xiaomi_aqara/ [sensor.yr docs]: /integrations/yr [snips docs]: /integrations/snips/ -[switch.fritzdect docs]: /integrations/fritzdect [switch.hive docs]: /integrations/hive#switch [switch.ihc docs]: /integrations/ihc#switch [switch.snmp docs]: /integrations/snmp#switch diff --git a/source/_posts/2018-02-10-release-63.markdown b/source/_posts/2018-02-10-release-63.markdown index bf4ffa649a22..0eaafb146485 100644 --- a/source/_posts/2018-02-10-release-63.markdown +++ b/source/_posts/2018-02-10-release-63.markdown @@ -127,7 +127,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Map media_stop to idle state ([@akloeckner] - [#11819]) - Adds allergy/disease sensor platform from Pollen.com ([@bachya] - [#11573]) ([sensor.pollen docs]) (new-platform) - check_config.py: allow colorlog==3.1. ([@dotlambda] - [#11927]) -- Weblink - Allow relative urls in config ([@ReneNulschDE] - [#11808]) ([weblink docs]) +- Weblink - Allow relative urls in config ([@ReneNulschDE] - [#11808]) - Panel_Iframe - Allow relative urls in config ([@ReneNulschDE] - [#11832]) ([panel_iframe docs]) - Python 3.6 invalid escape sequence deprecation fixes ([@scop] - [#11941]) - tests: Use assertEqual instead of deprecated assertEquals ([@scop] - [#11943]) @@ -188,7 +188,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - added media_stop ([@jodur] - [#12100]) ([media_player.vlc docs]) - Goalfeed channel ([@craigjmidwinter] - [#12086]) ([goalfeed docs]) - Update jinja2 to 2.10 ([@arsaboo] - [#12118]) -- Downgrade Sonarr and Radarr 'Host is not avaliable' errors to warnings ([@timmo001] - [#12119]) ([sensor.radarr docs]) ([sensor.sonarr docs]) +- Downgrade Sonarr and Radarr 'Host is not available' errors to warnings ([@timmo001] - [#12119]) ([sensor.radarr docs]) ([sensor.sonarr docs]) - Fixes away_mode error on startup ([@ciotlosm] - [#12121]) ([climate.generic_thermostat docs]) - except vol.MultipleInvalid in Broadlink #11795 ([@danielhiversen] - [#12107]) ([sensor.broadlink docs]) - Adds SUPPORT_TARGET_TEMPERATURE_HIGH and SUPPORT_TARGET_TEMPERATURE_LOW support ([@hawk259] - [#12110]) ([climate.ecobee docs]) @@ -622,7 +622,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [wake_on_lan docs]: /integrations/wake_on_lan/ [waterfurnace docs]: /integrations/waterfurnace/ [weather.openweathermap docs]: /integrations/openweathermap#weather -[weblink docs]: /integrations/weblink/ [websocket_api docs]: /integrations/websocket_api/ [zha docs]: /integrations/zha/ [zha.const docs]: /integrations/zha.const/ diff --git a/source/_posts/2018-02-26-release-64.markdown b/source/_posts/2018-02-26-release-64.markdown index 72a5c8cff7e8..e58b5fcdeae8 100644 --- a/source/_posts/2018-02-26-release-64.markdown +++ b/source/_posts/2018-02-26-release-64.markdown @@ -139,7 +139,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - check_config check bootstrap errors ([@kellerza] - [#12291]) - Attempt fixing flakiness of check config test ([@balloob] - [#12283]) - Fix MQTT retained message not being re-dispatched ([@OttoWinter] - [#12004]) ([mqtt docs]) -- Fix config error for FTP links, add test ([@ReneNulschDE] - [#12294]) ([weblink docs]) +- Fix config error for FTP links, add test ([@ReneNulschDE] - [#12294]) - Fix Panel_IFrame - FTP URL not allowed in 0.63 ([@ReneNulschDE] - [#12295]) ([panel_iframe docs]) - Upgrade pylint to 1.8.2 ([@OttoWinter] - [#12274]) - Move HassIntent handler code into helpers/intent ([@tschmidty69] - [#12181]) ([conversation docs]) @@ -576,11 +576,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.smappee docs]: /integrations/smappee [switch.xiaomi_miio docs]: /integrations/switch.xiaomi_miio/ [tahoma docs]: /integrations/tahoma/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [vacuum.xiaomi_miio docs]: /integrations/vacuum.xiaomi_miio/ [vera docs]: /integrations/vera/ [weather.buienradar docs]: /integrations/buienradar -[weblink docs]: /integrations/weblink/ [xiaomi_aqara docs]: /integrations/xiaomi_aqara/ [zha docs]: /integrations/zha/ [#12635]: https://github.com/home-assistant/home-assistant/pull/12635 diff --git a/source/_posts/2018-03-09-release-65.markdown b/source/_posts/2018-03-09-release-65.markdown index a4aa5d24de95..244df69467df 100644 --- a/source/_posts/2018-03-09-release-65.markdown +++ b/source/_posts/2018-03-09-release-65.markdown @@ -318,7 +318,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - IMAP sensor async/await conversion ([@amelchio] - [#12988]) ([sensor.imap docs]) - Refactor Google Assistant ([@balloob] - [#12959]) ([google_assistant docs]) ([light docs]) (breaking change) - Bump pyEmby version to support aiohttp => 3 ([@mezz64] - [#12986]) ([media_player.emby docs]) -- Update pyalarmdotcom version ([@koolsb] - [#12987]) ([alarm_control_panel.alarmdotcom docs]) +- Update pyalarmdotcom version ([@koolsb] - [#12987]) - Show the error message when Zabbix fails to log in ([@cyberjacob] - [#12985]) ([zabbix docs]) - Script/gen_requirements: Ignore package families ([@cdce8p] - [#12963]) - Fix Sonos group discovery ([@amelchio] - [#12970]) ([media_player.sonos docs]) @@ -540,7 +540,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [@teharris1]: https://github.com/teharris1 [@thejta]: https://github.com/thejta [@turbokongen]: https://github.com/turbokongen -[alarm_control_panel.alarmdotcom docs]: /integrations/alarmdotcom [alarm_control_panel.concord232 docs]: /integrations/concord232#alarm-control-panel [alarm_control_panel.egardia docs]: /integrations/egardia [api docs]: /integrations/api/ diff --git a/source/_posts/2018-03-30-release-66.markdown b/source/_posts/2018-03-30-release-66.markdown index 8b54fe163096..939ae2a063f0 100644 --- a/source/_posts/2018-03-30-release-66.markdown +++ b/source/_posts/2018-03-30-release-66.markdown @@ -91,7 +91,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Remove crazy JSON encoding things that are no longer used ([@balloob] - [#13029]) ([http docs]) ([websocket_api docs]) - Disable Monkey Patch for 3.6.3+ ([@OttoWinter] - [#13150]) - Upgrade Sphinx to 1.7.1 ([@fabaff] - [#13127]) -- upgrade tibber libary to 0.4.0 to use aiohttp 3.0 ([@danielhiversen] - [#13164]) ([sensor.tibber docs]) +- upgrade tibber library to 0.4.0 to use aiohttp 3.0 ([@danielhiversen] - [#13164]) ([sensor.tibber docs]) - Change iglo port to cv.port validator ([@jesserockz] - [#13163]) ([light.iglo docs]) - deConz rewrite to use async await syntax ([@Kane610] - [#13151]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([scene.deconz docs]) ([sensor.deconz docs]) - Upgrade holidays to 0.9.4 ([@OttoWinter] - [#13167]) ([binary_sensor.workday docs]) @@ -550,7 +550,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.vesync docs]: /integrations/vesync#switches [switch.xiaomi_miio docs]: /integrations/switch.xiaomi_miio/ [switch.zha docs]: /integrations/zha -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [upcloud docs]: /integrations/upcloud/ [vacuum.xiaomi_miio docs]: /integrations/vacuum.xiaomi_miio/ [weather.darksky docs]: /integrations/weather.darksky/ diff --git a/source/_posts/2018-04-14-release-67.markdown b/source/_posts/2018-04-14-release-67.markdown index f92971ab4018..f86d606efc82 100644 --- a/source/_posts/2018-04-14-release-67.markdown +++ b/source/_posts/2018-04-14-release-67.markdown @@ -154,7 +154,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Update AbodePy version to 0.12.3 ([@MisterWil] - [#13709]) ([abode docs]) - Enable autodiscovery for mqtt cameras ([@jmtatsch] - [#13697]) ([mqtt docs]) ([camera.mqtt docs]) - Added ENTITY_ID_FORMAT import and set entity_id in __init__ ([@timmo001] - [#13642]) ([switch.broadlink docs]) (breaking change) -- Fix #10175 ([@pschmitt] - [#13713]) ([media_player.liveboxplaytv docs]) +- Fix #10175 ([@pschmitt] - [#13713]) - Add support for Nanoleaf Aurora Light Panels ([@Oro] - [#13456]) ([light.nanoleaf_aurora docs]) (new-platform) - Added gogogate2 cover ([@dlbroadfoot] - [#13467]) - Remove vendor lookup for mac addresses ([@balloob] - [#13788]) ([device_tracker docs]) @@ -367,7 +367,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [light.yeelight docs]: /integrations/yeelight [lock.bmw_connected_drive docs]: /integrations/bmw_connected_drive [media_extractor docs]: /integrations/media_extractor/ -[media_player.liveboxplaytv docs]: /integrations/liveboxplaytv [media_player.philips_js docs]: /integrations/philips_js [media_player.songpal docs]: /integrations/songpal [media_player.webostv docs]: /integrations/webostv#media-player diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown index a6e3e3207e45..74770657e337 100644 --- a/source/_posts/2018-05-11-release-69.markdown +++ b/source/_posts/2018-05-11-release-69.markdown @@ -18,7 +18,7 @@ Not much time to write a great intro this time as we're hanging out at PyCon! So - Support Xiaomi Mijia Bluetooth Wireless Temperature and Humidity Sensor ([@ratcashdev] - [#13955]) ([sensor.mitemp_bt docs]) (new-platform) - Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform) - Add Social Blade Sensor ([@meauxt] - [#14060]) ([sensor.socialblade docs]) ([sensor.uscis docs]) (new-platform) -- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) ([sensor.postnl docs]) (new-platform) +- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) (new-platform) - Issue/add template fans ([@giangvo] - [#12027]) ([fan.template docs]) (new-platform) - Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform) @@ -145,7 +145,7 @@ rainmachine: - Fix Hue color state for missing xy ([@amelchio] - [#14230]) ([light.hue docs]) - Add support for tracking devices on Netgear access points ([@MatMaul] - [#13331]) ([device_tracker docs]) - WUnderground unique ids ([@OttoWinter] - [#13311]) ([sensor.wunderground docs]) -- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) ([sensor.postnl docs]) (new-platform) +- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) (new-platform) - python_openzwave update config service ([@perosb] - [#12060]) ([zwave docs]) - Add unique_id to zwave node entity ([@andrey-git] - [#14201]) ([zwave docs]) - Add prereqs for HomeKit Controller ([@marthoc] - [#14172]) @@ -172,7 +172,7 @@ rainmachine: - Sensor device classes ([@cdce8p] - [#14282]) ([sensor docs]) (breaking change) - Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform) - deCONZ add new device without restart ([@Kane610] - [#14221]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) -- Add alarmdotcom sensor status ([@jnewland] - [#14254]) ([alarm_control_panel.alarmdotcom docs]) +- Add alarmdotcom sensor status ([@jnewland] - [#14254]) - Add domain to labels and count state changes to Prometheus ([@jnewland] - [#14253]) ([prometheus docs]) - Add support for max_volume ([@relvacode] - [#13822]) ([media_player.onkyo docs]) - Refactor ImageProcessingFaceEntity ([@robmarkcole] - [#14296]) ([image_processing docs]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) ([image_processing.microsoft_face_detect docs]) ([image_processing.microsoft_face_identify docs]) @@ -372,7 +372,6 @@ rainmachine: [@thelittlefireman]: https://github.com/thelittlefireman [@tinloaf]: https://github.com/tinloaf [abode docs]: /integrations/abode/ -[alarm_control_panel.alarmdotcom docs]: /integrations/alarmdotcom [auth docs]: /integrations/auth/ [binary_sensor docs]: /integrations/binary_sensor/ [binary_sensor.deconz docs]: /integrations/deconz#binary-sensor @@ -453,7 +452,6 @@ rainmachine: [sensor.mitemp_bt docs]: /integrations/mitemp_bt [sensor.mqtt docs]: /integrations/sensor.mqtt/ [sensor.pollen docs]: /integrations/iqvia -[sensor.postnl docs]: /integrations/postnl [sensor.qnap docs]: /integrations/qnap [sensor.socialblade docs]: /integrations/socialblade [sensor.sql docs]: /integrations/sql diff --git a/source/_posts/2018-05-18-release-70.markdown b/source/_posts/2018-05-18-release-70.markdown index 1fde73397102..60cd476658b0 100644 --- a/source/_posts/2018-05-18-release-70.markdown +++ b/source/_posts/2018-05-18-release-70.markdown @@ -432,7 +432,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.tahoma docs]: /integrations/tahoma [system_log docs]: /integrations/system_log/ [tahoma docs]: /integrations/tahoma/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tts docs]: /integrations/tts/ [updater docs]: /integrations/updater/ [weather.bom docs]: /integrations/bom diff --git a/source/_posts/2018-06-10-release-71.markdown b/source/_posts/2018-06-10-release-71.markdown index 67ad9505f6a6..ab53fcad3578 100644 --- a/source/_posts/2018-06-10-release-71.markdown +++ b/source/_posts/2018-06-10-release-71.markdown @@ -56,7 +56,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - BOM sensor: `'Wind Direction kt'` to `'Wind Speed kt'` (fixes #14535) ([@fabaff] - [#14541]) ([sensor.bom docs]) (breaking change) - Removed attribute current_time from Raincloudy sensors to avoid being triggered by recorder component ([@tchellomello] - [#14584]) ([raincloud docs]) ([switch.raincloud docs]) (breaking change) - Remove Notify My Android component as it shut down on May 24 ([@cgarwood] - [#14594]) ([notify docs]) (breaking change) -- CoinMarketCap sensor: It is no longer possible to query a ticker by the name of the currency (i.e. bitcoin). The API instead uses IDs (integers) for these tickers (i.e. bitcoin -> 1). Rounding of decimals is now configurable, because it made no sense to round to 2 decimals if display_currency was set to BTC, some values showed up as 0.00. (#14437) ([@kotlarz] - [#14604]) ([sensor.coinmarketcap docs]) (breaking change) +- CoinMarketCap sensor: It is no longer possible to query a ticker by the name of the currency (i.e., bitcoin). The API instead uses IDs (integers) for these tickers (i.e., bitcoin -> 1). Rounding of decimals is now configurable, because it made no sense to round to 2 decimals if display_currency was set to BTC, some values showed up as 0.00. (#14437) ([@kotlarz] - [#14604]) ([sensor.coinmarketcap docs]) (breaking change) - Give unknown zwave nodes a better name and don't add them to entity registry ([@andrey-git] - [#14353]) ([zwave docs]) (breaking change) - The `netdata` sensor was re-worked to support all available details from [Netdata](https://my-netdata.io/). This requires you to adjust the your existing configuration if you use the `netdata` sensor. ([@fabaff] - [#14613]) ([sensor.netdata docs]) (breaking change) @@ -154,7 +154,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Added option to block Osram Lightify individual lights in the same way that groups can be ([@austinlg96] - [#14470]) ([light.osramlightify docs]) - Upgrade directpy to 0.5 ([@Bahnburner] - [#14750]) ([media_player.directv docs]) - Update syntax of platform random ([@fabaff] - [#14767]) ([binary_sensor.random docs]) ([sensor.random docs]) -- Update postnl api to 1.0.2 ([@iMicknl] - [#14769]) ([sensor.postnl docs]) +- Update postnl api to 1.0.2 ([@iMicknl] - [#14769]) - Remove swagger file ([@fabaff] - [#14762]) - Update syntax ([@fabaff] - [#14771]) ([sensor.version docs]) - Update syntax ([@fabaff] - [#14768]) ([sensor.worldclock docs]) @@ -389,7 +389,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.netatmo docs]: /integrations/netatmo#sensor [sensor.netdata docs]: /integrations/netdata [sensor.onewire docs]: /integrations/onewire -[sensor.postnl docs]: /integrations/postnl [sensor.rainmachine docs]: /integrations/rainmachine [sensor.random docs]: /integrations/random#sensor [sensor.shodan docs]: /integrations/shodan diff --git a/source/_posts/2018-07-06-release-73.markdown b/source/_posts/2018-07-06-release-73.markdown index 6f7e88313b5f..f898455ecc50 100644 --- a/source/_posts/2018-07-06-release-73.markdown +++ b/source/_posts/2018-07-06-release-73.markdown @@ -41,7 +41,7 @@ Experiencing issues introduced by this release? Please report them in our [issue ## Breaking Changes - The `pi_hole` sensor is now limited to `ads_blocked_today` by default and will no longer show all available data. Use [`monitored_conditions`](/integrations/pi_hole#monitored_conditions) to list the sensors you want. ([@fabaff] - [#15014]) ([sensor.pi_hole docs]) (breaking change) -- Update PostNL unit of measure to `packages` to align with UPS ([@keesschollaart81] - [#15023]) ([sensor.postnl docs]) (breaking change) +- Update PostNL unit of measure to `packages` to align with UPS ([@keesschollaart81] - [#15023]) (breaking change) - Various attributes have been relocated to sensors that make more sense; additionally, some names are corrected. More info in [#14963] ([@bachya] - [#14963]) ([sensor.pollen docs]) (breaking change) - The filter option for prometheus was aligned with other components ([@alexbarcelo] - [#13738]) ([prometheus docs]) (breaking change) - Change some operation_modes for Z-Wave climate devices to comply with Home Assistant standards and compatibility with Google Home, Alexa and HomeKit. ([@cdce8p] - [#15162]) ([climate.zwave docs]) (breaking change) @@ -70,7 +70,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Switch nuimo to a hopefully working pypi version ([@andrey-git] - [#15006]) ([nuimo_controller docs]) - Remove typing ([@fabaff] - [#15018]) - Add support for Homekit battery service ([@schmittx] - [#14288]) ([homekit docs]) -- Update PostNL unit of measure to align with UPS ([@keesschollaart81] - [#15023]) ([sensor.postnl docs]) (breaking change) +- Update PostNL unit of measure to align with UPS ([@keesschollaart81] - [#15023]) (breaking change) - Expose Wemo component availability to Home Assistant ([@gstorer] - [#14995]) ([light.wemo docs]) - Improve volume support for Vizio Smartcast ([@JeffLIrion] - [#14981]) ([media_player.vizio docs]) - Upgrade requests to 2.19.1 ([@fabaff] - [#15019]) @@ -312,7 +312,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.loopenergy docs]: /integrations/loopenergy [sensor.pi_hole docs]: /integrations/pi_hole [sensor.pollen docs]: /integrations/iqvia -[sensor.postnl docs]: /integrations/postnl [sensor.waze_travel_time docs]: /integrations/waze_travel_time [sensor.xiaomi_miio docs]: /integrations/sensor.xiaomi_miio/ [switch.anel_pwrctrl docs]: /integrations/anel_pwrctrl diff --git a/source/_posts/2018-07-16-release-73-2.markdown b/source/_posts/2018-07-16-release-73-2.markdown index cc34cb7844cf..f288fa7470f2 100644 --- a/source/_posts/2018-07-16-release-73-2.markdown +++ b/source/_posts/2018-07-16-release-73-2.markdown @@ -14,7 +14,6 @@ A man in the middle attack is when an attacker is able to inject itself between After research, the following integrations have been impacted. Although the odds are extremely small, we still suggest that if you use any of these integrations, to create new API keys or change your password. -- [alarm_control_panel.alarmdotcom](/integrations/alarmdotcom) - [climate.sensibo](/integrations/sensibo) - [cloud](/integrations/cloud/) (only short lived tokens impacted) - [device_tracker.automatic](/integrations/automatic) @@ -31,7 +30,6 @@ After research, the following integrations have been impacted. Although the odds - [notify.prowl](/integrations/prowl) - [rest_command](/integrations/rest_command/) - [scene.lifx_cloud](/integrations/lifx_cloud) -- [switch.hook](/integrations/hook) - [switch.rest](/integrations/switch.rest/) - [telegram_bot.polling](/integrations/telegram_polling) - [tts.voicerss](/integrations/voicerss) diff --git a/source/_posts/2018-07-21-release-74.markdown b/source/_posts/2018-07-21-release-74.markdown index 7c8b7fc00b09..7c675f6cb031 100644 --- a/source/_posts/2018-07-21-release-74.markdown +++ b/source/_posts/2018-07-21-release-74.markdown @@ -40,7 +40,7 @@ I'm happy to announce that this release introduces support for Tuya thanks to [@ - Add Tuya component and switch support ([@huangyupeng] - [#15399]) ([tuya docs]) ([switch.tuya docs]) (new-platform) - Add Tuya light platform ([@huangyupeng] - [#15444]) ([tuya docs]) ([light.tuya docs]) (new-platform) -- Added support for Duke Energy smart meters ([@w1ll1am23] - [#15165]) ([sensor.duke_energy docs]) (new-platform) +- Added support for Duke Energy smart meters ([@w1ll1am23] - [#15165]) (new-platform) - Added Push Camera ([@dgomes] - [#15151]) ([camera.push docs]) (new-platform) - Add Cloudflare DNS component. ([@ludeeus] - [#15388]) ([cloudflare docs]) (new-platform) - Add HomematicIP alarm control panel ([@mxworm] - [#15342]) ([alarm_control_panel docs]) ([homematicip_cloud docs]) ([alarm_control_panel.homematicip_cloud docs]) (new-platform) @@ -103,7 +103,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Added setting cover tilt position in scene ([@kstaniek] - [#15255]) - Pass tox posargs to pylint ([@scop] - [#15226]) - Fix Roomba exception ([@arbreng] - [#15262]) ([vacuum.roomba docs]) -- Added support for Duke Energy smart meters ([@w1ll1am23] - [#15165]) ([sensor.duke_energy docs]) (new-platform) +- Added support for Duke Energy smart meters ([@w1ll1am23] - [#15165]) (new-platform) - Update image_processing async ([@dgomes] - [#15082]) ([image_processing docs]) - Fix python-miio 0.4 compatibility of the xiaomi miio device tracker ([@serhtt] - [#15244]) ([device_tracker docs]) - Upgrade keyring to 13.1.0 ([@fabaff] - [#15268]) @@ -141,7 +141,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Improve NetAtmo sensors update logic ([@glpatcern] - [#14866]) ([sensor.netatmo docs]) - removed unused return ([@ludeeus] - [#15402]) ([cloudflare docs]) - Fix confused brightness of xiaomi_aqara gateway light ([@amelchio] - [#15314]) ([light.xiaomi_aqara docs]) -- Fix liveboxplaytv empty channel list ([@pschmitt] - [#15404]) ([media_player.liveboxplaytv docs]) +- Fix liveboxplaytv empty channel list ([@pschmitt] - [#15404]) - Fix credentials lookup ([@balloob] - [#15409]) - Change Ring binary_sensor frequency polling to avoid rate limit exceeded errors ([@tchellomello] - [#15414]) ([binary_sensor.ring docs]) - Add Tuya component and switch support ([@huangyupeng] - [#15399]) ([tuya docs]) ([switch.tuya docs]) (new-platform) @@ -374,14 +374,12 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_extractor docs]: /integrations/media_extractor/ [media_player.denonavr docs]: /integrations/denonavr/ [media_player.lg_netcast docs]: /integrations/lg_netcast -[media_player.liveboxplaytv docs]: /integrations/liveboxplaytv [media_player.philips_js docs]: /integrations/philips_js [mysensors docs]: /integrations/mysensors/ [onboarding docs]: /integrations/onboarding/ [prometheus docs]: /integrations/prometheus/ [sensor.arlo docs]: /integrations/arlo#sensor [sensor.deconz docs]: /integrations/deconz#sensor -[sensor.duke_energy docs]: /integrations/duke_energy [sensor.efergy docs]: /integrations/efergy [sensor.fixer docs]: /integrations/fixer [sensor.gtfs docs]: /integrations/gtfs diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index a75dff644afd..95cd8c508b5d 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -17,7 +17,7 @@ This release includes a database migration to allow us to store context in the d -The auth system is entering release candidate status 🎉. If nothing major is found, it will be enabled by default starting the next release (0.77) with backwards compatability modus turned on. If you want to get ahead of the pack, you can already easily enable it now: +The auth system is entering release candidate status 🎉. If nothing major is found, it will be enabled by default starting the next release (0.77) with backwards compatibility modus turned on. If you want to get ahead of the pack, you can already easily enable it now: ```yaml homeassistant: @@ -28,7 +28,7 @@ homeassistant: # - type: legacy_api_password ``` -For iOS users, your frontend should be a lot faster. We had an issue that forced us to serve the frontend in compatability mode, which is slower. We haven't been able to solve [the issue](https://bugs.webkit.org/show_bug.cgi?id=174629), but found a workaround. Race on 🏎. +For iOS users, your frontend should be a lot faster. We had an issue that forced us to serve the frontend in compatibility mode, which is slower. We haven't been able to solve [the issue](https://bugs.webkit.org/show_bug.cgi?id=174629), but found a workaround. Race on 🏎. Warning. If you are using the internal MQTT broker, we've had to make a change how the password is set. In the past it would automatically start the broker with the user `homeassistant` and a password equal to the API password. This is no longer the case and you need to configure it yourself now: @@ -90,7 +90,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Keenetic NDMS: user needs to have access to the TelNet interface ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) - openweathermap: wind speed is now correctly in km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) -- Remove Telstra notifiy component: This API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- Remove Telstra notifiy component: This API has been decommissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) - deCONZ - support for power plugs. Power plugs that are of type "On/Off plug-in unit" and "Smart plug" (Osram and Innr among others) will now be switches instead of lights. Entities will be found as switch.entity_id instead of light.entity_id. ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) - HTTP: Make sure use_x_forward_for and trusted_proxies must be configured together ([@awarecan] - [#15804]) ([http docs]) (breaking change) - Velbus: Breaking changes include auto-discovery support so that you don't need to specify modules manually anymore in the configuration file, but just load the velbus component which will automatically load the switch and binary_sensor platforms. In addition, the fan and light platforms are removed since these should be modeled with template platform based on velbus switches. ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([switch.velbus docs]) (breaking change) @@ -129,7 +129,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Round precipitation forecast to 1 decimal place ([@priiduonu] - [#15759]) ([weather.openweathermap docs]) - Add a "Reviewed by Hound" badge ([@salbertson] - [#15767]) - Upgrade Mastodon.py to 1.3.1 ([@fabaff] - [#15766]) ([notify docs]) -- This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- This component API has been decommissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) - Fix docstrings ([@fabaff] - [#15770]) - Update pynetgear to 0.4.1 (bugfixes) ([@MatMaul] - [#15768]) ([device_tracker docs]) - Opensky altitude ([@ioangogo] - [#15273]) ([sensor.opensky docs]) diff --git a/source/_posts/2018-08-29-release-77.markdown b/source/_posts/2018-08-29-release-77.markdown index 0f0673edbab4..4d6eb5658694 100644 --- a/source/_posts/2018-08-29-release-77.markdown +++ b/source/_posts/2018-08-29-release-77.markdown @@ -130,7 +130,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - remove hangouts.users state, simplifies hangouts.conversations ([@hobbypunk90] - [#16191]) ([hangouts docs]) (beta fix) - Update aiohttp to version 3.4.0. ([@Swamp-Ig] - [#16198]) (beta fix) - Revert changes to platforms using self.device ([@Kane610] - [#16209]) (beta fix) -- homematic: Make device avilable again when UNREACH becomes False ([@klada] - [#16202]) ([homematic docs]) (beta fix) +- homematic: Make device available again when UNREACH becomes False ([@klada] - [#16202]) ([homematic docs]) (beta fix) - Change auth warning ([@balloob] - [#16216]) ([http docs]) (beta fix) - rewrite hangouts to use intents instead of commands ([@hobbypunk90] - [#16220]) ([conversation docs]) ([hangouts docs]) (beta fix) - Fix device telldus ([@balloob] - [#16224]) ([tellduslive docs]) (beta fix) @@ -142,7 +142,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Change log level to error when auth provider failed loading ([@awarecan] - [#16235]) (beta fix) - Blow up startup if init auth providers or modules failed ([@awarecan] - [#16240]) (beta fix) - Tweak MFA login flow ([@awarecan] - [#16254]) (beta fix) -- def device shouldnt call it self but self._device ([@Kane610] - [#16255]) ([media_player.plex docs]) (beta fix) +- def device should not call it self but self._device ([@Kane610] - [#16255]) ([media_player.plex docs]) (beta fix) ## All changes @@ -193,7 +193,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add recent context ([@balloob] - [#15989]) - Add ecovacs component ([@OverloadUT] - [#15520]) ([ecovacs docs]) ([vacuum.ecovacs docs]) (new-platform) - Bumped NDMS2 client library to 0.0.4 to get compatible with python 3.5 ([@foxel] - [#16077]) ([device_tracker docs]) -- fritzdect change to current_power_w ([@Danielhiversen] - [#16079]) ([switch.fritzdect docs]) +- fritzdect change to current_power_w ([@Danielhiversen] - [#16079]) - Update pyhomematic to 0.1.47 ([@danielperna84] - [#16083]) ([homematic docs]) - Get user after login flow finished ([@awarecan] - [#16047]) ([auth docs]) - Upgrade pytest to 3.7.2 ([@scop] - [#16091]) @@ -244,7 +244,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - remove hangouts.users state, simplifies hangouts.conversations ([@hobbypunk90] - [#16191]) ([hangouts docs]) (beta fix) - Update aiohttp to version 3.4.0. ([@Swamp-Ig] - [#16198]) (beta fix) - Revert changes to platforms using self.device ([@Kane610] - [#16209]) (beta fix) -- homematic: Make device avilable again when UNREACH becomes False ([@klada] - [#16202]) ([homematic docs]) (beta fix) +- homematic: Make device available again when UNREACH becomes False ([@klada] - [#16202]) ([homematic docs]) (beta fix) - Change auth warning ([@balloob] - [#16216]) ([http docs]) (beta fix) - rewrite hangouts to use intents instead of commands ([@hobbypunk90] - [#16220]) ([conversation docs]) ([hangouts docs]) (beta fix) - Fix device telldus ([@balloob] - [#16224]) ([tellduslive docs]) (beta fix) @@ -256,7 +256,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Change log level to error when auth provider failed loading ([@awarecan] - [#16235]) (beta fix) - Blow up startup if init auth providers or modules failed ([@awarecan] - [#16240]) (beta fix) - Tweak MFA login flow ([@awarecan] - [#16254]) (beta fix) -- def device shouldnt call it self but self._device ([@Kane610] - [#16255]) ([media_player.plex docs]) (beta fix) +- def device should not call it self but self._device ([@Kane610] - [#16255]) ([media_player.plex docs]) (beta fix) [#14516]: https://github.com/home-assistant/home-assistant/pull/14516 [#14557]: https://github.com/home-assistant/home-assistant/pull/14557 @@ -480,7 +480,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sonos docs]: /integrations/sonos/ [splunk docs]: /integrations/splunk/ [switch.deconz docs]: /integrations/deconz#switch -[switch.fritzdect docs]: /integrations/fritzdect [switch.konnected docs]: /integrations/konnected#switch [switch.wemo docs]: /integrations/wemo [switch.xiaomi_miio docs]: /integrations/switch.xiaomi_miio/ diff --git a/source/_posts/2018-09-15-release-78.markdown b/source/_posts/2018-09-15-release-78.markdown index 92655fe19796..ddebd0a075ce 100644 --- a/source/_posts/2018-09-15-release-78.markdown +++ b/source/_posts/2018-09-15-release-78.markdown @@ -480,7 +480,7 @@ The configuration value type should no longer be used. ([@endor-force] - [#15935 [switch.tahoma docs]: /integrations/tahoma [switch.tplink docs]: /integrations/tplink [tahoma docs]: /integrations/tahoma/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tts docs]: /integrations/tts/ [upnp docs]: /integrations/upnp/ [vacuum docs]: /integrations/vacuum/ diff --git a/source/_posts/2018-10-12-release-80.markdown b/source/_posts/2018-10-12-release-80.markdown index fa54d4a3f935..4351081033e3 100644 --- a/source/_posts/2018-10-12-release-80.markdown +++ b/source/_posts/2018-10-12-release-80.markdown @@ -80,7 +80,7 @@ On the devices side, we got basic support for the new IKEA TRÅDFRI switches, Ho [camera.blink docs]: /integrations/blink [cloud docs]: /integrations/cloud/ [sensor.blink docs]: /integrations/blink -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ ## Release 0.80.3 - October 18 @@ -709,7 +709,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.tradfri docs]: /integrations/tradfri [switch.volvooncall docs]: /integrations/volvooncall [switch.xiaomi_aqara docs]: /integrations/switch.xiaomi_aqara/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tibber docs]: /integrations/tibber/ [timer docs]: /integrations/timer/ [tradfri docs]: /integrations/tradfri/ diff --git a/source/_posts/2018-10-29-release-81.markdown b/source/_posts/2018-10-29-release-81.markdown index 8ac74a3bdb70..17466e657ece 100644 --- a/source/_posts/2018-10-29-release-81.markdown +++ b/source/_posts/2018-10-29-release-81.markdown @@ -843,7 +843,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.xiaomi_aqara docs]: /integrations/switch.xiaomi_aqara/ [switch.xiaomi_miio docs]: /integrations/switch.xiaomi_miio/ [switch.zwave docs]: /integrations/zwave -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tts docs]: /integrations/tts/ [twilio docs]: /integrations/twilio/ [unifi docs]: /integrations/unifi/ diff --git a/source/_posts/2018-11-08-release-82.markdown b/source/_posts/2018-11-08-release-82.markdown index cdc29a83f869..1f95b61a1a31 100644 --- a/source/_posts/2018-11-08-release-82.markdown +++ b/source/_posts/2018-11-08-release-82.markdown @@ -678,7 +678,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.xiaomi_aqara docs]: /integrations/switch.xiaomi_aqara/ [switch.xiaomi_miio docs]: /integrations/switch.xiaomi_miio/ [switch.zigbee docs]: /integrations/zigbee#switch -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tts docs]: /integrations/tts/ [twilio docs]: /integrations/twilio/ [updater docs]: /integrations/updater/ diff --git a/source/_posts/2018-12-12-release-84.markdown b/source/_posts/2018-12-12-release-84.markdown index baa185b9a891..fe2b3f6e6ffa 100644 --- a/source/_posts/2018-12-12-release-84.markdown +++ b/source/_posts/2018-12-12-release-84.markdown @@ -11,7 +11,7 @@ og_image: /images/blog/2018-12-release-84/components.png -Time for the last release of the year. We were hoping to end the year with an enourmous bang and make Lovelace the default UI. However, in our final stretch we realized that to get to the experience that we wanted, we had to make more last minute changes than we felt comfortable making. If you are a Lovelace tester, please read the section for existing testers below. +Time for the last release of the year. We were hoping to end the year with an enormous bang and make Lovelace the default UI. However, in our final stretch we realized that to get to the experience that we wanted, we had to make more last minute changes than we felt comfortable making. If you are a Lovelace tester, please read the section for existing testers below. We want to wish everybody happy holidays and want to thank all our contributors to the code, the documentation and all the ones in the chat for making up our amazing community. We had a great year with a lot of accomplishments and are looking forward to see all the great stuff you all come up with in 2019. Cheers! 🥂 diff --git a/source/_posts/2019-01-09-release-85.markdown b/source/_posts/2019-01-09-release-85.markdown index e34cb14c9bfc..0a6972d6f56c 100644 --- a/source/_posts/2019-01-09-release-85.markdown +++ b/source/_posts/2019-01-09-release-85.markdown @@ -78,7 +78,7 @@ Experiencing issues introduced by this release? Please report them in our [issue ## Breaking Changes -- Targetting all entities in a domain by not sending an entity_id to a service is now deprecated. Instead, send `entity_id: all` if you want to target all. The old method will work for a couple of releases more, but will print a warning. Please migrate. ([@balloob] - [#19006]) (breaking change) +- Targeting all entities in a domain by not sending an entity_id to a service is now deprecated. Instead, send `entity_id: all` if you want to target all. The old method will work for a couple of releases more, but will print a warning. Please migrate. ([@balloob] - [#19006]) (breaking change) - The default interval of the weather component was aligned with the sensor component and is now 30 seconds instead of 15 seconds. ([@fabaff] - [#19186]) ([weather docs]) (breaking change) - In order to fix the below bug, default entity_ids will change (for example, `sensor.17track_packages_delivered` will change to `sensor.seventeentrack_packages_delivered)`. ([@bachya] - [#19213]) ([sensor.seventeentrack docs]) (breaking change) - Change `STATE_AUTO` to `STATE_HEAT` and `STATE_AWAY` to `STATE_ECO` to conform to climate DOMAIN standards. Change made to fix Alexa/Google Assistant support for this component. ([@marchingphoenix] - [#19242]) ([climate.eq3btsmart docs]) (breaking change) diff --git a/source/_posts/2019-01-23-release-86.markdown b/source/_posts/2019-01-23-release-86.markdown index 018bbddd21ce..bcace0a82a3e 100644 --- a/source/_posts/2019-01-23-release-86.markdown +++ b/source/_posts/2019-01-23-release-86.markdown @@ -132,7 +132,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Nest sensor: Correctly map hvac_state to Home Assistant states. Heating -> heat, Cooling -> cool. ([@mitchellrj] - [#19895]) ([sensor.nest docs]) (breaking change) - Add nad telnet media player and merge nadtcp into media_player.nad ([@rymsha] - [#19704]) ([media_player.nad docs]) (breaking change) - Prezzi Benzina: Added the service type to the name of the sensor to better differentiate between different service tiers. ([@eliseomartelli] - [#19980]) ([sensor.prezzibenzina docs]) (breaking change) -- PostNL attributes are updated, contain now more information ([@basbl] - [#18334]) ([sensor.postnl docs]) (breaking change) +- PostNL attributes are updated, contain now more information ([@basbl] - [#18334]) (breaking change) - Support for multiple Fibaro gateways. A list of gateways is expected instead of a single config. ([@pbalogh77] - [#19705]) ([fibaro docs]) ([binary_sensor.fibaro docs]) ([cover.fibaro docs]) ([light.fibaro docs]) ([scene.fibaro docs]) ([sensor.fibaro docs]) ([switch.fibaro docs]) (breaking change) - Upgrade greeneye_monitor to 1.0. It now requires the full 8 digit serial number. ([@jkeljo] - [#19631]) ([greeneye_monitor docs]) (breaking change) - Previous "manual" registration of roku devices will need to be updated or removed (discovery should discover all rokus on your network). ([@soberstadt] - [#17548]) ([roku docs]) ([media_player.roku docs]) ([remote.roku docs]) (breaking change) (new-platform) @@ -244,7 +244,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add ability to monitor relay events ([@oblogic7] - [#18730]) ([doorbird docs]) - Add support for 'via_hub' for device_info ([@fredrike] - [#19454]) ([mqtt docs]) - Fix the anthemav component by removing a debugging line. ([@achatham] - [#19979]) ([media_player.anthemav docs]) -- Expose more information about shipments by PostNL ([@basbl] - [#18334]) ([sensor.postnl docs]) (breaking change) +- Expose more information about shipments by PostNL ([@basbl] - [#18334]) (breaking change) - Split locative to a separate component ([@rohankapoorcom] - [#19964]) ([device_tracker docs]) ([locative docs]) (breaking change) - Support for multiple Fibaro gateways ([@pbalogh77] - [#19705]) ([fibaro docs]) ([binary_sensor.fibaro docs]) ([cover.fibaro docs]) ([light.fibaro docs]) ([scene.fibaro docs]) ([sensor.fibaro docs]) ([switch.fibaro docs]) (breaking change) - Add Hass.io user headers to supervisor proxy ([@balloob] - [#19395]) ([hassio docs]) @@ -279,7 +279,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Lowercase code format ([@balloob] - [#20077]) ([alarm_control_panel docs]) (breaking change) - fix logic error in dubln bus ([@ttroy50] - [#20075]) ([sensor.dublin_bus_transport docs]) - Bump abode to 0.15.0 ([@shred86] - [#20064]) ([abode docs]) -- Change return text code for alarm control panels ([@arsaboo] - [#20055]) ([alarm_control_panel.alarmdotcom docs]) +- Change return text code for alarm control panels ([@arsaboo] - [#20055]) - Adjust OpenUV integration for upcoming API limit changes ([@bachya] - [#19949]) ([openuv docs]) (breaking change) - Fix ihc issues caused by update to defusedxml ([@mopolus] - [#20091]) ([ihc docs]) - Move ESPHome Source Files ([@OttoWinter] - [#20092]) ([esphome docs]) @@ -596,7 +596,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [abode docs]: /integrations/abode/ [ads docs]: /integrations/ads/ [alarm_control_panel docs]: /integrations/alarm_control_panel/ -[alarm_control_panel.alarmdotcom docs]: /integrations/alarmdotcom [alarm_control_panel.arlo docs]: /integrations/arlo [alarm_control_panel.elkm1 docs]: /integrations/elkm1 [alarm_control_panel.homekit_controller docs]: /integrations/homekit_controller @@ -687,7 +686,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.mqtt docs]: /integrations/sensor.mqtt/ [sensor.mychevy docs]: /integrations/mychevy [sensor.nest docs]: /integrations/nest#sensor -[sensor.postnl docs]: /integrations/postnl [sensor.prezzibenzina docs]: /integrations/prezzibenzina [sensor.rest docs]: /integrations/rest [sensor.sma docs]: /integrations/sma#sensors diff --git a/source/_posts/2019-02-20-release-88.markdown b/source/_posts/2019-02-20-release-88.markdown index 7c676456642f..1258a22bef64 100644 --- a/source/_posts/2019-02-20-release-88.markdown +++ b/source/_posts/2019-02-20-release-88.markdown @@ -164,11 +164,11 @@ Experiencing issues introduced by this release? Please report them in our [issue - SmartThings Component Enhancements/Fixes ([@andrewsayre] - [#21085]) ([smartthings docs]) (beta fix) - Fix SmartThings Translation Error ([@andrewsayre] - [#21103]) ([smartthings docs]) (beta fix) - Fix track_change error in utility_meter ([@dgomes] - [#21134]) ([utility_meter docs]) (beta fix) -- Update pyEight for Python 3.7 Compatability ([@mezz64] - [#21161]) ([eight_sleep docs]) (beta fix) +- Update pyEight for Python 3.7 Compatibility ([@mezz64] - [#21161]) ([eight_sleep docs]) (beta fix) - Add power source to device and clean up zha listeners ([@dmulcahey] - [#21174]) ([zha docs]) (beta fix) - Fix for #19072 ([@sjabby] - [#21175]) ([light.flux_led docs]) (beta fix) - Upgrade aioimaplib for Python 3.7 compatibility ([@amelchio] - [#21197]) ([sensor.imap docs]) (beta fix) -- ordered by last occurence ([@dgomes] - [#21200]) ([system_log docs]) (beta fix) +- ordered by last occurrence ([@dgomes] - [#21200]) ([system_log docs]) (beta fix) - Set aioharmony version to 0.1.8 ([@ehendrix23] - [#21213]) ([harmony docs]) (breaking change) (beta fix) - Push pyads to 3.0.7 ([@carstenschroeder] - [#21216]) ([ads docs]) (beta fix) - Refactor ZHA listeners into channels ([@dmulcahey] - [#21196]) ([zha docs]) (beta fix) @@ -350,11 +350,11 @@ Experiencing issues introduced by this release? Please report them in our [issue - SmartThings Component Enhancements/Fixes ([@andrewsayre] - [#21085]) ([smartthings docs]) (beta fix) - Fix SmartThings Translation Error ([@andrewsayre] - [#21103]) ([smartthings docs]) (beta fix) - Fix track_change error in utility_meter ([@dgomes] - [#21134]) ([utility_meter docs]) (beta fix) -- Update pyEight for Python 3.7 Compatability ([@mezz64] - [#21161]) ([eight_sleep docs]) (beta fix) +- Update pyEight for Python 3.7 Compatibility ([@mezz64] - [#21161]) ([eight_sleep docs]) (beta fix) - Add power source to device and clean up zha listeners ([@dmulcahey] - [#21174]) ([zha docs]) (beta fix) - Fix for #19072 ([@sjabby] - [#21175]) ([light.flux_led docs]) (beta fix) - Upgrade aioimaplib for Python 3.7 compatibility ([@amelchio] - [#21197]) ([sensor.imap docs]) (beta fix) -- ordered by last occurence ([@dgomes] - [#21200]) ([system_log docs]) (beta fix) +- ordered by last occurrence ([@dgomes] - [#21200]) ([system_log docs]) (beta fix) - Set aioharmony version to 0.1.8 ([@ehendrix23] - [#21213]) ([harmony docs]) (breaking change) (beta fix) - Push pyads to 3.0.7 ([@carstenschroeder] - [#21216]) ([ads docs]) (beta fix) - Refactor ZHA listeners into channels ([@dmulcahey] - [#21196]) ([zha docs]) (beta fix) diff --git a/source/_posts/2019-03-13-release-89.markdown b/source/_posts/2019-03-13-release-89.markdown index 9999d3ed86bd..d407e4730cc0 100644 --- a/source/_posts/2019-03-13-release-89.markdown +++ b/source/_posts/2019-03-13-release-89.markdown @@ -39,7 +39,7 @@ __Existing SmartThings configuration entries will be removed,__ including the Sm - Rewrite of Toon component ([@frenck] - [#21186]) ([toon docs]) (breaking change) (new-platform) - Times of The Day Binary Sensor ([@kstaniek] - [#20068]) ([binary_sensor.tod docs]) (new-platform) - Add switch platform for Danfoss Air and additional sensors. ([@JonasPed] - [#21046]) ([danfoss_air docs]) (new-platform) -- Owlet baby monitor component ([@oblogic7] - [#21108]) ([owlet docs]) (new-platform) +- Owlet baby monitor component ([@oblogic7] - [#21108]) (new-platform) - deCONZ thermostat support ([@Kane610] - [#20586]) ([deconz docs]) (new-platform) - Added device tracker support for Ubee Router ([@mzdrale] - [#19586]) ([device_tracker docs]) (new-platform) - Add LCN cover platform ([@alengwenus] - [#20288]) ([lcn docs]) ([cover.lcn docs]) (new-platform) @@ -185,8 +185,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - Config Entry migrations ([@andrewsayre] - [#20888]) - Refactor http CachingStaticResource ([@awarecan] - [#21062]) ([http docs]) - Add index parameter to scrape sensor ([@davidbb] - [#21084]) ([sensor.scrape docs]) -- Owlet baby monitor component ([@oblogic7] - [#21108]) ([owlet docs]) (new-platform) -- Order imports ([@fabaff] - [#21117]) ([owlet docs]) +- Owlet baby monitor component ([@oblogic7] - [#21108]) (new-platform) +- Order imports ([@fabaff] - [#21117]) - Add Groups to Homematic IP ([@SukramJ] - [#21076]) ([homematicip_cloud docs]) - Remove outdated url pattern match support for static file hosting ([@awarecan] - [#21109]) ([http docs]) - Upgrade pytest to 4.2.1 ([@scop] - [#21112]) @@ -351,7 +351,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Avoid recorder thread crashing ([@balloob] - [#21668]) (beta fix) - check we have a tb ([@dgomes] - [#21670]) ([system_log docs]) (beta fix) - Fix ADS race condition ([@carstenschroeder] - [#21677]) ([ads docs]) (beta fix) -- resync hass that changes have occured ([@fredrike] - [#21705]) ([tellduslive docs]) (beta fix) +- resync hass that changes have occurred ([@fredrike] - [#21705]) ([tellduslive docs]) (beta fix) - Upgrade toonapilib to 3.2.1 ([@frenck] - [#21706]) ([toon docs]) (beta fix) [#18091]: https://github.com/home-assistant/home-assistant/pull/18091 @@ -668,7 +668,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [netatmo docs]: /integrations/netatmo/ [nissan_leaf docs]: /integrations/nissan_leaf/ [notify docs]: /integrations/notify/ -[owlet docs]: /integrations/owlet/ [person docs]: /integrations/person/ [point docs]: /integrations/point/ [prometheus docs]: /integrations/prometheus/ @@ -714,7 +713,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.tplink docs]: /integrations/tplink [system_log docs]: /integrations/system_log/ [tahoma docs]: /integrations/tahoma/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tellduslive docs]: /integrations/tellduslive/ [tibber docs]: /integrations/tibber/ [toon docs]: /integrations/toon/ diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown index 0e5310b13412..3ce287d3d2d8 100644 --- a/source/_posts/2019-03-20-release-90.markdown +++ b/source/_posts/2019-03-20-release-90.markdown @@ -227,7 +227,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the - ZHA fixes ([@dmulcahey] - [#21592]) ([zha docs]) - Update pyhomematic ([@danielperna84] - [#21600]) ([homematic docs]) - Add parameter hold_secs for Harmony remote send command ([@ehendrix23] - [#19650]) ([remote docs]) ([remote.harmony docs]) -- Upgrade motorparts to 1.1.0 ([@rohankapoorcom] - [#21602]) ([sensor.mopar docs]) +- Upgrade motorparts to 1.1.0 ([@rohankapoorcom] - [#21602]) - Further Yale ZWave lock device mapping cleanup ([@mw-white] - [#21128]) ([zwave docs]) - Added support for multiple Netatmo thermostats/valves ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs]) (breaking change) - Add the velbus sync clock service ([@Cereal2nd] - [#21308]) ([velbus docs]) @@ -792,7 +792,6 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the [sensor.dsmr docs]: /integrations/dsmr [sensor.flunearyou docs]: /integrations/flunearyou [sensor.loopenergy docs]: /integrations/loopenergy -[sensor.mopar docs]: /integrations/mopar [sensor.mqtt_room docs]: /integrations/mqtt_room [sensor.netdata docs]: /integrations/netdata [sensor.nmbs docs]: /integrations/nmbs diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 2949fc1e9bac..8ea193bece92 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -24,7 +24,7 @@ We're still in the process of updating more cameras to support the stream compon A BIG shout to [@awarecan], who has migrated our CI infrastructure to [CircleCI](https://www.circleci.com) and [Codecov](https://codecov.io/). CircleCI's advanced caching and code splitting controls has speed up tests significantly. Codecov tracks our code coverage and generates detailed reports for each contribution to see how well it is tested. -And in case you missed the announcement, we will soon start working on [an official Android app](/blog/2019/04/01/android/). And in case it wasn't clear, our other announcement, that we would [occassionally show ads in the UI](https://twitter.com/home_assistant/status/1112752645763223552), was an April fools joke 😁. +And in case you missed the announcement, we will soon start working on [an official Android app](/blog/2019/04/01/android/). And in case it wasn't clear, our other announcement, that we would [occasionally show ads in the UI](https://twitter.com/home_assistant/status/1112752645763223552), was an April fools joke 😁. ## Notable breaking change @@ -105,7 +105,7 @@ If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Cod ## Release 0.91.2 - April 8 -- Correctly load Mopar's config ([@rohankapoorcom] - [#22771]) ([mopar docs]) +- Correctly load Mopar's config ([@rohankapoorcom] - [#22771]) - Fix konnected unique_id computation for switches ([@heythisisnate] - [#22777]) ([konnected docs]) (breaking change) - make the custom polling actually request state ([@dmulcahey] - [#22778]) ([zha docs]) - ZHA Light debug logging. ([@Adminiuga] - [#22776]) ([zha docs]) @@ -153,7 +153,6 @@ If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Cod [hassio docs]: /integrations/hassio/ [konnected docs]: /integrations/konnected/ [mobile_app docs]: /integrations/mobile_app/ -[mopar docs]: /integrations/mopar/ [tado docs]: /integrations/tado/ [yeelight docs]: /integrations/yeelight/ [zha docs]: /integrations/zha/ @@ -210,9 +209,9 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Axis__ - Events supplied from component might differ. Events will not be configurable in the beginning but will instead provide a subset set of events supported per device. This will be configurable in a later stage when config entry options are available. Configuration.yaml support for Axis component will be removed in the future so make sure to remove references to Axis component after upgrade. ([@Kane610] - [#18543]) ([axis docs]) - __HTTP__ - Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) ([http docs]) - __Dark Sky__ - Dark Sky provides hourly forecasts for various monitored conditions. This change creates new sensors for each hourly forecasted condition with suffix `_h` while adding the suffix `_d` to the daily forecasted conditions. For example, now a `sensor.dark_sky_summary_d` and `sensor.dark_sky_summary_h` will be created if the forecast and hourly_forecast parameters are populated. ([@rtclauss] - [#21820]) ([darksky docs]) -- __Konnected__ - This will change the internal unique_id for Konnected switches (i.e. siren, buzzer, generic switch). Users will need to manually remove the orphaned switch entities from the entity registry after updating and re-configure any changes stored in the entity registry (i.e. name and entity_id), as their unique IDs will change. ([@heythisisnate] - [#22389]) ([konnected docs]) +- __Konnected__ - This will change the internal unique_id for Konnected switches (i.e., siren, buzzer, generic switch). Users will need to manually remove the orphaned switch entities from the entity registry after updating and re-configure any changes stored in the entity registry (i.e., name and entity_id), as their unique IDs will change. ([@heythisisnate] - [#22389]) ([konnected docs]) -- __Mopar__ - The mopar sensor platform has been broken up into a base component with sensor, switch, and lock platforms. The sensor.mopar_remote_command service has been removed since the functionality has been folded into the new platforms and the new mopar.sound_horn service. Please view the documentation to see the new setup instructions. ([@rohankapoorcom] - [#21526]) ([mopar docs]) +- __Mopar__ - The mopar sensor platform has been broken up into a base component with sensor, switch, and lock platforms. The sensor.mopar_remote_command service has been removed since the functionality has been folded into the new platforms and the new mopar.sound_horn service. Please view the documentation to see the new setup instructions. ([@rohankapoorcom] - [#21526]) ## Beta Fixes @@ -272,7 +271,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Tibber, Add price level ([@Danielhiversen] - [#22085]) ([tibber docs]) - Fix AttributeError traceback with darksky ([@iamtpage] - [#22101]) ([darksky docs]) - Add service description for services. ([@cgtobi] - [#21897]) -- Handle occassional 502 Bad Gateway from SimpliSafe ([@bachya] - [#22131]) ([simplisafe docs]) +- Handle occasional 502 Bad Gateway from SimpliSafe ([@bachya] - [#22131]) ([simplisafe docs]) - Loosen field retrieval from Pollen.com ([@bachya] - [#22132]) ([pollen docs]) - Handle possible exception during Ambient PWS reconnect ([@bachya] - [#22134]) ([ambient_station docs]) - Additional sensors and fixed icons, attributes and device classes. ([@endor-force] - [#22139]) ([trafikverket_weatherstation docs]) @@ -303,7 +302,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - add ZHA channel name property ([@Adminiuga] - [#22218]) ([zha docs]) - Handle on/off through TemperatrureSetting trait. ([@Swamp-Ig] - [#21842]) ([google_assistant docs]) - Change .now() to .utcnow() ([@rdbahm] - [#22233]) ([season docs]) -- Upgrade tibber libary, support solar production ([@Danielhiversen] - [#22261]) ([tibber docs]) +- Upgrade tibber library, support solar production ([@Danielhiversen] - [#22261]) ([tibber docs]) - Upgrade sqlalchemy to 1.3.0 ([@fabaff] - [#22269]) ([recorder docs]) ([sql docs]) - Plex: Avoid refreshing by both device and session methods ([@jjlawren] - [#22266]) ([plex docs]) - Bump androidtv to 0.0.13 ([@JeffLIrion] - [#22279]) ([androidtv docs]) @@ -415,7 +414,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Move HKDevice into connection ([@Jc2k] - [#22430]) ([homekit_controller docs]) - Incoming SMS handling for netgear_lte ([@amelchio] - [#22402]) ([netgear_lte docs]) - Entur upgrade to v0.2.0: async polling, number of departures, omit non boarding departures ([@hfurubotten] - [#22001]) ([entur_public_transport docs]) -- Mopar split ([@rohankapoorcom] - [#21526]) ([mopar docs]) (breaking change) +- Mopar split ([@rohankapoorcom] - [#21526]) (breaking change) - Fix too-abrubt SimpliSafe data refresh termination on error ([@bachya] - [#22466]) ([simplisafe docs]) - Great migration notify ([@robbiet480] - [#22406]) - Print error instead of warning for custom platforms in legacy format ([@balloob] - [#22486]) @@ -795,7 +794,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [microsoft docs]: /integrations/microsoft/ [mold_indicator docs]: /integrations/mold_indicator/ [moon docs]: /integrations/moon/ -[mopar docs]: /integrations/mopar/ [mqtt docs]: /integrations/mqtt/ [nanoleaf docs]: /integrations/nanoleaf/ [ness_alarm docs]: /integrations/ness_alarm/ @@ -831,7 +829,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch docs]: /integrations/switch/ [switchbot docs]: /integrations/switchbot/ [systemmonitor docs]: /integrations/systemmonitor/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tellduslive docs]: /integrations/tellduslive/ [tfiac docs]: /integrations/tfiac/ [tibber docs]: /integrations/tibber/ diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index 150497511b6b..421882711cf2 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -351,7 +351,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix manifest codeowners ([@cdce8p] - [#22871]) ([cover docs]) ([demo docs]) - Added REQUIREMENTS back to Ambient ([@bachya] - [#22875]) ([ambient_station docs]) - Minor sensor fixes ([@robbiet480] - [#22884]) ([mobile_app docs]) -- add myself as codeowner ([@fbradyirl] - [#22885]) ([cisco_ios docs]) ([cisco_mobility_express docs]) ([cisco_webex_teams docs]) ([ciscospark docs]) ([enigma2 docs]) ([hikvisioncam docs]) ([luci docs]) +- add myself as codeowner ([@fbradyirl] - [#22885]) ([cisco_ios docs]) ([cisco_mobility_express docs]) ([cisco_webex_teams docs]) ([enigma2 docs]) ([hikvisioncam docs]) ([luci docs]) - Bump pypi module version for enigma2 ([@fbradyirl] - [#22886]) - Add zwave network key validator ([@cgtobi] - [#22785]) ([zwave docs]) - force_update=False (not None) ([@akasma74] - [#22867]) ([rflink docs]) @@ -978,7 +978,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [cisco_ios docs]: /integrations/cisco_ios/ [cisco_mobility_express docs]: /integrations/cisco_mobility_express/ [cisco_webex_teams docs]: /integrations/cisco_webex_teams/ -[ciscospark docs]: /integrations/ciscospark/ [citybikes docs]: /integrations/citybikes/ [cloud docs]: /integrations/cloud/ [command_line docs]: /integrations/command_line/ @@ -1077,7 +1076,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [stream docs]: /integrations/stream/ [supla docs]: /integrations/supla/ [switch docs]: /integrations/switch/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tellduslive docs]: /integrations/tellduslive/ [tplink docs]: /integrations/tplink/ [trend docs]: /integrations/trend/ diff --git a/source/_posts/2019-05-16-release-93.markdown b/source/_posts/2019-05-16-release-93.markdown index 0f14aa39063b..92b8925b8d5f 100644 --- a/source/_posts/2019-05-16-release-93.markdown +++ b/source/_posts/2019-05-16-release-93.markdown @@ -379,7 +379,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - deCONZ - Retry on BridgeBusy errors ([@Kane610] - [#23436]) ([deconz docs]) - Added option to select photoblack cartridge ([@ThaStealth] - [#23433]) ([epsonworkforce docs]) (breaking change) - Fix bad request for some IP ONVIF camera ([@GeertvanHorrik] - [#22972]) ([onvif docs]) -- Bump pyteleloisirs version ([@SNoof85] - [#23661]) ([liveboxplaytv docs]) +- Bump pyteleloisirs version ([@SNoof85] - [#23661]) - Upgrade psutil to 5.6.2 ([@fabaff] - [#23671]) ([systemmonitor docs]) - Upgrade shodan to 1.13.0 ([@fabaff] - [#23675]) ([shodan docs]) - Upgrade slacker to 0.13.0 ([@fabaff] - [#23672]) ([slack docs]) @@ -799,7 +799,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [iqvia docs]: /integrations/iqvia/ [lcn docs]: /integrations/lcn/ [lifx docs]: /integrations/lifx/ -[liveboxplaytv docs]: /integrations/liveboxplaytv/ [local_file docs]: /integrations/local_file/ [locative docs]: /integrations/locative/ [logi_circle docs]: /integrations/logi_circle/ @@ -854,7 +853,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [systemmonitor docs]: /integrations/systemmonitor/ [tapsaff docs]: /integrations/tapsaff/ [ted5000 docs]: /integrations/ted5000/ -[telegram_bot docs]: /integrations/telegram_chatbot/ +[telegram_bot docs]: /integrations/telegram_bot/ [tellduslive docs]: /integrations/tellduslive/ [tensorflow docs]: /integrations/tensorflow/ [thethingsnetwork docs]: /integrations/thethingsnetwork/ diff --git a/source/_posts/2019-08-07-release-97.markdown b/source/_posts/2019-08-07-release-97.markdown index f6b3bb31ccb1..048c7490ce3b 100644 --- a/source/_posts/2019-08-07-release-97.markdown +++ b/source/_posts/2019-08-07-release-97.markdown @@ -81,7 +81,7 @@ We wrote about how we use Azure DevOps to automate the development of Home Assis ## Release 0.97.1 - August 9 -A new breaking change was introduced with 0.97.1 to accomodate for the HaveIBeenPwned shutting down v2 of their API on August 18. The integration has been migrated to using v3. +A new breaking change was introduced with 0.97.1 to accommodate for the HaveIBeenPwned shutting down v2 of their API on August 18. The integration has been migrated to using v3. - Update HIBP sensor to use API v3 and API Key ([@aetaric] - [#25699]) ([haveibeenpwned docs]) (breaking change) - Update Cisco Mobility Express module version ([@fbradyirl] - [#25770]) ([cisco_mobility_express docs]) diff --git a/source/_posts/2019-08-28-release-98.markdown b/source/_posts/2019-08-28-release-98.markdown index 1a83a6e67d2c..b94a38bf296a 100644 --- a/source/_posts/2019-08-28-release-98.markdown +++ b/source/_posts/2019-08-28-release-98.markdown @@ -71,7 +71,7 @@ For more background on this decision, see [ADR-006](https://github.com/home-assi With this release we have deprecated integrations that rely on webscraping. These will be removed from Home Assistant in a future release. Our [scrape](/integrations/scrape/) integration will remain part of Home Assistant. -Webscraping is fragile, breaks often requires frequent updates and there have been occassions where websites have banned our users. +Webscraping is fragile, breaks often requires frequent updates and there have been occasions where websites have banned our users. Users that rely on these integrations can continue using them as custom components. @@ -371,7 +371,7 @@ anymore. - ([@abmantis] - [#25971]) - Update sensor.py ([@MatsNl] - [#25825]) ([statistics docs]) - Add pip-wheel-metadata in .gitignore ([@oncleben31] - [#25832]) - Fix configuration field name ([@skarcha] - [#25840]) ([plex docs]) -- Allow components with empty list config (i.e. person) in packages ([@kellerza] - [#25827]) +- Allow components with empty list config (i.e., person) in packages ([@kellerza] - [#25827]) - Make reproduce state use platform instead of rely on function ([@balloob] - [#25856]) ([climate docs]) ([group docs]) ([media_player docs]) - Type check various base components ([@scop] - [#25878]) - Fix script/translations_develop launch + clean some unused error i18n ([@Quentame] - [#25459]) ([arcam_fmj docs]) ([heos docs]) ([tellduslive docs]) ([twentemilieu docs]) ([upnp docs]) ([vesync docs]) ([zha docs]) diff --git a/source/_posts/2019-10-10-release-100.markdown b/source/_posts/2019-10-10-release-100.markdown index 8ff99288b0f5..f8b9ab5d5a6a 100644 --- a/source/_posts/2019-10-10-release-100.markdown +++ b/source/_posts/2019-10-10-release-100.markdown @@ -234,7 +234,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - **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]) + 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]) @@ -270,16 +270,16 @@ Experiencing issues introduced by this release? Please report them in our [issue - **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) + - 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]) +- **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 preparation 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: @@ -455,7 +455,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - 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]) +- Bump pyowlet to 1.0.3 ([@jaburges] - [#26892]) - 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]) @@ -955,7 +955,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [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/ diff --git a/source/_posts/2019-10-25-rip-hassbian.markdown b/source/_posts/2019-10-25-rip-hassbian.markdown index 22e8f52ff193..99e50ae9a820 100644 --- a/source/_posts/2019-10-25-rip-hassbian.markdown +++ b/source/_posts/2019-10-25-rip-hassbian.markdown @@ -7,38 +7,42 @@ date_formatted: "October 26, 2019" author: Fredrik Lindqvist author_twitter: Landrash comments: true -categories: community +categories: Announcements --- It's time for what was once the simplest way to install Home Assistant to retire. ## R.I.P Hassbian -Some of you will probably wonder why Hassbian is being retired and I'll try to give a proper motivation. +Some of you will probably wonder why Hassbian is being retired and I'll try to give a proper motivation. First of is the age-old factor of **time**. I as the lead developer of Hassbian haven't been able to give it the time and attention it requires, and there have been few others that have pushed the project further. The one exception being [@ludeeus] who's done most of the heavy lifting when the image was retooled to use a proper apt package and repository. Second is that it's no longer the best option for most to use as an installation method. Hass.io has surpassed Hassbian in almost all ways I can imagine. ## Next Step for Hassbian + Since Hassbian has been around for quite a while, there are quite a few users that don't want Hassbian to go away. To make this as easy as possible for those users, here's the plan. - - The repositories [pi-gen] and [hassbian-scripts] hosting the Hassbian projects files will be moved to a new organization. - - A last release will be done by me mid Q4 2019. This image will be hosted under the [pi-gen] repository. - - The [pi-gen] repository will be reworked to work with a standard [raspbian] image with minor modifications for anyone wanting to create their own "Hassbian like" image. This has always been possible, but the current repository is a bit out of date with the current layout of the Raspbian image. - - The [hassbian-scripts] package will get a final release and will continue to be hosted on Gitlab. Some minor changes will be made to reflect the changes to the project. +- The repositories [pi-gen] and [hassbian-scripts] hosting the Hassbian projects files will be moved to a new organization. +- A last release will be done by me mid Q4 2019. This image will be hosted under the [pi-gen] repository. +- The [pi-gen] repository will be reworked to work with a standard [raspbian] image with minor modifications for anyone wanting to create their own "Hassbian like" image. This has always been possible, but the current repository is a bit out of date with the current layout of the Raspbian image. +- The [hassbian-scripts] package will get a final release and will continue to be hosted on Gitlab. Some minor changes will be made to reflect the changes to the project. ## Next step for Hassbian users + The Hassbian image has always aimed to be the same as a manual Raspbian Lite installation with some packages added. There won't really be any big changes for all of the users of Hassbian and for documentation, please refer to the [Manual installation on a Raspberry PI] method. ## Alternatives + If you want to continue using something similar, have a look at the [manual installation on a Raspberry Pi] since it is the base Hassbian was created from. For everyone else, I would wholeheartedly recommend Hass.io since it is what I personally use now (It's what I had hoped Hassbian could have been but better). ## Last but not least + Last but not least, thank you to all of those who contributed, in any way, to the Hassbian project and image. [@ludeeus]: https://github.com/ludeeus [pi-gen]: https://github.com/Hassbian/pi-gen [hassbian-scripts]: https://github.com/Hassbian/hassbian-scripts -[Manual installation on a Raspberry Pi]: /docs/installation/raspberry-pi/ +[manual installation on a raspberry pi]: /docs/installation/raspberry-pi/ [raspbian]: https://www.raspberrypi.org/downloads/raspbian/ diff --git a/source/_posts/2019-10-30-release-101.markdown b/source/_posts/2019-10-30-release-101.markdown index d6b40c0afa81..88d569ae8460 100644 --- a/source/_posts/2019-10-30-release-101.markdown +++ b/source/_posts/2019-10-30-release-101.markdown @@ -50,7 +50,7 @@ Your webhook should be available from the internet, if you have a cloud subscrip As you may have already read, we'll be sunsetting Hassbian. -Hassbian was a superset of Raspbian optimized for Home Assistant. With limited time from the developers and easier alternatives as [Hass.io](hhttps://www.home-assistant.io/hassio/) it is time to sunset Hassbian. +Hassbian was a superset of Raspbian optimized for Home Assistant. With limited time from the developers and easier alternatives as [Hass.io](https://www.home-assistant.io/hassio/) it is time to sunset Hassbian. A big thank you to all those who worked on Hassbian - specifically [@landrash](https://github.com/landrash), who was the primary driver of this for so long, and [@ludeeus](https://github.com/ludeeus). @@ -567,14 +567,14 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] - Move imports in keyboard component ([@Quentame] - [#27791]) ([keyboard docs]) - Move imports in linux_battery component ([@Quentame] - [#27789]) ([linux_battery docs]) - Move imports in ampio component ([@Bouni] - [#27788]) ([ampio docs]) -- Move imports in liveboxplaytv component ([@Quentame] - [#27790]) ([liveboxplaytv docs]) +- Move imports in liveboxplaytv component ([@Quentame] - [#27790]) - Move imports in amcrest component ([@Bouni] - [#27787]) ([amcrest docs]) - Move imports in imap + imap_email_content component ([@Quentame] - [#27793]) ([imap docs]) ([imap_email_content docs]) - Move imports in netgear_lte component ([@Quentame] - [#27777]) ([netgear_lte docs]) - Move imports in nest component ([@Quentame] - [#27778]) ([nest docs]) - moved imports to top level ([@Bouni] - [#27781]) ([airvisual docs]) - Move imports in netgear component ([@Quentame] - [#27776]) ([netgear docs]) -- moved imports to top level ([@Bouni] - [#27784]) ([alarmdotcom docs]) +- moved imports to top level ([@Bouni] - [#27784]) - Generate ADB key for Android TV integration ([@JeffLIrion] - [#27344]) ([androidtv docs]) - moved imports to top level ([@Bouni] - [#27782]) ([aladdin_connect docs]) - Move imports in android_ip_webcam component ([@Bouni] - [#27797]) ([android_ip_webcam docs]) @@ -627,13 +627,13 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] - Refactor the conversation integration ([@balloob] - [#27839]) ([conversation docs]) ([shopping_list docs]) - Use pre-commit in CI and tox ([@scop] - [#27743]) - Introduce new OAuth2 config flow helper ([@balloob] - [#27727]) ([somfy docs]) (breaking change) -- Move imports in fritzbox, fritz device tracker, fritzdect, fritzbox netmonitor ([@springstan] - [#27746]) ([fritz docs]) ([fritzbox docs]) ([fritzbox_netmonitor docs]) ([fritzdect docs]) +- Move imports in fritzbox, fritz device tracker, fritzdect, fritzbox netmonitor ([@springstan] - [#27746]) ([fritz docs]) ([fritzbox docs]) ([fritzbox_netmonitor docs]) - Move imports in cppm_tracker component ([@Bouni] - [#27889]) ([cppm_tracker docs]) - Move imports in concord232 component ([@Bouni] - [#27887]) ([concord232 docs]) - Move imports in comfoconnect component ([@Bouni] - [#27886]) ([comfoconnect docs]) - Move imports in coinmarketcap component ([@Bouni] - [#27885]) ([coinmarketcap docs]) - Move imports in coinbase component ([@Bouni] - [#27884]) ([coinbase docs]) -- Move imports in ciscospark component ([@Bouni] - [#27879]) ([ciscospark docs]) +- Move imports in ciscospark component ([@Bouni] - [#27879]) - Move imports in cisco_webex_teams component ([@Bouni] - [#27878]) ([cisco_webex_teams docs]) - Move imports in cmus component ([@Bouni] - [#27883]) ([cmus docs]) - Move imports in cloud component ([@Bouni] - [#27881]) ([cloud docs]) @@ -709,7 +709,7 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] - Move imports in eliqonline component ([@djpremier] - [#27980]) ([eliqonline docs]) - Move imports in frontend component ([@djpremier] - [#27988]) ([frontend docs]) - Move imports in message_bird component ([@djpremier] - [#28022]) ([message_bird docs]) -- Move imports in mopar component ([@djpremier] - [#28028]) ([mopar docs]) +- Move imports in mopar component ([@djpremier] - [#28028]) - Move imports in mvglive component ([@djpremier] - [#28031]) ([mvglive docs]) - Move imports in mpd component ([@djpremier] - [#28030]) ([mpd docs]) - Move imports in namecheapdns component ([@djpremier] - [#28034]) ([namecheapdns docs]) @@ -1527,7 +1527,6 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] [aladdin_connect docs]: /integrations/aladdin_connect/ [alarm_control_panel docs]: /integrations/alarm_control_panel/ [alarmdecoder docs]: /integrations/alarmdecoder/ -[alarmdotcom docs]: /integrations/alarmdotcom/ [alexa docs]: /integrations/alexa/ [alpha_vantage docs]: /integrations/alpha_vantage/ [amazon_polly docs]: /integrations/amazon_polly/ @@ -1586,7 +1585,6 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] [cisco_ios docs]: /integrations/cisco_ios/ [cisco_mobility_express docs]: /integrations/cisco_mobility_express/ [cisco_webex_teams docs]: /integrations/cisco_webex_teams/ -[ciscospark docs]: /integrations/ciscospark/ [cloud docs]: /integrations/cloud/ [cmus docs]: /integrations/cmus/ [co2signal docs]: /integrations/co2signal/ @@ -1646,7 +1644,6 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] [fritzbox docs]: /integrations/fritzbox/ [fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/ [fritzbox_netmonitor docs]: /integrations/fritzbox_netmonitor/ -[fritzdect docs]: /integrations/fritzdect/ [frontend docs]: /integrations/frontend/ [frontier_silicon docs]: /integrations/frontier_silicon/ [futurenow docs]: /integrations/futurenow/ @@ -1717,7 +1714,6 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] [linode docs]: /integrations/linode/ [linux_battery docs]: /integrations/linux_battery/ [lirc docs]: /integrations/lirc/ -[liveboxplaytv docs]: /integrations/liveboxplaytv/ [locative docs]: /integrations/locative/ [lock docs]: /integrations/lock/ [logbook docs]: /integrations/logbook/ @@ -1738,7 +1734,6 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] [miflora docs]: /integrations/miflora/ [mitemp_bt docs]: /integrations/mitemp_bt/ [mobile_app docs]: /integrations/mobile_app/ -[mopar docs]: /integrations/mopar/ [mpd docs]: /integrations/mpd/ [mqtt docs]: /integrations/mqtt/ [msteams docs]: /integrations/msteams/ diff --git a/source/_posts/2019-11-20-privacy-focused-voice-assistant.markdown b/source/_posts/2019-11-20-privacy-focused-voice-assistant.markdown new file mode 100644 index 000000000000..ce96755eabcd --- /dev/null +++ b/source/_posts/2019-11-20-privacy-focused-voice-assistant.markdown @@ -0,0 +1,94 @@ +--- +layout: post +title: "Almond & Ada: privacy-focused voice assistant" +description: "Say Hi! to Almond, a privacy-focused virtual assistant and Ada, a voice assistant powered by Home Assistant." +date: 2019-11-20 0:43:02 +date_formatted: "November 20, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Announcements +og_image: /images/blog/2019-11-voice-assistant/almond.png +--- + +TL;DR: + +- Teamed up with [Almond](https://almond.stanford.edu/), available in Home Assistant 0.102. +- Introducing [Ada](https://github.com/home-assistant/ada), voice assistant powered by Home Assistant integrations. Available as Hass.io add-on. +- New beta speech-to-text and text-to-speech service for Home Assistant Cloud subscribers. + +--- + +Voice assistants are a great way to interact with your house, ask a quick question, set a timer or control your devices. The more an assistant knows about you, your home and it's other inhabitants, the better it is able to help you. + +Today's available virtual assistants work great, but they have a big problem: They store your data in the cloud, don't provide APIs to allow other companies to build products on top and are run by companies whose core business is building profiles on their users to help serve ads and product suggestions. + +The backbone to our homes needs to be one that keeps data local and has APIs allowing other companies to build on top. Innovation happens when many different people, with many different backgrounds, do many different experiments until we find something that sticks. This cannot be left to a single company. + +Recently we got in touch with the [Open Virtual Assistant Lab at Stanford University](https://oval.cs.stanford.edu/). In the last four years, they have been working on a virtual assistant named Almond. And it's a perfect match for Home Assistant. + + + +## Almond + +[Almond](https://almond.stanford.edu/) is an open, privacy-preserving virtual assistant that is open source. With Almond, you can run a virtual assistant at home, that can tell you the news or control your house. It is powered by [LUInet](https://almond.stanford.edu/doc/genie-intro.md), a state-of-the-art neural network developed at Stanford. And it now works with Home Assistant. + +The Almond team has updated Almond to make it aware of the different device types in Home Assistant and allow Almond to control them. In turn, we have upgraded the conversation integration in Home Assistant to support Almond, allowing users to converse with Almond via the frontend. + +

    Screenshot showing Almond integration in Home Assistant.Screenshot showing Almond integration in Home Assistant.

    + +Almond is available to users today in Home Assistant 0.102. It requires an Almond Server, which you can either install yourself, use the new Almond Hass.io add-on or rely on Almond Web, a cloud version hosted by Stanford. By default, Almond Server will rely on a cloud version of LUInet, but it is possible to run it locally. + +Almond is set up in a way such that your privacy is still partially preserved even with LUInet running in the cloud. This is made possible because LUInet is only responsible for converting the text into a program, whose details are filled in locally by the Almond Server. For example, LUInet will convert "turn on the lights" into code that Almond Server understands. Only Almond Server will know which lights the user has, how to control them and the context of how the text was received. + +### How Almond compares to Google/Alexa + +You're probably wondering if Almond is as good as Alexa or Google. And it's not yet as good. However, it doesn't matter. + +If you want to have an assistant in your home that knows everything about you, it needs to be one that cares about privacy. It needs to be one that is open. That's not negotiable. + +Almond has room for improvement. But it's open source, and with the Home Assistant community, we'll work with the Almond team on making it better. You can start helping right now: + +Almond is gathering sentences that you want to use to control the devices in your home. We already have a basic set of sentences, but the more, the better. You can submit those sentences [using this form](https://docs.google.com/forms/d/e/1FAIpQLSeStJfjvueNAiueRVmP47XALRaJlx7tttzJjRfVjX4J546-uA/viewform). + +You are also able to help train LUInet directly by teaching it how to interpret sentences [in the training console](https://almond.stanford.edu/developers/train). + +## Ada + +Almond is not the full story. Almond only works with text input, and generates text as output. It doesn't handle speech-to-text to receive input nor text-to-speech to speak answers. Those technologies are out of scope for Almond. However, not out of scope for Home Assistant! Home Assistant already has a text-to-speech integration with different backends. In Home Assistant 0.102, we're introducing a new speech-to-text integration to complement this. + +Now we almost have all the pieces for a voice assistant built-in to Home Assistant, and so we decided to finish it off by introducing a new project called [Ada](https://github.com/home-assistant/ada). Ada integrates hotword detection and will route all data to the various integrations to provide a full voice assistant experience. + +Architectural overview of how all pieces fit together. + +Ada is still very much in the beginning. We'll be working on improving it. If you have expertise in this area and want to help, please get in touch. + +Ada is also available as a [Hass.io](http://hass.io) add-on. This means that you can plug a microphone and speakers into your Raspberry Pi and turn Hass.io into a full, privacy-focused, voice assistant. + +To make it easier to add speech-to-text and text-to-speech integrations to your system, Nabu Casa is introducing a new beta service offering speech-to-text and text-to-speech services to Home Assistant Cloud subscribers, powered by Azure Cognitive Services. + +
    + +
    + +## Can a virtual assistant still be private if parts run in the cloud? + +With Home Assistant we care about privacy and local control. We want to be able to offer home automation that keeps working if there is no internet. Home automation, that is fast and reliable. + +But we also want privacy to be accessible. A user should be able to get a private solution without running a big server at home. Privacy should not be something that is reserved for the rich. + +With the current approach, some things will still run in the cloud, but the home data and control stays local. We will bring more things local when faster technology becomes more accessible or new projects emerge that can help with this. + +We don't want to wait with integrating this until all the pieces run 100% locally. We need to help build the future we want to see. + +## What's next? + +With Almond and Ada, we've put the building blocks in place to create voice assistants. It's now time to use it, improve it and surprise us by sharing the things you'll use it for. + +We've added a new section on the forums to discuss [voice setups](https://community.home-assistant.io/c/configuration/voice-assistant). + +## Bonus + +I hacked together a quick prototype to allow you to talk to Almond via a Telegram Bot! It's available as a [custom component](https://gist.github.com/balloob/d59cae89d19a14bcec99ce1bde05bd44). + +

    Screenshot of talking to Almond via Telegram.Screenshot of talking to Almond via Telegram.

    diff --git a/source/_posts/2019-11-20-release-102.markdown b/source/_posts/2019-11-20-release-102.markdown new file mode 100644 index 000000000000..41bc4169cb06 --- /dev/null +++ b/source/_posts/2019-11-20-release-102.markdown @@ -0,0 +1,969 @@ +--- +layout: post +title: "0.102: Official Android App, Almond, Scene editor" +description: "Download the Android app, install a private voice assistant and easy OAuth2 account linking." +date: 2019-11-20 0:41:02 +date_formatted: "November 20, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2019-11-0.102/components.png +--- + +Home Assistant 0.102 is here ! It's been quite the trip as we hosted our annual State of the Union last week, which took a lot of energy away from our release. This doesn't mean that we don't have anything to share, just that the notes might be a little less polished. + +First, we had our State of the Union at the ING office in Amsterdam! It was great. You can watch it back [on YouTube](https://youtu.be/tc17q1Zn0Xs?t=434) or keep an eye out for the blog post coming soon that will summarize all the announcements. + +Alright, so what's new? A lot. + +## Android App released! + +At the State of the Union we announced that we have released the initial version of the official [Home Assistant Android app](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android). It's still a work in progress, but the basic version already works. + +It's been developed by [@CedrickFlocon](https://github.com/CedrickFlocon) and the source is [available on GitHub](https://github.com/home-assistant/home-assistant-android/). We've already seen some other developers step in, so that's great! Keep it coming. + + + +## Private Voice Assistant + +We teamed up with Stanford to tightly integrate their open, privacy-preserving virtual assistant Almond into Home Assistant. For more information, see the [separate blog post](/blog/2019/11/20/privacy-focused-voice-assistant/). + +## Account Linking + +Some companies only allow us to integrate with their products via cloud APIs. These cloud APIs often use [the OAuth2 specification](https://tools.ietf.org/html/rfc6749) to link accounts. The problem with this specification is that it cannot properly handle non-public or decentralized installations. + +So if you were to link an integration via OAuth2 before today, you would have to sign up for a developer account, configure Home Assistant and expose your instance publicly before you got to the part where you can link your account. That's not good! + +Home Assistant Cloud is introducing a new account linking service that will be freely available for everyone – no cloud account required. With this service, Home Assistant controls the developer account, and users will just need to link their accounts. + +
    + +
    + +The first integration to use this new service is [Somfy][somfy docs]. Manual installation is also still possible. This integration is built on top of our [new OAuth2 framework](https://developers.home-assistant.io/docs/en/config_entries_config_flow_handler.html#configuration-via-oauth2). We expect more integration developers to migrate OAuth2 integrations in the future. + +## Create automations with natural language + +As an experimental feature, we have added a new way to create automations. With the help of Almond, we can transform natural language into Home Assistant automations. + +

    +Screenshot of the create automation dialog. +Screenshot of the create automation dialog. +

    + +When you click the **+** in the automation editor to add a new automation, you will see a new dialog where you can enter what you want your automation to do in natural language. Like: `Turn on the lights when I come home`. We will try to convert this into an automation. We will check if you need to specify devices or persons for this automation and ask you for them. You can then check the generated automation in the editor and save it. + +Be advised that not all devices are supported yet, and that Almond needs more training for better responses. Check the Almond part for how you can help make Almond better. + +## Scene editor + +

    +Screenshot of the scene editor. +Screenshot of the scene editor. +

    + +We're also introducing a [scene editor](/docs/scene/editor/). With the scene editor you can easily store the states of devices in a scene. You simply select the devices (and/or entities if you are in advanced mode) you want to include in your scene and set the states to how you would like them when the scene activates. + +To use the scene editor your scene config should be in the file `scenes.yaml` in your config directory and included in `configuration.yaml`. Every scene should have a unique id for the editor to work. + +```yaml +# scenes.yaml +- id: my_unique_id # <-- Required for editor to work. + name: Romantic + entities: + light.tv_back_light: on + light.ceiling: + state: on + xy_color: [0.33, 0.66] + brightness: 200 +``` + +Then update your `configuration.yaml` to look like this: + +```yaml +# Configuration.yaml example +scene: !include scenes.yaml +``` + +## In other news + +Andrew learned Swift and created a new mini-app for Mac: + + + +Our Android app is not the only new app on the block. [@tuanha2000vn](https://github.com/tuanha2000vn) has released [Hasskit](https://github.com/tuanha2000vn/hasskit/), a new app built with Flutter that can be used on both Android and iOS. + +And finally, Brad posted a video on [Reddit](https://www.reddit.com/r/homeassistant/comments/dz1qsi/picture_elements_are_so_fun_i_made_a_bad_video/) showing his amazing usage of picture elements in Lovelace. Check it out: + +
    + +
    + +Users of Xiaomi Vacuum cleaners can now use this great custom Lovelace card: + + + +## New Integrations + +- Add Unifi Led ([@florisvdk] - [#27475]) ([unifiled docs]) (new-integration) +- Almond integration ([@balloob] - [#28282]) ([almond docs]) (new-integration) +- Speech to Text component ([@pvizeli] - [#28434]) ([demo docs]) ([stt docs]) (new-integration) +- Add WLED integration ([@frenck] - [#28542]) ([wled docs]) (new-integration) +- Add azure servicebus notify service ([@hfurubotten] - [#27566]) ([azure_service_bus docs]) (new-integration) +- Add pcal9535a integration ([@Shulyaka] - [#26563]) ([pcal9535a docs]) (new-integration) + +## New Platforms + +- Add Huawei LTE mobile data switch support ([@scop] - [#28188]) ([huawei_lte docs]) (new-platform) +- Add support for Xiaomi Air Quality Monitor (cgllc.airmonitor.b1) ([@fwestenberg] - [#27735]) ([xiaomi_miio docs]) (new-platform) +- Add switches (on/off zones) to geniushub ([@castaway] - [#28182]) ([geniushub docs]) (new-platform) +- Add config endpoint for scene ([@bramkragten] - [#28429]) ([config docs]) ([homeassistant docs]) (new-platform) +- Add override switch for juicenet ([@jesserockz] - [#28049]) ([juicenet docs]) (new-platform) +- Add SST/TTS support over NC ([@pvizeli] - [#28527]) ([cloud docs]) ([stt docs]) (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 + +- **Huawei LTE** - Configuration has been consolidated below `huawei_lte`. Device tracker no longer uses known_devices.yaml but entity registry. - ([@scop] - [#26675]) ([huawei_lte docs]) + + Example configuration yaml: + + ```yaml + huawei_lte: + - url: http://192.168.100.1/ + username: admin + password: something + ``` + +- **Ikea Tradfri** - This removes the battery sensor that was created for the signal repeater. The sensor would never have a state, and after some inspection, it does not look like that device present any valuable metrics. - ([@ludeeus] - [#28181]) ([tradfri docs]) + +- **UPNP/IGD** - All UPNP/IGD sensors are now in one device. You have to remove and re-add the integration to get rid of the previous devices. ([@escoand] - [#27517]) ([upnp docs]) + +- **PS4** - State `off` is now State `standby`. Affects user defined scripts, automations, etc. ([@ktnrg45] - [#28261]) ([ps4 docs]) + +- **SSDP** - `ssdp` in manifest.json has changed; it is now a list of dicts, and as we now match using the UPnP device description fields directly, `device_type` has to be renamed to `deviceType`. No included integrations use it at the moment, nor are they broken by this change. If any custom integrations are using it, they need to adjust accordingly. ([@scop] - [#28285]) ([ssdp docs]) + +- **HomematicIP Cloud** - The attribute naming between Homematic IP `HmIP-BSM` (light) and `HmIP-FSM/HmIP-PSM` (switch) was different and in case of light not correct. The attributes for `HmIP-BSM` have been renamed: + + - energy_counter_kwh --> today_energy_kwh + - power_consumption --> current_power_w + + Please check your automations, scripts, scenes, etc., if you are using the old attributes in templates, and replace them with the new ones. - ([@SukramJ] - [#28271]) ([homematicip_cloud docs]) + +- **Plugwise** - Detection of a legacy Anna (firmware 1.8.x) is no longer automatic: owners of a legacy Anna have to provide info in configuration.yaml, the last line. This change was needed to be able to fix issue #26520. - ([@bouwew] - [#28237]) ([plugwise docs]) + + Example configuration yaml: + + ```yaml + climate: + - platform: plugwise + name: your_device_name + password: your_password + host: your_anna_ip + legacy_anna: true + ``` + +- **Android TV** - The `source` and `sources_list` attributes for Fire TV devices will use friendly app names instead of app IDs (e.g., "Netflix" instead of "com.netflix.ninja"). If you are using these attributes in automations, sensors, etc., you will need to update them. + + - If you are currently checking that the `source` attribute of a Fire TV device is a particular app ID, you have two options: + - Check the `app_id` attribute instead + - Replace that app ID with the friendly name for the app. + - If you are currently checking the `sources_list` attribute, then you will need to check for friendly app names instead of app IDs. + + You can still use app IDs for the media_player.select_source service. - ([@JeffLIrion] - [#28417]) ([androidtv docs]) + +- **Homekit** - Thermostats supported by the Homekit Controller component were reporting "off" for the running status when the HVAC was powered on but not actively heating or cooling. This `hvac_action` attribute will now properly return "idle" instead of off. Any logic that tests for the `hvac_action` condition of `off` will need to change to `idle`. There is no change to any other states. - ([@GaryOkie] - [#28625]) ([homekit_controller docs]) + +- **OpenALPR local** - The "alp_bin" option has been corrected to "alpr_bin" as is outlined in the documentation. Users should check their config and update if necessary. ([@HexF] - [#28746]) ([openalpr_local docs]) + +## Beta Fixes + +- Bump ZHA quirks to 0.0.28 ([@dmulcahey] - [#28750]) ([zha docs]) (beta fix) +- Updated frontend to 20191114.0 ([@bramkragten] - [#28768]) ([frontend docs]) (beta fix) +- Fix account link version check ([@balloob] - [#28770]) ([cloud docs]) (beta fix) +- Fix amazon dependency conflicts ([@bbrendon] - [#28217]) ([amazon_polly docs]) ([aws docs]) (beta fix) +- Change unique id for SAJ sensor based on device SN ([@fredericvl] - [#28663]) ([saj docs]) (breaking change) (beta fix) +- Fix changing venstar operation_mode ([@iamtpage] - [#28754]) ([venstar docs]) (beta fix) +- Fix Repetier integration entity indexing ([@MTrab] - [#28766]) ([repetier docs]) (beta fix) +- Fix HomematicIP Cloud Alarm Control Panel support for basic mode ([@SukramJ] - [#28778]) ([homematicip_cloud docs]) (beta fix) +- Fix Swisscom empty response received ([@LeoCal] - [#28782]) ([swisscom docs]) (beta fix) +- Fix broken postnl sensor ([@peternijssen] - [#28794]) (beta fix) +- Updated frontend to 20191115.0 ([@bramkragten] - [#28797]) ([frontend docs]) (beta fix) +- Fix Comfoconnect errors during startup ([@michaelarnauts] - [#28802]) ([comfoconnect docs]) (beta fix) +- Fix miio air quality sensor ([@valkjsaaa] - [#28828]) ([xiaomi_miio docs]) (beta fix) +- Update pyatmo to 3.0.1 ([@cgtobi] - [#28829]) ([netatmo docs]) (beta fix) +- Updated frontend to 20191118.0 ([@bramkragten] - [#28852]) ([frontend docs]) (beta fix) +- Fix documentation URL in failed platform config check ([@frenck] - [#28814]) (beta fix) +- Fix Synology camera whitelist ([@h4de5] - [#28822]) ([synology docs]) (beta fix) +- Fix setting colors while reproducing a lights state ([@Santobert] - [#28871]) ([light docs]) (beta fix) +- Updated frontend to 20191119.0 ([@bramkragten] - [#28875]) ([frontend docs]) (beta fix) +- Updated frontend to 20191119.1 ([@bramkragten] - [#28881]) ([frontend docs]) (beta fix) +- Updated frontend to 20191119.2 ([@bramkragten] - [#28896]) ([frontend docs]) (beta fix) +- Fix Almond onboarding url when using cloud ([@bramkragten] - [#28908]) ([almond docs]) (beta fix) + +## Release 0.102.1 - November 21 + +- Fix missing Netatmo sensors ([@cgtobi] - [#28899]) ([netatmo docs]) +- Updated frontend to 20191119.5 ([@bramkragten] - [#28925]) ([frontend docs]) +- Fix Plex startup race condition #28934 [@jjlawren] + +[#28899]: https://github.com/home-assistant/home-assistant/pull/28899 +[#28925]: https://github.com/home-assistant/home-assistant/pull/28925 +[@bramkragten]: https://github.com/bramkragten +[@cgtobi]: https://github.com/cgtobi +[frontend docs]: /integrations/frontend/ +[netatmo docs]: /integrations/netatmo/ + +## Release 0.102.2 - November 24 + +- Fix Plex setup race condition v2 ([@jjlawren] - [#28943]) ([plex docs]) +- Fix ikea lights on deconz ([@pvizeli] - [#28949]) ([deconz docs]) +- Fix manual config ([@cgtobi] - [#28956]) ([netatmo docs]) +- Fix temp not being reported properly ([@shred86] - [#28973]) ([abode docs]) +- Updated frontend to 20191119.6 ([@bramkragten] - [#28996]) ([frontend docs]) +- Alexa gracefully handle climate devices without presets ([@frenck] - [#29010]) ([alexa docs]) + +## Release 0.102.3 - November 29 + +- Fix smartthings cloud webhook ([@bramkragten] - [#29219]) ([smartthings docs]) + +[#29219]: https://github.com/home-assistant/home-assistant/pull/29219 +[@bramkragten]: https://github.com/bramkragten +[smartthings docs]: /components/smartthings/ + +[#28943]: https://github.com/home-assistant/home-assistant/pull/28943 +[#28949]: https://github.com/home-assistant/home-assistant/pull/28949 +[#28956]: https://github.com/home-assistant/home-assistant/pull/28956 +[#28973]: https://github.com/home-assistant/home-assistant/pull/28973 +[#28996]: https://github.com/home-assistant/home-assistant/pull/28996 +[#29010]: https://github.com/home-assistant/home-assistant/pull/29010 +[@bramkragten]: https://github.com/bramkragten +[@cgtobi]: https://github.com/cgtobi +[@frenck]: https://github.com/frenck +[@jjlawren]: https://github.com/jjlawren +[@pvizeli]: https://github.com/pvizeli +[@shred86]: https://github.com/shred86 +[abode docs]: /integrations/abode/ +[alexa docs]: /integrations/alexa/ +[deconz docs]: /integrations/deconz/ +[frontend docs]: /integrations/frontend/ +[netatmo docs]: /integrations/netatmo/ +[plex docs]: /integrations/plex/ + +## All changes + +- Cover all possible values for venstar operation_mode ([@iamtpage] - [#27949]) ([venstar docs]) +- Add onvif local datetime support ([@djpremier] - [#26656]) ([onvif docs]) +- Fix Venstar formatting to restore clean CI ([@kennedyshead] - [#28171]) ([venstar docs]) +- Add Unifi Led ([@florisvdk] - [#27475]) ([unifiled docs]) (new-integration) +- Modernize Huawei LTE ([@scop] - [#26675]) ([huawei_lte docs]) (breaking change) +- Use latest withings_api module ([@vangorra] - [#27817]) ([withings docs]) +- Tradfri config flow enhancements ([@ludeeus] - [#28179]) ([tradfri docs]) +- Add stop feature to tradfri covers ([@ludeeus] - [#28180]) ([tradfri docs]) +- Fix tzinfo type for onvif component ([@djpremier] - [#28178]) ([onvif docs]) +- Adding device_class to samsungtv ([@kennedyshead] - [#28168]) ([samsungtv docs]) +- Bump python-slugify to 4.0.0 ([@BKPepe] - [#28186]) +- Removes unwanted tradfri battery sensor ([@ludeeus] - [#28181]) ([tradfri docs]) (breaking change) +- Huawei LTE sensor metadata update ([@scop] - [#28187]) ([huawei_lte docs]) +- Add Samsung TV automatic protocol detection ([@escoand] - [#27492]) ([samsungtv docs]) +- [homematic]Pass channel to light color functions ([@guillempages] - [#27306]) ([homematic docs]) +- [homematic]Add support for HmIP-BSL LEDs ([@guillempages] - [#27307]) ([homematic docs]) +- move hass-frontend import back down ([@gngj] - [#28203]) ([frontend docs]) +- Address post-merge coolmaster config flow code review ([@OnFreund] - [#28163]) ([coolmaster docs]) +- Add presentation URL to SSDP discovery info ([@scop] - [#28196]) ([ssdp docs]) +- Change Alexa default display category based on media_player device_class ([@ochlocracy] - [#28191]) ([alexa docs]) +- Add device condition support for media_player ([@shmooey] - [#28161]) ([media_player docs]) +- Add device condition support for device_tracker ([@shmooey] - [#28190]) ([device_tracker docs]) +- Increased python-eq3bt version to latest (0.1.11) ([@Poeschl] - [#28175]) ([eq3btsmart docs]) +- Add support for supportedOperations to Alexa.PlaybackController ([@ochlocracy] - [#28212]) ([alexa docs]) +- Improved Alexa ThermostatController thermostatMode handling ([@ochlocracy] - [#28176]) ([alexa docs]) +- Add additional device conditions to cover ([@emontnemery] - [#27830]) ([cover docs]) +- Implement Alexa.PlaybackStateReporter Interface for alexa ([@ochlocracy] - [#28215]) ([alexa docs]) +- Add cloud account linking support ([@balloob] - [#28210]) ([cloud docs]) ([somfy docs]) +- Add Huawei LTE mobile data switch support ([@scop] - [#28188]) ([huawei_lte docs]) (new-platform) +- Upgrade speedtest-cli to 2.1.2 ([@fabaff] - [#28216]) +- Add available state to unifiled integration ([@florisvdk] - [#28189]) ([unifiled docs]) (new-integration) +- Update praw to 6.4.0 ([@fabaff] - [#27324]) ([reddit docs]) +- Suppress traceback (fixes #28243) ([@fabaff] - [#28262]) ([iss docs]) +- Add charset to imap component. ([@ZiroNL] - [#28258]) ([imap docs]) +- Reorg and test attributes for HomematicIP Cloud ([@SukramJ] - [#28234]) ([homematicip_cloud docs]) +- Add support for Xiaomi Air Quality Monitor (cgllc.airmonitor.b1) ([@fwestenberg] - [#27735]) ([xiaomi_miio docs]) (new-platform) +- Add transmission info about torrents that is accessible with templating ([@JPHutchins] - [#27111]) ([transmission docs]) +- More header cleanup for websocket proxy ([@pvizeli] - [#28288]) ([hassio docs]) +- Bump avea to 1.4 ([@pattyland] - [#28287]) ([avea docs]) +- Remove GTT component ([@eliseomartelli] - [#28286]) +- Hue: Create new config flow when auth is lost ([@bramkragten] - [#28204]) ([hue docs]) +- Revert "More header cleanup for websocket proxy (#28288)" ([@pvizeli] - [#28293]) ([hassio docs]) +- Add support for Somfy Garage door Rollixo IO DiscreteGarageOpenerIOComponent in Tahoma component ([@yjajkiew] - [#28291]) ([tahoma docs]) +- Type hint improvements ([@scop] - [#28260]) +- Add more iaqualink entity properties, fix timeout issues ([@flz] - [#28236]) ([iaqualink docs]) +- Add keyboard_remote trigger on multiple event types and emulate key hold events ([@bendavid] - [#27761]) ([keyboard_remote docs]) +- Remove blocking I/O from the event loop ([@syssi] - [#28305]) ([xiaomi_miio docs]) +- Use dict[key] for required config keys ([@syssi] - [#28304]) ([xiaomi_miio docs]) +- Bump black to 19.10b0 ([@frenck] - [#28310]) ([androidtv docs]) ([envirophat docs]) ([hangouts docs]) ([here_travel_time docs]) +- Add source constants for all config entry discovery sources ([@frenck] - [#28311]) +- Almond integration ([@balloob] - [#28282]) ([almond docs]) (new-integration) +- Bump pre-commit to 1.20.0 ([@frenck] - [#28313]) +- Bump youtube_dl to 2019.10.29 ([@frenck] - [#28312]) ([media_extractor docs]) +- Add description for arlo.update service ([@PixelJonas] - [#28270]) +- Bump pytest to 5.2.2 ([@cgtobi] - [#28230]) +- Add services description for sabnzbd component ([@karouf] - [#28252]) +- Clean up Xiaomi Air Quality Monitor support (cgllc.airmonitor.b1) ([@syssi] - [#28301]) ([xiaomi_miio docs]) +- allow multiple heaters per incomfort gateway ([@zxdavb] - [#28324]) ([incomfort docs]) +- Add OAuth2 config flow scaffold ([@balloob] - [#28220]) +- Add services.yaml to local_file component. ([@ZiroNL] - [#28330]) +- Add device triggers to cover ([@emontnemery] - [#28063]) ([automation docs]) ([cover docs]) +- Flux log with debug instead of info ([@Santobert] - [#28352]) ([flux docs]) +- Add modelnumber for ecobee4 ([@marthoc] - [#28278]) ([ecobee docs]) +- Fill services.yaml for duckdns ([@gngj] - [#28248]) +- Implement Alexa.SeekController Interface for media_player in Alexa ([@ochlocracy] - [#28299]) ([alexa docs]) +- Don't set entity_id in ZHA entities ([@Adminiuga] - [#28362]) ([zha docs]) +- Update withings-api to avoid data parsing bugs. ([@vangorra] - [#28382]) ([withings docs]) +- Add services.yaml to onvif component ([@ZiroNL] - [#28349]) +- Fix Telegram Bot ([@Anonym-tsk] - [#28369]) +- Fill services.yaml for squeezebox ([@gngj] - [#28247]) +- Add file list to attributes of folder sensor ([@thoscut] - [#28338]) ([folder docs]) +- Show all UPNP/IGD sensors in one device ([@escoand] - [#27517]) ([upnp docs]) (breaking change) +- fix feedreader handling unrecognized published date ([@exxamalte] - [#28225]) ([feedreader docs]) +- Introduce SUPPORT_COLOR_TEMP for flux_led component ([@yeralin] - [#26692]) ([flux_led docs]) +- Upgrade thingspeak to 1.0.0 ([@fabaff] - [#28424]) ([thingspeak docs]) +- Upgrade attrs to 19.3.0 ([@fabaff] - [#28421]) +- Add a Services YAML for the Dominos integration (#27289) ([@Schoonology] - [#28339]) +- Upgrade pysnmp to 4.4.12 ([@fabaff] - [#28428]) ([snmp docs]) +- Bump pyEight library to 0.1.2 to update API URL ([@mezz64] - [#28413]) ([eight_sleep docs]) +- Use defined device class constants for Homematic ([@SukramJ] - [#28438]) ([homematic docs]) +- Add improved scene support to the alarm_control_panel integration ([@Santobert] - [#28269]) ([alarm_control_panel docs]) +- Add improved scene support to the water_heater integration ([@Santobert] - [#28277]) ([demo docs]) ([water_heater docs]) +- deCONZ - Add Xiaomi Aqara Cube device trigger support ([@Kane610] - [#27548]) ([deconz docs]) +- deCONZ - Support creating battery sensor when reported ([@Kane610] - [#27538]) ([deconz docs]) +- deCONZ - Improve discovery logging ([@Kane610] - [#28452]) ([deconz docs]) +- Add scene.create service ([@Santobert] - [#28300]) ([homeassistant docs]) +- Update MQTT sensor test ([@fabaff] - [#28449]) +- Change ps4 state off to state standby ([@ktnrg45] - [#28261]) ([ps4 docs]) (breaking change) +- Fix inability to transition between specific presets in Venstar component ([@nkaminski] - [#28238]) ([venstar docs]) +- pre-commit: ship default and full configs ([@scop] - [#28463]) +- SSDP matching improvements ([@scop] - [#28285]) ([ssdp docs]) (breaking change) +- Bump env_canada to 0.0.30 ([@michaeldavie] - [#28487]) ([environment_canada docs]) +- Fixing #27722 Watson TTS platform (sdk upgrade) ([@rutkai] - [#28468]) ([watson_tts docs]) +- Use integration name in docstring ([@fabaff] - [#28445]) +- Handle Huawei LTE timeouts ([@scop] - [#28465]) ([huawei_lte docs]) +- Fix flaky Samsung TV tests ([@escoand] - [#28503]) +- Always provide brightness value ([@elupus] - [#28228]) ([google_assistant docs]) +- Fix flaky YesssSMS tests on debug messages ([@escoand] - [#28506]) +- Import CancelledError from asyncio, not .futures ([@scop] - [#28511]) ([bluesound docs]) +- Don't use deprecated encoding to json.loads ([@scop] - [#28509]) +- Update Vivotek component stream source ([@HarlemSquirrel] - [#27941]) ([vivotek docs]) +- Don't fail tox pylint if PYLINT_ARGS is not set ([@scop] - [#28403]) +- Upgrade pillow to 6.2.1 ([@fabaff] - [#28442]) ([image_processing docs]) ([proxy docs]) ([qrcode docs]) +- Add dump config service to HomematicIP Cloud ([@SukramJ] - [#28231]) ([homematicip_cloud docs]) +- Upgrade TwitterAPI to 2.5.10 ([@fabaff] - [#28401]) ([twitter docs]) +- Replace Netatmo CO2 sensor icon ([@tlrobinson] - [#28520]) ([netatmo docs]) +- Imports twitch ([@fabaff] - [#28517]) ([twitch docs]) +- Upgrade paho-mqtt to 1.5.0 ([@fabaff] - [#28423]) ([mqtt docs]) ([shiftr docs]) +- Upgrade jinja2 to >=2.10.3 ([@fabaff] - [#28422]) +- iaqualink: better handling of failures ([@flz] - [#28514]) ([iaqualink docs]) +- Add services description for ness alarm ([@tefinger] - [#28250]) +- Add information to IFTTT services.yaml ([@PixelJonas] - [#28385]) +- Expose set auto mode for all Dyson fans ([@soraxas] - [#28488]) ([dyson docs]) +- Add compatibility for other STBY Codes ([@soundstorm] - [#28478]) ([pioneer docs]) +- Remove legacy reproduce state ([@balloob] - [#28458]) +- Align attribute naming between light and switch for HomematicIP Cloud ([@SukramJ] - [#28271]) ([homematicip_cloud docs]) (breaking change) +- Enable transition time for HmIP-BSL - HomematicIP Cloud ([@SukramJ] - [#28201]) ([homematicip_cloud docs]) +- Speech to Text component ([@pvizeli] - [#28434]) ([demo docs]) ([stt docs]) (new-integration) +- Add switches (on/off zones) to geniushub ([@castaway] - [#28182]) ([geniushub docs]) (new-platform) +- Cleanup Device Registry on Z-Wave Node Removal ([@cgarwood] - [#28240]) ([zwave docs]) +- Support Huawei LTE SSDP discovery ([@scop] - [#28214]) ([huawei_lte docs]) +- Fire an event when nzbget download completes ([@chriscla] - [#27763]) ([nzbget docs]) +- Add heating_type for ViCare integration ([@crazyfx1] - [#27296]) ([vicare docs]) +- Bump version for asuswrt to 1.1.22 ([@kennedyshead] - [#28322]) ([asuswrt docs]) +- Add config endpoint for scene ([@bramkragten] - [#28429]) ([config docs]) ([homeassistant docs]) (new-platform) +- Update ephember library version ([@ttroy50] - [#28507]) ([ephember docs]) +- Checking state before actually sending a new state change. Some projectors return ERR if you try to turn off a projector that's already off. ([@mflage] - [#28529]) ([pjlink docs]) +- rate is a separate word ([@balloob] - [#28535]) ([demo docs]) ([stt docs]) +- Update Plugwise ([@bouwew] - [#28237]) ([plugwise docs]) (breaking change) +- Improve scene.create service ([@Santobert] - [#28533]) ([homeassistant docs]) +- Reduce test requirements duplication, sync flake8 and related ([@scop] - [#28538]) +- Avoid drawing image_processing font text inside the bow line ([@snowzach] - [#27796]) ([image_processing docs]) +- Add override switch for juicenet ([@jesserockz] - [#28049]) ([juicenet docs]) (new-platform) +- Move imports in samsungtv component ([@Quentame] - [#27775]) ([samsungtv docs]) +- Try fix tests ([@pvizeli] - [#28470]) +- Add additional support over NC ([@pvizeli] - [#28527]) ([cloud docs]) ([stt docs]) (new-platform) +- Bump pytile and re-order imports ([@bachya] - [#28570]) ([tile docs]) +- Update nextbus stop tag to accept strings ([@Grodesh] - [#27765]) ([nextbus docs]) +- Bump adb-shell to 0.0.8 ([@JeffLIrion] - [#28582]) +- Fix Doods error when detection labels are specified in list form ([@snowzach] - [#28574]) ([doods docs]) +- Upgrade youtube_dl to 2019.11.05 ([@BKPepe] - [#28578]) ([media_extractor docs]) +- Reset states when connection to MPC-HC is lost ([@temeteke] - [#27541]) ([mpchc docs]) +- Add mqtt temp_low/high_template in SCHEMA_BASE ([@kevinkk525] - [#28257]) ([mqtt docs]) +- Add Netatmo camera services ([@ssenart] - [#27970]) ([netatmo docs]) +- Fix token sent to Almond Web ([@balloob] - [#28584]) ([almond docs]) +- Update to latest Somfy changes ([@balloob] - [#28207]) ([somfy docs]) +- Always run flake8 through pre-commit, and with doctests ([@scop] - [#28490]) +- Handle exceptions from PyViCare library ([@oischinger] - [#28536]) ([vicare docs]) +- Add WLED integration ([@frenck] - [#28542]) ([wled docs]) (new-integration) +- update to latest integration library version ([@exxamalte] - [#28597]) ([geonetnz_quakes docs]) +- Upgrade greeneye_monitor to 1.0.1 ([@jkeljo] - [#28600]) ([greeneye_monitor docs]) +- Add device actions to vacuum ([@balloob] - [#28554]) ([device_automation docs]) ([vacuum docs]) +- Add device action to fan ([@balloob] - [#28550]) ([device_automation docs]) ([fan docs]) +- Add lock device triggers ([@balloob] - [#28547]) ([device_automation docs]) ([lock docs]) +- Add fan device trigger ([@balloob] - [#28545]) ([device_automation docs]) ([fan docs]) +- Fix simple typo: unhasable -> unhashable ([@timgates42] - [#28605]) +- Add device triggers to vacuum ([@balloob] - [#28548]) ([automation docs]) ([device_automation docs]) ([vacuum docs]) +- Fix demo TTS ([@bramkragten] - [#28608]) ([demo docs]) +- Add climate device actions ([@balloob] - [#28552]) ([climate docs]) ([device_automation docs]) +- Add azure servicebus notify service ([@hfurubotten] - [#27566]) ([azure_service_bus docs]) (new-integration) +- Add climate device triggers ([@balloob] - [#28544]) ([automation docs]) ([climate docs]) ([device_automation docs]) ([homekit docs]) +- Add fan device condition ([@balloob] - [#28549]) ([device_automation docs]) ([fan docs]) +- Add vacuum device conditions ([@balloob] - [#28551]) ([device_automation docs]) ([vacuum docs]) +- Add cool mode to HomematicIP climate ([@SukramJ] - [#28525]) ([homematicip_cloud docs]) +- Add device conditions to climate ([@balloob] - [#28553]) ([device_automation docs]) +- Add support for conversation ID ([@balloob] - [#28620]) ([almond docs]) ([conversation docs]) +- Match ALARM in NUT UPS status message ([@bwarden] - [#28591]) ([nut docs]) +- Use friendly app names for Fire TV sources ([@JeffLIrion] - [#28417]) ([androidtv docs]) (breaking change) +- Add Huawei LTE device registry support ([@scop] - [#28594]) ([huawei_lte docs]) +- Fix generic_thermostat too_hot/too_cold ([@akasma74] - [#27860]) ([generic_thermostat docs]) +- Add switch platform to WLED integration ([@frenck] - [#28606]) ([wled docs]) (new-platform) +- Add TT WS API ([@balloob] - [#28599]) ([cloud docs]) ([websocket_api docs]) +- Add turn_on/off to tfiac ([@fredrike] - [#27712]) ([tfiac docs]) +- Fix issue with multiple Netatmo home coach devices ([@cgtobi] - [#28407]) ([netatmo docs]) +- Add attribution and onboarding commands to conversation and Almond ([@bramkragten] - [#28621]) ([almond docs]) ([conversation docs]) +- Updated frontend to 20191108.0 ([@bramkragten] - [#28638]) ([frontend docs]) +- Bump ZHA quirks version ([@dmulcahey] - [#28636]) ([zha docs]) +- Move imports in xiaomi_miio ([@Misiu] - [#27773]) ([xiaomi_miio docs]) +- Added support for multiple SAJ solar inverters ([@fredericvl] - [#28612]) ([saj docs]) +- Add support for Heat Mode detection for ecobee Heat Pumps ([@arigit] - [#28273]) ([ecobee docs]) +- Fix unhandled exception when Swisscom Internet Box is not responsive ([@LeoCal] - [#28618]) ([swisscom docs]) +- Add pcal9535a integration ([@Shulyaka] - [#26563]) ([pcal9535a docs]) (new-integration) +- Add bluesound speaker group attribute ([@bluestripe] - [#28142]) ([bluesound docs]) +- Fix xiaomi vacuum tests ([@MartinHjelmare] - [#28658]) +- Add sensor platform to WLED integration ([@frenck] - [#28632]) ([wled docs]) (new-platform) +- Upgrade bimmer_connected to 0.6.2 ([@gerard33] - [#28651]) ([bmw_connected_drive docs]) +- verisure autolock service ([@persandstrom] - [#27366]) ([verisure docs]) +- Skip updating idle Plex clients ([@jjlawren] - [#28664]) ([plex docs]) +- Hue: store current sensor entities by bridge ([@bramkragten] - [#28679]) ([hue docs]) +- #28645: Bump up zm-py to 0.4.0 ([@rohankapoorcom] - [#28681]) ([zoneminder docs]) +- Add codeowner for lutron integration ([@JonGilmore] - [#28682]) ([lutron docs]) +- Add xiaomi_miio chuangmi.plug.hmi206 ([@rytilahti] - [#28688]) ([xiaomi_miio docs]) +- Add Lutron hybrid keypad raise/lower buttons ([@kevineriklee] - [#28674]) ([lutron docs]) +- Allow icons to be masked ([@bramkragten] - [#28692]) ([frontend docs]) +- fix typo in comments ([@basnijholt] - [#28694]) +- Add config flow tests for OwnTracks ([@Quentame] - [#28644]) ([owntracks docs]) +- Update Homekit climate.py to remap current mode ([@GaryOkie] - [#28625]) ([homekit_controller docs]) (breaking change) +- Bump up ZHA dependencies. ([@Adminiuga] - [#28711]) ([zha docs]) +- Ensure SimpliSafe alarm control panels can return from being offline ([@bachya] - [#28710]) ([simplisafe docs]) +- Bump plexapi to 3.3.0 ([@jjlawren] - [#28709]) ([plex docs]) +- Update binary_sensor.py ([@effelle] - [#28707]) ([mqtt docs]) +- Allow preset boost for Homematic IP Cloud power switches ([@SukramJ] - [#28713]) ([homematicip_cloud docs]) +- Upgrade discogs_client to 2.2.2 ([@fabaff] - [#28723]) ([discogs docs]) +- Fix Here Travel Time unable to find entity on startup ([@eifinger] - [#27237]) ([here_travel_time docs]) +- Use library method for season number ([@jjlawren] - [#28708]) ([plex docs]) +- Remove choice word when Almond has choices ([@balloob] - [#28725]) ([almond docs]) +- ESPHome fix missing state in certain circumstances ([@OttoWinter] - [#28729]) ([esphome docs]) +- Set up Almond Web to connect to HA ([@balloob] - [#28603]) ([almond docs]) +- version bump pypoint ([@fredrike] - [#28737]) ([point docs]) +- Upgrade async_upnp_client==0.14.12 ([@StevenLooman] - [#28733]) ([dlna_dmr docs]) ([upnp docs]) +- Add device classes to weather sensors. ([@davet2001] - [#28512]) ([yr docs]) +- Upgrade psutil to 5.6.5 ([@fabaff] - [#28717]) ([systemmonitor docs]) +- Travis and tox config improvements ([@scop] - [#28667]) +- Correct openalpr_local config option name ([@HexF] - [#28746]) ([openalpr_local docs]) (breaking change) +- Bump ZHA quirks to 0.0.28 ([@dmulcahey] - [#28750]) ([zha docs]) (beta fix) +- Updated frontend to 20191114.0 ([@bramkragten] - [#28768]) ([frontend docs]) (beta fix) +- Fix account link version check ([@balloob] - [#28770]) ([cloud docs]) (beta fix) +- Fix amazon dependency conflicts ([@bbrendon] - [#28217]) ([amazon_polly docs]) ([aws docs]) (beta fix) +- Change unique id for SAJ sensor based on device SN ([@fredericvl] - [#28663]) ([saj docs]) (breaking change) (beta fix) +- Fix changing venstar operation_mode ([@iamtpage] - [#28754]) ([venstar docs]) (beta fix) +- Fix Repetier integration entity indexing ([@MTrab] - [#28766]) ([repetier docs]) (beta fix) +- Fix HomematicIP Cloud Alarm Control Panel support for basic mode ([@SukramJ] - [#28778]) ([homematicip_cloud docs]) (beta fix) +- Fix Swisscom empty response received ([@LeoCal] - [#28782]) ([swisscom docs]) (beta fix) +- Fix broken postnl sensor ([@peternijssen] - [#28794]) (beta fix) +- Updated frontend to 20191115.0 ([@bramkragten] - [#28797]) ([frontend docs]) (beta fix) +- Fix Comfoconnect errors during startup ([@michaelarnauts] - [#28802]) ([comfoconnect docs]) (beta fix) +- Fix miio air quality sensor ([@valkjsaaa] - [#28828]) ([xiaomi_miio docs]) (beta fix) +- Update pyatmo to 3.0.1 ([@cgtobi] - [#28829]) ([netatmo docs]) (beta fix) +- Updated frontend to 20191118.0 ([@bramkragten] - [#28852]) ([frontend docs]) (beta fix) +- Fix documentation URL in failed platform config check ([@frenck] - [#28814]) (beta fix) +- Fix Synology camera whitelist ([@h4de5] - [#28822]) ([synology docs]) (beta fix) +- Fix setting colors while reproducing a lights state ([@Santobert] - [#28871]) ([light docs]) (beta fix) +- Updated frontend to 20191119.0 ([@bramkragten] - [#28875]) ([frontend docs]) (beta fix) +- Updated frontend to 20191119.1 ([@bramkragten] - [#28881]) ([frontend docs]) (beta fix) +- Updated frontend to 20191119.2 ([@bramkragten] - [#28896]) ([frontend docs]) (beta fix) +- Fix Almond onboarding url when using cloud ([@bramkragten] - [#28908]) ([almond docs]) (beta fix) + +[#26563]: https://github.com/home-assistant/home-assistant/pull/26563 +[#26656]: https://github.com/home-assistant/home-assistant/pull/26656 +[#26675]: https://github.com/home-assistant/home-assistant/pull/26675 +[#26692]: https://github.com/home-assistant/home-assistant/pull/26692 +[#27111]: https://github.com/home-assistant/home-assistant/pull/27111 +[#27237]: https://github.com/home-assistant/home-assistant/pull/27237 +[#27296]: https://github.com/home-assistant/home-assistant/pull/27296 +[#27306]: https://github.com/home-assistant/home-assistant/pull/27306 +[#27307]: https://github.com/home-assistant/home-assistant/pull/27307 +[#27324]: https://github.com/home-assistant/home-assistant/pull/27324 +[#27366]: https://github.com/home-assistant/home-assistant/pull/27366 +[#27475]: https://github.com/home-assistant/home-assistant/pull/27475 +[#27492]: https://github.com/home-assistant/home-assistant/pull/27492 +[#27517]: https://github.com/home-assistant/home-assistant/pull/27517 +[#27538]: https://github.com/home-assistant/home-assistant/pull/27538 +[#27541]: https://github.com/home-assistant/home-assistant/pull/27541 +[#27548]: https://github.com/home-assistant/home-assistant/pull/27548 +[#27566]: https://github.com/home-assistant/home-assistant/pull/27566 +[#27712]: https://github.com/home-assistant/home-assistant/pull/27712 +[#27735]: https://github.com/home-assistant/home-assistant/pull/27735 +[#27761]: https://github.com/home-assistant/home-assistant/pull/27761 +[#27763]: https://github.com/home-assistant/home-assistant/pull/27763 +[#27765]: https://github.com/home-assistant/home-assistant/pull/27765 +[#27773]: https://github.com/home-assistant/home-assistant/pull/27773 +[#27775]: https://github.com/home-assistant/home-assistant/pull/27775 +[#27796]: https://github.com/home-assistant/home-assistant/pull/27796 +[#27817]: https://github.com/home-assistant/home-assistant/pull/27817 +[#27830]: https://github.com/home-assistant/home-assistant/pull/27830 +[#27860]: https://github.com/home-assistant/home-assistant/pull/27860 +[#27941]: https://github.com/home-assistant/home-assistant/pull/27941 +[#27949]: https://github.com/home-assistant/home-assistant/pull/27949 +[#27970]: https://github.com/home-assistant/home-assistant/pull/27970 +[#28049]: https://github.com/home-assistant/home-assistant/pull/28049 +[#28063]: https://github.com/home-assistant/home-assistant/pull/28063 +[#28142]: https://github.com/home-assistant/home-assistant/pull/28142 +[#28161]: https://github.com/home-assistant/home-assistant/pull/28161 +[#28163]: https://github.com/home-assistant/home-assistant/pull/28163 +[#28168]: https://github.com/home-assistant/home-assistant/pull/28168 +[#28171]: https://github.com/home-assistant/home-assistant/pull/28171 +[#28175]: https://github.com/home-assistant/home-assistant/pull/28175 +[#28176]: https://github.com/home-assistant/home-assistant/pull/28176 +[#28178]: https://github.com/home-assistant/home-assistant/pull/28178 +[#28179]: https://github.com/home-assistant/home-assistant/pull/28179 +[#28180]: https://github.com/home-assistant/home-assistant/pull/28180 +[#28181]: https://github.com/home-assistant/home-assistant/pull/28181 +[#28182]: https://github.com/home-assistant/home-assistant/pull/28182 +[#28186]: https://github.com/home-assistant/home-assistant/pull/28186 +[#28187]: https://github.com/home-assistant/home-assistant/pull/28187 +[#28188]: https://github.com/home-assistant/home-assistant/pull/28188 +[#28189]: https://github.com/home-assistant/home-assistant/pull/28189 +[#28190]: https://github.com/home-assistant/home-assistant/pull/28190 +[#28191]: https://github.com/home-assistant/home-assistant/pull/28191 +[#28196]: https://github.com/home-assistant/home-assistant/pull/28196 +[#28201]: https://github.com/home-assistant/home-assistant/pull/28201 +[#28203]: https://github.com/home-assistant/home-assistant/pull/28203 +[#28204]: https://github.com/home-assistant/home-assistant/pull/28204 +[#28207]: https://github.com/home-assistant/home-assistant/pull/28207 +[#28210]: https://github.com/home-assistant/home-assistant/pull/28210 +[#28212]: https://github.com/home-assistant/home-assistant/pull/28212 +[#28214]: https://github.com/home-assistant/home-assistant/pull/28214 +[#28215]: https://github.com/home-assistant/home-assistant/pull/28215 +[#28216]: https://github.com/home-assistant/home-assistant/pull/28216 +[#28217]: https://github.com/home-assistant/home-assistant/pull/28217 +[#28220]: https://github.com/home-assistant/home-assistant/pull/28220 +[#28225]: https://github.com/home-assistant/home-assistant/pull/28225 +[#28228]: https://github.com/home-assistant/home-assistant/pull/28228 +[#28230]: https://github.com/home-assistant/home-assistant/pull/28230 +[#28231]: https://github.com/home-assistant/home-assistant/pull/28231 +[#28234]: https://github.com/home-assistant/home-assistant/pull/28234 +[#28236]: https://github.com/home-assistant/home-assistant/pull/28236 +[#28237]: https://github.com/home-assistant/home-assistant/pull/28237 +[#28238]: https://github.com/home-assistant/home-assistant/pull/28238 +[#28240]: https://github.com/home-assistant/home-assistant/pull/28240 +[#28247]: https://github.com/home-assistant/home-assistant/pull/28247 +[#28248]: https://github.com/home-assistant/home-assistant/pull/28248 +[#28250]: https://github.com/home-assistant/home-assistant/pull/28250 +[#28252]: https://github.com/home-assistant/home-assistant/pull/28252 +[#28257]: https://github.com/home-assistant/home-assistant/pull/28257 +[#28258]: https://github.com/home-assistant/home-assistant/pull/28258 +[#28260]: https://github.com/home-assistant/home-assistant/pull/28260 +[#28261]: https://github.com/home-assistant/home-assistant/pull/28261 +[#28262]: https://github.com/home-assistant/home-assistant/pull/28262 +[#28269]: https://github.com/home-assistant/home-assistant/pull/28269 +[#28270]: https://github.com/home-assistant/home-assistant/pull/28270 +[#28271]: https://github.com/home-assistant/home-assistant/pull/28271 +[#28273]: https://github.com/home-assistant/home-assistant/pull/28273 +[#28277]: https://github.com/home-assistant/home-assistant/pull/28277 +[#28278]: https://github.com/home-assistant/home-assistant/pull/28278 +[#28282]: https://github.com/home-assistant/home-assistant/pull/28282 +[#28285]: https://github.com/home-assistant/home-assistant/pull/28285 +[#28286]: https://github.com/home-assistant/home-assistant/pull/28286 +[#28287]: https://github.com/home-assistant/home-assistant/pull/28287 +[#28288]: https://github.com/home-assistant/home-assistant/pull/28288 +[#28291]: https://github.com/home-assistant/home-assistant/pull/28291 +[#28293]: https://github.com/home-assistant/home-assistant/pull/28293 +[#28299]: https://github.com/home-assistant/home-assistant/pull/28299 +[#28300]: https://github.com/home-assistant/home-assistant/pull/28300 +[#28301]: https://github.com/home-assistant/home-assistant/pull/28301 +[#28304]: https://github.com/home-assistant/home-assistant/pull/28304 +[#28305]: https://github.com/home-assistant/home-assistant/pull/28305 +[#28310]: https://github.com/home-assistant/home-assistant/pull/28310 +[#28311]: https://github.com/home-assistant/home-assistant/pull/28311 +[#28312]: https://github.com/home-assistant/home-assistant/pull/28312 +[#28313]: https://github.com/home-assistant/home-assistant/pull/28313 +[#28322]: https://github.com/home-assistant/home-assistant/pull/28322 +[#28324]: https://github.com/home-assistant/home-assistant/pull/28324 +[#28330]: https://github.com/home-assistant/home-assistant/pull/28330 +[#28338]: https://github.com/home-assistant/home-assistant/pull/28338 +[#28339]: https://github.com/home-assistant/home-assistant/pull/28339 +[#28349]: https://github.com/home-assistant/home-assistant/pull/28349 +[#28352]: https://github.com/home-assistant/home-assistant/pull/28352 +[#28362]: https://github.com/home-assistant/home-assistant/pull/28362 +[#28369]: https://github.com/home-assistant/home-assistant/pull/28369 +[#28382]: https://github.com/home-assistant/home-assistant/pull/28382 +[#28385]: https://github.com/home-assistant/home-assistant/pull/28385 +[#28401]: https://github.com/home-assistant/home-assistant/pull/28401 +[#28403]: https://github.com/home-assistant/home-assistant/pull/28403 +[#28407]: https://github.com/home-assistant/home-assistant/pull/28407 +[#28413]: https://github.com/home-assistant/home-assistant/pull/28413 +[#28417]: https://github.com/home-assistant/home-assistant/pull/28417 +[#28421]: https://github.com/home-assistant/home-assistant/pull/28421 +[#28422]: https://github.com/home-assistant/home-assistant/pull/28422 +[#28423]: https://github.com/home-assistant/home-assistant/pull/28423 +[#28424]: https://github.com/home-assistant/home-assistant/pull/28424 +[#28428]: https://github.com/home-assistant/home-assistant/pull/28428 +[#28429]: https://github.com/home-assistant/home-assistant/pull/28429 +[#28434]: https://github.com/home-assistant/home-assistant/pull/28434 +[#28438]: https://github.com/home-assistant/home-assistant/pull/28438 +[#28442]: https://github.com/home-assistant/home-assistant/pull/28442 +[#28445]: https://github.com/home-assistant/home-assistant/pull/28445 +[#28449]: https://github.com/home-assistant/home-assistant/pull/28449 +[#28452]: https://github.com/home-assistant/home-assistant/pull/28452 +[#28458]: https://github.com/home-assistant/home-assistant/pull/28458 +[#28463]: https://github.com/home-assistant/home-assistant/pull/28463 +[#28465]: https://github.com/home-assistant/home-assistant/pull/28465 +[#28468]: https://github.com/home-assistant/home-assistant/pull/28468 +[#28470]: https://github.com/home-assistant/home-assistant/pull/28470 +[#28478]: https://github.com/home-assistant/home-assistant/pull/28478 +[#28487]: https://github.com/home-assistant/home-assistant/pull/28487 +[#28488]: https://github.com/home-assistant/home-assistant/pull/28488 +[#28490]: https://github.com/home-assistant/home-assistant/pull/28490 +[#28503]: https://github.com/home-assistant/home-assistant/pull/28503 +[#28506]: https://github.com/home-assistant/home-assistant/pull/28506 +[#28507]: https://github.com/home-assistant/home-assistant/pull/28507 +[#28509]: https://github.com/home-assistant/home-assistant/pull/28509 +[#28511]: https://github.com/home-assistant/home-assistant/pull/28511 +[#28512]: https://github.com/home-assistant/home-assistant/pull/28512 +[#28514]: https://github.com/home-assistant/home-assistant/pull/28514 +[#28517]: https://github.com/home-assistant/home-assistant/pull/28517 +[#28520]: https://github.com/home-assistant/home-assistant/pull/28520 +[#28525]: https://github.com/home-assistant/home-assistant/pull/28525 +[#28527]: https://github.com/home-assistant/home-assistant/pull/28527 +[#28529]: https://github.com/home-assistant/home-assistant/pull/28529 +[#28533]: https://github.com/home-assistant/home-assistant/pull/28533 +[#28535]: https://github.com/home-assistant/home-assistant/pull/28535 +[#28536]: https://github.com/home-assistant/home-assistant/pull/28536 +[#28538]: https://github.com/home-assistant/home-assistant/pull/28538 +[#28542]: https://github.com/home-assistant/home-assistant/pull/28542 +[#28544]: https://github.com/home-assistant/home-assistant/pull/28544 +[#28545]: https://github.com/home-assistant/home-assistant/pull/28545 +[#28547]: https://github.com/home-assistant/home-assistant/pull/28547 +[#28548]: https://github.com/home-assistant/home-assistant/pull/28548 +[#28549]: https://github.com/home-assistant/home-assistant/pull/28549 +[#28550]: https://github.com/home-assistant/home-assistant/pull/28550 +[#28551]: https://github.com/home-assistant/home-assistant/pull/28551 +[#28552]: https://github.com/home-assistant/home-assistant/pull/28552 +[#28553]: https://github.com/home-assistant/home-assistant/pull/28553 +[#28554]: https://github.com/home-assistant/home-assistant/pull/28554 +[#28570]: https://github.com/home-assistant/home-assistant/pull/28570 +[#28574]: https://github.com/home-assistant/home-assistant/pull/28574 +[#28578]: https://github.com/home-assistant/home-assistant/pull/28578 +[#28582]: https://github.com/home-assistant/home-assistant/pull/28582 +[#28584]: https://github.com/home-assistant/home-assistant/pull/28584 +[#28591]: https://github.com/home-assistant/home-assistant/pull/28591 +[#28594]: https://github.com/home-assistant/home-assistant/pull/28594 +[#28597]: https://github.com/home-assistant/home-assistant/pull/28597 +[#28599]: https://github.com/home-assistant/home-assistant/pull/28599 +[#28600]: https://github.com/home-assistant/home-assistant/pull/28600 +[#28603]: https://github.com/home-assistant/home-assistant/pull/28603 +[#28605]: https://github.com/home-assistant/home-assistant/pull/28605 +[#28606]: https://github.com/home-assistant/home-assistant/pull/28606 +[#28608]: https://github.com/home-assistant/home-assistant/pull/28608 +[#28612]: https://github.com/home-assistant/home-assistant/pull/28612 +[#28618]: https://github.com/home-assistant/home-assistant/pull/28618 +[#28620]: https://github.com/home-assistant/home-assistant/pull/28620 +[#28621]: https://github.com/home-assistant/home-assistant/pull/28621 +[#28625]: https://github.com/home-assistant/home-assistant/pull/28625 +[#28632]: https://github.com/home-assistant/home-assistant/pull/28632 +[#28636]: https://github.com/home-assistant/home-assistant/pull/28636 +[#28638]: https://github.com/home-assistant/home-assistant/pull/28638 +[#28644]: https://github.com/home-assistant/home-assistant/pull/28644 +[#28651]: https://github.com/home-assistant/home-assistant/pull/28651 +[#28658]: https://github.com/home-assistant/home-assistant/pull/28658 +[#28663]: https://github.com/home-assistant/home-assistant/pull/28663 +[#28664]: https://github.com/home-assistant/home-assistant/pull/28664 +[#28667]: https://github.com/home-assistant/home-assistant/pull/28667 +[#28674]: https://github.com/home-assistant/home-assistant/pull/28674 +[#28679]: https://github.com/home-assistant/home-assistant/pull/28679 +[#28681]: https://github.com/home-assistant/home-assistant/pull/28681 +[#28682]: https://github.com/home-assistant/home-assistant/pull/28682 +[#28688]: https://github.com/home-assistant/home-assistant/pull/28688 +[#28692]: https://github.com/home-assistant/home-assistant/pull/28692 +[#28694]: https://github.com/home-assistant/home-assistant/pull/28694 +[#28707]: https://github.com/home-assistant/home-assistant/pull/28707 +[#28708]: https://github.com/home-assistant/home-assistant/pull/28708 +[#28709]: https://github.com/home-assistant/home-assistant/pull/28709 +[#28710]: https://github.com/home-assistant/home-assistant/pull/28710 +[#28711]: https://github.com/home-assistant/home-assistant/pull/28711 +[#28713]: https://github.com/home-assistant/home-assistant/pull/28713 +[#28717]: https://github.com/home-assistant/home-assistant/pull/28717 +[#28723]: https://github.com/home-assistant/home-assistant/pull/28723 +[#28725]: https://github.com/home-assistant/home-assistant/pull/28725 +[#28729]: https://github.com/home-assistant/home-assistant/pull/28729 +[#28733]: https://github.com/home-assistant/home-assistant/pull/28733 +[#28737]: https://github.com/home-assistant/home-assistant/pull/28737 +[#28746]: https://github.com/home-assistant/home-assistant/pull/28746 +[#28750]: https://github.com/home-assistant/home-assistant/pull/28750 +[#28754]: https://github.com/home-assistant/home-assistant/pull/28754 +[#28766]: https://github.com/home-assistant/home-assistant/pull/28766 +[#28768]: https://github.com/home-assistant/home-assistant/pull/28768 +[#28770]: https://github.com/home-assistant/home-assistant/pull/28770 +[#28778]: https://github.com/home-assistant/home-assistant/pull/28778 +[#28782]: https://github.com/home-assistant/home-assistant/pull/28782 +[#28794]: https://github.com/home-assistant/home-assistant/pull/28794 +[#28797]: https://github.com/home-assistant/home-assistant/pull/28797 +[#28802]: https://github.com/home-assistant/home-assistant/pull/28802 +[#28814]: https://github.com/home-assistant/home-assistant/pull/28814 +[#28822]: https://github.com/home-assistant/home-assistant/pull/28822 +[#28828]: https://github.com/home-assistant/home-assistant/pull/28828 +[#28829]: https://github.com/home-assistant/home-assistant/pull/28829 +[#28852]: https://github.com/home-assistant/home-assistant/pull/28852 +[#28871]: https://github.com/home-assistant/home-assistant/pull/28871 +[#28875]: https://github.com/home-assistant/home-assistant/pull/28875 +[#28881]: https://github.com/home-assistant/home-assistant/pull/28881 +[#28896]: https://github.com/home-assistant/home-assistant/pull/28896 +[#28908]: https://github.com/home-assistant/home-assistant/pull/28908 +[@adminiuga]: https://github.com/Adminiuga +[@anonym-tsk]: https://github.com/Anonym-tsk +[@bkpepe]: https://github.com/BKPepe +[@garyokie]: https://github.com/GaryOkie +[@grodesh]: https://github.com/Grodesh +[@harlemsquirrel]: https://github.com/HarlemSquirrel +[@hexf]: https://github.com/HexF +[@jphutchins]: https://github.com/JPHutchins +[@jefflirion]: https://github.com/JeffLIrion +[@jongilmore]: https://github.com/JonGilmore +[@kane610]: https://github.com/Kane610 +[@leocal]: https://github.com/LeoCal +[@mtrab]: https://github.com/MTrab +[@martinhjelmare]: https://github.com/MartinHjelmare +[@misiu]: https://github.com/Misiu +[@onfreund]: https://github.com/OnFreund +[@ottowinter]: https://github.com/OttoWinter +[@pixeljonas]: https://github.com/PixelJonas +[@poeschl]: https://github.com/Poeschl +[@quentame]: https://github.com/Quentame +[@santobert]: https://github.com/Santobert +[@schoonology]: https://github.com/Schoonology +[@shulyaka]: https://github.com/Shulyaka +[@stevenlooman]: https://github.com/StevenLooman +[@sukramj]: https://github.com/SukramJ +[@zironl]: https://github.com/ZiroNL +[@akasma74]: https://github.com/akasma74 +[@arigit]: https://github.com/arigit +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@basnijholt]: https://github.com/basnijholt +[@bbrendon]: https://github.com/bbrendon +[@bendavid]: https://github.com/bendavid +[@bluestripe]: https://github.com/bluestripe +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@bwarden]: https://github.com/bwarden +[@castaway]: https://github.com/castaway +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@chriscla]: https://github.com/chriscla +[@crazyfx1]: https://github.com/crazyfx1 +[@davet2001]: https://github.com/davet2001 +[@djpremier]: https://github.com/djpremier +[@dmulcahey]: https://github.com/dmulcahey +[@effelle]: https://github.com/effelle +[@eifinger]: https://github.com/eifinger +[@eliseomartelli]: https://github.com/eliseomartelli +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@escoand]: https://github.com/escoand +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@florisvdk]: https://github.com/florisvdk +[@flz]: https://github.com/flz +[@fredericvl]: https://github.com/fredericvl +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[@fwestenberg]: https://github.com/fwestenberg +[@gerard33]: https://github.com/gerard33 +[@gngj]: https://github.com/gngj +[@guillempages]: https://github.com/guillempages +[@h4de5]: https://github.com/h4de5 +[@hfurubotten]: https://github.com/hfurubotten +[@iamtpage]: https://github.com/iamtpage +[@jesserockz]: https://github.com/jesserockz +[@jjlawren]: https://github.com/jjlawren +[@jkeljo]: https://github.com/jkeljo +[@karouf]: https://github.com/karouf +[@kennedyshead]: https://github.com/kennedyshead +[@kevineriklee]: https://github.com/kevineriklee +[@kevinkk525]: https://github.com/kevinkk525 +[@ktnrg45]: https://github.com/ktnrg45 +[@ludeeus]: https://github.com/ludeeus +[@marthoc]: https://github.com/marthoc +[@mezz64]: https://github.com/mezz64 +[@mflage]: https://github.com/mflage +[@michaelarnauts]: https://github.com/michaelarnauts +[@michaeldavie]: https://github.com/michaeldavie +[@nkaminski]: https://github.com/nkaminski +[@ochlocracy]: https://github.com/ochlocracy +[@oischinger]: https://github.com/oischinger +[@pattyland]: https://github.com/pattyland +[@persandstrom]: https://github.com/persandstrom +[@peternijssen]: https://github.com/peternijssen +[@pvizeli]: https://github.com/pvizeli +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@rutkai]: https://github.com/rutkai +[@rytilahti]: https://github.com/rytilahti +[@scop]: https://github.com/scop +[@shmooey]: https://github.com/shmooey +[@snowzach]: https://github.com/snowzach +[@soraxas]: https://github.com/soraxas +[@soundstorm]: https://github.com/soundstorm +[@ssenart]: https://github.com/ssenart +[@syssi]: https://github.com/syssi +[@tefinger]: https://github.com/tefinger +[@temeteke]: https://github.com/temeteke +[@thoscut]: https://github.com/thoscut +[@timgates42]: https://github.com/timgates42 +[@tlrobinson]: https://github.com/tlrobinson +[@ttroy50]: https://github.com/ttroy50 +[@valkjsaaa]: https://github.com/valkjsaaa +[@vangorra]: https://github.com/vangorra +[@yeralin]: https://github.com/yeralin +[@yjajkiew]: https://github.com/yjajkiew +[@zxdavb]: https://github.com/zxdavb +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alexa docs]: /integrations/alexa/ +[almond docs]: /integrations/almond/ +[amazon_polly docs]: /integrations/amazon_polly/ +[androidtv docs]: /integrations/androidtv/ +[asuswrt docs]: /integrations/asuswrt/ +[automation docs]: /integrations/automation/ +[avea docs]: /integrations/avea/ +[aws docs]: /integrations/aws/ +[azure_service_bus docs]: /integrations/azure_service_bus/ +[bluesound docs]: /integrations/bluesound/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[comfoconnect docs]: /integrations/comfoconnect/ +[config docs]: /integrations/config/ +[conversation docs]: /integrations/conversation/ +[coolmaster docs]: /integrations/coolmaster/ +[cover docs]: /integrations/cover/ +[deconz docs]: /integrations/deconz/ +[demo docs]: /integrations/demo/ +[device_automation docs]: /integrations/device_automation/ +[device_tracker docs]: /integrations/device_tracker/ +[discogs docs]: /integrations/discogs/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[doods docs]: /integrations/doods/ +[dyson docs]: /integrations/dyson/ +[ecobee docs]: /integrations/ecobee/ +[eight_sleep docs]: /integrations/eight_sleep/ +[environment_canada docs]: /integrations/environment_canada/ +[envirophat docs]: /integrations/envirophat/ +[ephember docs]: /integrations/ephember/ +[eq3btsmart docs]: /integrations/eq3btsmart/ +[esphome docs]: /integrations/esphome/ +[fan docs]: /integrations/fan/ +[feedreader docs]: /integrations/feedreader/ +[flux docs]: /integrations/flux/ +[flux_led docs]: /integrations/flux_led/ +[folder docs]: /integrations/folder/ +[frontend docs]: /integrations/frontend/ +[generic_thermostat docs]: /integrations/generic_thermostat/ +[geniushub docs]: /integrations/geniushub/ +[geonetnz_quakes docs]: /integrations/geonetnz_quakes/ +[google_assistant docs]: /integrations/google_assistant/ +[greeneye_monitor docs]: /integrations/greeneye_monitor/ +[gtt docs]: /integrations/gtt/ +[hangouts docs]: /integrations/hangouts/ +[hassio docs]: /integrations/hassio/ +[here_travel_time docs]: /integrations/here_travel_time/ +[homeassistant docs]: /integrations/homeassistant/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[iaqualink docs]: /integrations/iaqualink/ +[image_processing docs]: /integrations/image_processing/ +[imap docs]: /integrations/imap/ +[incomfort docs]: /integrations/incomfort/ +[iss docs]: /integrations/iss/ +[juicenet docs]: /integrations/juicenet/ +[keyboard_remote docs]: /integrations/keyboard_remote/ +[light docs]: /integrations/light/ +[lock docs]: /integrations/lock/ +[lutron docs]: /integrations/lutron/ +[media_extractor docs]: /integrations/media_extractor/ +[media_player docs]: /integrations/media_player/ +[mpchc docs]: /integrations/mpchc/ +[mqtt docs]: /integrations/mqtt/ +[netatmo docs]: /integrations/netatmo/ +[nextbus docs]: /integrations/nextbus/ +[nut docs]: /integrations/nut/ +[nzbget docs]: /integrations/nzbget/ +[onvif docs]: /integrations/onvif/ +[openalpr_local docs]: /integrations/openalpr_local/ +[owntracks docs]: /integrations/owntracks/ +[pcal9535a docs]: /integrations/pcal9535a/ +[pioneer docs]: /integrations/pioneer/ +[pjlink docs]: /integrations/pjlink/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[point docs]: /integrations/point/ +[proxy docs]: /integrations/proxy/ +[ps4 docs]: /integrations/ps4/ +[qrcode docs]: /integrations/qrcode/ +[reddit docs]: /integrations/reddit/ +[repetier docs]: /integrations/repetier/ +[saj docs]: /integrations/saj/ +[samsungtv docs]: /integrations/samsungtv/ +[shiftr docs]: /integrations/shiftr/ +[simplisafe docs]: /integrations/simplisafe/ +[snmp docs]: /integrations/snmp/ +[somfy docs]: /integrations/somfy/ +[ssdp docs]: /integrations/ssdp/ +[stt docs]: /integrations/stt/ +[swisscom docs]: /integrations/swisscom/ +[synology docs]: /integrations/synology/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tahoma docs]: /integrations/tahoma/ +[telegram_bot docs]: /integrations/telegram_bot/ +[tfiac docs]: /integrations/tfiac/ +[thingspeak docs]: /integrations/thingspeak/ +[tile docs]: /integrations/tile/ +[tradfri docs]: /integrations/tradfri/ +[transmission docs]: /integrations/transmission/ +[twitch docs]: /integrations/twitch/ +[twitter docs]: /integrations/twitter/ +[unifiled docs]: /integrations/unifiled/ +[upnp docs]: /integrations/upnp/ +[vacuum docs]: /integrations/vacuum/ +[venstar docs]: /integrations/venstar/ +[verisure docs]: /integrations/verisure/ +[vicare docs]: /integrations/vicare/ +[vivotek docs]: /integrations/vivotek/ +[water_heater docs]: /integrations/water_heater/ +[watson_tts docs]: /integrations/watson_tts/ +[websocket_api docs]: /integrations/websocket_api/ +[withings docs]: /integrations/withings/ +[wled docs]: /integrations/wled/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yr docs]: /integrations/yr/ +[zha docs]: /integrations/zha/ +[zoneminder docs]: /integrations/zoneminder/ +[zwave docs]: /integrations/zwave/ diff --git a/source/_posts/2019-11-22-state-of-the-union.markdown b/source/_posts/2019-11-22-state-of-the-union.markdown new file mode 100644 index 000000000000..4c2718372b3a --- /dev/null +++ b/source/_posts/2019-11-22-state-of-the-union.markdown @@ -0,0 +1,136 @@ +--- +layout: post +title: "State of the Union 2019: Recap" +description: "ING hosted 150 Home Assistant community members to hear about the what and why of Home Assistant." +date: 2019-11-22 0:41:02 +date_formatted: "November 22, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Announcements +redirect_from: + - /state-of-the-union/ +og_image: /images/blog/2019-11-state-of-the-union/social.jpeg +--- + +On November 13, 2019, 150 Home Assistant community members gathered at [ING](https://www.ing.com) in Amsterdam for the Home Assistant State of the Union 2019. + +That evening, Paulus Schoutsen (founder Home Assistant) and Pascal Vizeli (founder hass.io) presented what Home Assistant is up to, why we're doing what we're doing and what we got planned. + +Video of the event is embedded below (it starts at 7:12): + +
    + +
    + +## Thanks + +The State of the Union could not have been possible without the time and energy of the following people: + +- [ING](https://www.ing.com) for hosting us once again ❤️ +- Erik-Jan Riemers for organizing – Rockstar ⭐️ +- Frenck for managing the livestream +- Arjan Vroege for assisting the team + +## Announcements + +### We're #10 open-source project in the world + +GitHub posted their [State of the Octoverse](https://octoverse.github.com/#top-and-trending-projects), listing Home Assistant as the tenth biggest project in the last year based on the number of contributors. + +This is especially impressive because all the other things on the list are related to, or maintained by billion dollar companies. + +

    Top 10 biggest open-source projects.Top 10 biggest open-source projects.

    + +### Home Assistant around the world ❤️ + +
    + +
    + +### Improved Scenes + +In Home Assistant 0.102 we're launching a new scene editor. We're also adding two scene services `scene.apply` and `scene.create`. First one allows you to apply a scene without prior defining it, the second one allows you to create a scene on the fly. + +### iOS app + +[@robbiet480](https://github.com/robbiet480) has submitted the new and updated iOS app to the app store and it will be available soon. + +[Source code](https://github.com/home-assistant/home-assistant-ios) + +### Android app + +We have released a new Android app! [Download it here.](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android) It's being developed by [@CedrickFlocon](https://github.com/CedrickFlocon) and we're already seeing a ton of other contributors jump in. Awesome! + +[Source code](https://github.com/home-assistant/home-assistant-android/) + +### OAuth2 Account Linking + +We've made it easier in Home Assistant for integrations to use OAuth2 account linking. This is available starting Home Assistant 0.102. Somfy is the first partner to use it. + +It works using a small cloud service provided by Home Assistant Cloud. It is available to all users for free, no cloud account necessary. + +
    + +
    + +Check the [updated developer documentation](https://developers.home-assistant.io/docs/en/config_entries_config_flow_handler.html#configuration-via-oauth2) if you want to add OAuth2 account linking to an integration. + +### Teamed up with Almond: privacy-preserving virtual assistant + +We've teamed up with the Stanford Open Virtual Assistant Lab to bring [Almond](https://almond.stanford.edu/) to Home Assistant users. Almond has been upgraded with Home Assistant integration and users can now talk to Almond via the Lovelace UI. + +You can run this standalone, as a hass.io add-on or via a version hosted in the cloud by Stanford. + +

    Short description of what Almond is.Short description of what Almond is.

    + +For more information, check [the announcement blog](/blog/2019/11/20/privacy-focused-voice-assistant/). + +### Ada, voice assistant powered by Home Assistant + +We have introduced a new project called Ada. Ada is a voice assistant that outsources all processing to the speech-to-text (new!), conversation and text-to-speech integrations in Home Assistant. You can pick your own providers for each integration. + +You can run this standalone or as a hass.io add-on. + +For more information, check [the announcement blog](/blog/2019/11/20/privacy-focused-voice-assistant/). + +[Source code](https://github.com/home-assistant/ada). + +

    Architectural overview of Ada.Architectural overview of Ada.

    + +
    + +
    + +### Voice for Home Assistant Cloud + +Nabu Casa has introduced a new beta service providing speech-to-text and text-to-speech services to Home Assistant Cloud subscribers powered by Azure Cognitive Services. This will make it easy to get started with Ada or use it to send spoken notifications to speakers in your house. + +### Z-Wave + +We've been working with the Open Z-Wave developers on a new solution that will allow us to migrate to the new Open Z-Wave 1.6 relase and make it easier to stay up to date in the future. + +We're expecting to launch an MVP soon. This effort is driven by [@cgarwood](https://github.com/cgarwood). + +[Source code](https://github.com/cgarwood/python-openzwave-mqtt) + +### Frenck is joining Nabu Casa + +Frenck will be joining Nabu Casa as the fourth employee working full-time on Home Assistant. + +_"If I could describe my dream job, it would be being a full-time open source developer; Helping the world to become a better place by dedicating my time & knowledge to create & innovate open source software solutions. Allowing everybody on this earth the privilege to enjoy those things for free."_    – Franck Nijhof (Frenck) on [frenck.dev](https://frenck.dev/donate/) + +### Create automations using your voice + +We have been able to leverage Almond's neural network to **allow users to generate automations using natural language**. This means that you can now create an automation by telling Home Assistant to "turn on the lights when I get home" and we'll convert it to the appropriate automation in Home Assistant. + +[Source code](https://github.com/NabuCasa/thingtalk-hass-generator/). + +

    +Screenshot of the create automation dialog. +Screenshot of the create automation dialog. +

    + +### Share the love ❤️ + +Home Assistant is the community and the community is Home Assistant. Help us spread the Home Assistant love, help others and share your knowledge on YouTube, blogs and other media. diff --git a/source/_posts/2019-12-01-home-assistant-for-everyone.markdown b/source/_posts/2019-12-01-home-assistant-for-everyone.markdown new file mode 100644 index 000000000000..2718d831b789 --- /dev/null +++ b/source/_posts/2019-12-01-home-assistant-for-everyone.markdown @@ -0,0 +1,48 @@ +--- +title: "Home Assistant for everyone" +description: "Make it easier. We're making Home Assistant easier to use, configure and contribute to." +date: 2019-12-01 00:01:00 +date_formatted: "December 1, 2019" +author: Paulus Schoutsen +author_twitter: balloob +categories: Community +og_image: /images/blog/2019-12-home-assistant-for-everyone/social.png +--- + +With Home Assistant, we want to help people live their life, while helping out in the background. I wrote about this in 2016 when I detailed my view on the [perfect home automation](https://www.home-assistant.io/blog/2016/01/19/perfect-home-automation/). We've been working towards this ever since. + +In 2019 we focused on "Make It Easier" ([see State of the Union for details](https://youtu.be/tc17q1Zn0Xs?t=1271)). We made Home Assistant easier to use, configure and to contribute to. Every time we make it easier, we become accessible to more people. There is still a ton we can make easier, and that's great because 2020 is around the corner and we need things to do :-) + +During Thanksgiving, Home Assistant made it to #1 on [Hacker News](https://news.ycombinator.com/item?id=21665125), a social news website focusing on computer science and entrepreneurship. The comments had lots of users chiming in with their positive experiences. One comment stood out to me and I wanted to share it: + +
    +Just wanted to say that my life as a quadriplegic would be 13.4 million percent more crap without Home Assistant. Being quadriplegic and having something as open as Home Assistant is absolutely amazing, I have automated absolutely everything in the house and home assistant has not choked once. +

    +Couple that with one of the friendliest communities for newbies I have come across in a long time and you have something really awesome. +

    +I've been using it for a couple of years, I have tried all the other open source alternatives but nothing really comes close for me. I'm actually fiddling with my installation right now as it were. +

    +I cannot plug my phone in to charge it up myself obviously, so I am writing a little automation that will check who is in the house and announce through the speakers my phone needs charging up or send them a text message if I have their phone number when my mobile phone charge gets below 20%. +

    +Totally cool beanz and I am totally serious about how much easier this makes my life as a quadriplegic. +

    +– escapologybb on Hacker News +
    + +This is just great. I love how this user can live a more comfortable life. It's really motivating. + +I also really like the first reply to the above comment. It highlights how we tend to judge things from our perspective and that our perspective might not paint the whole picture. + +
    +Thanks for your comment. I came to this discussion with my blinkers on, so to speak, pre -judging how I need less automation in my world, and you give concrete evidence how someone's "meh" can be balanced by untold advantages (13.4 million, in fact) of such a system. +

    +Thanks for making me eat humble pie and broadening my views. Sometimes more tech is helpful indeed. +

    +Ps: The way you're applying it is creative and awesome too! +

    +– cmroanirgo on Hacker News +
    + +As Home Assistant grows and evolves, let's make sure we don't judge the additions and changes based on just our own perspective and needs. Think about how it can help other (potential) Home Assistant users. It's our goal that a privacy-focused home automation platform is within everyone's reach, regardless of background, location or income. + +Paulus diff --git a/source/_posts/2019-12-03-sonos-shutting-down-local-voice-option-snips.markdown b/source/_posts/2019-12-03-sonos-shutting-down-local-voice-option-snips.markdown new file mode 100644 index 000000000000..4c8f80e3742e --- /dev/null +++ b/source/_posts/2019-12-03-sonos-shutting-down-local-voice-option-snips.markdown @@ -0,0 +1,52 @@ +--- +title: "Sonos shutting down local voice option Snips" +description: "After acquiring Snips, Sonos has decided to shut down the option to build local voice control." +date: 2019-12-03 00:01:00 +date_formatted: "December 3, 2019" +author: Paulus Schoutsen +author_twitter: balloob +categories: Public-Service-Announcement +og_image: /images/blog/2019-12-sonos-shutting-down-snips/social.png +--- + +It's that time of the year. The time when it's cold outside, it's cozy and warm inside, we're spending time with friends and family, and time for big companies to drop local accessible technology ([2015](/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/), [2018](/blog/2018/12/17/logitech-harmony-removes-local-api/)). + +On November 20, 2019, Sonos [announced](https://investors.sonos.com/news-and-events/investor-news/latest-news/2019/Sonos-Announces-Acquisition-of-Snips/default.aspx) that they had acquired Snips earlier that month. Snips was a popular option for people to get local voice control in their homes. + +In the same month of the acquisition, Snips has announced that they are shutting down their console for users. The console allows users to train their system with custom sentences and intents. By shutting this down, it is no longer possible to make any changes to your local Snips system. + +

    + Screenshot of the post to announce shutting it down. + Announcement on the Snips forums. +

    + +What is actually worse, is that it looks like they are not shutting down their console completely, they are just shutting down public access. They could support users, but actively decide not to do so. It seems like they don't want us to know this, as they have edited their announcement on the forums. + +

    + Edit history shows they removed the word public access. + Edit history of the announcement shows they removed the words "public access to". +

    + +Voice control, powered by Snips, might show up in future Sonos devices. However, Sonos is not accessible to many people out there. The customizations will also be lost according to Patrick Spence, the CEO of Sonos, in an [interview with Variety](https://variety.com/2019/digital/news/sonos-snips-acquisition-q4-2019-earnings-1203410771/): + +
    +“We are not building an ask-anything assistant,” Spence said. Instead, the goal of the acquisition was to build something a lot more music-specific. +
    + +## Bad move by Sonos + +A very bad move by Sonos. This is not a world in which it's Sonos vs. Google vs. Amazon. It is not even a fight just about smart speakers, it is a fight about if the audio system in our house is local and private, or not. + +By taking Snips off the table, there is one less option for local voice control. These users will now look for alternatives, which will include cloud options. + +Technology often ends up with a winner takes all. Sonos has just made a better case for its competitors, [again](https://jpmens.net/2018/09/11/upset-at-sonos/). + +## What the local home needs + +Audio is an essential part of our homes. We want to play music, be notified of events (i.e., doorbell) and we want to be able to use our voice to control our devices. A system that provides this, needs to run locally and be accessible via an open API. + +Sonos could be this system, they have great hardware that works together nicely. However, they are keeping their API tightly controlled, making it impossible for a user to build on top of it. + +It is a choice. They could keep the Snips console open to the public, open up their modern local API and embrace the community that cares about local control. Nevertheless, they choose to work against it. + +So Sonos, why are you? diff --git a/source/_posts/2019-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown new file mode 100644 index 000000000000..74857bb3f53b --- /dev/null +++ b/source/_posts/2019-12-11-release-103.markdown @@ -0,0 +1,1823 @@ +--- +layout: post +title: "0.103: Happy Holidays, Service calls, StarLine, GeoNet NZ and Proxmox" +description: "The final major release of this year! Happy Holidays and see you in 2020!" +date: 2019-12-11 17:00:00 +date_formatted: "December 11, 2019" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: Release-Notes +og_image: /images/blog/2019-12-0.103/components.png +--- + + + +Here it is! Home Assistant 0.103 is released, which is the last major release +for this year. For the final stretch of this year, we've focussed on +cleaning things up. This release contains many things that were still +in progress (e.g., due to Hacktoberfest), lots of bugfixes; mainly +things that help to improve the stability and experience of Home Assistant. + +We wish you happy holidays! As always, we skip a release cycle at the end +of the year, making this the final, major release of 2019. This gives all of +us time to enjoy the holidays with our families as well. +The first release of 2020, will be on 15 January. + +Furthermore, we'd like to take the opportunity to thank all of our contributors, +no matter how small or big the contribution; code, documentation, +issue reporting, beta testing, supporters in our +[forum](https://community.home-assistant.io) and [chat](/join-chat). +We salute and thank you and wish you the best for the new decade, +as we are entering 2020! ❤️ + +Cheers! + +## Service's have been moved to their respective integration namespaces + +For 0.103, an extensive cleanup has been taken place around the names of the +services. We realize this affects many users; therefore, we made sure all these +changes are in this release. +This change was driven by [@raman325], who did an excellent job of completing +this in time for 0.103. + +We used to have services that were placed inside other domains, +which wasn't always the case, and therefore inconsistent. +So, for example, the service to add an item to Todoist was actually a service +call under the `calendar` domain: `calendar.todoist_new_task`. + +This release, all services that were not placed correctly, are moved into their +respective integration domain. So, for the above example of +`calendar.todoist_new_task`, has been renamed to `todoist.new_task`. + +We hope this brings a more streamlined experience to the use of services, +for now, and in the future. For a complete list of old vs. new service names, +a table as been added to the release notes, [below](#updated-service-names). + +## Moving imports of Python packages + +Internally, Home Assistant uses a lot of Python packages, that our integrations +are using. In the past weeks, the locations where all those imports take +place, was changed. This does not directly resonate with your system +and is mainly an internal cleanup. + +A big shout out to the following contributors that together are responsible +for making **hundreds** of contributions the past weeks to help us out: + +[@Bouni], [@briglx], [@djpremier], [@exxamalte], [@javicalle], [@Michsior14], +[@Misiu], [@mnigbur], [@Quentame], [@springstan], [@thaohtp], [@tulindo] + +Thank you so much! + +[@briglx]: https://github.com/briglx +[@djpremier]: https://github.com/djpremier +[@javicalle]: https://github.com/javicalle +[@michsior14]: https://github.com/Michsior14 +[@mnigbur]: https://github.com/mnigbur +[@thaohtp]: https://github.com/thaohtp + +## Python 3.6 support is deprecated + +Since version 0.101, support for Python 3.6 has been deprecated. We are +currently working on Python 3.8 support, which is expected soon. + +Therefore, this release marks the last release, which supports Python 3.6. + +If you haven't upgraded your system to Python 3.7 yet, it is recommended to +do so, to ensure you can keep using Home Assistant in the future. + +If you are using Docker or Hass.io, you don't have to worry about this, since +we provide a matching and working Python version for you. + +## Frenck Joins Nabu Casa + +As announced during the [State of the Union 2019](https://www.home-assistant.io/blog/2019/11/22/state-of-the-union/), +Frenck has joined Nabu Casa. + + + +## Frontend + +We gave some love and attention to the automation editor, +fixing some bugs and adding some useful features. + +### Natural language improvements + +We add area support for automations that you create with natural language, +and we try to pick the right area or device for you if you mentioned the name. + +So you can now say: "Turn the lights on in the living room", and it adds all +the light devices of your living room to the automation. +By clicking `Choose individual devices`, you can add or remove devices. + +

    +Screenshot of the result of the above query +Screenshot of the result of the above query. +

    + +### YAML support + +You can now edit every individual trigger, condition or action as YAML. +This makes it possible even to do very complicated automations in the +automation editor and allows you to copy parts of your automation quickly. + +

    +Screenshot of the automation YAML editor +Screenshot of the automation YAML editor. +

    + +### Rearrange actions + +We also added the ability to rearrange your actions, so you don't have to start +all over when you want to add a delay between 2 service calls. +Talking about the service call action, that has now an entity picker +to help you search for the right one. + +

    +Screenshot of automation actions +Screenshot of automation actions. +

    + +## In other news + + + + + + + +## New Integrations + +The following integrations are added in this release: + +- Add support for Hisense AEH-W4A1 wifi module (AC remote control) ([@bannhead] - [#28641]) ([hisense_aehw4a1 docs]) (new-integration) +- GeoNet NZ Volcanic Alert Level sensor ([@exxamalte] - [#26901]) ([geonetnz_volcano docs]) (new-integration) +- Add component VersaSense ([@flamm3blemuff1n] - [#24619]) ([versasense docs]) (new-integration) +- Add Proxmox VE integration ([@K4ds3] - [#27315]) ([proxmoxve docs]) (new-integration) +- Add flume support ([@ChrisMandich] - [#27235]) ([flume docs]) (new-integration) +- StarLine integration ([@Anonym-tsk] - [#27197]) ([starline docs]) (new-integration) +- Add intent integration to expose intent handle API ([@balloob] - [#29124]) ([conversation docs]) (new-integration) +- Dsmr reader ([@depl0y] - [#28701]) ([dsmr_reader docs]) ([fleetgo docs]) ([openhardwaremonitor docs]) (new-integration) +- Add ATEN PE component for ATEN eco PDUs ([@mtdcr] - [#27960]) ([aten_pe docs]) (new-integration) + +## New Platforms + +The following platforms have been added to existing integrations: + +- Add support for SimpliSafe locks ([@bachya] - [#28672]) ([simplisafe docs]) (new-platform) +- Add fan support to lutron_caseta ([@djj211] - [#29033]) ([lutron_caseta docs]) (new-platform) +- Add support for Somfy Camera Shutter ([@tetienne] - [#29057]) ([somfy docs]) (new-platform) +- Add Huawei LTE binary sensor support, mobile connection sensor ([@scop] - [#28226]) ([huawei_lte docs]) (new-platform) +- Broadlink remote ([@felipediel] - [#26528]) ([broadlink docs]) (new-platform) + +## Breaking Changes + +If you are an existing user, make sure to read the this section **before** upgrading, +this helps you understand the changes and avoids having issues during an upgrade. + +### Updated Service Names + +All services for use in Home Assistant are moved to their integration naming space. + +**The list below shows service calls and platforms which have been moved to their own integrations** - [@raman325] + +- **Local File**: `camera.local_file_update_file_path` -> `local_file.update_file_path` ([#28890]) +- **Elk-M1 Controller**: `alarm_control_panel.elkm1_*` -> `elkm1.*` ([#29128]) +- **Neato**: `vacuum.neato_custom_cleaning` -> `neato.custom_cleaning` ([#29148]) +- **Envisalink**: `alarm_control_panel.envisalink_alarm_keypress` -> `envisalink.alarm_keypress` ([#29126]) +- **IFTTT**: `alarm_control_panel.ifttt_push_alarm_state` -> `ifttt.push_alarm_state` ([#29129]) +- **AlarmDecoder Alarm**: `alarm_control_panel.alarmdecoder_alarm_toggle_chime` -> `alarmdecoder.alarm_toggle_chime` ([#29127]) +- **Econet**: `water_heater.econet_*` -> `econet.*` ([#29149]) +- **APNS**: `notify.apns_*` -> `apns.apns_*` ([#29165]) +- **Facebox**: `image_processing.facebox_teach_face` -> `facebox.teach_face` ([#29151]) +- **HTML5**: `notify.html5_dismiss` -> `html5.dismiss` ([#29145]) +- **Lifx**: `light.lifx_*` -> `lifx.*` ([#29136]) +- **Mill**: `climate.mill_set_room_temperature` -> `mill.set_room_temperature` ([#29132]) +- **Todoist**: `calendar.todoist_new_task` -> `todoist.new_task` ([#29131]) +- **Wink**: `lock.wink_*` -> `wink.*` ([#29137]) +- **Wemo**: `fan.wemo_*` -> `wemo.*` ([#29135]) +- **Bluetooth**: `device_tracker.update` -> `bluetooth_tracker.update` ([#29161]) +- **Demo**: `device_tracker.randomize_device_tracker_data` -> `demo.randomize_device_tracker_data` ([#29164]) +- **iCloud**: `device_tracker.icloud_*` -> `icloud.*` ([#29144]) +- **Blackbird**: `media_player.blackbird_set_all_zones` -> `blackbird.set_all_zones` ([#29112]) +- **Bluesound**: `media_player.bluesound_*` -> `bluesound.*` ([#29111]) +- **Channels**: `media_player.channels_*` -> `channels.*` ([#29139]) +- **Epson**: `media_player.epson_select_cmode` -> `epson.select_cmode` ([#29113]) +- **Monoprice**: `media_player.monoprice_*` -> `monoprice.*` ([#29099]) +- **Songpal**: `media_player.songpal_set_sound_setting` -> `songpal.set_sound_setting` ([#29143]) +- **Soundtouch**: `media_player.soundtouch_*` -> `soundtouch.*` ([#29140]) +- **Squeezebox**: `media_player.squeezebox_call_method` -> `squeezebox.call_method` ([#29141]) +- **Xiaomi Miio**: `*.xiaomi_miio_*` -> `xiaomi_miio.*` ([#29134]) +- **Xiaomi Miio**: `*.xiaomi_*` -> `xiaomi_miio.*` ([#29134]) +- **Yamaha**: `media_player.yamaha_*` -> `yamaha.*` ([#29142]) + +### Other Breaking Changes + +- **Mobile App** - Loading the Mobile App no longer causes the Cloud integration to be loaded. If you relied on this, add `cloud:` to your configuration.yaml. - ([@balloob] - [#29373]) ([mobile_app docs]) +- **Samsung TV** - The behavior for next and previous track commands for Samsung TVs has changed. Before the change, the Samsung TV integration reacted to the two above commands sending the KEY_FF and KEY_REWIND commands. While watching TV programs, those two commands do nothing. After the change, the entity sends the KEY_CHUP and KEY_CHDOWN commands instead, thus allowing the user to change the channel using the media player standard Lovelace interface. The user doesn't need to change anything in the configuration. - ([@tulindo] - [#28213]) ([samsungtv docs]) +- **Wake on LAN** - The configuration key `mac_address:` was renamed to `mac:` to be in sync with the service. ([@fabaff] - [#28830]) ([wake_on_lan docs]) +- **PulseAudio Loopback Switch** - The default port was incorrectly set to 4712, however, the official documentation states that the default port is 4713. Therefore, the port has been changed and all previously configured switches now need to listen to port 4713. - ([@springstan] - [#28857]) ([pulseaudio_loopback docs]) +- **Z-Wave** - This changes the primary command class for z-wave thermostats in discovery schemas from `COMMAND_CLASS_THERMOSTAT_SETPOINT` to `COMMAND_CLASS_THERMOSTAT_MODE`. This will cause a typical dual setpoint thermostat to be correctly represented as a single entity. - ([@oandrew] - [#27040]) ([zwave docs]) +- **Transmission** - Added host field to `add_torrent` service in order to support multiple Transmission instances. ([@engrbm87] - [#28653]) ([transmission docs]) +- **Opentherm Gateway** - Adds device support. This change breaks enabled `sensor` and `binary_sensor` entities, which are now disabled by default and can be re-enabled through the Devices panel. It also breaks `entity_id` of the climate entity in some configurations. The `entity_id` is now based on the `gateway_id` rather than the configured `name` to guarantee uniqueness. - ([@mvn23] - [#28722]) ([opentherm_gw docs]) +- **Intent** - If you use the built-in intents for shopping list, cover or light, you need to add `intent:` to your `configuration.yaml`. - ([@balloob] - [#29280]) ([conversation docs]) ([cover docs]) ([intent docs]) ([light docs]) ([shopping_list docs]) +- **Emulated Hue** - As previous `entityid` were not Hue compliant, `emulated_hue_ids.json` will need to be cleared out and devices re-discovered and configured in Alexa / Google Home. This is a necessary growing pain to move the integration forward in a Hue-compliant fashion. - ([@NobleKangaroo] - [#28317]) ([emulated_hue docs]) +- **Miflora** - Values for an unresponsive device aren't reported any more as if they were valid, so it's possible to send an alert. - ([@ferbar] - [#29276]) ([miflora docs]) + + Example configuration YAML: + + ```yaml + - id: plant_unreachable + alias: plant unreachable + trigger: + - entity_id: sensor.plant_moisture + for: 01:00:00 + platform: state + to: unavailable + action: + ``` + +- **Entity ID** - It is no longer possible to target all entities by not passing both `entity_id` and `area_id` to your service data. This feature was previously deprecated and has been printing warnings. The correct way to target all entities is to set `entity_id: all` - ([@balloob] - [#29178]) +- **Heatmiser Thermostat** - The Heatmiser integration has been updated to the latest version of the heatmiserV3 library, meaning less code inside HA, and more leverage on the library. The current version of the Heatmiser integration went out of date with the introduction of voluptuous. This has now been fixed, but it breaks the old config syntax slightly. See the updated docs for the new config format. - ([@andylockran] - [#29006]) ([heatmiser docs]) + +## Release 0.103.1 - December 18 + +- Install requirements of after_dependencies when loading integrations ([@balloob] - [#29491]) +- Bump aioambient to 1.0.2 ([@bachya] - [#29850]) ([ambient_station docs]) +- Fix setup for tank_utility component ([@springstan] - [#29902]) ([tank_utility docs]) +- Fix setup error for logbook ([@springstan] - [#29908]) +- Support entity_id: all in lifx.set_state ([@amelchio] - [#29919]) ([lifx docs]) +- Fix mobile app device identifiers ([@JBassett] - [#29920]) ([mobile_app docs]) +- Fix loading flume integration ([@ChrisMandich] - [#29926]) ([flume docs]) +- Fix support for legacy Z-Wave thermostats ([@oandrew] - [#29955]) ([zwave docs]) +- Bump simplisafe-python to 5.3.6 ([@bachya] - [#30055]) ([simplisafe docs]) + +[#29491]: https://github.com/home-assistant/home-assistant/pull/29491 +[#29850]: https://github.com/home-assistant/home-assistant/pull/29850 +[#29902]: https://github.com/home-assistant/home-assistant/pull/29902 +[#29908]: https://github.com/home-assistant/home-assistant/pull/29908 +[#29919]: https://github.com/home-assistant/home-assistant/pull/29919 +[#29920]: https://github.com/home-assistant/home-assistant/pull/29920 +[#29926]: https://github.com/home-assistant/home-assistant/pull/29926 +[#29955]: https://github.com/home-assistant/home-assistant/pull/29955 +[#30055]: https://github.com/home-assistant/home-assistant/pull/30055 +[@chrismandich]: https://github.com/ChrisMandich +[@jbassett]: https://github.com/JBassett +[@amelchio]: https://github.com/amelchio +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@oandrew]: https://github.com/oandrew +[@springstan]: https://github.com/springstan +[ambient_station docs]: /integrations/ambient_station/ +[flume docs]: /integrations/flume/ +[lifx docs]: /integrations/lifx/ +[mobile_app docs]: /integrations/mobile_app/ +[simplisafe docs]: /integrations/simplisafe/ +[tank_utility docs]: /integrations/tank_utility/ +[zwave docs]: /integrations/zwave/ + +## Release 0.103.2 - December 19 + +- Fix dependency installation recursinog ([@balloob]) + +## Release 0.103.3 - December 20 + +- Fix update port and api key on deconz discovery config entry u… ([@frenck] - [#30088]) ([deconz docs]) +- Patch rachio ([@omriasta] - [#30031]) ([rachio docs]) +- Fix failure in transform method ([@depl0y] - [#30023]) ([dsmr_reader docs]) +- Fix homekit handling of 0 light brightness and fan speed ([@fuzzie360] - [#29962]) ([homekit docs]) +- Bump starlingbank to 3.2 ([@springstan] - [#30098]) ([starlingbank docs]) +- Bump ring to 0.2.5 ([@balloob] - [#30103]) ([ring docs]) + +[#29962]: https://github.com/home-assistant/home-assistant/pull/29962 +[#30023]: https://github.com/home-assistant/home-assistant/pull/30023 +[#30031]: https://github.com/home-assistant/home-assistant/pull/30031 +[#30088]: https://github.com/home-assistant/home-assistant/pull/30088 +[#30098]: https://github.com/home-assistant/home-assistant/pull/30098 +[#30103]: https://github.com/home-assistant/home-assistant/pull/30103 +[@balloob]: https://github.com/balloob +[@depl0y]: https://github.com/depl0y +[@frenck]: https://github.com/frenck +[@fuzzie360]: https://github.com/fuzzie360 +[@omriasta]: https://github.com/omriasta +[@springstan]: https://github.com/springstan +[deconz docs]: /integrations/deconz/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[homekit docs]: /integrations/homekit/ +[rachio docs]: /integrations/rachio/ +[ring docs]: /integrations/ring/ +[starlingbank docs]: /integrations/starlingbank/ + +## Release 0.103.4 - December 22 + +- Remove requirement from entity integration ([@balloob] - [#30113]) ([doods docs]) ([image_processing docs]) ([seven_segments docs]) ([tensorflow docs]) +- Move imports into setup function in homekit **init**.py ([@springstan] - [#30137]) ([homekit docs]) +- Fix deconz SSDP updating Hassio discovery ([@frenck] - [#30153]) ([deconz docs]) +- Allow battery value of 0 as well as make sure to not create a battery tracker if one already exist ([@Kane610] - [#30155]) ([deconz docs]) + +[#30113]: https://github.com/home-assistant/home-assistant/pull/30113 +[#30137]: https://github.com/home-assistant/home-assistant/pull/30137 +[#30153]: https://github.com/home-assistant/home-assistant/pull/30153 +[#30155]: https://github.com/home-assistant/home-assistant/pull/30155 +[@kane610]: https://github.com/Kane610 +[@balloob]: https://github.com/balloob +[@frenck]: https://github.com/frenck +[@springstan]: https://github.com/springstan +[deconz docs]: /integrations/deconz/ +[doods docs]: /integrations/doods/ +[homekit docs]: /integrations/homekit/ +[image_processing docs]: /integrations/image_processing/ +[seven_segments docs]: /integrations/seven_segments/ +[tensorflow docs]: /integrations/tensorflow/ + +## Release 0.103.5 - December 28 + +- Bump ring to 0.2.8 to fix Oauth issues ([@tchellomello] - [#30245]) ([ring docs]) + +[#30245]: https://github.com/home-assistant/home-assistant/pull/30245 +[@tchellomello]: https://github.com/tchellomello +[ring docs]: /components/ring/ + +## Release 0.103.6 - January 6 + +- Handle wired bug on restart ([@Kane610] - [#30276]) ([unifi docs]) +- Bump pysmartthings 0.7.0 ([@andrewsayre] - [#30302]) ([smartthings docs]) +- Bump env_canada to 0.0.31 ([@michaeldavie] - [#30409]) ([environment_canada docs]) +- Fix google sync ([@balloob] - [#30524]) ([cloud docs]) ([google_assistant docs]) + +[#30276]: https://github.com/home-assistant/home-assistant/pull/30276 +[#30302]: https://github.com/home-assistant/home-assistant/pull/30302 +[#30409]: https://github.com/home-assistant/home-assistant/pull/30409 +[#30524]: https://github.com/home-assistant/home-assistant/pull/30524 +[@kane610]: https://github.com/Kane610 +[@andrewsayre]: https://github.com/andrewsayre +[@balloob]: https://github.com/balloob +[@michaeldavie]: https://github.com/michaeldavie +[cloud docs]: /integrations/cloud/ +[environment_canada docs]: /integrations/environment_canada/ +[google_assistant docs]: /integrations/google_assistant/ +[smartthings docs]: /integrations/smartthings/ +[unifi docs]: /integrations/unifi/ + +## 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. + + + +## Beta Fixes + +- Delay Plex websocket connection to avoid race ([@jjlawren] - [#28934]) ([plex docs]) (beta fix) +- Limit available heat/cool modes for HomeKit thermostats ([@neffs] - [#28586]) ([homekit docs]) (beta fix) +- Increase somfy SCAN_INTERVAL ([@tetienne] - [#29524]) ([somfy docs]) (beta fix) +- Bump georss_generic_client to 0.3 ([@exxamalte] - [#29532]) ([geo_rss_events docs]) (beta fix) +- Huawei LTE device tracker fixes ([@scop] - [#29551]) ([huawei_lte docs]) (beta fix) +- Change source of device_info ([@Santobert] - [#29570]) ([neato docs]) (beta fix) +- Only update disabled_by when enabled default and entity enabled states differ ([@Kane610] - [#29643]) ([unifi docs]) (beta fix) +- Fix unit_of_measurement for Starline temperature sensors ([@Anonym-tsk] - [#29740]) ([starline docs]) (beta fix) +- HomeAssistant-pyozw 0.1.7 ([@pvizeli] - [#29743]) ([zwave docs]) (beta fix) +- Updated frontend to 20191204.1 ([@bramkragten] - [#29787]) ([frontend docs]) (beta fix) +- Bump Roku to 4.0.0 ([@bwarden] - [#29809]) ([roku docs]) (beta fix) +- Add user-agent to fix dwd_weather_warnings setup error ([@springstan] - [#29596]) ([dwd_weather_warnings docs]) (beta fix) +- Add more logging to help future debug situations ([@Kane610] - [#29800]) ([unifi docs]) (beta fix) +- UniFi - honor detection time when UniFi wire bug happens ([@Kane610] - [#29820]) ([unifi docs]) (beta fix) +- UniFi - Handle disabled switches ([@Kane610] - [#29824]) ([unifi docs]) (beta fix) +- Remove uvloop event policy ([@pvizeli] - [#29835]) (beta fix) + +## All changes + +- Add verisure ethernet status ([@thomasgermain] - [#28656]) ([verisure docs]) +- Bump pyotgw to 0.5b1 ([@mvn23] - [#28751]) ([opentherm_gw docs]) +- Add config entry and device support to Demo ([@bramkragten] - [#28702]) ([demo docs]) +- Add support for SimpliSafe locks ([@bachya] - [#28672]) ([simplisafe docs]) (new-platform) +- Add small speed improvement when unloading Ambient PWS ([@bachya] - [#28756]) ([ambient_station docs]) +- Add small speed improvement when unloading Notion ([@bachya] - [#28757]) ([notion docs]) +- Add small speed improvement when unloading OpenUV ([@bachya] - [#28758]) ([openuv docs]) +- Add small speed improvement when unloading RainMachine ([@bachya] - [#28759]) ([rainmachine docs]) +- Upgrade ephem to 3.7.7.0 ([@fabaff] - [#28715]) ([season docs]) +- Added plus sign to safe characters in urllib.parse.quote method ([@springstan] - [#28763]) ([squeezebox docs]) +- DECONZ - Add device trigger support for aqara 86sw2 switches to Deconz ([@bramkragten] - [#28767]) ([deconz docs]) +- Bump pytest to 5.2.3 ([@cgtobi] - [#28785]) +- Convert Tesla to Async ([@alandtse] - [#28748]) ([tesla docs]) +- bump home mitemp_bt to 0.0.3. It has an important bugfix for reading … ([@herrlado] - [#28765]) ([mitemp_bt docs]) +- Change keys for Samsung TV next and prev track command ([@tulindo] - [#28213]) ([samsungtv docs]) (breaking change) +- Add support for Hisense AEH-W4A1 wifi module (AC remote control) ([@bannhead] - [#28641]) ([hisense_aehw4a1 docs]) (new-integration) +- Upgrade sqlalchemy to 1.3.11 ([@fabaff] - [#28721]) ([recorder docs]) ([sql docs]) +- Bump pyHik library to 0.2.5 for id, tamper fixes ([@mezz64] - [#28807]) ([hikvision docs]) +- Upgrade pylint, tweak config ([@scop] - [#28798]) +- Lint exclusions ([@scop] - [#28655]) +- Add ombi password authentication option ([@larssont] - [#28742]) ([ombi docs]) +- Move imports in braviatv component ([@Bouni] - [#27855]) ([braviatv docs]) ([braviatv docs]) ([braviatv docs]) +- Truncate sensor state values ([@michaeldavie] - [#28788]) ([environment_canada docs]) +- Upgrade alpha_vantage to 2.1.2 ([@fabaff] - [#28810]) ([alpha_vantage docs]) +- Upgrade shodan to 1.19.1 ([@fabaff] - [#28809]) ([shodan docs]) +- Improve coverage of input_datetime/reproduce_state ([@Santobert] - [#28272]) ([input_datetime docs]) +- Bump androidtv to 0.0.34 ([@JeffLIrion] - [#28816]) ([androidtv docs]) +- Add broadcast_address for wake-on-lan ([@uSpike] - [#28793]) ([panasonic_viera docs]) +- Add broadcast address for WOL and samsungtv ([@JayNewstrom] - [#28819]) ([samsungtv docs]) +- Align naming ([@fabaff] - [#28830]) ([wake_on_lan docs]) (breaking change) +- Esphome climate features ([@glmnet] - [#28786]) ([esphome docs]) +- Implement more Comfoconnect sensors ([@michaelarnauts] - [#28817]) ([comfoconnect docs]) +- Add bandit, use to catch known vulnerable XML parsing ([@scop] - [#28341]) +- Make intents end Snips session without speech ([@Romkabouter] - [#28820]) ([snips docs]) +- Update Vivotek camera integration ([@HarlemSquirrel] - [#28841]) ([vivotek docs]) +- Move imports in owntracks component ([@Quentame] - [#27780]) ([owntracks docs]) +- Update roomba integration ([@freekode] - [#28560]) ([roomba docs]) +- GeoNet NZ Volcanic Alert Level sensor ([@exxamalte] - [#26901]) ([geonetnz_volcano docs]) (new-integration) +- Add component VersaSense ([@flamm3blemuff1n] - [#24619]) ([versasense docs]) (new-integration) +- Bump pyps4-2ndscreen to 1.0.3 ([@ktnrg45] - [#28874]) ([ps4 docs]) +- Pulseaudio: Changed default port from 4712 to 4713 ([@springstan] - [#28857]) ([pulseaudio_loopback docs]) (breaking change) +- Add state dependent icons to moon sensor ([@Mariusthvdb] - [#28743]) ([moon docs]) +- Move import to top for alarmdecoder ([@frenck] - [#28862]) ([alarmdecoder docs]) +- Move import to top for aftership ([@frenck] - [#28860]) ([aftership docs]) +- Move imports to top for serial_pm ([@frenck] - [#28861]) ([serial_pm docs]) +- Downgrade duplicate YAML key log to warning ([@frenck] - [#28851]) +- Mark entity abc ([@balloob] - [#28869]) ([climate docs]) +- Add @rohankapoorcom to CODEOWNERS for speedtestdotnet and fastdotcom ([@rohankapoorcom] - [#28879]) ([fastdotcom docs]) ([speedtestdotnet docs]) +- Add HTTP view to conversation to handle intents via JSON POST ([@synesthesiam] - [#28818]) ([conversation docs]) +- Add ZHA service to issue group commands ([@abmantis] - [#28823]) ([zha docs]) +- Bump pytest to 5.3.0 ([@frenck] - [#28883]) +- Allow connection to rfxtrx using tcp ([@foxy82] - [#28297]) ([rfxtrx docs]) +- Update services.yaml for Roku component ([@raman325] - [#28887]) +- Command arguments for issue_zigbee_cluster_commands. ([@Adminiuga] - [#28885]) ([zha docs]) +- Update services.yaml for cloudflare component ([@raman325] - [#28888]) +- update services.yaml for keyboard component ([@raman325] - [#28889]) +- bump herepy to 0.6.3.3 ([@eifinger] - [#28907]) ([here_travel_time docs]) +- Update **init**.py ([@SNoof85] - [#28911]) ([freebox docs]) +- Delay Plex websocket connection to avoid race ([@jjlawren] - [#28934]) ([plex docs]) (beta fix) +- Bump verisure to vsure 1.5.4 and jsonpath 0.82 ([@persandstrom] - [#28933]) ([verisure docs]) +- Add device trigger support for Aqara WXKG11LM 2016 switch to Deconz ([@kurniawan77] - [#28946]) ([deconz docs]) +- fix typo for mediumvioletred ([@awkwardDuck] - [#28941]) +- Add round to half template method ([@tofuSCHNITZEL] - [#28948]) +- Fix return values of preset_mode(s) properties ([@akasma74] - [#27751]) ([generic_thermostat docs]) +- Creating a scene by snapshotting entities ([@Santobert] - [#28939]) ([homeassistant docs]) +- Add Proxmox VE integration ([@K4ds3] - [#27315]) ([proxmoxve docs]) (new-integration) +- Add flume support ([@ChrisMandich] - [#27235]) ([flume docs]) (new-integration) +- Rename rest_command request to response, add exc_info for exceptions ([@Misiu] - [#28521]) ([rest_command docs]) +- Upgrade youtube_dl to 2019.11.22 ([@BKPepe] - [#28964]) ([media_extractor docs]) +- Bumped pypca to 0.0.7 ([@majuss] - [#28976]) ([elv docs]) +- Catch Zeroconf exception ([@fabaff] - [#28728]) ([zeroconf docs]) +- Update pyjuicenet dependency ([@jesserockz] - [#28958]) ([juicenet docs]) +- Upgrade mutagen to 1.43.0 ([@fabaff] - [#28984]) ([tts docs]) +- Bumped keenetic NDMS2 client version to 0.0.11 ([@foxel] - [#28990]) ([keenetic_ndms2 docs]) +- Upgrade zeroconf to 0.24.0 ([@fabaff] - [#28986]) ([zeroconf docs]) +- Upgrade shodan to 1.20.0 ([@fabaff] - [#28983]) ([shodan docs]) +- Ensure wheel package is present when running Pylint ([@frenck] - [#29012]) +- Move imports to top for volkszaehler ([@springstan] - [#29025]) ([volkszaehler docs]) +- Made spotify playlist name validation less strict ([@springstan] - [#28684]) ([spotify docs]) +- Move imports to the top for Tado. ([@michaelarnauts] - [#29016]) ([tado docs]) +- Add an early start sensor for heating zones ([@andersonshatch] - [#28732]) ([tado docs]) +- Fix #27028 ([@pschmitt] - [#29042]) ([roomba docs]) +- Move philips_js imports at top-level ([@Quentame] - [#29003]) ([philips_js docs]) +- Move imports to top for watson_tts ([@springstan] - [#29023]) ([watson_tts docs]) +- Move imports to top for todoist ([@springstan] - [#29022]) ([todoist docs]) +- Move imports to top for geizhals ([@springstan] - [#29021]) ([geizhals docs]) +- Upgrade discord.py to 1.2.5 ([@fabaff] - [#28998]) ([discord docs]) +- Catch samsungtv websocket exceptions ([@escoand] - [#28849]) ([samsungtv docs]) +- Move imports to top for discovery ([@springstan] - [#29020]) ([discovery docs]) +- Report device unavailable state through Emulated Hue ([@challs] - [#29029]) ([emulated_hue docs]) +- Use TADO_MODE for temperature overrides in tado climate component. ([@michaelarnauts] - [#29014]) ([tado docs]) +- Move edimax imports at top-level ([@Quentame] - [#29053]) ([edimax docs]) +- Move vizio imports at top-level ([@Quentame] - [#29046]) ([vizio docs]) +- Move dyson imports at top-level ([@Quentame] - [#29047]) ([dyson docs]) +- Added error checking ([@kuchel77] - [#29041]) ([synologydsm docs]) +- Move ebox imports at top-level ([@Quentame] - [#29048]) ([ebox docs]) +- Move ecoal_boiler imports at top-level ([@Quentame] - [#29049]) ([ecoal_boiler docs]) +- Move imports to top for ffmpeg_motion and ffmpeg_noise ([@springstan] - [#29026]) ([ffmpeg_motion docs]) ([ffmpeg_noise docs]) +- Move fibaro imports at top-level ([@Quentame] - [#28995]) ([fibaro docs]) +- Add climate hvac_action for ESPHome ([@OttoWinter] - [#28993]) ([esphome docs]) +- Code maintenance for HomematicIP Cloud ([@SukramJ] - [#28980]) ([homematicip_cloud docs]) +- Fix typo in scaffold generator script ([@cgtobi] - [#29058]) +- Move hdmi_cec imports at top-level ([@Quentame] - [#29056]) ([hdmi_cec docs]) +- Handle offline state of SAJ inverters (fixes #29007) ([@fredericvl] - [#29009]) ([saj docs]) +- Bump numpy 1.17.4 / opencv 4.1.2 for Python 3.8 ([@pvizeli] - [#29061]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs]) +- Drop < 0.97 Huawei LTE sensor unique id migration workaround ([@scop] - [#29060]) ([huawei_lte docs]) +- Move econet imports at top-level ([@Quentame] - [#29050]) ([econet docs]) +- track Raspberry Pi 4 image in the version integration ([@basnijholt] - [#29059]) ([version docs]) +- Fix climate device actions ([@SukramJ] - [#28660]) ([climate docs]) +- Bumped lupupy to version 0.0.18 ([@majuss] - [#28989]) ([lupusec docs]) +- Move yi imports at top-level ([@Quentame] - [#29001]) ([yi docs]) +- Nilu integration code owner ([@hfurubotten] - [#29081]) ([nilu docs]) +- Entur public transport code owner ([@hfurubotten] - [#29080]) ([entur_public_transport docs]) +- Move eddystone_temperature imports at top-level ([@Quentame] - [#29052]) ([eddystone_temperature docs]) +- Support default display category based one switch device_class. ([@ochlocracy] - [#28221]) ([alexa docs]) +- Add Alexa.ModeController to cover entities, adds open/close utterances! ([@ochlocracy] - [#28309]) ([alexa docs]) +- Fix opentherm_gw config flow migration ([@mvn23] - [#28474]) ([opentherm_gw docs]) +- Add valid inputs to alexa InputController ([@ochlocracy] - [#28483]) ([alexa docs]) +- Move epsonworkforce imports at top-level ([@Quentame] - [#29086]) ([epsonworkforce docs]) +- Move velux imports at top-level ([@Quentame] - [#29085]) ([velux docs]) +- Move upnp imports at top-level ([@Quentame] - [#29083]) ([upnp docs]) +- Move dlna_dmr imports at top-level ([@Quentame] - [#29082]) ([dlna_dmr docs]) +- Move imports to top for xfinity ([@springstan] - [#29077]) ([xfinity docs]) +- Move imports to top for xeoma ([@springstan] - [#29076]) ([xeoma docs]) +- Move imports to top for version ([@springstan] - [#29075]) ([version docs]) +- Move imports to top for yale_smart_alarm ([@springstan] - [#29074]) ([yale_smart_alarm docs]) +- Move imports to top for xiaomi_tv ([@springstan] - [#29073]) ([xiaomi_tv docs]) +- Add supported_features to Alarm Control Panel to limit device_actions ([@SukramJ] - [#29065]) +- Move hangouts imports at top-level ([@Quentame] - [#29055]) ([hangouts docs]) +- Add SSL configuration ([@USA-RedDragon] - [#29038]) ([opengarage docs]) +- Refactor template components to extract common routines ([@grillp] - [#27064]) ([template docs]) +- Improve z-wave thermostat support ([@oandrew] - [#27040]) ([zwave docs]) (breaking change) +- Fix Onvif setup error: premature end of connection on GetStreamURI ([@olijouve] - [#26781]) ([onvif docs]) +- Move esphome imports at top-level ([@Quentame] - [#29064]) ([esphome docs]) +- Cast the volume_level of a universal media_player to a float ([@michaelarnauts] - [#29045]) ([universal docs]) +- Move imports to top for ecovacs ([@springstan] - [#29017]) ([ecovacs docs]) +- Allow templates in rest_command headers ([@PedroLamas] - [#26099]) ([rest_command docs]) +- Fixed CONFIG_SCHEMA and getting data from the config ([@springstan] - [#28985]) ([dovado docs]) +- Allow to change MQTT climate hold mode ([@krasnoukhov] - [#28988]) ([mqtt docs]) +- Add scale and offset to temperature values to Modbus Climate ([@adamchengtkc] - [#27045]) ([modbus docs]) +- Add uptime and number of reboot for bbox sensor ([@Mryck] - [#28880]) ([bbox docs]) +- google_assistant: support for humidity sensors ([@Shulyaka] - [#28695]) ([google_assistant docs]) +- If volume disabled do not enable support ([@bazwilliams] - [#28635]) ([openhome docs]) +- Lint config cleanups ([@scop] - [#28864]) +- Simplify getting alias from tplink smartplug.context ([@basnijholt] - [#28696]) ([tplink docs]) +- Explicitly include "Alexa" Interface in discovery response ([@ochlocracy] - [#28218]) ([alexa docs]) +- Fix digest auth rest sensors ([@timmccor] - [#28153]) ([rest docs]) +- Make conversation and intent context aware ([@balloob] - [#28965]) ([almond docs]) ([conversation docs]) ([http docs]) ([intent_script docs]) ([light docs]) +- Fix empty data attribute in sinch service call ([@bendikrb] - [#28253]) ([sinch docs]) +- Fix Alexa tests ([@pvizeli] - [#29100]) +- Fix HomeKit linked battery sensor crash ([@adrum] - [#28974]) ([homekit docs]) +- Move icloud imports at top-level ([@Quentame] - [#29089]) ([icloud docs]) +- Move ee_brightbox imports at top-level ([@Quentame] - [#29054]) ([ee_brightbox docs]) +- Update WazeRouteCalculator, add config options, fix subscription ([@hmmbob] - [#27963]) ([waze_travel_time docs]) +- Add serial to caseta devices ([@mdonoughe] - [#28886]) ([lutron_caseta docs]) +- Add host field to add_torrent service ([@engrbm87] - [#28653]) ([transmission docs]) (breaking change) +- Update service domain for local_file from 'camera' to 'local_file' ([@raman325] - [#28890]) ([local_file docs]) (breaking change) +- Move imports to top for webostv ([@springstan] - [#29102]) ([webostv docs]) +- Add hvac_action to HomematicIP Cloud Climate ([@SukramJ] - [#28859]) ([homematicip_cloud docs]) +- move service constants to const.py, move custom services to monoprice domain ([@raman325] - [#29099]) ([monoprice docs]) (breaking change) +- Move imports to top for uptimerobot ([@springstan] - [#29103]) ([uptimerobot docs]) +- Move imports to top for twilio_call ([@springstan] - [#29104]) ([twilio_call docs]) +- Move imports to top for ubee ([@springstan] - [#29105]) ([ubee docs]) +- Move flexit imports at top-level ([@Quentame] - [#29097]) ([flexit docs]) +- Move flunearyou imports at top-level ([@Quentame] - [#29096]) ([flunearyou docs]) +- Move folder_watcher imports at top-level ([@Quentame] - [#29095]) ([folder_watcher docs]) +- Move foobot imports at top-level ([@Quentame] - [#29094]) ([foobot docs]) +- Move fortigate imports at top-level ([@Quentame] - [#29093]) ([fortigate docs]) +- Move free_mobile imports at top-level ([@Quentame] - [#29092]) ([free_mobile docs]) +- Move dominos imports at top-level ([@Quentame] - [#29090]) ([dominos docs]) +- Move imports to top for uvc ([@springstan] - [#29072]) ([uvc docs]) +- Move imports to top for travisci ([@springstan] - [#29107]) ([travisci docs]) +- Move imports to top for unifi_direct ([@springstan] - [#29106]) ([unifi_direct docs]) +- Move imports to top for trackr ([@springstan] - [#29109]) ([trackr docs]) +- Move imports to top for thinkingcleaner ([@springstan] - [#29110]) ([thinkingcleaner docs]) +- Move imports to top for trafikverket_weatherstation ([@springstan] - [#29108]) ([trafikverket_weatherstation docs]) +- Add new properties and services for V3 SimpliSafe systems ([@bachya] - [#28997]) ([simplisafe docs]) +- Fix Vicare imports ([@rappenze] - [#29071]) ([vicare docs]) +- Update service domain for bluesound from 'media_player' to 'bluesound' ([@raman325] - [#29111]) ([bluesound docs]) (breaking change) +- Update service domain for blackbird from 'media_player' to 'blackbird' ([@raman325] - [#29112]) ([blackbird docs]) (breaking change) +- Update service domain for epson from 'media_player' to 'epson' ([@raman325] - [#29113]) ([epson docs]) (breaking change) +- StarLine integration ([@Anonym-tsk] - [#27197]) ([starline docs]) (new-integration) +- Fix all entities triggering all observations in bayesian sensor ([@sophof] - [#28979]) ([bayesian docs]) +- Add Post Processing Jobs to NZBGet component ([@alex3305] - [#29027]) ([nzbget docs]) +- Update roomba bin state checking ([@freekode] - [#29030]) ([roomba docs]) +- Remove the alarm_control_panel CODEOWNER ([@colinodell] - [#29114]) +- Update list of supported countries for Workday Sensor ([@springstan] - [#29000]) ([workday docs]) +- Allow rest sensor list responses ([@gjbadros] - [#28835]) ([rest docs]) +- Move request sync logic into GoogleConfig ([@elupus] - [#28227]) ([cloud docs]) ([google_assistant docs]) +- Move imports to top for tank_utility ([@springstan] - [#29119]) ([tank_utility docs]) +- Move imports to top for temper ([@springstan] - [#29118]) ([temper docs]) +- Move imports to top for touchline ([@springstan] - [#29117]) ([touchline docs]) +- Move imports to top for traccar ([@springstan] - [#29116]) ([traccar docs]) +- UpCloud updates ([@scop] - [#28646]) ([upcloud docs]) +- Upgrade huawei-lte-api to 1.4.4 ([@scop] - [#29130]) ([huawei_lte docs]) +- bumped supported apprise version to 0.8.2 ([@caronc] - [#29125]) ([apprise docs]) +- move html5 service to html5 domain ([@raman325] - [#29145]) ([html5 docs]) (breaking change) +- move nuki service to nuki domain services.yaml and remove missing service ([@raman325] - [#29138]) +- Update service domain for elkm1 from 'alarm_control_panel' to 'elkm1' ([@raman325] - [#29128]) ([elkm1 docs]) (breaking change) +- move neato service to neato domain ([@raman325] - [#29148]) ([neato docs]) (breaking change) +- move icloud services to icloud domain ([@raman325] - [#29144]) ([icloud docs]) (breaking change) +- move econet services to econet domain ([@raman325] - [#29149]) ([econet docs]) (breaking change) +- move songpal service to songpal domain ([@raman325] - [#29143]) ([songpal docs]) (breaking change) +- move facebox service to facebox domain ([@raman325] - [#29151]) ([facebox docs]) (breaking change) +- move wink service definitions from lock to wink domain ([@raman325] - [#29137]) ([wink docs]) (breaking change) +- Update service domain for lifx from 'light' to 'lifx' ([@raman325] - [#29136]) ([lifx docs]) (breaking change) +- move service constants to const.py and move channels services to channels domain ([@raman325] - [#29139]) ([channels docs]) (breaking change) +- Add intent integration to expose intent handle API ([@balloob] - [#29124]) ([conversation docs]) ([intent docs]) (new-integration) +- Update service domain for todoist from 'calendar' to 'todoist' ([@raman325] - [#29131]) ([todoist docs]) (breaking change) +- update envisalink service domain ([@raman325] - [#29126]) ([envisalink docs]) (breaking change) +- Update service domain for mysensors from 'switch' to 'mysensor… ([@raman325] - [#29147]) ([mysensors docs]) +- Remove ios warning for no devices subscribed to ios.notify ([@TomBrien] - [#29153]) ([ios docs]) +- Add "gentle" mode for Xiaomi Roborock vacuum ([@abmantis] - [#29004]) ([xiaomi_miio docs]) +- Update service domain for mill from 'climate' to 'mill' ([@raman325] - [#29132]) ([mill docs]) (breaking change) +- move squeezebox service to squeezebox domain ([@raman325] - [#29141]) ([squeezebox docs]) (breaking change) +- Add opentherm_gw device support ([@mvn23] - [#28722]) ([opentherm_gw docs]) (breaking change) +- Update services.yaml for nuheat ([@raman325] - [#29133]) ([nuheat docs]) +- move yamaha service to yamaha domain ([@raman325] - [#29142]) ([yamaha docs]) (breaking change) +- Update service domain for harmony from 'remote' to 'harmony' ([@raman325] - [#29146]) ([harmony docs]) +- add services.yaml description for matrix service ([@raman325] - [#29159]) +- Update service domain for ifttt from 'alarm_control_panel' to 'ifttt' ([@raman325] - [#29129]) ([ifttt docs]) (breaking change) +- Use roku.poweron method for media_player.turn_on ([@bwarden] - [#29123]) ([roku docs]) +- Return Jewish Calendar holiday type id support ([@tsvi] - [#29168]) ([jewish_calendar docs]) +- move import to top and add service definition for pilight ([@raman325] - [#29163]) ([pilight docs]) +- Reduce connection timeout to avoid config flow timeouts ([@jjlawren] - [#29172]) ([plex docs]) +- Handle case when device can be None ([@Kane610] - [#29171]) ([deconz docs]) +- Change apns service domain and remove unused variable ([@raman325] - [#29165]) ([apns docs]) (breaking change) +- Update bluetooth_tracker service name and domain from 'device_tracker' to 'bluetooth_tracker' ([@raman325] - [#29161]) ([bluetooth_tracker docs]) (breaking change) +- add services.yaml description for service ([@raman325] - [#29160]) +- move soundtouch services to soundtouch domain ([@raman325] - [#29140]) ([soundtouch docs]) (breaking change) +- move wemo services to wemo domain ([@raman325] - [#29135]) ([wemo docs]) (breaking change) +- Update service domain for alarmdecoder from 'alarm_control_panel' to 'alarmdecoder' ([@raman325] - [#29127]) ([alarmdecoder docs]) (breaking change) +- Add fan support to lutron_caseta ([@djj211] - [#29033]) ([lutron_caseta docs]) (new-platform) +- Fix mobile app device identifiers ([@balloob] - [#29173]) ([mobile_app docs]) +- update demo service domain and service description ([@raman325] - [#29164]) ([demo docs]) (breaking change) +- Move GoogleConfig initialization into setup of component ([@elupus] - [#29170]) ([google_assistant docs]) +- Bump plexwebsocket to 0.0.6 ([@jjlawren] - [#29175]) ([plex docs]) +- Add support for Somfy Camera Shutter ([@tetienne] - [#29057]) ([somfy docs]) (new-platform) +- Only create cloud user if cloud in use ([@balloob] - [#29150]) ([cloud docs]) +- Dsmr reader ([@depl0y] - [#28701]) ([dsmr_reader docs]) ([fleetgo docs]) ([openhardwaremonitor docs]) (new-integration) +- Resolve hosts for fritzbox_callmonitor ([@guillempages] - [#28761]) ([fritzbox_callmonitor docs]) +- Upgrade psutil to 5.6.6 ([@fabaff] - [#29192]) ([systemmonitor docs]) +- Move imports to top for usgs_earthquakes_feed ([@springstan] - [#29202]) ([usgs_earthquakes_feed docs]) +- Move imports to top for syncthru ([@springstan] - [#29206]) ([syncthru docs]) +- Move imports to top for tapsaff ([@springstan] - [#29205]) ([tapsaff docs]) +- Move imports to top for tautulli ([@springstan] - [#29204]) ([tautulli docs]) +- Move imports to top for tof ([@springstan] - [#29203]) ([tof docs]) +- Move imports to top for volvooncall ([@springstan] - [#29201]) ([volvooncall docs]) +- Move imports to top for vultr ([@springstan] - [#29200]) ([vultr docs]) +- Upgrade youtube_dl to 2019.11.28 ([@fabaff] - [#29199]) ([media_extractor docs]) +- Move imports to top for wirelesstag ([@springstan] - [#29198]) ([wirelesstag docs]) +- Move imports to top for zabbix ([@springstan] - [#29195]) ([zabbix docs]) +- Move imports to top for zhong_hong ([@springstan] - [#29194]) ([zhong_hong docs]) +- Move imports to top for ziggo_mediabox_xl ([@springstan] - [#29193]) ([ziggo_mediabox_xl docs]) +- Handle None when trucating long Environment Canada state values ([@michaeldavie] - [#29208]) ([environment_canada docs]) +- Move imports to top for xiaomi_aqara ([@springstan] - [#29196]) ([xiaomi_aqara docs]) +- Move imports to top for xiaomi ([@springstan] - [#29197]) ([xiaomi docs]) +- Migrate NSW Rural Fire Service integration to async library ([@exxamalte] - [#29181]) ([nsw_rural_fire_service_feed docs]) +- Fix somfy switch inherit from SwitchDevice instead of ToggleEntity ([@tetienne] - [#29182]) ([somfy docs]) +- Allow controlling Tado Hot Water Devices with temperature control ([@springstan] - [#29191]) ([tado docs]) +- Allow turning off a tado water heater ([@michaelarnauts] - [#29221]) ([tado docs]) +- Move imports to top for switchbot ([@springstan] - [#29229]) ([switchbot docs]) +- Move imports to top for starlingbank ([@springstan] - [#29233]) ([starlingbank docs]) +- Move imports to top for tahoma ([@springstan] - [#29232]) ([tahoma docs]) +- Move imports to top for synologdsm ([@springstan] - [#29231]) ([synologydsm docs]) +- Move imports to top for synology ([@springstan] - [#29230]) ([synology docs]) +- Move imports to top for supla ([@springstan] - [#29226]) ([supla docs]) +- Move imports to top for streamlabswater ([@springstan] - [#29225]) ([streamlabswater docs]) +- Move imports to top for stiebel_eltron ([@springstan] - [#29224]) ([stiebel_eltron docs]) +- Move imports to top for swiss_hydrological_data ([@springstan] - [#29227]) ([swiss_hydrological_data docs]) +- Move imports to top for swiss_public_transport ([@springstan] - [#29228]) ([swiss_public_transport docs]) +- Address DSMR Reader review notes ([@depl0y] - [#29209]) ([dsmr_reader docs]) +- Move imports to top for simplisafe ([@springstan] - [#29262]) ([simplisafe docs]) +- Move imports to top for route53 ([@springstan] - [#29273]) ([route53 docs]) +- Move imports to top for roomba ([@springstan] - [#29272]) ([roomba docs]) +- Move imports to top for rpi_rf ([@springstan] - [#29271]) ([rpi_rf docs]) +- Move imports to top for rova ([@springstan] - [#29269]) ([rova docs]) +- Move imports to top for russound_rnet ([@springstan] - [#29268]) ([russound_rnet docs]) +- Move imports to top for russound_rio ([@springstan] - [#29267]) ([russound_rio docs]) +- Move imports to top for rpi_gpio_pwm ([@springstan] - [#29270]) ([rpi_gpio_pwm docs]) +- Move imports to top for sabnzbd ([@springstan] - [#29266]) ([sabnzbd docs]) +- Move imports to top for satel_integra ([@springstan] - [#29263]) ([satel_integra docs]) +- Move imports to top for simplepush ([@springstan] - [#29261]) ([simplepush docs]) +- Move imports to top for sht31 ([@springstan] - [#29260]) ([sht31 docs]) +- Move imports to top for sensehat ([@springstan] - [#29259]) ([sensehat docs]) +- Move imports to top for tradfri ([@springstan] - [#29247]) ([tradfri docs]) +- Move imports to top for spider ([@springstan] - [#29249]) ([spider docs]) +- Move imports to top for sochain ([@springstan] - [#29250]) ([sochain docs]) +- Move imports to top for smarty ([@springstan] - [#29251]) ([smarty docs]) +- Move imports to top for sisyphus ([@springstan] - [#29252]) ([sisyphus docs]) +- Move imports to top for scsgate ([@springstan] - [#29257]) ([scsgate docs]) +- Neato reduce API calls ([@Santobert] - [#29156]) ([neato docs]) +- Fix Espalexa being detected as Hue Bridge ([@frenck] - [#29237]) ([hue docs]) +- Add device trigger for alarm_control_panel ([@springstan] - [#29068]) ([alarm_control_panel docs]) +- Fix Hue linking with non ASCII chars in location ([@bramkragten] - [#29213]) ([hue docs]) +- Move imports to top for sense ([@springstan] - [#29258]) ([sense docs]) +- Stop Plex config flow imports where more user input needed ([@jjlawren] - [#29241]) ([plex docs]) +- Add Huawei LTE binary sensor support, mobile connection sensor ([@scop] - [#28226]) ([huawei_lte docs]) (new-platform) +- Move imports to top for roku ([@springstan] - [#29289]) ([roku docs]) +- Move imports to top for raincloud ([@springstan] - [#29283]) ([raincloud docs]) +- Move imports to top for rocketchat ([@springstan] - [#29288]) ([rocketchat docs]) +- Upgrade Tibber library ([@Danielhiversen] - [#29290]) ([tibber docs]) +- Move imports to top for ripple ([@springstan] - [#29287]) ([ripple docs]) +- Move imports to top for remote_rpi_gpio ([@springstan] - [#29286]) ([remote_rpi_gpio docs]) +- Move imports to top for recswitch ([@springstan] - [#29285]) ([recswitch docs]) +- Move imports to top for raspyrfm ([@springstan] - [#29284]) ([raspyrfm docs]) +- Add ATEN PE component for ATEN eco PDUs ([@mtdcr] - [#27960]) ([aten_pe docs]) (new-integration) +- Upgrade mypy to 0.750 ([@scop] - [#29294]) +- Move imports to top for seventeentrack ([@springstan] - [#29264]) ([seventeentrack docs]) +- Improve naming and attrs of hostnameless Huawei LTE device tracker entities ([@scop] - [#29281]) ([huawei_lte docs]) +- Limit parallel requests to Philips Hue ([@bramkragten] - [#29189]) ([hue docs]) +- Move intent registration to own integration ([@balloob] - [#29280]) ([conversation docs]) ([cover docs]) ([intent docs]) ([light docs]) ([shopping_list docs]) (breaking change) +- Overhaul Emulated Hue ([@NobleKangaroo] - [#28317]) ([emulated_hue docs]) (breaking change) +- Add name option to season sensor ([@springstan] - [#29302]) ([season docs]) +- Add capability-attributes ([@balloob] - [#29306]) ([light docs]) +- Clear miflora sensor state on exception ([@ferbar] - [#29276]) ([miflora docs]) (breaking change) +- Inline MQTT paho imports ([@balloob] - [#29177]) ([mqtt docs]) +- Update service domains for xiaomi_miio from base domains to xiaomi_miio domain ([@raman325] - [#29134]) ([xiaomi_miio docs]) (breaking change) +- Add Emulated Hue code owner ([@NobleKangaroo] - [#29319]) ([emulated_hue docs]) +- Broadlink remote ([@felipediel] - [#26528]) ([broadlink docs]) (new-platform) +- Move imports to top for python_script ([@springstan] - [#29331]) ([python_script docs]) +- Move imports to top for postnl ([@springstan] - [#29330]) +- Move imports to top for prezzibenzina ([@springstan] - [#29329]) ([prezzibenzina docs]) +- Move imports to top for quantum_gateway ([@springstan] - [#29327]) ([quantum_gateway docs]) +- Move imports to top for qnap ([@springstan] - [#29326]) ([qnap docs]) +- Move imports to top for qbittorrent ([@springstan] - [#29325]) ([qbittorrent docs]) +- Move imports to top for plum_lightpad ([@springstan] - [#29324]) ([plum_lightpad docs]) +- Move imports to top for rachio ([@springstan] - [#29323]) ([rachio docs]) +- Improve Alexa interface selection for binary sensors ([@abmantis] - [#29120]) ([alexa docs]) +- Add alexa check for "name" channelMetadata attribute ([@Dilbert66] - [#29279]) ([alexa docs]) +- Move imports to top for qwikswitch ([@springstan] - [#29328]) ([qwikswitch docs]) +- Move imports to top for radarr ([@springstan] - [#29322]) ([radarr docs]) +- Improve WLED white value support for RGBW strips ([@frenck] - [#29312]) ([wled docs]) +- delete incorrect "mdi:brightness-3" ([@Mariusthvdb] - [#29309]) ([moon docs]) +- Do not select all entities when omitting entity ID in service call ([@balloob] - [#29178]) (breaking change) +- Update heatmiserv3 integration ([@andylockran] - [#29006]) ([heatmiser docs]) (breaking change) +- Google assistant storage of connected agents ([@elupus] - [#29158]) ([cloud docs]) ([google_assistant docs]) +- Report unavailable entities to google ([@elupus] - [#28501]) ([google_assistant docs]) +- Add initial test suite for arcam_fmj integration ([@elupus] - [#29335]) +- Fix uvloop warning ([@pvizeli] - [#29341]) ([stream docs]) +- Move imports to top for pushetta ([@springstan] - [#29332]) ([pushetta docs]) +- Move imports to top for pencom ([@springstan] - [#29348]) ([pencom docs]) +- Include telegram_bot message id for all messages ([@luca-angemi] - [#29315]) ([telegram_bot docs]) +- Ignore state of climate entities in prometheus ([@springstan] - [#29346]) ([prometheus docs]) +- Move imports to top for owlet ([@springstan] - [#29352]) +- Rendering complex template objects to leave non-template values alone ([@balloob] - [#29353]) +- Move imports to top for opple ([@springstan] - [#29372]) ([opple docs]) +- Move imports to top for orvibo ([@springstan] - [#29371]) ([orvibo docs]) +- Move imports to top for nut ([@springstan] - [#29368]) ([nut docs]) +- Move imports to top for mycroft ([@springstan] - [#29355]) ([mycroft docs]) +- Upgrade enturclient to 0.2.1 ([@hfurubotten] - [#29375]) ([entur_public_transport docs]) +- Remove cloud dependency from mobile_app ([@balloob] - [#29373]) ([mobile_app docs]) (breaking change) +- Move imports to top for opensensemap ([@springstan] - [#29370]) ([opensensemap docs]) +- Move imports to top for mystrom ([@springstan] - [#29356]) ([mystrom docs]) +- Move imports to top for nello ([@springstan] - [#29361]) ([nello docs]) ([nello docs]) +- Move imports to top for nederlandse_spoorwegen ([@springstan] - [#29360]) ([nederlandse_spoorwegen docs]) +- Move imports to top for nanoleaf ([@springstan] - [#29359]) ([nanoleaf docs]) +- Move imports to top for nad ([@springstan] - [#29358]) ([nad docs]) +- Move imports to top for n26 ([@springstan] - [#29357]) ([n26 docs]) +- Move imports to top for netdata ([@springstan] - [#29362]) ([netdata docs]) +- Move imports to top for netio ([@springstan] - [#29363]) ([netio docs]) +- Move imports to top for nmap_tracker ([@springstan] - [#29364]) ([nmap_tracker docs]) +- Move imports to top for nmbs ([@springstan] - [#29365]) ([nmbs docs]) +- Move imports to top for noaa_tides ([@springstan] - [#29366]) ([noaa_tides docs]) +- Move imports to top for nuimo_controller ([@springstan] - [#29367]) ([nuimo_controller docs]) +- Move imports to top for openhome ([@springstan] - [#29369]) ([openhome docs]) +- Allow negative altitude in location updates ([@balloob] - [#29381]) ([mobile_app docs]) +- Move imports to top for lametric ([@springstan] - [#29406]) ([lametric docs]) +- Move imports to top for lacrosse ([@springstan] - [#29405]) ([lacrosse docs]) +- Move imports to top for kwb ([@springstan] - [#29404]) ([kwb docs]) +- Move imports to top for kiwi ([@springstan] - [#29403]) ([kiwi docs]) +- Move imports to top for iota ([@springstan] - [#29399]) ([iota docs]) +- Move imports to top for lauch_library ([@springstan] - [#29383]) ([launch_library docs]) +- Move imports to top for lg_netcast ([@springstan] - [#29384]) ([lg_netcast docs]) +- Move imports to top for lightwave ([@springstan] - [#29385]) ([lightwave docs]) +- Move imports to top for limitlessled ([@springstan] - [#29386]) ([limitlessled docs]) +- Move imports to top for london_underground ([@springstan] - [#29387]) ([london_underground docs]) +- Move imports to top for luci ([@springstan] - [#29388]) ([luci docs]) +- Move imports to top for lutron ([@springstan] - [#29389]) ([lutron docs]) +- Move imports to top for lutron_caseta ([@springstan] - [#29390]) ([lutron_caseta docs]) +- Move imports to top for lyft ([@springstan] - [#29391]) ([lyft docs]) +- Move imports to top for matrix ([@springstan] - [#29392]) ([matrix docs]) +- Move imports to top for maxcube ([@springstan] - [#29393]) ([maxcube docs]) +- Move imports to top for meteo_france ([@springstan] - [#29394]) ([meteo_france docs]) ([meteoalarm docs]) +- Move imports to top for microsoft ([@springstan] - [#29395]) ([microsoft docs]) +- Move imports to top for modem_callerid ([@springstan] - [#29396]) ([modem_callerid docs]) +- Move imports to top for keenetic-ndms2 ([@springstan] - [#29400]) ([keenetic_ndms2 docs]) +- Move imports to top for irish_rail_transport ([@springstan] - [#29401]) ([irish_rail_transport docs]) +- Move imports to top for joaoapps_join ([@springstan] - [#29402]) ([joaoapps_join docs]) +- Upgrade psutil to 5.6.7 ([@fabaff] - [#29407]) ([systemmonitor docs]) +- Move imports to top for iglo ([@springstan] - [#29424]) ([iglo docs]) +- Move imports to top for idteck_prox ([@springstan] - [#29423]) ([idteck_prox docs]) +- Move imports to top for gogogate2 ([@springstan] - [#29411]) ([gogogate2 docs]) +- Move imports to top for hydrawise ([@springstan] - [#29421]) ([hydrawise docs]) +- Move imports to top for ihc ([@springstan] - [#29425]) ([ihc docs]) +- Move imports to top for ialarm ([@springstan] - [#29422]) ([ialarm docs]) +- Move imports to top for gitter ([@springstan] - [#29412]) ([gitter docs]) +- Move imports to top for homeworks ([@springstan] - [#29418]) ([homeworks docs]) +- Move imports to top for gpmdp ([@springstan] - [#29413]) ([gpmdp docs]) +- Move imports to top for greeneye_monitor ([@springstan] - [#29414]) ([greeneye_monitor docs]) +- Move imports to top for gstreamer ([@springstan] - [#29415]) ([gstreamer docs]) +- Move imports to top for habitica ([@springstan] - [#29416]) ([habitica docs]) +- Move imports to top for hikvision ([@springstan] - [#29417]) ([hikvision docs]) +- Move imports to top for horizon ([@springstan] - [#29419]) ([horizon docs]) +- Move imports to top for hunterdouglas_powerview ([@springstan] - [#29420]) ([hunterdouglas_powerview docs]) +- Move imports to top for gearbest ([@springstan] - [#29432]) ([gearbest docs]) +- Move imports to top for fleetgo ([@springstan] - [#29431]) ([fleetgo docs]) +- Move imports to top for fints ([@springstan] - [#29429]) ([fints docs]) +- Move imports to top for fastdotcom ([@springstan] - [#29428]) ([fastdotcom docs]) +- Move imports to top for familyhub ([@springstan] - [#29427]) ([familyhub docs]) +- Move imports to top for etherscan ([@springstan] - [#29426]) ([etherscan docs]) +- Move imports to top for fixer ([@springstan] - [#29430]) ([fixer docs]) +- Move imports to top for danfoss_air ([@springstan] - [#29435]) ([danfoss_air docs]) +- Updated frontend to 20191204.0 ([@bramkragten] - [#29461]) ([frontend docs]) +- Move imports to top for litejet ([@springstan] - [#29481]) ([litejet docs]) +- Move imports to top for tuya ([@springstan] - [#29467]) ([tuya docs]) +- Move imports to top for zoneminder ([@springstan] - [#29468]) ([zoneminder docs]) +- Move imports to top for point ([@springstan] - [#29470]) ([point docs]) +- Move imports to top for ps4 ([@springstan] - [#29471]) ([ps4 docs]) +- Move imports to top for rainmachine ([@springstan] - [#29472]) ([rainmachine docs]) +- Move imports to top for random ([@springstan] - [#29473]) ([random docs]) +- Move imports to top for ring ([@springstan] - [#29474]) ([ring docs]) +- Move imports to top for skybell ([@springstan] - [#29475]) ([skybell docs]) +- Move imports to top for mhz19 ([@springstan] - [#29478]) ([mhz19 docs]) +- Move imports to top for mfi ([@springstan] - [#29479]) ([mfi docs]) +- Move imports to top for mailgun ([@springstan] - [#29480]) ([mailgun docs]) +- Move imports to top for logi_circle ([@springstan] - [#29482]) ([logi_circle docs]) +- Move imports to top for hlk_sw16 ([@springstan] - [#29483]) ([hlk_sw16 docs]) +- Move imports to top for history ([@springstan] - [#29484]) ([history docs]) +- Move imports to top for geo_json_events ([@springstan] - [#29486]) ([geo_json_events docs]) +- Move imports to top for emulated_hue ([@springstan] - [#29488]) ([emulated_roku docs]) +- Move imports to top for deconz ([@springstan] - [#29489]) ([deconz docs]) +- Move imports to top for daikin ([@springstan] - [#29490]) ([daikin docs]) +- Move imports to top for somfy_mylink ([@springstan] - [#29464]) ([somfy_mylink docs]) +- Move imports to top for solaredge ([@springstan] - [#29463]) ([solaredge docs]) +- Move imports to top for entur_public_transport ([@springstan] - [#29459]) ([entur_public_transport docs]) +- Move imports to top for environment_canada ([@springstan] - [#29458]) ([environment_canada docs]) +- Move imports to top for sonarr ([@springstan] - [#29462]) ([sonarr docs]) +- Fix setup of Huawei LTE for which we can't get a MAC address ([@scop] - [#29455]) ([huawei_lte docs]) +- Move imports to top for emby ([@springstan] - [#29453]) ([emby docs]) +- Move imports to top for eq3btsmart ([@springstan] - [#29456]) ([eq3btsmart docs]) +- Move imports to top for enigma2 ([@springstan] - [#29452]) ([enigma2 docs]) +- Move imports to top for enocean ([@springstan] - [#29451]) ([enocean docs]) +- Move imports to top for envisalink ([@springstan] - [#29457]) ([envisalink docs]) +- Move imports to top for enphase_envoy ([@springstan] - [#29450]) ([enphase_envoy docs]) +- Move imports to top for egardia ([@springstan] - [#29448]) ([egardia docs]) +- Move imports to top for eight_sleep ([@springstan] - [#29447]) ([eight_sleep docs]) +- Update eternalegypt to 0.0.11 ([@amelchio] - [#29446]) ([netgear_lte docs]) +- Move imports to top for duke_energy ([@springstan] - [#29445]) +- Move imports to top for dunehd ([@springstan] - [#29444]) ([dunehd docs]) +- Move imports to top for dlink ([@springstan] - [#29443]) ([dlink docs]) +- Move imports to top for doorbird ([@springstan] - [#29442]) ([doorbird docs]) +- Move imports to top for directv ([@springstan] - [#29441]) ([directv docs]) ([directv docs]) +- Move imports to top for datadog ([@springstan] - [#29440]) ([datadog docs]) +- Move imports to top for deluge ([@springstan] - [#29438]) ([deluge docs]) +- Move imports to top for clementine ([@springstan] - [#29437]) ([clementine docs]) +- Move imports to top for asuswrt ([@springstan] - [#29436]) ([asuswrt docs]) +- Move imports to top for canary ([@springstan] - [#29449]) ([canary docs]) +- Switch iperf3 to generate a new client every time it runs a test ([@rohankapoorcom] - [#29495]) ([iperf3 docs]) +- Update pyhomematic ([@danielperna84] - [#29477]) ([homematic docs]) +- Limit available heat/cool modes for HomeKit thermostats ([@neffs] - [#28586]) ([homekit docs]) (beta fix) +- Increase somfy SCAN_INTERVAL ([@tetienne] - [#29524]) ([somfy docs]) (beta fix) +- Bump georss_generic_client to 0.3 ([@exxamalte] - [#29532]) ([geo_rss_events docs]) (beta fix) +- Huawei LTE device tracker fixes ([@scop] - [#29551]) ([huawei_lte docs]) (beta fix) +- Change source of device_info ([@Santobert] - [#29570]) ([neato docs]) (beta fix) +- Only update disabled_by when enabled default and entity enabled states differ ([@Kane610] - [#29643]) ([unifi docs]) (beta fix) +- Fix unit_of_measurement for Starline temperature sensors ([@Anonym-tsk] - [#29740]) ([starline docs]) (beta fix) +- HomeAssistant-pyozw 0.1.7 ([@pvizeli] - [#29743]) ([zwave docs]) (beta fix) +- Updated frontend to 20191204.1 ([@bramkragten] - [#29787]) ([frontend docs]) (beta fix) +- Bump Roku to 4.0.0 ([@bwarden] - [#29809]) ([roku docs]) (beta fix) +- Add user-agent to fix dwd_weather_warnings setup error ([@springstan] - [#29596]) ([dwd_weather_warnings docs]) (beta fix) +- Add more logging to help future debug situations ([@Kane610] - [#29800]) ([unifi docs]) (beta fix) +- UniFi - honor detection time when UniFi wire bug happens ([@Kane610] - [#29820]) ([unifi docs]) (beta fix) +- UniFi - Handle disabled switches ([@Kane610] - [#29824]) ([unifi docs]) (beta fix) +- Remove uvloop event policy ([@pvizeli] - [#29835]) (beta fix) + +[#24619]: https://github.com/home-assistant/home-assistant/pull/24619 +[#26099]: https://github.com/home-assistant/home-assistant/pull/26099 +[#26528]: https://github.com/home-assistant/home-assistant/pull/26528 +[#26781]: https://github.com/home-assistant/home-assistant/pull/26781 +[#26901]: https://github.com/home-assistant/home-assistant/pull/26901 +[#27040]: https://github.com/home-assistant/home-assistant/pull/27040 +[#27045]: https://github.com/home-assistant/home-assistant/pull/27045 +[#27064]: https://github.com/home-assistant/home-assistant/pull/27064 +[#27197]: https://github.com/home-assistant/home-assistant/pull/27197 +[#27235]: https://github.com/home-assistant/home-assistant/pull/27235 +[#27315]: https://github.com/home-assistant/home-assistant/pull/27315 +[#27751]: https://github.com/home-assistant/home-assistant/pull/27751 +[#27780]: https://github.com/home-assistant/home-assistant/pull/27780 +[#27855]: https://github.com/home-assistant/home-assistant/pull/27855 +[#27960]: https://github.com/home-assistant/home-assistant/pull/27960 +[#27963]: https://github.com/home-assistant/home-assistant/pull/27963 +[#28153]: https://github.com/home-assistant/home-assistant/pull/28153 +[#28213]: https://github.com/home-assistant/home-assistant/pull/28213 +[#28218]: https://github.com/home-assistant/home-assistant/pull/28218 +[#28221]: https://github.com/home-assistant/home-assistant/pull/28221 +[#28226]: https://github.com/home-assistant/home-assistant/pull/28226 +[#28227]: https://github.com/home-assistant/home-assistant/pull/28227 +[#28253]: https://github.com/home-assistant/home-assistant/pull/28253 +[#28272]: https://github.com/home-assistant/home-assistant/pull/28272 +[#28297]: https://github.com/home-assistant/home-assistant/pull/28297 +[#28309]: https://github.com/home-assistant/home-assistant/pull/28309 +[#28317]: https://github.com/home-assistant/home-assistant/pull/28317 +[#28341]: https://github.com/home-assistant/home-assistant/pull/28341 +[#28474]: https://github.com/home-assistant/home-assistant/pull/28474 +[#28483]: https://github.com/home-assistant/home-assistant/pull/28483 +[#28501]: https://github.com/home-assistant/home-assistant/pull/28501 +[#28521]: https://github.com/home-assistant/home-assistant/pull/28521 +[#28560]: https://github.com/home-assistant/home-assistant/pull/28560 +[#28586]: https://github.com/home-assistant/home-assistant/pull/28586 +[#28635]: https://github.com/home-assistant/home-assistant/pull/28635 +[#28641]: https://github.com/home-assistant/home-assistant/pull/28641 +[#28646]: https://github.com/home-assistant/home-assistant/pull/28646 +[#28653]: https://github.com/home-assistant/home-assistant/pull/28653 +[#28655]: https://github.com/home-assistant/home-assistant/pull/28655 +[#28656]: https://github.com/home-assistant/home-assistant/pull/28656 +[#28660]: https://github.com/home-assistant/home-assistant/pull/28660 +[#28672]: https://github.com/home-assistant/home-assistant/pull/28672 +[#28684]: https://github.com/home-assistant/home-assistant/pull/28684 +[#28695]: https://github.com/home-assistant/home-assistant/pull/28695 +[#28696]: https://github.com/home-assistant/home-assistant/pull/28696 +[#28701]: https://github.com/home-assistant/home-assistant/pull/28701 +[#28702]: https://github.com/home-assistant/home-assistant/pull/28702 +[#28715]: https://github.com/home-assistant/home-assistant/pull/28715 +[#28721]: https://github.com/home-assistant/home-assistant/pull/28721 +[#28722]: https://github.com/home-assistant/home-assistant/pull/28722 +[#28728]: https://github.com/home-assistant/home-assistant/pull/28728 +[#28732]: https://github.com/home-assistant/home-assistant/pull/28732 +[#28742]: https://github.com/home-assistant/home-assistant/pull/28742 +[#28743]: https://github.com/home-assistant/home-assistant/pull/28743 +[#28748]: https://github.com/home-assistant/home-assistant/pull/28748 +[#28751]: https://github.com/home-assistant/home-assistant/pull/28751 +[#28756]: https://github.com/home-assistant/home-assistant/pull/28756 +[#28757]: https://github.com/home-assistant/home-assistant/pull/28757 +[#28758]: https://github.com/home-assistant/home-assistant/pull/28758 +[#28759]: https://github.com/home-assistant/home-assistant/pull/28759 +[#28761]: https://github.com/home-assistant/home-assistant/pull/28761 +[#28763]: https://github.com/home-assistant/home-assistant/pull/28763 +[#28765]: https://github.com/home-assistant/home-assistant/pull/28765 +[#28767]: https://github.com/home-assistant/home-assistant/pull/28767 +[#28785]: https://github.com/home-assistant/home-assistant/pull/28785 +[#28786]: https://github.com/home-assistant/home-assistant/pull/28786 +[#28788]: https://github.com/home-assistant/home-assistant/pull/28788 +[#28793]: https://github.com/home-assistant/home-assistant/pull/28793 +[#28798]: https://github.com/home-assistant/home-assistant/pull/28798 +[#28807]: https://github.com/home-assistant/home-assistant/pull/28807 +[#28809]: https://github.com/home-assistant/home-assistant/pull/28809 +[#28810]: https://github.com/home-assistant/home-assistant/pull/28810 +[#28816]: https://github.com/home-assistant/home-assistant/pull/28816 +[#28817]: https://github.com/home-assistant/home-assistant/pull/28817 +[#28818]: https://github.com/home-assistant/home-assistant/pull/28818 +[#28819]: https://github.com/home-assistant/home-assistant/pull/28819 +[#28820]: https://github.com/home-assistant/home-assistant/pull/28820 +[#28823]: https://github.com/home-assistant/home-assistant/pull/28823 +[#28830]: https://github.com/home-assistant/home-assistant/pull/28830 +[#28835]: https://github.com/home-assistant/home-assistant/pull/28835 +[#28841]: https://github.com/home-assistant/home-assistant/pull/28841 +[#28849]: https://github.com/home-assistant/home-assistant/pull/28849 +[#28851]: https://github.com/home-assistant/home-assistant/pull/28851 +[#28857]: https://github.com/home-assistant/home-assistant/pull/28857 +[#28859]: https://github.com/home-assistant/home-assistant/pull/28859 +[#28860]: https://github.com/home-assistant/home-assistant/pull/28860 +[#28861]: https://github.com/home-assistant/home-assistant/pull/28861 +[#28862]: https://github.com/home-assistant/home-assistant/pull/28862 +[#28864]: https://github.com/home-assistant/home-assistant/pull/28864 +[#28869]: https://github.com/home-assistant/home-assistant/pull/28869 +[#28874]: https://github.com/home-assistant/home-assistant/pull/28874 +[#28879]: https://github.com/home-assistant/home-assistant/pull/28879 +[#28880]: https://github.com/home-assistant/home-assistant/pull/28880 +[#28883]: https://github.com/home-assistant/home-assistant/pull/28883 +[#28885]: https://github.com/home-assistant/home-assistant/pull/28885 +[#28886]: https://github.com/home-assistant/home-assistant/pull/28886 +[#28887]: https://github.com/home-assistant/home-assistant/pull/28887 +[#28888]: https://github.com/home-assistant/home-assistant/pull/28888 +[#28889]: https://github.com/home-assistant/home-assistant/pull/28889 +[#28890]: https://github.com/home-assistant/home-assistant/pull/28890 +[#28907]: https://github.com/home-assistant/home-assistant/pull/28907 +[#28911]: https://github.com/home-assistant/home-assistant/pull/28911 +[#28933]: https://github.com/home-assistant/home-assistant/pull/28933 +[#28934]: https://github.com/home-assistant/home-assistant/pull/28934 +[#28939]: https://github.com/home-assistant/home-assistant/pull/28939 +[#28941]: https://github.com/home-assistant/home-assistant/pull/28941 +[#28946]: https://github.com/home-assistant/home-assistant/pull/28946 +[#28948]: https://github.com/home-assistant/home-assistant/pull/28948 +[#28958]: https://github.com/home-assistant/home-assistant/pull/28958 +[#28964]: https://github.com/home-assistant/home-assistant/pull/28964 +[#28965]: https://github.com/home-assistant/home-assistant/pull/28965 +[#28974]: https://github.com/home-assistant/home-assistant/pull/28974 +[#28976]: https://github.com/home-assistant/home-assistant/pull/28976 +[#28979]: https://github.com/home-assistant/home-assistant/pull/28979 +[#28980]: https://github.com/home-assistant/home-assistant/pull/28980 +[#28983]: https://github.com/home-assistant/home-assistant/pull/28983 +[#28984]: https://github.com/home-assistant/home-assistant/pull/28984 +[#28985]: https://github.com/home-assistant/home-assistant/pull/28985 +[#28986]: https://github.com/home-assistant/home-assistant/pull/28986 +[#28988]: https://github.com/home-assistant/home-assistant/pull/28988 +[#28989]: https://github.com/home-assistant/home-assistant/pull/28989 +[#28990]: https://github.com/home-assistant/home-assistant/pull/28990 +[#28993]: https://github.com/home-assistant/home-assistant/pull/28993 +[#28995]: https://github.com/home-assistant/home-assistant/pull/28995 +[#28997]: https://github.com/home-assistant/home-assistant/pull/28997 +[#28998]: https://github.com/home-assistant/home-assistant/pull/28998 +[#29000]: https://github.com/home-assistant/home-assistant/pull/29000 +[#29001]: https://github.com/home-assistant/home-assistant/pull/29001 +[#29003]: https://github.com/home-assistant/home-assistant/pull/29003 +[#29004]: https://github.com/home-assistant/home-assistant/pull/29004 +[#29006]: https://github.com/home-assistant/home-assistant/pull/29006 +[#29009]: https://github.com/home-assistant/home-assistant/pull/29009 +[#29012]: https://github.com/home-assistant/home-assistant/pull/29012 +[#29014]: https://github.com/home-assistant/home-assistant/pull/29014 +[#29016]: https://github.com/home-assistant/home-assistant/pull/29016 +[#29017]: https://github.com/home-assistant/home-assistant/pull/29017 +[#29020]: https://github.com/home-assistant/home-assistant/pull/29020 +[#29021]: https://github.com/home-assistant/home-assistant/pull/29021 +[#29022]: https://github.com/home-assistant/home-assistant/pull/29022 +[#29023]: https://github.com/home-assistant/home-assistant/pull/29023 +[#29025]: https://github.com/home-assistant/home-assistant/pull/29025 +[#29026]: https://github.com/home-assistant/home-assistant/pull/29026 +[#29027]: https://github.com/home-assistant/home-assistant/pull/29027 +[#29029]: https://github.com/home-assistant/home-assistant/pull/29029 +[#29030]: https://github.com/home-assistant/home-assistant/pull/29030 +[#29033]: https://github.com/home-assistant/home-assistant/pull/29033 +[#29038]: https://github.com/home-assistant/home-assistant/pull/29038 +[#29041]: https://github.com/home-assistant/home-assistant/pull/29041 +[#29042]: https://github.com/home-assistant/home-assistant/pull/29042 +[#29045]: https://github.com/home-assistant/home-assistant/pull/29045 +[#29046]: https://github.com/home-assistant/home-assistant/pull/29046 +[#29047]: https://github.com/home-assistant/home-assistant/pull/29047 +[#29048]: https://github.com/home-assistant/home-assistant/pull/29048 +[#29049]: https://github.com/home-assistant/home-assistant/pull/29049 +[#29050]: https://github.com/home-assistant/home-assistant/pull/29050 +[#29052]: https://github.com/home-assistant/home-assistant/pull/29052 +[#29053]: https://github.com/home-assistant/home-assistant/pull/29053 +[#29054]: https://github.com/home-assistant/home-assistant/pull/29054 +[#29055]: https://github.com/home-assistant/home-assistant/pull/29055 +[#29056]: https://github.com/home-assistant/home-assistant/pull/29056 +[#29057]: https://github.com/home-assistant/home-assistant/pull/29057 +[#29058]: https://github.com/home-assistant/home-assistant/pull/29058 +[#29059]: https://github.com/home-assistant/home-assistant/pull/29059 +[#29060]: https://github.com/home-assistant/home-assistant/pull/29060 +[#29061]: https://github.com/home-assistant/home-assistant/pull/29061 +[#29064]: https://github.com/home-assistant/home-assistant/pull/29064 +[#29065]: https://github.com/home-assistant/home-assistant/pull/29065 +[#29068]: https://github.com/home-assistant/home-assistant/pull/29068 +[#29071]: https://github.com/home-assistant/home-assistant/pull/29071 +[#29072]: https://github.com/home-assistant/home-assistant/pull/29072 +[#29073]: https://github.com/home-assistant/home-assistant/pull/29073 +[#29074]: https://github.com/home-assistant/home-assistant/pull/29074 +[#29075]: https://github.com/home-assistant/home-assistant/pull/29075 +[#29076]: https://github.com/home-assistant/home-assistant/pull/29076 +[#29077]: https://github.com/home-assistant/home-assistant/pull/29077 +[#29080]: https://github.com/home-assistant/home-assistant/pull/29080 +[#29081]: https://github.com/home-assistant/home-assistant/pull/29081 +[#29082]: https://github.com/home-assistant/home-assistant/pull/29082 +[#29083]: https://github.com/home-assistant/home-assistant/pull/29083 +[#29085]: https://github.com/home-assistant/home-assistant/pull/29085 +[#29086]: https://github.com/home-assistant/home-assistant/pull/29086 +[#29089]: https://github.com/home-assistant/home-assistant/pull/29089 +[#29090]: https://github.com/home-assistant/home-assistant/pull/29090 +[#29092]: https://github.com/home-assistant/home-assistant/pull/29092 +[#29093]: https://github.com/home-assistant/home-assistant/pull/29093 +[#29094]: https://github.com/home-assistant/home-assistant/pull/29094 +[#29095]: https://github.com/home-assistant/home-assistant/pull/29095 +[#29096]: https://github.com/home-assistant/home-assistant/pull/29096 +[#29097]: https://github.com/home-assistant/home-assistant/pull/29097 +[#29099]: https://github.com/home-assistant/home-assistant/pull/29099 +[#29100]: https://github.com/home-assistant/home-assistant/pull/29100 +[#29102]: https://github.com/home-assistant/home-assistant/pull/29102 +[#29103]: https://github.com/home-assistant/home-assistant/pull/29103 +[#29104]: https://github.com/home-assistant/home-assistant/pull/29104 +[#29105]: https://github.com/home-assistant/home-assistant/pull/29105 +[#29106]: https://github.com/home-assistant/home-assistant/pull/29106 +[#29107]: https://github.com/home-assistant/home-assistant/pull/29107 +[#29108]: https://github.com/home-assistant/home-assistant/pull/29108 +[#29109]: https://github.com/home-assistant/home-assistant/pull/29109 +[#29110]: https://github.com/home-assistant/home-assistant/pull/29110 +[#29111]: https://github.com/home-assistant/home-assistant/pull/29111 +[#29112]: https://github.com/home-assistant/home-assistant/pull/29112 +[#29113]: https://github.com/home-assistant/home-assistant/pull/29113 +[#29114]: https://github.com/home-assistant/home-assistant/pull/29114 +[#29116]: https://github.com/home-assistant/home-assistant/pull/29116 +[#29117]: https://github.com/home-assistant/home-assistant/pull/29117 +[#29118]: https://github.com/home-assistant/home-assistant/pull/29118 +[#29119]: https://github.com/home-assistant/home-assistant/pull/29119 +[#29120]: https://github.com/home-assistant/home-assistant/pull/29120 +[#29123]: https://github.com/home-assistant/home-assistant/pull/29123 +[#29124]: https://github.com/home-assistant/home-assistant/pull/29124 +[#29125]: https://github.com/home-assistant/home-assistant/pull/29125 +[#29126]: https://github.com/home-assistant/home-assistant/pull/29126 +[#29127]: https://github.com/home-assistant/home-assistant/pull/29127 +[#29128]: https://github.com/home-assistant/home-assistant/pull/29128 +[#29129]: https://github.com/home-assistant/home-assistant/pull/29129 +[#29130]: https://github.com/home-assistant/home-assistant/pull/29130 +[#29131]: https://github.com/home-assistant/home-assistant/pull/29131 +[#29132]: https://github.com/home-assistant/home-assistant/pull/29132 +[#29133]: https://github.com/home-assistant/home-assistant/pull/29133 +[#29134]: https://github.com/home-assistant/home-assistant/pull/29134 +[#29135]: https://github.com/home-assistant/home-assistant/pull/29135 +[#29136]: https://github.com/home-assistant/home-assistant/pull/29136 +[#29137]: https://github.com/home-assistant/home-assistant/pull/29137 +[#29138]: https://github.com/home-assistant/home-assistant/pull/29138 +[#29139]: https://github.com/home-assistant/home-assistant/pull/29139 +[#29140]: https://github.com/home-assistant/home-assistant/pull/29140 +[#29141]: https://github.com/home-assistant/home-assistant/pull/29141 +[#29142]: https://github.com/home-assistant/home-assistant/pull/29142 +[#29143]: https://github.com/home-assistant/home-assistant/pull/29143 +[#29144]: https://github.com/home-assistant/home-assistant/pull/29144 +[#29145]: https://github.com/home-assistant/home-assistant/pull/29145 +[#29146]: https://github.com/home-assistant/home-assistant/pull/29146 +[#29147]: https://github.com/home-assistant/home-assistant/pull/29147 +[#29148]: https://github.com/home-assistant/home-assistant/pull/29148 +[#29149]: https://github.com/home-assistant/home-assistant/pull/29149 +[#29150]: https://github.com/home-assistant/home-assistant/pull/29150 +[#29151]: https://github.com/home-assistant/home-assistant/pull/29151 +[#29153]: https://github.com/home-assistant/home-assistant/pull/29153 +[#29156]: https://github.com/home-assistant/home-assistant/pull/29156 +[#29158]: https://github.com/home-assistant/home-assistant/pull/29158 +[#29159]: https://github.com/home-assistant/home-assistant/pull/29159 +[#29160]: https://github.com/home-assistant/home-assistant/pull/29160 +[#29161]: https://github.com/home-assistant/home-assistant/pull/29161 +[#29163]: https://github.com/home-assistant/home-assistant/pull/29163 +[#29164]: https://github.com/home-assistant/home-assistant/pull/29164 +[#29165]: https://github.com/home-assistant/home-assistant/pull/29165 +[#29168]: https://github.com/home-assistant/home-assistant/pull/29168 +[#29170]: https://github.com/home-assistant/home-assistant/pull/29170 +[#29171]: https://github.com/home-assistant/home-assistant/pull/29171 +[#29172]: https://github.com/home-assistant/home-assistant/pull/29172 +[#29173]: https://github.com/home-assistant/home-assistant/pull/29173 +[#29175]: https://github.com/home-assistant/home-assistant/pull/29175 +[#29177]: https://github.com/home-assistant/home-assistant/pull/29177 +[#29178]: https://github.com/home-assistant/home-assistant/pull/29178 +[#29181]: https://github.com/home-assistant/home-assistant/pull/29181 +[#29182]: https://github.com/home-assistant/home-assistant/pull/29182 +[#29189]: https://github.com/home-assistant/home-assistant/pull/29189 +[#29191]: https://github.com/home-assistant/home-assistant/pull/29191 +[#29192]: https://github.com/home-assistant/home-assistant/pull/29192 +[#29193]: https://github.com/home-assistant/home-assistant/pull/29193 +[#29194]: https://github.com/home-assistant/home-assistant/pull/29194 +[#29195]: https://github.com/home-assistant/home-assistant/pull/29195 +[#29196]: https://github.com/home-assistant/home-assistant/pull/29196 +[#29197]: https://github.com/home-assistant/home-assistant/pull/29197 +[#29198]: https://github.com/home-assistant/home-assistant/pull/29198 +[#29199]: https://github.com/home-assistant/home-assistant/pull/29199 +[#29200]: https://github.com/home-assistant/home-assistant/pull/29200 +[#29201]: https://github.com/home-assistant/home-assistant/pull/29201 +[#29202]: https://github.com/home-assistant/home-assistant/pull/29202 +[#29203]: https://github.com/home-assistant/home-assistant/pull/29203 +[#29204]: https://github.com/home-assistant/home-assistant/pull/29204 +[#29205]: https://github.com/home-assistant/home-assistant/pull/29205 +[#29206]: https://github.com/home-assistant/home-assistant/pull/29206 +[#29208]: https://github.com/home-assistant/home-assistant/pull/29208 +[#29209]: https://github.com/home-assistant/home-assistant/pull/29209 +[#29213]: https://github.com/home-assistant/home-assistant/pull/29213 +[#29221]: https://github.com/home-assistant/home-assistant/pull/29221 +[#29224]: https://github.com/home-assistant/home-assistant/pull/29224 +[#29225]: https://github.com/home-assistant/home-assistant/pull/29225 +[#29226]: https://github.com/home-assistant/home-assistant/pull/29226 +[#29227]: https://github.com/home-assistant/home-assistant/pull/29227 +[#29228]: https://github.com/home-assistant/home-assistant/pull/29228 +[#29229]: https://github.com/home-assistant/home-assistant/pull/29229 +[#29230]: https://github.com/home-assistant/home-assistant/pull/29230 +[#29231]: https://github.com/home-assistant/home-assistant/pull/29231 +[#29232]: https://github.com/home-assistant/home-assistant/pull/29232 +[#29233]: https://github.com/home-assistant/home-assistant/pull/29233 +[#29237]: https://github.com/home-assistant/home-assistant/pull/29237 +[#29241]: https://github.com/home-assistant/home-assistant/pull/29241 +[#29247]: https://github.com/home-assistant/home-assistant/pull/29247 +[#29249]: https://github.com/home-assistant/home-assistant/pull/29249 +[#29250]: https://github.com/home-assistant/home-assistant/pull/29250 +[#29251]: https://github.com/home-assistant/home-assistant/pull/29251 +[#29252]: https://github.com/home-assistant/home-assistant/pull/29252 +[#29257]: https://github.com/home-assistant/home-assistant/pull/29257 +[#29258]: https://github.com/home-assistant/home-assistant/pull/29258 +[#29259]: https://github.com/home-assistant/home-assistant/pull/29259 +[#29260]: https://github.com/home-assistant/home-assistant/pull/29260 +[#29261]: https://github.com/home-assistant/home-assistant/pull/29261 +[#29262]: https://github.com/home-assistant/home-assistant/pull/29262 +[#29263]: https://github.com/home-assistant/home-assistant/pull/29263 +[#29264]: https://github.com/home-assistant/home-assistant/pull/29264 +[#29266]: https://github.com/home-assistant/home-assistant/pull/29266 +[#29267]: https://github.com/home-assistant/home-assistant/pull/29267 +[#29268]: https://github.com/home-assistant/home-assistant/pull/29268 +[#29269]: https://github.com/home-assistant/home-assistant/pull/29269 +[#29270]: https://github.com/home-assistant/home-assistant/pull/29270 +[#29271]: https://github.com/home-assistant/home-assistant/pull/29271 +[#29272]: https://github.com/home-assistant/home-assistant/pull/29272 +[#29273]: https://github.com/home-assistant/home-assistant/pull/29273 +[#29276]: https://github.com/home-assistant/home-assistant/pull/29276 +[#29279]: https://github.com/home-assistant/home-assistant/pull/29279 +[#29280]: https://github.com/home-assistant/home-assistant/pull/29280 +[#29281]: https://github.com/home-assistant/home-assistant/pull/29281 +[#29283]: https://github.com/home-assistant/home-assistant/pull/29283 +[#29284]: https://github.com/home-assistant/home-assistant/pull/29284 +[#29285]: https://github.com/home-assistant/home-assistant/pull/29285 +[#29286]: https://github.com/home-assistant/home-assistant/pull/29286 +[#29287]: https://github.com/home-assistant/home-assistant/pull/29287 +[#29288]: https://github.com/home-assistant/home-assistant/pull/29288 +[#29289]: https://github.com/home-assistant/home-assistant/pull/29289 +[#29290]: https://github.com/home-assistant/home-assistant/pull/29290 +[#29294]: https://github.com/home-assistant/home-assistant/pull/29294 +[#29302]: https://github.com/home-assistant/home-assistant/pull/29302 +[#29306]: https://github.com/home-assistant/home-assistant/pull/29306 +[#29309]: https://github.com/home-assistant/home-assistant/pull/29309 +[#29312]: https://github.com/home-assistant/home-assistant/pull/29312 +[#29315]: https://github.com/home-assistant/home-assistant/pull/29315 +[#29319]: https://github.com/home-assistant/home-assistant/pull/29319 +[#29322]: https://github.com/home-assistant/home-assistant/pull/29322 +[#29323]: https://github.com/home-assistant/home-assistant/pull/29323 +[#29324]: https://github.com/home-assistant/home-assistant/pull/29324 +[#29325]: https://github.com/home-assistant/home-assistant/pull/29325 +[#29326]: https://github.com/home-assistant/home-assistant/pull/29326 +[#29327]: https://github.com/home-assistant/home-assistant/pull/29327 +[#29328]: https://github.com/home-assistant/home-assistant/pull/29328 +[#29329]: https://github.com/home-assistant/home-assistant/pull/29329 +[#29330]: https://github.com/home-assistant/home-assistant/pull/29330 +[#29331]: https://github.com/home-assistant/home-assistant/pull/29331 +[#29332]: https://github.com/home-assistant/home-assistant/pull/29332 +[#29335]: https://github.com/home-assistant/home-assistant/pull/29335 +[#29341]: https://github.com/home-assistant/home-assistant/pull/29341 +[#29346]: https://github.com/home-assistant/home-assistant/pull/29346 +[#29348]: https://github.com/home-assistant/home-assistant/pull/29348 +[#29352]: https://github.com/home-assistant/home-assistant/pull/29352 +[#29353]: https://github.com/home-assistant/home-assistant/pull/29353 +[#29355]: https://github.com/home-assistant/home-assistant/pull/29355 +[#29356]: https://github.com/home-assistant/home-assistant/pull/29356 +[#29357]: https://github.com/home-assistant/home-assistant/pull/29357 +[#29358]: https://github.com/home-assistant/home-assistant/pull/29358 +[#29359]: https://github.com/home-assistant/home-assistant/pull/29359 +[#29360]: https://github.com/home-assistant/home-assistant/pull/29360 +[#29361]: https://github.com/home-assistant/home-assistant/pull/29361 +[#29362]: https://github.com/home-assistant/home-assistant/pull/29362 +[#29363]: https://github.com/home-assistant/home-assistant/pull/29363 +[#29364]: https://github.com/home-assistant/home-assistant/pull/29364 +[#29365]: https://github.com/home-assistant/home-assistant/pull/29365 +[#29366]: https://github.com/home-assistant/home-assistant/pull/29366 +[#29367]: https://github.com/home-assistant/home-assistant/pull/29367 +[#29368]: https://github.com/home-assistant/home-assistant/pull/29368 +[#29369]: https://github.com/home-assistant/home-assistant/pull/29369 +[#29370]: https://github.com/home-assistant/home-assistant/pull/29370 +[#29371]: https://github.com/home-assistant/home-assistant/pull/29371 +[#29372]: https://github.com/home-assistant/home-assistant/pull/29372 +[#29373]: https://github.com/home-assistant/home-assistant/pull/29373 +[#29375]: https://github.com/home-assistant/home-assistant/pull/29375 +[#29381]: https://github.com/home-assistant/home-assistant/pull/29381 +[#29383]: https://github.com/home-assistant/home-assistant/pull/29383 +[#29384]: https://github.com/home-assistant/home-assistant/pull/29384 +[#29385]: https://github.com/home-assistant/home-assistant/pull/29385 +[#29386]: https://github.com/home-assistant/home-assistant/pull/29386 +[#29387]: https://github.com/home-assistant/home-assistant/pull/29387 +[#29388]: https://github.com/home-assistant/home-assistant/pull/29388 +[#29389]: https://github.com/home-assistant/home-assistant/pull/29389 +[#29390]: https://github.com/home-assistant/home-assistant/pull/29390 +[#29391]: https://github.com/home-assistant/home-assistant/pull/29391 +[#29392]: https://github.com/home-assistant/home-assistant/pull/29392 +[#29393]: https://github.com/home-assistant/home-assistant/pull/29393 +[#29394]: https://github.com/home-assistant/home-assistant/pull/29394 +[#29395]: https://github.com/home-assistant/home-assistant/pull/29395 +[#29396]: https://github.com/home-assistant/home-assistant/pull/29396 +[#29399]: https://github.com/home-assistant/home-assistant/pull/29399 +[#29400]: https://github.com/home-assistant/home-assistant/pull/29400 +[#29401]: https://github.com/home-assistant/home-assistant/pull/29401 +[#29402]: https://github.com/home-assistant/home-assistant/pull/29402 +[#29403]: https://github.com/home-assistant/home-assistant/pull/29403 +[#29404]: https://github.com/home-assistant/home-assistant/pull/29404 +[#29405]: https://github.com/home-assistant/home-assistant/pull/29405 +[#29406]: https://github.com/home-assistant/home-assistant/pull/29406 +[#29407]: https://github.com/home-assistant/home-assistant/pull/29407 +[#29411]: https://github.com/home-assistant/home-assistant/pull/29411 +[#29412]: https://github.com/home-assistant/home-assistant/pull/29412 +[#29413]: https://github.com/home-assistant/home-assistant/pull/29413 +[#29414]: https://github.com/home-assistant/home-assistant/pull/29414 +[#29415]: https://github.com/home-assistant/home-assistant/pull/29415 +[#29416]: https://github.com/home-assistant/home-assistant/pull/29416 +[#29417]: https://github.com/home-assistant/home-assistant/pull/29417 +[#29418]: https://github.com/home-assistant/home-assistant/pull/29418 +[#29419]: https://github.com/home-assistant/home-assistant/pull/29419 +[#29420]: https://github.com/home-assistant/home-assistant/pull/29420 +[#29421]: https://github.com/home-assistant/home-assistant/pull/29421 +[#29422]: https://github.com/home-assistant/home-assistant/pull/29422 +[#29423]: https://github.com/home-assistant/home-assistant/pull/29423 +[#29424]: https://github.com/home-assistant/home-assistant/pull/29424 +[#29425]: https://github.com/home-assistant/home-assistant/pull/29425 +[#29426]: https://github.com/home-assistant/home-assistant/pull/29426 +[#29427]: https://github.com/home-assistant/home-assistant/pull/29427 +[#29428]: https://github.com/home-assistant/home-assistant/pull/29428 +[#29429]: https://github.com/home-assistant/home-assistant/pull/29429 +[#29430]: https://github.com/home-assistant/home-assistant/pull/29430 +[#29431]: https://github.com/home-assistant/home-assistant/pull/29431 +[#29432]: https://github.com/home-assistant/home-assistant/pull/29432 +[#29435]: https://github.com/home-assistant/home-assistant/pull/29435 +[#29436]: https://github.com/home-assistant/home-assistant/pull/29436 +[#29437]: https://github.com/home-assistant/home-assistant/pull/29437 +[#29438]: https://github.com/home-assistant/home-assistant/pull/29438 +[#29440]: https://github.com/home-assistant/home-assistant/pull/29440 +[#29441]: https://github.com/home-assistant/home-assistant/pull/29441 +[#29442]: https://github.com/home-assistant/home-assistant/pull/29442 +[#29443]: https://github.com/home-assistant/home-assistant/pull/29443 +[#29444]: https://github.com/home-assistant/home-assistant/pull/29444 +[#29445]: https://github.com/home-assistant/home-assistant/pull/29445 +[#29446]: https://github.com/home-assistant/home-assistant/pull/29446 +[#29447]: https://github.com/home-assistant/home-assistant/pull/29447 +[#29448]: https://github.com/home-assistant/home-assistant/pull/29448 +[#29449]: https://github.com/home-assistant/home-assistant/pull/29449 +[#29450]: https://github.com/home-assistant/home-assistant/pull/29450 +[#29451]: https://github.com/home-assistant/home-assistant/pull/29451 +[#29452]: https://github.com/home-assistant/home-assistant/pull/29452 +[#29453]: https://github.com/home-assistant/home-assistant/pull/29453 +[#29455]: https://github.com/home-assistant/home-assistant/pull/29455 +[#29456]: https://github.com/home-assistant/home-assistant/pull/29456 +[#29457]: https://github.com/home-assistant/home-assistant/pull/29457 +[#29458]: https://github.com/home-assistant/home-assistant/pull/29458 +[#29459]: https://github.com/home-assistant/home-assistant/pull/29459 +[#29461]: https://github.com/home-assistant/home-assistant/pull/29461 +[#29462]: https://github.com/home-assistant/home-assistant/pull/29462 +[#29463]: https://github.com/home-assistant/home-assistant/pull/29463 +[#29464]: https://github.com/home-assistant/home-assistant/pull/29464 +[#29467]: https://github.com/home-assistant/home-assistant/pull/29467 +[#29468]: https://github.com/home-assistant/home-assistant/pull/29468 +[#29470]: https://github.com/home-assistant/home-assistant/pull/29470 +[#29471]: https://github.com/home-assistant/home-assistant/pull/29471 +[#29472]: https://github.com/home-assistant/home-assistant/pull/29472 +[#29473]: https://github.com/home-assistant/home-assistant/pull/29473 +[#29474]: https://github.com/home-assistant/home-assistant/pull/29474 +[#29475]: https://github.com/home-assistant/home-assistant/pull/29475 +[#29477]: https://github.com/home-assistant/home-assistant/pull/29477 +[#29478]: https://github.com/home-assistant/home-assistant/pull/29478 +[#29479]: https://github.com/home-assistant/home-assistant/pull/29479 +[#29480]: https://github.com/home-assistant/home-assistant/pull/29480 +[#29481]: https://github.com/home-assistant/home-assistant/pull/29481 +[#29482]: https://github.com/home-assistant/home-assistant/pull/29482 +[#29483]: https://github.com/home-assistant/home-assistant/pull/29483 +[#29484]: https://github.com/home-assistant/home-assistant/pull/29484 +[#29486]: https://github.com/home-assistant/home-assistant/pull/29486 +[#29488]: https://github.com/home-assistant/home-assistant/pull/29488 +[#29489]: https://github.com/home-assistant/home-assistant/pull/29489 +[#29490]: https://github.com/home-assistant/home-assistant/pull/29490 +[#29495]: https://github.com/home-assistant/home-assistant/pull/29495 +[#29524]: https://github.com/home-assistant/home-assistant/pull/29524 +[#29532]: https://github.com/home-assistant/home-assistant/pull/29532 +[#29551]: https://github.com/home-assistant/home-assistant/pull/29551 +[#29570]: https://github.com/home-assistant/home-assistant/pull/29570 +[#29596]: https://github.com/home-assistant/home-assistant/pull/29596 +[#29643]: https://github.com/home-assistant/home-assistant/pull/29643 +[#29740]: https://github.com/home-assistant/home-assistant/pull/29740 +[#29743]: https://github.com/home-assistant/home-assistant/pull/29743 +[#29787]: https://github.com/home-assistant/home-assistant/pull/29787 +[#29800]: https://github.com/home-assistant/home-assistant/pull/29800 +[#29809]: https://github.com/home-assistant/home-assistant/pull/29809 +[#29820]: https://github.com/home-assistant/home-assistant/pull/29820 +[#29824]: https://github.com/home-assistant/home-assistant/pull/29824 +[#29835]: https://github.com/home-assistant/home-assistant/pull/29835 +[@adminiuga]: https://github.com/Adminiuga +[@anonym-tsk]: https://github.com/Anonym-tsk +[@bkpepe]: https://github.com/BKPepe +[@bouni]: https://github.com/Bouni +[@chrismandich]: https://github.com/ChrisMandich +[@danielhiversen]: https://github.com/Danielhiversen +[@dilbert66]: https://github.com/Dilbert66 +[@harlemsquirrel]: https://github.com/HarlemSquirrel +[@jaynewstrom]: https://github.com/JayNewstrom +[@jefflirion]: https://github.com/JeffLIrion +[@k4ds3]: https://github.com/K4ds3 +[@kane610]: https://github.com/Kane610 +[@mariusthvdb]: https://github.com/Mariusthvdb +[@misiu]: https://github.com/Misiu +[@mryck]: https://github.com/Mryck +[@noblekangaroo]: https://github.com/NobleKangaroo +[@ottowinter]: https://github.com/OttoWinter +[@pedrolamas]: https://github.com/PedroLamas +[@quentame]: https://github.com/Quentame +[@romkabouter]: https://github.com/Romkabouter +[@snoof85]: https://github.com/SNoof85 +[@santobert]: https://github.com/Santobert +[@shulyaka]: https://github.com/Shulyaka +[@sukramj]: https://github.com/SukramJ +[@tombrien]: https://github.com/TomBrien +[@usa-reddragon]: https://github.com/USA-RedDragon +[@abmantis]: https://github.com/abmantis +[@adamchengtkc]: https://github.com/adamchengtkc +[@adrum]: https://github.com/adrum +[@akasma74]: https://github.com/akasma74 +[@alandtse]: https://github.com/alandtse +[@alex3305]: https://github.com/alex3305 +[@amelchio]: https://github.com/amelchio +[@andersonshatch]: https://github.com/andersonshatch +[@andylockran]: https://github.com/andylockran +[@awkwardduck]: https://github.com/awkwardDuck +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bannhead]: https://github.com/bannhead +[@basnijholt]: https://github.com/basnijholt +[@bazwilliams]: https://github.com/bazwilliams +[@bendikrb]: https://github.com/bendikrb +[@bramkragten]: https://github.com/bramkragten +[@bwarden]: https://github.com/bwarden +[@caronc]: https://github.com/caronc +[@cgtobi]: https://github.com/cgtobi +[@challs]: https://github.com/challs +[@colinodell]: https://github.com/colinodell +[@danielperna84]: https://github.com/danielperna84 +[@depl0y]: https://github.com/depl0y +[@djj211]: https://github.com/djj211 +[@eifinger]: https://github.com/eifinger +[@elupus]: https://github.com/elupus +[@engrbm87]: https://github.com/engrbm87 +[@escoand]: https://github.com/escoand +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@felipediel]: https://github.com/felipediel +[@ferbar]: https://github.com/ferbar +[@flamm3blemuff1n]: https://github.com/flamm3blemuff1n +[@foxel]: https://github.com/foxel +[@foxy82]: https://github.com/foxy82 +[@fredericvl]: https://github.com/fredericvl +[@freekode]: https://github.com/freekode +[@frenck]: https://github.com/frenck +[@gjbadros]: https://github.com/gjbadros +[@glmnet]: https://github.com/glmnet +[@grillp]: https://github.com/grillp +[@guillempages]: https://github.com/guillempages +[@herrlado]: https://github.com/herrlado +[@hfurubotten]: https://github.com/hfurubotten +[@hmmbob]: https://github.com/hmmbob +[@jesserockz]: https://github.com/jesserockz +[@jjlawren]: https://github.com/jjlawren +[@krasnoukhov]: https://github.com/krasnoukhov +[@ktnrg45]: https://github.com/ktnrg45 +[@kuchel77]: https://github.com/kuchel77 +[@kurniawan77]: https://github.com/kurniawan77 +[@larssont]: https://github.com/larssont +[@luca-angemi]: https://github.com/luca-angemi +[@majuss]: https://github.com/majuss +[@mdonoughe]: https://github.com/mdonoughe +[@mezz64]: https://github.com/mezz64 +[@michaelarnauts]: https://github.com/michaelarnauts +[@michaeldavie]: https://github.com/michaeldavie +[@mtdcr]: https://github.com/mtdcr +[@mvn23]: https://github.com/mvn23 +[@neffs]: https://github.com/neffs +[@oandrew]: https://github.com/oandrew +[@ochlocracy]: https://github.com/ochlocracy +[@olijouve]: https://github.com/olijouve +[@persandstrom]: https://github.com/persandstrom +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@raman325]: https://github.com/raman325 +[@rappenze]: https://github.com/rappenze +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@scop]: https://github.com/scop +[@sophof]: https://github.com/sophof +[@springstan]: https://github.com/springstan +[@synesthesiam]: https://github.com/synesthesiam +[@tetienne]: https://github.com/tetienne +[@thomasgermain]: https://github.com/thomasgermain +[@timmccor]: https://github.com/timmccor +[@tofuschnitzel]: https://github.com/tofuSCHNITZEL +[@tsvi]: https://github.com/tsvi +[@tulindo]: https://github.com/tulindo +[@uspike]: https://github.com/uSpike +[aftership docs]: /integrations/aftership/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alarmdecoder docs]: /integrations/alarmdecoder/ +[alexa docs]: /integrations/alexa/ +[almond docs]: /integrations/almond/ +[alpha_vantage docs]: /integrations/alpha_vantage/ +[ambient_station docs]: /integrations/ambient_station/ +[androidtv docs]: /integrations/androidtv/ +[apns docs]: /integrations/apns/ +[apprise docs]: /integrations/apprise/ +[asuswrt docs]: /integrations/asuswrt/ +[aten_pe docs]: /integrations/aten_pe/ +[bayesian docs]: /integrations/bayesian/ +[bbox docs]: /integrations/bbox/ +[blackbird docs]: /integrations/blackbird/ +[bluesound docs]: /integrations/bluesound/ +[bluetooth_tracker docs]: /integrations/bluetooth_tracker/ +[braviatv docs]: /integrations/braviatv/ +[broadlink docs]: /integrations/broadlink/ +[canary docs]: /integrations/canary/ +[channels docs]: /integrations/channels/ +[clementine docs]: /integrations/clementine/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[comfoconnect docs]: /integrations/comfoconnect/ +[conversation docs]: /integrations/conversation/ +[cover docs]: /integrations/cover/ +[daikin docs]: /integrations/daikin/ +[danfoss_air docs]: /integrations/danfoss_air/ +[datadog docs]: /integrations/datadog/ +[deconz docs]: /integrations/deconz/ +[deluge docs]: /integrations/deluge/ +[demo docs]: /integrations/demo/ +[directv docs]: /integrations/directv/ +[discord docs]: /integrations/discord/ +[discovery docs]: /integrations/discovery/ +[dlink docs]: /integrations/dlink/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[dominos docs]: /integrations/dominos/ +[doorbird docs]: /integrations/doorbird/ +[dovado docs]: /integrations/dovado/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[dunehd docs]: /integrations/dunehd/ +[dwd_weather_warnings docs]: /integrations/dwd_weather_warnings/ +[dyson docs]: /integrations/dyson/ +[ebox docs]: /integrations/ebox/ +[ecoal_boiler docs]: /integrations/ecoal_boiler/ +[econet docs]: /integrations/econet/ +[ecovacs docs]: /integrations/ecovacs/ +[eddystone_temperature docs]: /integrations/eddystone_temperature/ +[edimax docs]: /integrations/edimax/ +[ee_brightbox docs]: /integrations/ee_brightbox/ +[egardia docs]: /integrations/egardia/ +[eight_sleep docs]: /integrations/eight_sleep/ +[elkm1 docs]: /integrations/elkm1/ +[elv docs]: /integrations/elv/ +[emby docs]: /integrations/emby/ +[emulated_hue docs]: /integrations/emulated_hue/ +[emulated_roku docs]: /integrations/emulated_roku/ +[enigma2 docs]: /integrations/enigma2/ +[enocean docs]: /integrations/enocean/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[entur_public_transport docs]: /integrations/entur_public_transport/ +[environment_canada docs]: /integrations/environment_canada/ +[envisalink docs]: /integrations/envisalink/ +[epson docs]: /integrations/epson/ +[epsonworkforce docs]: /integrations/epsonworkforce/ +[eq3btsmart docs]: /integrations/eq3btsmart/ +[esphome docs]: /integrations/esphome/ +[etherscan docs]: /integrations/etherscan/ +[facebox docs]: /integrations/facebox/ +[familyhub docs]: /integrations/familyhub/ +[fastdotcom docs]: /integrations/fastdotcom/ +[ffmpeg_motion docs]: /integrations/ffmpeg_motion/ +[ffmpeg_noise docs]: /integrations/ffmpeg_noise/ +[fibaro docs]: /integrations/fibaro/ +[fints docs]: /integrations/fints/ +[fixer docs]: /integrations/fixer/ +[fleetgo docs]: /integrations/fleetgo/ +[flexit docs]: /integrations/flexit/ +[flume docs]: /integrations/flume/ +[flunearyou docs]: /integrations/flunearyou/ +[folder_watcher docs]: /integrations/folder_watcher/ +[foobot docs]: /integrations/foobot/ +[fortigate docs]: /integrations/fortigate/ +[free_mobile docs]: /integrations/free_mobile/ +[freebox docs]: /integrations/freebox/ +[fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/ +[frontend docs]: /integrations/frontend/ +[gearbest docs]: /integrations/gearbest/ +[geizhals docs]: /integrations/geizhals/ +[generic_thermostat docs]: /integrations/generic_thermostat/ +[geo_json_events docs]: /integrations/geo_json_events/ +[geo_rss_events docs]: /integrations/geo_rss_events/ +[geonetnz_volcano docs]: /integrations/geonetnz_volcano/ +[gitter docs]: /integrations/gitter/ +[gogogate2 docs]: /integrations/gogogate2/ +[google_assistant docs]: /integrations/google_assistant/ +[gpmdp docs]: /integrations/gpmdp/ +[greeneye_monitor docs]: /integrations/greeneye_monitor/ +[gstreamer docs]: /integrations/gstreamer/ +[habitica docs]: /integrations/habitica/ +[hangouts docs]: /integrations/hangouts/ +[harmony docs]: /integrations/harmony/ +[hdmi_cec docs]: /integrations/hdmi_cec/ +[heatmiser docs]: /integrations/heatmiser/ +[here_travel_time docs]: /integrations/here_travel_time/ +[hikvision docs]: /integrations/hikvision/ +[hisense_aehw4a1 docs]: /integrations/hisense_aehw4a1/ +[history docs]: /integrations/history/ +[hlk_sw16 docs]: /integrations/hlk_sw16/ +[homeassistant docs]: /integrations/homeassistant/ +[homekit docs]: /integrations/homekit/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[homeworks docs]: /integrations/homeworks/ +[horizon docs]: /integrations/horizon/ +[html5 docs]: /integrations/html5/ +[http docs]: /integrations/http/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[hunterdouglas_powerview docs]: /integrations/hunterdouglas_powerview/ +[hydrawise docs]: /integrations/hydrawise/ +[ialarm docs]: /integrations/ialarm/ +[icloud docs]: /integrations/icloud/ +[idteck_prox docs]: /integrations/idteck_prox/ +[ifttt docs]: /integrations/ifttt/ +[iglo docs]: /integrations/iglo/ +[ihc docs]: /integrations/ihc/ +[input_datetime docs]: /integrations/input_datetime/ +[intent docs]: /integrations/intent/ +[intent_script docs]: /integrations/intent_script/ +[ios docs]: /integrations/ios/ +[iota docs]: /integrations/iota/ +[iperf3 docs]: /integrations/iperf3/ +[iqvia docs]: /integrations/iqvia/ +[irish_rail_transport docs]: /integrations/irish_rail_transport/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[joaoapps_join docs]: /integrations/joaoapps_join/ +[juicenet docs]: /integrations/juicenet/ +[keenetic_ndms2 docs]: /integrations/keenetic_ndms2/ +[kiwi docs]: /integrations/kiwi/ +[kwb docs]: /integrations/kwb/ +[lacrosse docs]: /integrations/lacrosse/ +[lametric docs]: /integrations/lametric/ +[launch_library docs]: /integrations/launch_library/ +[lg_netcast docs]: /integrations/lg_netcast/ +[lifx docs]: /integrations/lifx/ +[light docs]: /integrations/light/ +[lightwave docs]: /integrations/lightwave/ +[limitlessled docs]: /integrations/limitlessled/ +[litejet docs]: /integrations/litejet/ +[local_file docs]: /integrations/local_file/ +[logi_circle docs]: /integrations/logi_circle/ +[london_underground docs]: /integrations/london_underground/ +[luci docs]: /integrations/luci/ +[lupusec docs]: /integrations/lupusec/ +[lutron docs]: /integrations/lutron/ +[lutron_caseta docs]: /integrations/lutron_caseta/ +[lyft docs]: /integrations/lyft/ +[mailgun docs]: /integrations/mailgun/ +[matrix docs]: /integrations/matrix/ +[maxcube docs]: /integrations/maxcube/ +[media_extractor docs]: /integrations/media_extractor/ +[meteo_france docs]: /integrations/meteo_france/ +[meteoalarm docs]: /integrations/meteoalarm/ +[mfi docs]: /integrations/mfi/ +[mhz19 docs]: /integrations/mhz19/ +[microsoft docs]: /integrations/microsoft/ +[miflora docs]: /integrations/miflora/ +[mill docs]: /integrations/mill/ +[mitemp_bt docs]: /integrations/mitemp_bt/ +[mobile_app docs]: /integrations/mobile_app/ +[modbus docs]: /integrations/modbus/ +[modem_callerid docs]: /integrations/modem_callerid/ +[monoprice docs]: /integrations/monoprice/ +[moon docs]: /integrations/moon/ +[mqtt docs]: /integrations/mqtt/ +[mycroft docs]: /integrations/mycroft/ +[mysensors docs]: /integrations/mysensors/ +[mystrom docs]: /integrations/mystrom/ +[n26 docs]: /integrations/n26/ +[nad docs]: /integrations/nad/ +[nanoleaf docs]: /integrations/nanoleaf/ +[neato docs]: /integrations/neato/ +[nederlandse_spoorwegen docs]: /integrations/nederlandse_spoorwegen/ +[nello docs]: /integrations/nello/ +[netdata docs]: /integrations/netdata/ +[netgear_lte docs]: /integrations/netgear_lte/ +[netio docs]: /integrations/netio/ +[nilu docs]: /integrations/nilu/ +[nmap_tracker docs]: /integrations/nmap_tracker/ +[nmbs docs]: /integrations/nmbs/ +[noaa_tides docs]: /integrations/noaa_tides/ +[notion docs]: /integrations/notion/ +[nsw_rural_fire_service_feed docs]: /integrations/nsw_rural_fire_service_feed/ +[nuheat docs]: /integrations/nuheat/ +[nuimo_controller docs]: /integrations/nuimo_controller/ +[nut docs]: /integrations/nut/ +[nzbget docs]: /integrations/nzbget/ +[ombi docs]: /integrations/ombi/ +[onvif docs]: /integrations/onvif/ +[opencv docs]: /integrations/opencv/ +[opengarage docs]: /integrations/opengarage/ +[openhardwaremonitor docs]: /integrations/openhardwaremonitor/ +[openhome docs]: /integrations/openhome/ +[opensensemap docs]: /integrations/opensensemap/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openuv docs]: /integrations/openuv/ +[opple docs]: /integrations/opple/ +[orvibo docs]: /integrations/orvibo/ +[owntracks docs]: /integrations/owntracks/ +[panasonic_viera docs]: /integrations/panasonic_viera/ +[pencom docs]: /integrations/pencom/ +[philips_js docs]: /integrations/philips_js/ +[pilight docs]: /integrations/pilight/ +[plex docs]: /integrations/plex/ +[plum_lightpad docs]: /integrations/plum_lightpad/ +[point docs]: /integrations/point/ +[prezzibenzina docs]: /integrations/prezzibenzina/ +[prometheus docs]: /integrations/prometheus/ +[proxmoxve docs]: /integrations/proxmoxve/ +[ps4 docs]: /integrations/ps4/ +[pulseaudio_loopback docs]: /integrations/pulseaudio_loopback/ +[pushetta docs]: /integrations/pushetta/ +[python_script docs]: /integrations/python_script/ +[qbittorrent docs]: /integrations/qbittorrent/ +[qnap docs]: /integrations/qnap/ +[quantum_gateway docs]: /integrations/quantum_gateway/ +[qwikswitch docs]: /integrations/qwikswitch/ +[rachio docs]: /integrations/rachio/ +[radarr docs]: /integrations/radarr/ +[raincloud docs]: /integrations/raincloud/ +[rainmachine docs]: /integrations/rainmachine/ +[random docs]: /integrations/random/ +[raspyrfm docs]: /integrations/raspyrfm/ +[recorder docs]: /integrations/recorder/ +[recswitch docs]: /integrations/recswitch/ +[remote_rpi_gpio docs]: /integrations/remote_rpi_gpio/ +[rest docs]: /integrations/rest/ +[rest_command docs]: /integrations/rest_command/ +[rfxtrx docs]: /integrations/rfxtrx/ +[ring docs]: /integrations/ring/ +[ripple docs]: /integrations/ripple/ +[rocketchat docs]: /integrations/rocketchat/ +[roku docs]: /integrations/roku/ +[roomba docs]: /integrations/roomba/ +[route53 docs]: /integrations/route53/ +[rova docs]: /integrations/rova/ +[rpi_gpio_pwm docs]: /integrations/rpi_gpio_pwm/ +[rpi_rf docs]: /integrations/rpi_rf/ +[russound_rio docs]: /integrations/russound_rio/ +[russound_rnet docs]: /integrations/russound_rnet/ +[sabnzbd docs]: /integrations/sabnzbd/ +[saj docs]: /integrations/saj/ +[samsungtv docs]: /integrations/samsungtv/ +[satel_integra docs]: /integrations/satel_integra/ +[scsgate docs]: /integrations/scsgate/ +[season docs]: /integrations/season/ +[sense docs]: /integrations/sense/ +[sensehat docs]: /integrations/sensehat/ +[serial_pm docs]: /integrations/serial_pm/ +[seventeentrack docs]: /integrations/seventeentrack/ +[shodan docs]: /integrations/shodan/ +[shopping_list docs]: /integrations/shopping_list/ +[sht31 docs]: /integrations/sht31/ +[simplepush docs]: /integrations/simplepush/ +[simplisafe docs]: /integrations/simplisafe/ +[sinch docs]: /integrations/sinch/ +[sisyphus docs]: /integrations/sisyphus/ +[skybell docs]: /integrations/skybell/ +[smarty docs]: /integrations/smarty/ +[snips docs]: /integrations/snips/ +[sochain docs]: /integrations/sochain/ +[solaredge docs]: /integrations/solaredge/ +[somfy docs]: /integrations/somfy/ +[somfy_mylink docs]: /integrations/somfy_mylink/ +[sonarr docs]: /integrations/sonarr/ +[songpal docs]: /integrations/songpal/ +[soundtouch docs]: /integrations/soundtouch/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[spider docs]: /integrations/spider/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[starline docs]: /integrations/starline/ +[starlingbank docs]: /integrations/starlingbank/ +[stiebel_eltron docs]: /integrations/stiebel_eltron/ +[stream docs]: /integrations/stream/ +[streamlabswater docs]: /integrations/streamlabswater/ +[supla docs]: /integrations/supla/ +[swiss_hydrological_data docs]: /integrations/swiss_hydrological_data/ +[swiss_public_transport docs]: /integrations/swiss_public_transport/ +[switchbot docs]: /integrations/switchbot/ +[syncthru docs]: /integrations/syncthru/ +[synology docs]: /integrations/synology/ +[synologydsm docs]: /integrations/synologydsm/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tado docs]: /integrations/tado/ +[tahoma docs]: /integrations/tahoma/ +[tank_utility docs]: /integrations/tank_utility/ +[tapsaff docs]: /integrations/tapsaff/ +[tautulli docs]: /integrations/tautulli/ +[telegram_bot docs]: /integrations/telegram_bot/ +[temper docs]: /integrations/temper/ +[template docs]: /integrations/template/ +[tensorflow docs]: /integrations/tensorflow/ +[tesla docs]: /integrations/tesla/ +[thinkingcleaner docs]: /integrations/thinkingcleaner/ +[tibber docs]: /integrations/tibber/ +[todoist docs]: /integrations/todoist/ +[tof docs]: /integrations/tof/ +[touchline docs]: /integrations/touchline/ +[tplink docs]: /integrations/tplink/ +[traccar docs]: /integrations/traccar/ +[trackr docs]: /integrations/trackr/ +[tradfri docs]: /integrations/tradfri/ +[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/ +[transmission docs]: /integrations/transmission/ +[travisci docs]: /integrations/travisci/ +[trend docs]: /integrations/trend/ +[tts docs]: /integrations/tts/ +[tuya docs]: /integrations/tuya/ +[twilio_call docs]: /integrations/twilio_call/ +[ubee docs]: /integrations/ubee/ +[unifi docs]: /integrations/unifi/ +[unifi_direct docs]: /integrations/unifi_direct/ +[universal docs]: /integrations/universal/ +[upcloud docs]: /integrations/upcloud/ +[upnp docs]: /integrations/upnp/ +[uptimerobot docs]: /integrations/uptimerobot/ +[usgs_earthquakes_feed docs]: /integrations/usgs_earthquakes_feed/ +[uvc docs]: /integrations/uvc/ +[velux docs]: /integrations/velux/ +[verisure docs]: /integrations/verisure/ +[versasense docs]: /integrations/versasense/ +[version docs]: /integrations/version/ +[vicare docs]: /integrations/vicare/ +[vivotek docs]: /integrations/vivotek/ +[vizio docs]: /integrations/vizio/ +[volkszaehler docs]: /integrations/volkszaehler/ +[volvooncall docs]: /integrations/volvooncall/ +[vultr docs]: /integrations/vultr/ +[wake_on_lan docs]: /integrations/wake_on_lan/ +[watson_tts docs]: /integrations/watson_tts/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[webostv docs]: /integrations/webostv/ +[wemo docs]: /integrations/wemo/ +[wink docs]: /integrations/wink/ +[wirelesstag docs]: /integrations/wirelesstag/ +[wled docs]: /integrations/wled/ +[workday docs]: /integrations/workday/ +[xeoma docs]: /integrations/xeoma/ +[xfinity docs]: /integrations/xfinity/ +[xiaomi docs]: /integrations/xiaomi/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[xiaomi_tv docs]: /integrations/xiaomi_tv/ +[yale_smart_alarm docs]: /integrations/yale_smart_alarm/ +[yamaha docs]: /integrations/yamaha/ +[yi docs]: /integrations/yi/ +[zabbix docs]: /integrations/zabbix/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zhong_hong docs]: /integrations/zhong_hong/ +[ziggo_mediabox_xl docs]: /integrations/ziggo_mediabox_xl/ +[zoneminder docs]: /integrations/zoneminder/ +[zwave docs]: /integrations/zwave/ diff --git a/source/_posts/2019-12-17-hassos-release-3.markdown b/source/_posts/2019-12-17-hassos-release-3.markdown new file mode 100644 index 000000000000..2f11e06f058f --- /dev/null +++ b/source/_posts/2019-12-17-hassos-release-3.markdown @@ -0,0 +1,64 @@ +--- +title: "HassOS 3 released! Raspberry Pi 4 support" +description: "HassOS update: Raspberry Pi 4 now officially supported!" +date: 2019-12-17 00:00:00 +date_formatted: "December 17, 2019" +author: Pascal Vizeli +author_twitter: pvizeli +categories: Announcements +og_image: /images/blog/2019-12-hassos-release-3/blogpost.png +--- + +A bit behind the original timeline, but we happy to announce, we've released version 3 of Hass.io Operating System: HassOS. Just in time for Christmas! + +TL;DR; A quick summary of the changes: + +- Official RPi4 support +- Linux LT 4.19 +- Buildroot LT 2019 +- USB-boot capabilities for the RPi3 +- SMS integrations with USB/GSM modem +- Qemu Agent support +- Optimized kernel for virtual appliances +- Improved automatic disk expansion +- Initial foundation for offloading the data partition + +## Raspberry Pi + +We now officially support the Raspberry Pi 4 on this stable version of HassOS! The Raspberry Pi 4 is a great and powerful device to get you started on Hass.io and Home Assistant. + +[@rbray89](https://github.com/rbray89) worked hard on this release to add the very often requested USB boot support! Please note, this is currently limited to RPi3 devices. Carefully read how the USB boot [works](https://github.com/home-assistant/hassos/blob/rel-3/Documentation/boards/raspberrypi.md#usb-boot) and be aware of the limited [supported hardware](https://community.home-assistant.io/t/hass-io-transfer-from-sd-card-to-ssd-or-usb/97452/19). + +## Hypervisors / Running HassOS on a Virtual Machine + +The HassOS image for virtual appliances did get some useful updates as well. We have optimized the Linux kernel to support more virtual hardware. + +We have now included the QEMU Agent in HassOS. So if you are running on a Hypervisor that is QEMU based (e.g., Proxmox or Libvirt), you now have a lot more information in your Hypervisor control panel, proper shutdown support and improved support for backing up/snapshotting your virtual machine. + +Finally, the automated disk expansion got some updates. So if you need more disk space in your virtual appliance, add it in your Hypervisor and HassOS automatically pick it up at the next boot. + +We want to emphasize that running Hass.io as a virtual machine is the **only** supported method to run Hass.io on a virtualized system. We've lately seen some funky tutorials on how to run Hass.io inside a container like Docker or LXC, which we **DO NOT** recommend, you will end up having issues. + +## How to update to HassOS 3 + +If you are already running HassOS, you have the full flavor of Hass.io, and thus, all the comfort it has to offer, making this upgrade a breeze! + +To update via the user interface, go to the Home Assistant frontend, click on **Hass.io** in the sidebar to go into the Hass.io panel. Next, click on the System tab and press the **UPDATE** button in the "Host system" panel. In case the update isn't showing up yet, push the **RELOAD** button on the "Hass.io supervisor" box first, which makes your system look for updates instantly. + +Another option is to use our powerful CLI, that is shipped with the SSH add-on. Run the following command to trigger the upgrade: `hassio os update --version 3.7`. + +## Update 2019-12-18 + +After some confusion about the statement of supporting virtual environments and running Hass.io on top of a custom Linux; so let's clarify it. + +The supported ways to run Hass.io are documented here: + +This also includes running Hass.io on Linux using the [Generic Linux](https://github.com/home-assistant/hassio-installer) installer, which is a supported method. + +Hass.io runs partly on your local machine, but for most parts inside multiple containers. All installation types we list, respect this. + +If you run VMWare, ProxMox or other virtualization environments, you can use the HassOS OVA/VMDK to run a virtual machine with. Or, if you like to use a Ubuntu VM, that will work with the supported generic Linux installer. + +We **DO NOT** support any kind of LXC hacks like listed here: . These setups try to put everything inside a **single** container, [which will cause you issues](https://community.home-assistant.io/t/hassio-installation-on-lxd-lxc-container-ubuntu-18-04/151543/2). Hass.io is not designed to run fully inside a containerized system, like LXC. + +We hope this clarifies our earlier statement. diff --git a/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown b/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown new file mode 100644 index 000000000000..b11eda9fa9a5 --- /dev/null +++ b/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown @@ -0,0 +1,42 @@ +--- +layout: post +title: "Celebrate the holidays with open standards" +description: "A lot of news dropped around open standards. Time for a quick round up." +date: 2019-12-20 0:43:02 +date_formatted: "December 20, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Technology +--- + +It's been a busy week with a lot of announcements around IoT standards, so I thought I would do a quick round up of them, and how it might impact Home Assistant users. + +## New IoT standard announced + +As it's been a while, the industry has announced yet a new effort to create a new IoT standard called [Project Connected Home over IP](https://www.connectedhomeip.com/). I think that there are a few interesting bits to this standard: + +The standard will be royalty-free. This is big, as it means that it will be easy for companies to build products. Take, for example, Homekit, which is a great IP-based local standard. Homekit has strict licensing and royalties, which prevented it from widespread adoption. + +The new standard specification will be written in conjunction with building an open source implementation of the standard. Once it's all finished, we'll be able to integrate this implementation into Home Assistant. + +Finally, Apple, Google and Amazon are seriously involved, even contributing their own IoT standards to help bootstrap this specification. This significantly increases the odds of them also integrating it into their products. Since their products are everywhere, it means that more companies might incorporate the standard and it can get widespread adoption. + +But don't hold your breath. Developing a standard takes time. They aim for a draft to be released at the end of 2020. And that's just the specification. Not any of the devices built with it. If (and that's a big IF) everything works out, expect this standard to get into your home in 2022. + + + +## Z-Wave to become an open standard + +Silicon Labs and the Z-Wave Alliance have announced plans to [open up Z-Wave](https://news.silabs.com/2019-12-19-Silicon-Labs-and-Z-Wave-Alliance-Expand-Smart-Home-Ecosystem-by-Opening-Z-Wave-to-Silicon-and-Stack-Suppliers) in the second half of 2020. Among other things, this allows other companies to create Z-Wave radios, which could result in wider adoption and cheaper devices. + +## Open Source HomeKit Accessory Development Kit + +As part of the Connected Home over IP announcement, Apple has released an [open source version](https://github.com/apple/HomeKitADK) of their Accessory Development Kit (ADK). The ADK allows devices to be controlled by HomeKit controllers like Home Assistant (and ok, iOS devices). The spec was already open and Home Assistant implements it via the [Homekit integration](/integrations/homekit/). Opening up the ADK still helps because it gives a reference implementation to see how the spec should work. + +## Bonus: deCONZ hass.io add-on gets Ingress support + +It's not really related, but a little. deCONZ is Zigbee controller software that works with the Conbee Zigbee stick. It's a platinum Home Assistant integration and we've been working with [Phoscon](https://phoscon.de), the company behind deCONZ and Conbee, to add Ingress support to the Hass.io add-on. + + diff --git a/source/_posts/2020-01-15-release-104.markdown b/source/_posts/2020-01-15-release-104.markdown new file mode 100644 index 000000000000..d91968f4dda0 --- /dev/null +++ b/source/_posts/2020-01-15-release-104.markdown @@ -0,0 +1,2096 @@ +--- +layout: post +title: "0.104: Sentry, Signal Messenger, IntesisHome, Sure Petcare, KEF" +description: "Starting this new year with a packed release! Improved entity loading on startup and multi-select entities in Lovelace, ability to ignore a discovered device." +date: 2020-01-15 00:00:00 +date_formatted: "January 15, 2020" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: Release-Notes +og_image: /images/blog/2020-01-0.104/components.png +--- + + + +The first release of the new decade! Happy New Year! + +We are starting this new year with a packed release! So let us dive in! + +- [Improved entity handling on startup](/blog/2020/01/15/release-104/#improved-entity-handling-on-startup) +- [Ignore discovered devices & services](/blog/2020/01/15/release-104/#ignore-discovered-devices--services) +- [Reload all the input things & bye generated groups](/blog/2020/01/15/release-104/#reload-all-the-input-things--bye-generated-groups) +- [Add a device to Lovelace](/blog/2020/01/15/release-104/#add-a-device-to-lovelace) +- [Multi-select entity management](/blog/2020/01/15/release-104/#multi-select-entity-management) +- [ZHA configuration panel improvements](/blog/2020/01/15/release-104/#zha-configuration-panel-improvements) +- [Removing your Lovelace configuration](/blog/2020/01/15/release-104/#removing-your-lovelace-configuration) +- [In other news](/blog/2020/01/15/release-104/#in-other-news) +- [New Integrations](/blog/2020/01/15/release-104/#new-integrations) +- [New Platforms](/blog/2020/01/15/release-104/#new-platforms) +- [Breaking Changes](/blog/2020/01/15/release-104/#breaking-changes) +- [Beta Fixes](/blog/2020/01/15/release-104/#beta-fixes) +- [All changes](/blog/2020/01/15/release-104/#all-changes) + +## Improved entity handling on startup + +We are now restoring all entities, stored in the registry, +on Home Assistant startup. + +During the startup of Home Assistant, all your configured integrations are +loaded. Each of those integrations results in one or more devices +and entities. However, there was a catch! + +The loading of some integrations could take a while, which caused some entities +not to be available immediately. Sometimes, this affected multiple things, like +missing devices in HomeKit/Google/Alexa or those big red boxes in our Lovelace +UI. We are sure, at some point, we've all experienced that. + +As of this release, all these entities, if registered in our entity registry, +will be restored as "unavailable". That allows other parts of our system to use +them immediately, solving a lot of common issues during startup. + +These restored entities can be differentiated from normal "unavailable" entities +by an additional state attribute added to those entities: "restored". + +

    +Screenshot of a removing an unavailable entity +Screenshot of a removing an unavailable entity. +

    + +As a result, entities will no longer "disappear", so restored and unavailable +entities are removable, as shown in the screenshot above. Please note that, +if an integration provides an unavailable entity, the providing integration +needs to be removed first, or else, those entities can not be deleted. + +## Ignore discovered devices & services + +Got that one device that gets discovered over and over again? + +It is now possible to ignore a specific discovered device with a single click! + +

    +Screenshot of a discovered Hue bridge +Screenshot of a discovered Hue bridge. +

    + +It requires the integration to be updated to support this. For this release, +the Hue, Axis, deCONZ, WLED and HomeKit integrations are updated to support +this new feature. + +## Reload all the input things & bye generated groups + +All [`input_*` integrations](/integrations/#search/input) now have a `reload` +service to reload your YAML configuration for these integrations, without +the need to restart Home Assistant. + +Furthermore, time to say bye-bye, to all generated entity groups +(`group.all_*`). Chances are, you have never heard of those because they were +hidden. However, if you rely on those groups for your automations, you +need to adjust those automations. +Check out the [breaking changes section](#breaking-changes) for more information. + +## Add a device to Lovelace + +We added a button to the device page to add all entities of a device to Lovelace +in a blip! Home Assistant suggests cards based on the type of entities the +device provides so that you can add them to a view of your choice instantly. + +If you are using Lovelace in YAML mode, you still can use this new feature. The +generated YAML can be copied and pasted into your configuration file. + +

    +Screenshot of a card suggestion for a light device +Screenshot of a card suggestion for a light device. +

    + +This same functionality is also added to the unused entities page of Lovelace. + +## Multi-select entity management + +Entity management has never been easier; It now allows for changing multiple +entities at once. Select multiple entities and remove, enable or disable them +with one click. + +

    +Screenshot of the entities configuration page with multi selection +Screenshot of the entities configuration page with multi selection. +

    + +## ZHA configuration panel improvements + +[@dmulcahey][@dmulcahey] did a lot of work on the ZHA config panel this release. + +The navigation for the ZHA configuration panel has been redesigned to provide +a better user experience on mobile and desktop. + +As part of the redesign, full Zigbee group management has been added, allowing +you to create and manage Zigbee groups right from the UI. + +

    +Screenshot of the ZHA configuration panel +Screenshot of the ZHA configuration panel. +

    + +In a future releases, the ability to bind devices directly to groups, +will be added as well. + +## Removing your Lovelace configuration + +Want to start your Lovelace configuration from scratch? Or go back to the +automatically generated Lovelace interface? + +Now you can by clearing the Lovelace configuration in the raw configuration +editor and saving it. + +

    +Screenshot of the remove Lovelace confirmation dialog +Screenshot of the remove Lovelace confirmation dialog. +

    + +## In other news + +### Meanwhile, HassOS 3.8 got released! + + + +Besides the release of HassOS 3.8, the first beta version of HassOS 4.0 is +now available as well. This beta release adds support for +[Hardkernel's ODROID-N2](https://www.hardkernel.com/shop/odroid-n2-with-4gbyte-ram/)! + +The [ODROID-N2](https://www.hardkernel.com/shop/odroid-n2-with-4gbyte-ram/) +is a great and powerful alternative for the Raspberry Pi. + +### Custom now playing poster Lovelace card + +Brad Crc made this [impressive demo](https://www.reddit.com/r/homeassistant/comments/e7wo0j/floor_plan_how_to_show_currently_playing_media/) +of setting up a custom now playing poster card in Lovelace floor plans. +This allows you to show currently playing media in your floor plan! + +
    + +
    + +### Bas showing his Lovelace theme on his setup + +Bas Nijholt kept seeing his own theme popping up on Reddit, so he decided it was +time for him to show off his Lovelace dashboard, featuring this lovely theme. + +
    I keep seeing my own theme on Reddit, so now it's my turn! [OC] from r/homeassistant
    + + +His theme is [publicly available on GitHub](https://github.com/basnijholt/lovelace-ios-dark-mode-theme/) and so is [his config](https://github.com/basnijholt/home-assistant-config). + +## New Integrations + +- Add Elgato Key Light integration ([@frenck] - [#29592]) ([elgato docs]) (new-integration) +- Add IntesisHome Climate Platform ([@jnimmo] - [#25364]) ([intesishome docs]) (new-integration) +- Add Signal Messenger integration ([@bbernhard] - [#28537]) ([signalmessenger docs]) (new-integration) +- Revert Tahoma removal ([@balloob] - [#29840]) ([tahoma docs]) (new-integration) +- Add GIOS integration ([@bieniu] - [#28719]) ([gios docs]) (new-integration) +- Add local_ip component ([@issacg] - [#29973]) ([localip docs]) (new-integration) +- Add KEF speakers integration ([@basnijholt] - [#28959]) ([kef docs]) (new-integration) +- Add Sentry component ([@dcramer] - [#30422]) ([sentry docs]) (new-integration) +- Add surepetcare component ([@benleb] - [#24426]) ([surepetcare docs]) (new-integration) +- Add Brother Printer integration ([@bieniu] - [#30359]) ([brother docs]) (new-integration) +- Add TMB sensor ([@alemuro] - [#27964]) ([tmb docs]) (new-integration) +- Add Stookalert integration ([@fwestenberg] - [#30306]) ([stookalert docs]) (new-integration) + +## New Platforms + +- Add battery sensor to iCloud ([@Quentame] - [#29818]) ([icloud docs]) (new-platform) +- Add light support to Velbus integration ([@brefra] - [#30323]) ([velbus docs]) (new-platform) +- Add support for v1 and v2 HomeKit fans. ([@Jc2k] - [#30503]) ([homekit_controller docs]) (new-platform) +- Add support for homekit air quality sensors ([@Jc2k] - [#30510]) ([homekit_controller docs]) (new-platform) +- Add pilight dimmer as light component ([@Trekky12] - [#30107]) ([pilight docs]) (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). + +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, that is helping us a lot! + + + +## Breaking Changes + +- __Default groups__ - Entity integrations will no longer automatically maintain the hidden groups with all of their entities. The following groups are no longer automatically created and maintained: + + - `group.all_automations` + - `group.all_covers` + - `group.all_devices` + - `group.all_fans` + - `group.all_lights` + - `group.all_locks` + - `group.all_plants` + - `group.all_remotes` + - `group.all_scripts` + - `group.all_switches` + - `group.all_vacuum_cleaners` + - `group.calendar` + - `group.remember_the_milk_accounts` + + The automation and script configuration panels are updated to show and manage all automations/scripts. If you want to show cards in your Lovelace UI with all entities for a single domain, use the auto-entities card. If you want to target all entities in a service call, use `all` as value for `entity_id`. + + ([@balloob] - [#23789]) ([automation docs]) ([calendar docs]) ([cover docs]) ([device_tracker docs]) ([fan docs]) ([light docs]) ([lock docs]) ([plant docs]) ([remember_the_milk docs]) ([remote docs]) ([script docs]) ([switch docs]) ([vacuum docs]). + +- __Hue__ - Hue will no longer import existing authentication from disk. It has not written this authentication to disk since March 2018. The config option has been deprecated and will be removed in 0.106. ([@balloob] - [#30000]) ([hue docs]) + +- __deCONZ__ - Due to changes to configuration handling, deCONZ groups will be assigned new identifiers in Home Assistant. As a result, deCONZ groups will be duplicated. Remove any group devices from the registry prior to upgrading or alternatively delete the obsolete entries after the upgrade to eliminate the duplicates. ([#30875]) ([deconz docs]) + +- __UPnP__ - UPnP/IGD units of measurement have been aligned with other integrations and common uses, they're now kB and kB/s instead of kbyte and kbyte/sec respectively. - ([@scop] - [#29552]) ([upnp docs]) + +- __Worx Landroid__ - The `worxlandroid` sensor has been changed to not return the hardcoded state values `manual-stop`, `charging`, `charging-complete`, `going-home`, `mowing`, instead use the states given from the Landroid to Home Assistant. + + This includes the state `idle`, which means that something is broken with the mower. You can use this as a notification to check the physical state of the mower. + + You need to update any automations that depend on the state of the sensor. + + ([@geraldhansen] - [#27453]) ([worxlandroid docs]) + +- __Apple iCloud__ - The iCloud component is no longer part of the device tracker platform and is now an integration, which is configurable via the UI. The iCloud cookie folder moved from `[HA_dir]/icloud` to `[HA_dir]/.storage/icloud`.- ([@Quentame] - [#28968]) ([icloud docs]) + +- __Pi-hole__ - The default value for `host` is removed, and now must be specified manually. - ([@johnluetke] - [#27569]) ([pi_hole docs]) + + Example configuration: + + ```yaml + pi_hole: + - host: pi.hole + ssl: false + - host: backup.pi.hole + ``` + +- __HERE Travel Time__ - HERE has deprecated the usage of `app_code` and new users can only generate an `api_key`. If you are already using HERE Travel Time, you have to follow the [migration guide](https://developer.here.com/documentation/authentication/dev_guide/topics/api-key-credentials.html) to retrieve the, now required, `api_key`. - ([@eifinger] - [#29966]) ([here_travel_time docs]) + + Example configuration: + + ```yaml + sensor: + - platform: here_travel_time + api_key: "YOUR_API_KEY" + origin_latitude: "51.222975" + origin_longitude: "9.267577" + destination_latitude: "51.257430" + destination_longitude: "9.335892" + ``` + +- __ZHA__ - The default divisor for `active_power` has changed. Now, multiplier and divisor both default to 1 if the device does not support these attributes or when getting those attributes from the device fails. - ([@Adminiuga] - [#30130]) ([zha docs]) + +- __Keba__ - The unique_ids of the entities have changed and are now more future proof. The default `name` and `entity_id` of the entities have also changed. You need to clear stale entries from the entity registry and update concerned automations and scripts. - ([@dannerph] - [#30125]) ([keba docs]) + +- __Tesla__ - Config flow has been added for Tesla. Device tracker entity names have changed due to this. They now follow the naming convention of the rest of the Tesla entities. The `id` device tracker entity attribute was also removed because it is a duplicate of `trackr_id`. - ([@alandtse] - [#28744]) ([tesla docs]) +- __Huawei LTE__ - The Huawei LTE notify service name is now configurable. The default name for the Huawei LTE notify service has changed to `notify.huawei_lte` to avoid conflicts with other notify services. An option to provide a name for the service has also been added. - ([@scop] - [#30208]) ([huawei_lte docs]) + + Example configuration: + + ```yaml + huawei_lte: + - url: ... + password: ... + notify: + name: sms + ``` + +- __Amcrest__ *(Removed)* - Amcrest sensors and switches that were deprecated in previous releases have now been removed. - ([@pnbruckner] - [#30308]) ([amcrest docs]) + + Example configuration: + + ```yaml + amcrest: + - ... + sensors: + # This sensor type is no longer supported and must be removed. + - motion_detector + # All switch types are no longer supported and must be removed. + switches: + - motion_detection + - motion_recording + ``` + +- __MQTT__ - Added separate command and state topics for the MQTT lock. Two new properties are introduced with `state_locked` (default: LOCKED) and `state_unlocked` (default: UNLOCKED). If you are using the same topic as `state_topic` as for the `command_topic` you can reestablish the old behavior by setting `state_locked` to *LOCK* and `state_unlocked` to *UNLOCK*. Effectively, this change allows you to distinguish commands and states in two topics with different values. - ([@tuxbox] - [#29808]) ([mqtt docs]) + + Example configuration: + + ```yaml + lock: + - platform: mqtt + command_topic: "/dev/ha/lock/cmd" + state_topic: "/dev/ha/lock/state" + value_template: "{{ value_json.state }}" + state_locked: "locked" + state_unlocked: "unlocked" + ``` + +- __LG webOS Smart TV__ - The component setup now uses the `webostv` domain instead of `media_player`. The host configuration option is now required and the timeout and filename options have been removed. The state handling for webOStv has also been cleaned up. An entity will have `on` when the tv is on instead of `playing` or `paused` as was previously the case. You need to update automations that depend on the entity state. - ([@bendavid] - [#29296] [#30416]) ([webostv docs]) + + Example configuration: + + ```yaml + webostv: + name: LG TV + host: 192.168.1.53 + #other settings + turn_on_action: + service: wake_on_lan.send_magic_packet + data: + mac: "00:00:00:00:00:00" + standby_connection: true + ``` + +- __Axis__ - Axis integration will no longer accept manual configuration of devices, all configuration of the Axis integration will now be handled from the integrations panel. - ([@Kane610] - [#30365]) ([axis docs]) + + TL;DR This will no longer work: + + ```yaml + axis: + ``` + +- __WLED__ - Improved WLED pure white support for RGBW LED strips. When using WLED with RGBW strips, setting the color in Home Assistant to white, will turn off the RGB LEDs of the strip and use the W channel only. - ([@frenck] - [#30477]) ([wled docs]) + +- __Timer__ - Fire restarted event on restarting an active timer. This can break automations that should trigger on every timer start event. - ([@mnigbur] - [#30475]) ([timer docs]) + +- __Vizio__ - Removed `suppress_warning` from configuration options for Vizio integration. The `pyvizio` package now suppresses insecure HTTPS request warnings in a way that doesn't affect global requests from other integrations or Home Assistant itself. There is no need to globally suppress insecure warnings now. - ([@raman325] - [#30536]) ([vizio docs]) + + Example configuration: + + ```yaml + media_player: + - platform: vizio + host: ':' + access_token: '' + device_class: tv + ``` + +- __RFXtrx__ - Bump pyRFXtrx to 0.25. This update switches the commands for `open` and `close` for RFXtrx covers of the "Rollertrol" type, as they were switched (clicking open resulted in closing of the cover and vice versa). Existing automations should be updated. - ([@Ernst79] - [#30566]) ([rfxtrx docs]) + +- __Ring__ - Ring is now configurable via a config entry. This means it will no longer store the username and password and you're able to configure accounts that use 2FA. It's no longer possible to set scan interval, monitored conditions or FFmpeg arguments. The defaults are used. - ([@balloob] - [#30564]) ([ring docs]) + +- __Binary Sensor (Locks)__ - Updated ON/OFF condition and triggers to match the documentation and UI. This change inverts the logic of automations relating to binary sensor with the `lock` device class, but only for automations triggering on the lock state (rather than triggering a lock/unlock action). + + If you already created automations, you will need to check those, as they probably need to be inverted. The text displayed in the trigger or condition dropdowns in Lovelace will now be correct. + + One possible scenario is if you have set an automation using the state of one lock to trigger an action on other lock(s). This change would cause the action to trigger on `locking` if it was previously triggering on `unlocking`. - ([@davet2001] - [#30663]) ([binary_sensor docs]) + +- __Google Assistant__ - The `api_key` for manual installs is now deprecated and will be removed in 0.105. To correct this you will need to remove `api_key` from the `configuration.yaml` and switch to using `service_account` instead. - ([@elupus] - [#30402]) ([google_assistant docs]) + +## Beta Fixes + +- Fix upnp raw sensor state formatting when None ([@pnbruckner] - [#30444]) ([upnp docs]) (beta fix) +- Implement capability attributes ([@balloob] - [#30545]) ([fan docs]) ([media_player docs]) ([vacuum docs]) ([water_heater docs]) (beta fix) +- Add Ring config flow ([@balloob] - [#30564]) ([ring docs]) (breaking change) (beta fix) +- Fix problem with restoring POE control ([@Kane610] - [#30597]) ([unifi docs]) (beta fix) +- Set body size for Proxy / streams to 16mb ([@pvizeli] - [#30608]) ([http docs]) (beta fix) +- Bump Adafruit_BBIO to 1.1.1 ([@springstan] - [#30630]) ([bbb_gpio docs]) (beta fix) +- Do not save last_seen if older than prev_seen ([@pnbruckner] - [#30647]) ([life360 docs]) (beta fix) +- Fix HomeKit with entity registry restoration where supported_features is a non-None falsey ([@Jc2k] - [#30657]) ([homekit docs]) (beta fix) +- Fix ZHA temperature sensor restoration ([@Adminiuga] - [#30661]) ([zha docs]) (beta fix) +- Update ON/OFF condition and triggers to match documentation and UI, issue #30462 ([@davet2001] - [#30663]) ([binary_sensor docs]) (breaking change) (beta fix) +- Upgrade Ring to new version ([@balloob] - [#30666]) ([ring docs]) (beta fix) +- Fix Error with HomematicIP Cloud Cover ([@SukramJ] - [#30667]) ([homematicip_cloud docs]) (beta fix) +- Ring OTP improvement ([@balloob] - [#30688]) ([ring docs]) (beta fix) +- Log error when integration is missing platform setup ([@balloob] - [#30690]) (beta fix) +- Fix update person validation ([@balloob] - [#30691]) ([person docs]) (beta fix) +- Fix discovery for oauth2 flow implementations ([@frenck] - [#30700]) (beta fix) +- Revert "Forget auth token when going offline so we can reconnect (#26630)" ([@pnbruckner] - [#30705]) ([amcrest docs]) (beta fix) +- Fix Ring wifi sensors ([@balloob] - [#30735]) ([ring docs]) (beta fix) +- update aiopylgtv to 0.2.5 ([@bendavid] - [#30702]) ([webostv docs]) (beta fix) +- update aiopylgtv to 0.2.6 ([@bendavid] - [#30739]) ([webostv docs]) (beta fix) +- Bump ZHA quirks to 0.0.31 ([@dmulcahey] - [#30740]) ([zha docs]) (beta fix) +- Update Ring to 0.6.0 ([@balloob] - [#30748]) ([ring docs]) (beta fix) +- Set default locale for cloud Alexa config ([@balloob] - [#30749]) ([alexa docs]) ([cloud docs]) (beta fix) +- Bump teslajsonpy to 0.2.3 ([@alandtse] - [#30750]) ([tesla docs]) (beta fix) +- Update pyhomematic to 0.1.63 ([@danielperna84] - [#30594]) ([homematic docs]) (beta fix) +- Refactor HomeMatic / Fix issue with 0.104/dev ([@pvizeli] - [#30752]) ([homematic docs]) (beta fix) +- bump aiokef to 0.2.5 which uses locks ([@basnijholt] - [#30753]) ([kef docs]) (beta fix) +- Fix HomeKit behavior with lights supporting color and temperature ([@frenck] - [#30756]) ([homekit docs]) (beta fix) +- Revert #29701 ([@pvizeli] - [#30766]) ([zwave docs]) (beta fix) +- Refactor Ring data handling ([@balloob] - [#30777]) ([ring docs]) (beta fix) +- Restore unit_of_measurement from entity registry ([@Jc2k] - [#30780]) (beta fix) + +## Release 0.104.1 - January 16 + +- 0.104.0 ([@frenck] - [#30803]) +- Update emulated_roku to 0.1.9 ([@jdeluyck] - [#30791]) ([emulated_roku docs]) +- update to aiopylgtv 0.2.7 ([@bendavid] - [#30797]) ([webostv docs]) +- Fix setup error of Mikrotik ([@springstan] - [#30810]) ([mikrotik docs]) +- Handle no host info in ignored config entries ([@balloob] - [#30822]) ([hue docs]) +- Fix mpd time issue ([@pvizeli] - [#30825]) ([mpd docs]) +- Fix play_media in webostv ([@bendavid] - [#30828]) ([webostv docs]) +- Fix iCloud when no family members (issue #30829) ([@Quentame] - [#30836]) ([icloud docs]) +- Reinstate and deprecate filename option for hue config ([@balloob] - [#30846]) ([hue docs]) +- Fixes issue about messages not being reset after sending it to microsoft teams. ([@peroyvind] - [#30849]) ([msteams docs]) +- Fix sensor type creation with multiple Ambient weather stations ([@bachya] - [#30850]) ([ambient_station docs]) + +[#30791]: https://github.com/home-assistant/home-assistant/pull/30791 +[#30797]: https://github.com/home-assistant/home-assistant/pull/30797 +[#30803]: https://github.com/home-assistant/home-assistant/pull/30803 +[#30810]: https://github.com/home-assistant/home-assistant/pull/30810 +[#30822]: https://github.com/home-assistant/home-assistant/pull/30822 +[#30825]: https://github.com/home-assistant/home-assistant/pull/30825 +[#30828]: https://github.com/home-assistant/home-assistant/pull/30828 +[#30836]: https://github.com/home-assistant/home-assistant/pull/30836 +[#30846]: https://github.com/home-assistant/home-assistant/pull/30846 +[#30849]: https://github.com/home-assistant/home-assistant/pull/30849 +[#30850]: https://github.com/home-assistant/home-assistant/pull/30850 +[@Quentame]: https://github.com/Quentame +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bendavid]: https://github.com/bendavid +[@frenck]: https://github.com/frenck +[@jdeluyck]: https://github.com/jdeluyck +[@peroyvind]: https://github.com/peroyvind +[@pvizeli]: https://github.com/pvizeli +[@springstan]: https://github.com/springstan +[ambient_station docs]: /integrations/ambient_station/ +[emulated_roku docs]: /integrations/emulated_roku/ +[hue docs]: /integrations/hue/ +[icloud docs]: /integrations/icloud/ +[mikrotik docs]: /integrations/mikrotik/ +[mpd docs]: /integrations/mpd/ +[msteams docs]: /integrations/msteams/ +[webostv docs]: /integrations/webostv/ + +## Release 0.104.2 - January 17 + +- 0.104.0 ([@frenck] - [#30803]) +- add multistate back ([@dmulcahey] - [#30889]) ([zha docs]) +- Fix missing switch groups of HomematicIP Cloud ([@SukramJ] - [#30903]) ([homematicip_cloud docs]) +- Fix issue with group unique id when normalising bridge id ([@Kane610] - [#30904]) ([deconz docs]) +- Fix Alexa semantics for covers with tilt support. ([@ochlocracy] - [#30911]) ([alexa docs]) +- camera endpoint likes to timeout, catch it. ([@balloob] - [#30919]) ([ring docs]) +- Fix service device refresh calling state update ([@Kane610] - [#30920]) ([deconz docs]) +- Updated frontend to 20200108.2 ([@bramkragten] - [#30921]) ([frontend docs]) +- Fix hue accepting filename ([@balloob] - [#30924]) ([hue docs]) + +[#30803]: https://github.com/home-assistant/home-assistant/pull/30803 +[#30889]: https://github.com/home-assistant/home-assistant/pull/30889 +[#30903]: https://github.com/home-assistant/home-assistant/pull/30903 +[#30904]: https://github.com/home-assistant/home-assistant/pull/30904 +[#30911]: https://github.com/home-assistant/home-assistant/pull/30911 +[#30919]: https://github.com/home-assistant/home-assistant/pull/30919 +[#30920]: https://github.com/home-assistant/home-assistant/pull/30920 +[#30921]: https://github.com/home-assistant/home-assistant/pull/30921 +[#30924]: https://github.com/home-assistant/home-assistant/pull/30924 +[@Kane610]: https://github.com/Kane610 +[@SukramJ]: https://github.com/SukramJ +[@balloob]: https://github.com/balloob +[@bramkragten]: https://github.com/bramkragten +[@dmulcahey]: https://github.com/dmulcahey +[@frenck]: https://github.com/frenck +[@ochlocracy]: https://github.com/ochlocracy +[alexa docs]: /integrations/alexa/ +[deconz docs]: /integrations/deconz/ +[frontend docs]: /integrations/frontend/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[hue docs]: /integrations/hue/ +[ring docs]: /integrations/ring/ +[zha docs]: /integrations/zha/ + +## Release 0.104.3 - January 21 + +- Catch all Ring timeout errors ([@balloob] - [#30960]) ([ring docs]) +- Update emulated_roku to 0.2.0 ([@jdeluyck] - [#30974]) ([emulated_roku docs]) +- Ring camera fix ([@steve-gombos] - [#30975]) ([ring docs]) +- Fix capability_attributes when supported_features is None ([@JeffLIrion] - [#30993]) ([water_heater docs]) +- Fix deCONZ update entry from Hassio discovery ([@frenck] - [#31015]) ([deconz docs]) + +[#30960]: https://github.com/home-assistant/home-assistant/pull/30960 +[#30974]: https://github.com/home-assistant/home-assistant/pull/30974 +[#30975]: https://github.com/home-assistant/home-assistant/pull/30975 +[#30993]: https://github.com/home-assistant/home-assistant/pull/30993 +[#31015]: https://github.com/home-assistant/home-assistant/pull/31015 +[@JeffLIrion]: https://github.com/JeffLIrion +[@balloob]: https://github.com/balloob +[@frenck]: https://github.com/frenck +[@jdeluyck]: https://github.com/jdeluyck +[@steve-gombos]: https://github.com/steve-gombos +[deconz docs]: /integrations/deconz/ +[emulated_roku docs]: /integrations/emulated_roku/ +[ring docs]: /integrations/ring/ +[water_heater docs]: /integrations/water_heater/ + +## All changes + +- Move imports to top for decora_wifi ([@springstan] - [#29439]) ([decora_wifi docs]) +- Make hassfest stricter ([@balloob] - [#29494]) +- Move imports to top for ambient_station ([@springstan] - [#29497]) ([ambient_station docs]) +- Move imports to top for google_pubsub ([@springstan] - [#29498]) ([google_pubsub docs]) +- Move imports to top for hue ([@springstan] - [#29501]) ([hue docs]) +- Move imports to top for google_translate ([@springstan] - [#29499]) ([google_translate docs]) +- Move imports to top for http ([@springstan] - [#29500]) ([http docs]) +- Move imports to top for system_log ([@springstan] - [#29465]) ([system_log docs]) +- Move imports to top for group ([@springstan] - [#29485]) ([group docs]) +- Move imports to top for frontend ([@springstan] - [#29487]) ([frontend docs]) +- Move imports to top for ipma ([@springstan] - [#29507]) ([ipma docs]) +- Move imports to top for mediaroom ([@springstan] - [#29509]) ([mediaroom docs]) +- Move imports to top for islamic_prayer_times ([@springstan] - [#29506]) ([islamic_prayer_times docs]) +- Move imports to top for mobile_app ([@springstan] - [#29511]) ([mobile_app docs]) +- Move imports to top for meteoalarm ([@springstan] - [#29510]) ([meteoalarm docs]) +- Move imports to top for statistics ([@springstan] - [#29223]) ([statistics docs]) +- Move imports to top for monoprice ([@springstan] - [#29516]) ([monoprice docs]) +- Move imports to top for mysensors ([@springstan] - [#29517]) ([mysensors docs]) +- Move imports to top for ign_sismologia ([@springstan] - [#29523]) ([ign_sismologia docs]) +- Move imports to top for nextbus ([@springstan] - [#29520]) ([nextbus docs]) +- Move imports to top for switcher_kis ([@springstan] - [#29530]) ([switcher_kis docs]) +- Add full state view for emulated_hue (apps using emulated_hue, 'sleep cycle' and 'sleep as android') ([@orrpan] - [#26650]) ([emulated_hue docs]) +- Move imports to top for mochad ([@springstan] - [#29514]) ([mochad docs]) +- Add input_boolean reload service ([@Adminiuga] - [#29379]) ([input_boolean docs]) +- Move imports to top for izone ([@springstan] - [#29508]) ([izone docs]) +- Move imports to top for modbus ([@springstan] - [#29515]) ([modbus docs]) +- Bump pytest to 5.3.1 ([@frenck] - [#29535]) +- Move imports to top for nx584 ([@springstan] - [#29537]) ([nx584 docs]) +- Move imports to top for pjlink ([@springstan] - [#29540]) ([pjlink docs]) +- Move imports to top for smhi ([@springstan] - [#29545]) ([smhi docs]) +- Move imports to top for sleepiq ([@springstan] - [#29544]) ([sleepiq docs]) +- Move imports to top for toon ([@springstan] - [#29553]) ([toon docs]) +- Move imports to top for influxdb ([@springstan] - [#29513]) ([influxdb docs]) +- Move imports to top for heatmiser ([@springstan] - [#29562]) ([heatmiser docs]) +- Move imports to top for plant ([@springstan] - [#29543]) ([plant docs]) +- Move imports to top for spc ([@springstan] - [#29547]) ([spc docs]) +- Bump lightwave to 0.17 ([@shortbloke] - [#29566]) ([lightwave docs]) +- Add service to set netatmo home heating schedule ([@1v0dev] - [#29244]) ([netatmo docs]) +- Move imports to top for homematic ([@springstan] - [#29558]) ([homematic docs]) +- Use "kB" and "s" as UPnP/IGD units ([@scop] - [#29552]) ([upnp docs]) (breaking change) +- Upgrade certifi to >=2019.11.28 ([@fabaff] - [#29571]) +- Move imports to top for notion ([@springstan] - [#29539]) ([notion docs]) +- Move imports to top for soundtouch ([@springstan] - [#29546]) ([soundtouch docs]) +- Treat BaseException as over-general ([@scop] - [#29573]) ([whois docs]) +- Move imports to top for zha ([@springstan] - [#29555]) ([zha docs]) +- Move imports to top for openuv ([@springstan] - [#29541]) ([openuv docs]) +- Move imports to top for onboarding ([@springstan] - [#29542]) ([onboarding docs]) +- Update Travis dist to bionic ([@scop] - [#29575]) +- Upgrade pyyaml to 5.2.0 ([@fabaff] - [#29586]) +- Add service to reboot the Freebox ([@SNoof85] - [#29525]) ([freebox docs]) +- Improve Tahoma Velux support ([@butako] - [#27920]) ([tahoma docs]) +- Register automation.reload service as an admin service. ([@Adminiuga] - [#29582]) ([automation docs]) +- Add input_datetime reload service. ([@Adminiuga] - [#29581]) ([input_datetime docs]) +- Add input_number.reload admin service. ([@Adminiuga] - [#29584]) ([input_number docs]) +- change icon for partly-cloudy-night ([@Mariusthvdb] - [#29601]) ([darksky docs]) +- Add additional Magic Cube Model ([@SukramJ] - [#29598]) ([deconz docs]) +- Add Elgato Key Light integration ([@frenck] - [#29592]) ([elgato docs]) (new-integration) +- Move imports to top for google_assistant ([@springstan] - [#29561]) ([google_assistant docs]) +- Move imports to top for tellduslive ([@springstan] - [#29550]) ([tellduslive docs]) +- Move imports to top for stream ([@springstan] - [#29548]) ([stream docs]) +- Add quarterly cycle for utility_meter component ([@aamcrae] - [#29534]) ([utility_meter docs]) +- bump freebox api version ([@SNoof85] - [#29527]) ([freebox docs]) +- Move imports to top for websocket_api ([@springstan] - [#29556]) ([websocket_api docs]) +- Move imports to top for fido ([@springstan] - [#29557]) ([fido docs]) +- Add Huawei LTE reboot and clear traffic statistics services ([@scop] - [#29594]) ([huawei_lte docs]) +- sort imports according to PEP8 for airly ([@basnijholt] - [#29615]) ([airly docs]) +- sort imports according to PEP8 for alarm_control_panel ([@basnijholt] - [#29616]) ([alarm_control_panel docs]) +- sort imports according to PEP8 for air_quality ([@basnijholt] - [#29614]) ([air_quality docs]) +- sort imports according to PEP8 for ads ([@basnijholt] - [#29613]) ([ads docs]) +- sort imports according to PEP8 for abode ([@basnijholt] - [#29610]) ([abode docs]) +- sort imports according to PEP8 for actiontec ([@basnijholt] - [#29612]) ([actiontec docs]) +- sort imports according to PEP8 for acer_projector ([@basnijholt] - [#29611]) ([acer_projector docs]) +- sort imports according to PEP8 for components ([@basnijholt] - [#29609]) +- sort imports according to PEP8 for yweather ([@basnijholt] - [#29608]) +- Upgrade keyring to 19.3.0 and keyrings.alt to 3.2.0 ([@fabaff] - [#29607]) +- sort imports according to PEP8 for auth ([@basnijholt] - [#29619]) ([auth docs]) +- sort imports according to PEP8 for alexa ([@basnijholt] - [#29618]) ([alexa docs]) +- sort imports according to PEP8 for buienradar ([@basnijholt] - [#29623]) ([buienradar docs]) +- Add IntesisHome Climate Platform ([@jnimmo] - [#25364]) ([intesishome docs]) (new-integration) +- Don't escape command parameters ([@Hypfer] - [#29504]) ([squeezebox docs]) +- Fix file permission ([@fabaff] - [#29635]) ([dsmr_reader docs]) ([here_travel_time docs]) ([tahoma docs]) +- sort imports according to PEP8 for axis ([@basnijholt] - [#29621]) ([axis docs]) +- sort imports according to PEP8 for hassio ([@basnijholt] - [#29634]) ([hassio docs]) +- Pass in parameters explicitly to DeconzSession ([@Kane610] - [#29617]) ([deconz docs]) +- use isort to sort imports according to PEP8 for fan ([@basnijholt] - [#29632]) ([fan docs]) +- use isort to sort imports according to PEP8 for automation ([@basnijholt] - [#29620]) ([automation docs]) +- use isort to sort imports according to PEP8 for cast ([@basnijholt] - [#29624]) ([cast docs]) +- use isort to sort imports according to PEP8 for binary_sensor ([@basnijholt] - [#29622]) ([binary_sensor docs]) +- Move imports to top for homekit_controller ([@springstan] - [#29564]) +- use isort to sort imports according to PEP8 for climate ([@basnijholt] - [#29625]) ([climate docs]) +- use isort to sort imports according to PEP8 for command_line ([@basnijholt] - [#29627]) ([command_line docs]) +- use isort to sort imports according to PEP8 for config ([@basnijholt] - [#29628]) ([config docs]) +- use isort to sort imports according to PEP8 for cover ([@basnijholt] - [#29629]) ([cover docs]) +- use isort to sort imports according to PEP8 for demo ([@basnijholt] - [#29630]) ([demo docs]) +- use isort to sort imports according to PEP8 for cloud ([@basnijholt] - [#29626]) ([cloud docs]) +- use isort to sort imports according to PEP8 for ecobee ([@basnijholt] - [#29631]) ([ecobee docs]) +- Sort imports according to PEP8 for homekit_controller ([@basnijholt] - [#29646]) ([homekit_controller docs]) +- use isort to sort imports according to PEP8 for mqtt ([@basnijholt] - [#29649]) ([mqtt docs]) +- use isort to sort imports according to PEP8 for light ([@basnijholt] - [#29648]) ([light docs]) ([mqtt docs]) +- Sort imports according to PEP8 for homekit ([@basnijholt] - [#29645]) ([homekit docs]) +- use isort to sort imports according to PEP8 for vacuum ([@basnijholt] - [#29650]) ([mqtt docs]) ([vacuum docs]) +- Fix file permission ([@fabaff] - [#29660]) ([intesishome docs]) +- Sort imports according to PEP8 for recorder ([@basnijholt] - [#29652]) ([recorder docs]) +- Sort imports according to PEP8 for switch ([@basnijholt] - [#29654]) ([switch docs]) +- Sort imports according to PEP8 for template ([@basnijholt] - [#29655]) ([template docs]) +- Sort imports according to PEP8 for hive ([@basnijholt] - [#29669]) ([hive docs]) +- Sort imports according to PEP8 for starline ([@basnijholt] - [#29653]) ([starline docs]) +- Change state values for Worx Landroid sensor ([@geraldhansen] - [#27453]) ([worxlandroid docs]) (breaking change) +- Sort imports according to PEP8 for plex ([@basnijholt] - [#29708]) ([plex docs]) +- Sort imports according to PEP8 for cert_expiry ([@basnijholt] - [#29705]) ([cert_expiry docs]) +- Sort imports according to PEP8 for geonetnz_volcano ([@basnijholt] - [#29716]) ([geonetnz_volcano docs]) +- Sort imports according to PEP8 for eufy ([@basnijholt] - [#29715]) ([eufy docs]) +- Sort imports according to PEP8 for dialogflow ([@basnijholt] - [#29714]) ([dialogflow docs]) +- Sort imports according to PEP8 for kodi ([@basnijholt] - [#29721]) ([kodi docs]) +- Add tests for vera component ([@vangorra] - [#28340]) ([vera docs]) +- Add Signal Messenger integration ([@bbernhard] - [#28537]) ([signalmessenger docs]) (new-integration) +- Protect Doorbird platform from failing when individual doorbird fails ([@gjbadros] - [#29374]) ([doorbird docs]) +- Sort imports according to PEP8 for velbus ([@basnijholt] - [#29676]) ([velbus docs]) +- Proactively report Alexa Endpoint Health properties ([@clapbr] - [#29736]) ([alexa docs]) +- Sort imports according to PEP8 for pi_hole ([@basnijholt] - [#29726]) ([pi_hole docs]) +- use isort to sort imports according to PEP8 for homeassistant ([@basnijholt] - [#29718]) ([homeassistant docs]) +- use isort to sort imports according to PEP8 for zone ([@basnijholt] - [#29712]) ([zone docs]) +- use isort to sort imports according to PEP8 for group ([@basnijholt] - [#29713]) +- Sort imports according to PEP8 for neato ([@basnijholt] - [#29724]) ([neato docs]) +- Sort imports according to PEP8 for input_text ([@basnijholt] - [#29719]) ([input_text docs]) +- Sort imports according to PEP8 for linky ([@basnijholt] - [#29722]) ([linky docs]) +- Sort imports according to PEP8 for minio ([@basnijholt] - [#29723]) ([minio docs]) +- Sort imports according to PEP8 for netgear_lte ([@basnijholt] - [#29725]) ([netgear_lte docs]) +- Sort imports according to PEP8 for iqvia ([@basnijholt] - [#29720]) ([iqvia docs]) +- Sort imports according to PEP8 for gpslogger ([@basnijholt] - [#29717]) ([gpslogger docs]) +- Sort imports according to PEP8 for soma ([@basnijholt] - [#29709]) ([soma docs]) +- Sort imports according to PEP8 for verisure ([@basnijholt] - [#29711]) ([verisure docs]) +- Sort imports according to PEP8 for darksky ([@basnijholt] - [#29706]) ([darksky docs]) +- Sort imports according to PEP8 for aws ([@basnijholt] - [#29704]) ([aws docs]) +- Sort imports according to PEP8 for device_automation ([@basnijholt] - [#29707]) ([device_automation docs]) +- Sort imports according to PEP8 for arest ([@basnijholt] - [#29703]) ([arest docs]) +- Sort imports according to PEP8 for arduino ([@basnijholt] - [#29702]) ([arduino docs]) +- Sort imports according to PEP8 for almond ([@basnijholt] - [#29688]) ([almond docs]) +- Sort imports according to PEP8 for geonetnz_quakes ([@basnijholt] - [#29668]) ([geonetnz_quakes docs]) +- Move imports to top for nsw_fuel_station ([@springstan] - [#29538]) ([nsw_fuel_station docs]) +- Sort imports according to PEP8 for jewish_calendar ([@basnijholt] - [#29697]) ([jewish_calendar docs]) +- Sort imports according to PEP8 for opentherm_gw ([@basnijholt] - [#29671]) ([opentherm_gw docs]) +- Sort imports according to PEP8 for xiaomi_miio ([@basnijholt] - [#29677]) ([xiaomi_miio docs]) +- Sort imports according to PEP8 for met ([@basnijholt] - [#29699]) ([met docs]) +- Sort imports according to PEP8 for locative ([@basnijholt] - [#29698]) ([locative docs]) +- Sort imports according to PEP8 for file ([@basnijholt] - [#29694]) ([file docs]) +- Sort imports according to PEP8 for ifttt ([@basnijholt] - [#29696]) ([ifttt docs]) +- Sort imports according to PEP8 for geofency ([@basnijholt] - [#29695]) ([geofency docs]) +- Sort imports according to PEP8 for counter ([@basnijholt] - [#29692]) ([counter docs]) +- Sort imports according to PEP8 for ffmpeg ([@basnijholt] - [#29693]) ([ffmpeg docs]) +- use isort to sort imports according to PEP8 for broadlink ([@basnijholt] - [#29690]) ([broadlink docs]) +- Sort imports according to PEP8 for ambiclimate ([@basnijholt] - [#29689]) ([ambiclimate docs]) +- Sort imports according to PEP8 for camera ([@basnijholt] - [#29691]) ([camera docs]) +- use isort to sort imports according to PEP8 for netatmo ([@basnijholt] - [#29682]) ([netatmo docs]) +- Sort imports according to PEP8 for specific_devices ([@basnijholt] - [#29687]) +- Sort imports according to PEP8 for wemo ([@basnijholt] - [#29685]) ([wemo docs]) +- Sort imports according to PEP8 for utility_meter ([@basnijholt] - [#29710]) ([utility_meter docs]) +- Sort imports according to PEP8 for vesync ([@basnijholt] - [#29684]) ([vesync docs]) +- Sort imports according to PEP8 for iaqualink ([@basnijholt] - [#29681]) ([iaqualink docs]) +- Sort imports according to PEP8 for sensor ([@basnijholt] - [#29683]) ([sensor docs]) +- Sort imports according to PEP8 for ring ([@basnijholt] - [#29680]) +- Sort imports according to PEP8 for http ([@basnijholt] - [#29679]) +- Sort imports according to PEP8 for dyson ([@basnijholt] - [#29678]) +- Sort imports according to PEP8 for somfy ([@basnijholt] - [#29675]) ([somfy docs]) +- Sort imports according to PEP8 for nest ([@basnijholt] - [#29670]) ([nest docs]) +- Sort imports according to PEP8 for rest ([@basnijholt] - [#29674]) ([rest docs]) +- Sort imports according to PEP8 for pilight ([@basnijholt] - [#29673]) ([pilight docs]) +- Sort imports according to PEP8 for owntracks ([@basnijholt] - [#29672]) ([owntracks docs]) +- Sort imports according to PEP8 for emulated_hue ([@basnijholt] - [#29667]) ([emulated_hue docs]) +- Sort imports according to PEP8 for device_tracker ([@basnijholt] - [#29666]) ([device_tracker docs]) +- Sort imports according to PEP8 for media_player ([@basnijholt] - [#29665]) ([media_player docs]) +- sort imports according to PEP8 for lock ([@basnijholt] - [#29663]) ([lock docs]) +- Sort imports according to PEP8 for unifi ([@basnijholt] - [#29656]) ([unifi docs]) +- Sort imports according to PEP8 for deconz ([@basnijholt] - [#29659]) +- Sort imports according to PEP8 for zwave ([@basnijholt] - [#29658]) ([zwave docs]) +- Sort imports according to PEP8 for websocket_api ([@basnijholt] - [#29657]) ([websocket_api docs]) +- Sort imports according to PEP8 for pushbullet ([@basnijholt] - [#29748]) ([pushbullet docs]) +- Sort imports according to PEP8 for versasense ([@basnijholt] - [#29753]) ([versasense docs]) +- Sort imports according to PEP8 for remote ([@basnijholt] - [#29749]) ([remote docs]) +- Sort imports according to PEP8 for yeelight ([@basnijholt] - [#29755]) ([yeelight docs]) +- Sort imports according to PEP8 for solarlog ([@basnijholt] - [#29752]) ([solarlog docs]) +- Sort imports according to PEP8 for scene ([@basnijholt] - [#29750]) ([scene docs]) +- Sort imports according to PEP8 for vicare ([@basnijholt] - [#29754]) ([vicare docs]) +- Sort imports according to PEP8 for plaato ([@basnijholt] - [#29747]) ([plaato docs]) +- Sort imports according to PEP8 for shopping_list ([@basnijholt] - [#29751]) ([shopping_list docs]) +- Sort imports according to PEP8 for emulated_roku ([@basnijholt] - [#29756]) +- Sort imports according to PEP8 for sleepiq ([@basnijholt] - [#29759]) +- Sort imports according to PEP8 for mobile_app ([@basnijholt] - [#29758]) +- Sort imports according to PEP8 for hue ([@basnijholt] - [#29757]) +- Sort imports according to PEP8 for vultr ([@basnijholt] - [#29760]) +- Remove Tahoma component #29744 ([@tetienne] - [#29745]) ([tahoma docs]) (breaking change) +- Sort imports according to PEP8 for components starting with "B" ([@basnijholt] - [#29762]) +- Sort imports according to PEP8 for components starting with "A" ([@basnijholt] - [#29761]) +- Sort imports according to PEP8 for components starting with "E" ([@basnijholt] - [#29765]) +- Sort imports according to PEP8 for components starting with "F" ([@basnijholt] - [#29766]) +- Sort imports according to PEP8 for components starting with "G" ([@basnijholt] - [#29767]) +- Sort imports according to PEP8 for components starting with "H" ([@basnijholt] - [#29768]) +- use isort to sort imports for components starting with 'm' ([@basnijholt] - [#29772]) +- Sort imports according to PEP8 for components starting with "I" ([@basnijholt] - [#29769]) +- Sort imports according to PEP8 for components starting with "L" ([@basnijholt] - [#29771]) +- Sort imports according to PEP8 for components starting with "K" ([@basnijholt] - [#29770]) ([kankun docs]) ([keba docs]) ([keyboard_remote docs]) +- Sort imports according to PEP8 for components starting with "O" ([@basnijholt] - [#29774]) +- Sort imports according to PEP8 for components starting with "P" ([@basnijholt] - [#29775]) +- Sort imports according to PEP8 for components starting with "S" ([@basnijholt] - [#29777]) +- Sort imports according to PEP8 for components starting with "R" ([@basnijholt] - [#29776]) +- Sort imports according to PEP8 for components starting with "T" ([@basnijholt] - [#29778]) +- Sort imports according to PEP8 for components starting with "V" ([@basnijholt] - [#29780]) +- Sort imports according to PEP8 for components starting with "N" ([@basnijholt] - [#29773]) +- Sort imports according to PEP8 for components starting with "W" ([@basnijholt] - [#29781]) +- Sort imports according to PEP8 for components starting with "Q" ([@basnijholt] - [#29785]) +- Sort imports according to PEP8 for components starting with "Y" ([@basnijholt] - [#29783]) ([yale_smart_alarm docs]) ([yamaha docs]) ([yamaha_musiccast docs]) ([yandex_transport docs]) ([yeelightsunflower docs]) ([yessssms docs]) ([yr docs]) +- Sort imports according to PEP8 for components starting with "X" ([@basnijholt] - [#29782]) ([x10 docs]) ([xbox_live docs]) ([xeoma docs]) ([xfinity docs]) ([xiaomi_tv docs]) ([xmpp docs]) ([xs1 docs]) +- Move imports to top for homekit ([@springstan] - [#29560]) ([homekit docs]) +- Cleanup removed component ([@pvizeli] - [#29788]) +- Sort imports according to PEP8 for 'script' folder ([@basnijholt] - [#29790]) +- use isort to sort imports for "setup.py" ([@basnijholt] - [#29792]) +- Sort imports according to PEP8 for 'homeassistant' folder ([@basnijholt] - [#29789]) +- Sort imports according to PEP8 for 'tests' ([@basnijholt] - [#29791]) +- Add config flow to iCloud ([@Quentame] - [#28968]) ([icloud docs]) (breaking change) +- Sort imports according to PEP8 for components starting with "D" ([@basnijholt] - [#29764]) +- Move imports to top for ness_alarm ([@springstan] - [#29518]) ([ness_alarm docs]) +- Sort imports according to PEP8 for components starting with "Z" ([@basnijholt] - [#29784]) ([zamg docs]) ([zengge docs]) ([zeroconf docs]) ([zestimate docs]) ([zha docs]) ([zigbee docs]) +- Sort imports according to PEP8 for components starting with "C" ([@basnijholt] - [#29763]) +- Fix 'pytest.register_assert_rewrite("tests.common")' warning ([@basnijholt] - [#29797]) +- Sort imports according to PEP8 for huawei_lte ([@basnijholt] - [#29664]) ([huawei_lte docs]) +- Sort imports according to PEP8 for components starting with "U" ([@basnijholt] - [#29779]) ([ue_smart_radio docs]) ([uk_transport docs]) ([universal docs]) ([updater docs]) ([uscis docs]) +- Fix build, invalid JSON file in icloud component ([@frenck] - [#29798]) ([icloud docs]) +- Sort imports according to PEP8 for google_assistant ([@basnijholt] - [#29633]) ([google_assistant docs]) +- Add ZHA group API ([@dmulcahey] - [#29641]) ([zha docs]) +- Add input_text reload service. ([@Adminiuga] - [#29644]) ([input_text docs]) +- Add input_select reload service. ([@Adminiuga] - [#29647]) ([input_select docs]) +- Add JSON files validation to hassfest ([@frenck] - [#29799]) +- Fix zha circular import ([@Adminiuga] - [#29802]) +- Nextbus: Sort results for upcoming times ([@ViViDboarder] - [#29811]) ([nextbus docs]) +- Adjusts repository README ([@frenck] - [#29805]) +- Install discovery requirements if used ([@balloob] - [#29795]) ([deconz docs]) ([hue docs]) +- Fix isort on a small set of misc files ([@frenck] - [#29803]) ([xiaomi_miio docs]) +- Fix tank utility token ([@proferabg] - [#29801]) ([tank_utility docs]) +- Re-authorize Huawei LTE on login required error ([@scop] - [#29597]) ([huawei_lte docs]) +- Fix withings wrong sleep state entry ([@vangorra] - [#29651]) ([withings docs]) +- Fix input_text initialization with empty config. ([@Adminiuga] - [#29829]) ([input_text docs]) +- Upgrade pydocstyle to 5.0.1 ([@scop] - [#29830]) +- Sort imports for requirements.py and its test using isort ([@basnijholt] - [#29836]) +- Fix Soma integration connection issue ([@ratsept] - [#27692]) ([soma docs]) +- Update rfxtrx component so it can be run as a custom_component ([@foxy82] - [#29638]) ([rfxtrx docs]) +- Revert Tahoma removal ([@balloob] - [#29840]) ([tahoma docs]) (new-integration) +- Use Bionic's ffmpeg on Travis, jonathonf/ffmpeg-4 is N/A at the moment ([@scop] - [#29860]) +- Fix package import sort on dwd_weather_warnings ([@frenck] - [#29874]) ([dwd_weather_warnings docs]) +- Sort import for tests/components/feedreader/test_init.py ([@basnijholt] - [#29878]) +- Add isort to CI and pre-commit ([@basnijholt] - [#29739]) +- Remove no longer needed auth.util, use secrets instead ([@scop] - [#29861]) +- Revert "Sort import for tests/components/feedreader/test_init.… ([@Adminiuga] - [#29882]) +- Log ZHA bind/unbind operations status ([@Adminiuga] - [#29842]) ([zha docs]) +- (Re)Add support for multiple Pi-Holes ([@johnluetke] - [#27569]) ([pi_hole docs]) (breaking change) +- ISY994 Node Filter Update ([@randellhodges] - [#28155]) ([isy994 docs]) +- Defer log formatting. ([@Adminiuga] - [#29888]) ([zha docs]) +- Bump python-miio version to 0.4.8 ([@syssi] - [#29890]) ([xiaomi_miio docs]) +- `genericpath` is an internal Python module and shouldn't be imported according to core Python devs. (see [this](https://bugs.python.org/msg358136) comment) ([@basnijholt] - [#29903]) +- Make Python deprecation notice easier to maintain ([@scop] - [#29900]) +- Upgrade Sphinx to 2.2.2 and sphinx-autodoc-typehintsi to 1.10.3 ([@fabaff] - [#29906]) +- Fix incorrect file format yr test fixure ([@frenck] - [#29910]) +- Fixes invalid JSON syntax in devcontainer ([@frenck] - [#29911]) +- Add integration platform helper ([@balloob] - [#29914]) +- Update Tahoma component's tahoma-api requirement's version ([@DjMoren] - [#29918]) ([tahoma docs]) +- Implement Alexa.EventDetectionSensor for Alexa ([@ochlocracy] - [#28276]) ([alexa docs]) +- Update androidtv version to improve source selection support ([@raman325] - [#29579]) ([androidtv docs]) +- Add battery sensor to iCloud ([@Quentame] - [#29818]) ([icloud docs]) (new-platform) +- bump venstar 0.12 ([@tyler-public] - [#29954]) +- Bump adb-shell to 0.1.0 and androidtv to 0.0.36 ([@JeffLIrion] - [#29938]) ([androidtv docs]) +- Start of using hass state for tests rather than direct object ([@elupus] - [#29377]) +- isort fix on test_media_player ([@caronc] - [#29965]) +- Upgrade keyring to 20.0.0 and keyrings.alt to 3.4.0 ([@fabaff] - [#29960]) +- Fix example value for Todoist service ([@boralyl] - [#29953]) +- Remove deprecated rflink configs ([@scop] - [#29972]) ([rflink docs]) +- Drop Python 3.6 support ([@scop] - [#29978]) +- Support case of unknown/unavailable temperature/humidity ([@elupus] - [#29959]) ([google_assistant docs]) +- Migrate to api_key ([@eifinger] - [#29966]) ([here_travel_time docs]) (breaking change) +- Remove 'SUPPORT_PLAY_MEDIA' from Volumio ([@JeffLIrion] - [#29969]) ([volumio docs]) +- Make hassfest import detection better ([@balloob] - [#29932]) ([filter docs]) ([history docs]) +- Fixed "condtion_type" to "condition_type" ([@rsnodgrass] - [#29984]) ([fan docs]) +- Fix condition typo ([@balloob] - [#29989]) ([climate docs]) ([device_tracker docs]) ([fan docs]) ([vacuum docs]) +- Don't use the locals parameter on exec. ([@lddubeau] - [#29979]) ([python_script docs]) +- Update binary_sensor.py ([@Emacee] - [#29977]) ([bmw_connected_drive docs]) +- Bump shodan to 1.21.0 ([@frenck] - [#29991]) ([shodan docs]) +- Bump pytest to 5.3.2 ([@frenck] - [#29990]) +- Add check-json to CI and Pre-commit ([@frenck] - [#29912]) +- Add unique ID to config entries ([@balloob] - [#29806]) +- Show current effect in yeelight device ([@zewelor] - [#28975]) ([yeelight docs]) +- Convert Hue to use unique ID ([@balloob] - [#30000]) ([hue docs]) +- Fix modbus service description ([@vzahradnik] - [#30005]) +- Fix persistent setup error notification content ([@frenck] - [#29995]) +- Make tplink light more responsive ([@vangorra] - [#28652]) ([tplink docs]) +- Z-Wave: Fibaro FGR*-222: Add venetian blind support ([@andre-richter] - [#29701]) ([zwave docs]) +- Upgrade matrix-client to 0.3.2 ([@fabaff] - [#30027]) ([matrix docs]) +- Upgrade zeroconf to 0.24.1 ([@fabaff] - [#30028]) ([zeroconf docs]) +- Update Envoy sensor to configure credentials and grab Inverter Date from updated API ([@gtdiehl] - [#28837]) ([enphase_envoy docs]) +- Add option to ignore flows ([@balloob] - [#30008]) ([config docs]) ([hue docs]) +- changed Venstar component temperature to half degree accuracy ([@erikkastelec] - [#30034]) ([venstar docs]) +- Add timer reload service. ([@Adminiuga] - [#30015]) ([timer docs]) +- Guard against future unknown SimpliSafe entity types ([@bachya] - [#30059]) ([simplisafe docs]) +- Set unique id on homekit_controller config entries ([@Jc2k] - [#30035]) ([homekit_controller docs]) +- Remove stream from camera after deps ([@balloob] - [#30057]) ([camera docs]) +- Add unit_of_measurement to various Transmission sensors ([@yegle] - [#30037]) ([transmission docs]) +- Refactor Alexa capabilityResources object into class, Implement Alexa semantics object ([@ochlocracy] - [#29917]) ([alexa docs]) +- Make Hassfest stricter pt 2 ([@balloob] - [#30068]) ([modbus docs]) ([mqtt docs]) ([tuya docs]) ([zamg docs]) +- Init entities as unavailable when offline ([@bieniu] - [#29738]) ([airly docs]) +- Make name of nmbs live sensor customizable via unique_id ([@springstan] - [#29662]) ([nmbs docs]) +- Include all SSDP data in discovery info ([@scop] - [#28197]) ([ssdp docs]) +- Rework tado component ([@michaelarnauts] - [#29246]) ([tado docs]) +- Add an open window sensor for heating zones ([@gppanayotov] - [#30090]) ([tado docs]) +- Explicitly include Alexa interface for image_processing entities. ([@ochlocracy] - [#30101]) ([alexa docs]) +- Don't error on removal of an ignored homekit_controller config entry ([@Jc2k] - [#30083]) ([homekit_controller docs]) +- add --show-diff-on-failure to pre-commit ([@basnijholt] - [#30097]) +- Upgrade mypy to 0.761 ([@scop] - [#30104]) +- Helpers type hint improvements ([@scop] - [#30106]) +- Add device class attribute to modbus sensors ([@vzahradnik] - [#30030]) ([modbus docs]) +- Upgrade python-velbus ([@Cereal2nd] - [#30110]) ([velbus docs]) +- Add a config entry mechanism to rediscover a discovery that was ignored ([@Jc2k] - [#30099]) ([homekit_controller docs]) +- Implement ZHA entity classes registry ([@Adminiuga] - [#30108]) ([zha docs]) +- Clean up mobile app webhooks ([@balloob] - [#30123]) ([http docs]) ([mobile_app docs]) +- Refactor ZHA electrical measurement sensor. ([@Adminiuga] - [#30130]) ([zha docs]) (breaking change) +- Cleanup ZHAEntity class ([@Adminiuga] - [#30131]) ([zha docs]) +- Upgrade zeroconf to 0.24.2 ([@fabaff] - [#30140]) ([zeroconf docs]) +- Refactor ZHA binary_sensor ([@Adminiuga] - [#30138]) ([zha docs]) +- Update Integration of Keba charging station ([@dannerph] - [#30125]) ([keba docs]) (breaking change) +- More helpers type improvements ([@scop] - [#30145]) +- Bump sqlalchemy to 1.3.12 ([@frenck] - [#30142]) ([recorder docs]) ([sql docs]) +- Clean up scaffold ([@cgtobi] - [#30135]) +- ZHA binary_sensor cleanup. ([@Adminiuga] - [#30149]) ([zha docs]) +- Add support for input_number entities in Alexa integration ([@ochlocracy] - [#30139]) ([alexa docs]) +- Add icon to Plex sensor ([@Quentame] - [#30172]) ([plex docs]) +- Add cast to state of Dyson Air Quality Sensor ([@springstan] - [#30100]) ([dyson docs]) +- Add icons to Freebox sensors ([@Quentame] - [#30132]) ([freebox docs]) +- Upgrade envoy_reader to 0.11.0 ([@gtdiehl] - [#30179]) ([enphase_envoy docs]) +- Updated formatting of total_blocks value ([@P-Verbrugge] - [#30170]) ([bitcoin docs]) +- New date_time_utc display option added to the time_date sensor platform ([@heckler] - [#30158]) ([time_date docs]) +- Enable config flow for Tesla ([@alandtse] - [#28744]) ([tesla docs]) (breaking change) +- Protect against bad data stored in ZHA ([@dmulcahey] - [#30183]) ([zha docs]) +- Upgrade zeroconf to 0.24.3 ([@fabaff] - [#30187]) ([zeroconf docs]) +- Fix AdGuard Home safe search sensor name ([@Quentame] - [#30171]) ([adguard docs]) +- Add onewire devices and owserver remote host support ([@garbled1] - [#29948]) ([onewire docs]) +- Bump importlib-metadata to 1.3.0 ([@springstan] - [#30196]) +- Bump datapoint to 0.9.5 ([@springstan] - [#30185]) ([metoffice docs]) +- Implement EqualizerController in Alexa for media_player. ([@ochlocracy] - [#30159]) ([alexa docs]) +- Upgrade youtube_dl to 2019.12.25 ([@BKPepe] - [#30203]) ([media_extractor docs]) +- Pull track position from MPD status ([@ndonegan] - [#28579]) ([mpd docs]) +- Add support for enocean window handle FA 10 00 (Hoppe) ([@rhadamantys] - [#29968]) ([enocean docs]) +- Update Vivotek camera component ([@HarlemSquirrel] - [#30191]) ([vivotek docs]) +- Make Huawei LTE notify service name configurable ([@scop] - [#30208]) ([huawei_lte docs]) (breaking change) +- Add Huawei LTE integration suspend and resume services ([@scop] - [#30207]) ([huawei_lte docs]) +- Bump teslajsonpy to 0.2.1 ([@alandtse] - [#30217]) ([tesla docs]) +- bump tuyaha 0.0.5 ([@PaulAnnekov] - [#30213]) ([tuya docs]) +- Fix handling of symlinked device descriptors in keyboard_remote and move remaining sync io to executor thread pool ([@bendavid] - [#30206]) ([keyboard_remote docs]) +- Bump ZHA dependencies ([@dmulcahey] - [#30228]) ([zha docs]) +- Bump shodan to 1.21.1 ([@frenck] - [#30234]) ([shodan docs]) +- DECONZ - Added support for Aqara single switch WXKG03LM ([@Kerwood] - [#30240]) ([deconz docs]) +- Bump python-qbittorrent to 0.4.1 ([@springstan] - [#30239]) ([qbittorrent docs]) +- Fix Huawei LTE error message on service call without URL and routers ([@scop] - [#30250]) ([huawei_lte docs]) +- Bump dependency for HomematicIp cloud ([@SukramJ] - [#30237]) ([homematicip_cloud docs]) +- Bump libpurecool to 0.6.0 ([@xlfe] - [#30247]) +- Huawei LTE: Fix YAML options overriding ones set from GUI ([@scop] - [#30249]) ([huawei_lte docs]) +- Add HmIP-MOD_TM to HomematicIP Cloud ([@SukramJ] - [#30255]) ([homematicip_cloud docs]) +- Note Huawei LTE notify service change requires restart ([@scop] - [#30223]) ([huawei_lte docs]) +- Bump python-velbus library to 2.0.32 to fix problems with the glaspanels ([@Cereal2nd] - [#30257]) ([velbus docs]) +- Whitelist Android/iOS auth callbacks ([@balloob] - [#30082]) ([auth docs]) +- Fixing timezone issue which caused wrong selection of data to be used. ([@vangorra] - [#30011]) ([withings docs]) +- Refactor ZHA channel logging ([@Adminiuga] - [#30259]) ([zha docs]) +- Fix ble_tracker randomly pygatt thrown error ([@liollury] - [#28671]) ([bluetooth_le_tracker docs]) +- Fix creating smappee sensors when remote is not active ([@mockersf] - [#30270]) ([smappee docs]) +- Upgrade rflink to 0.0.50, ignore_devices now supports * and ? anywhere ([@scop] - [#30268]) ([rflink docs]) +- Accept homekit_controller pairing codes both with and without dashes ([@Jc2k] - [#30273]) ([homekit_controller docs]) +- Add homekit_controller service.sensor.smoke ([@Jc2k] - [#30269]) ([homekit_controller docs]) +- Upgrade beautifulsoup4 to 4.8.2 ([@fabaff] - [#30274]) ([scrape docs]) +- Add custom validator for countries ([@fabaff] - [#30280]) ([workday docs]) +- Change default icons for Tesla components ([@alandtse] - [#30288]) ([tesla docs]) +- Contributing: Add note about feature suggestions and bug tracking ([@andygrunwald] - [#30225]) +- Bump ihcsdk to 2.4.0 ([@taisholland] - [#30279]) ([ihc docs]) +- Ignore google_maps updates when last_seen goes backwards ([@pnbruckner] - [#30178]) ([google_maps docs]) +- Add GIOS integration ([@bieniu] - [#28719]) ([gios docs]) (new-integration) +- Store capabilities and supported features in entity registry, restore registered entities on startup ([@balloob] - [#30094]) +- Fix Withings leaking time zone change into other tests ([@frenck] - [#30320]) +- Add local_ip component ([@issacg] - [#29973]) ([localip docs]) (new-integration) +- Update liveboxplay and pyteleloisirs ([@pschmitt] - [#30093]) +- Add homematic host port config for HMIP-only CCUs ([@sbyx] - [#30077]) ([homematic docs]) +- Bump dependency for HomematicIP Cloud ([@SukramJ] - [#30319]) ([homematicip_cloud docs]) +- Add support for Somfy RTS power socket and Somfy io Temperature sensor ([@rhadamantys] - [#30053]) ([tahoma docs]) +- Reduce solaredge logging severity ([@sdwilsh] - [#30305]) ([solaredge docs]) +- Remove Amcrest deprecated sensors and switches ([@pnbruckner] - [#30308]) ([amcrest docs]) (breaking change) +- Add support for Velux garage doors ([@cwildt] - [#30214]) ([velux docs]) +- Add separate command and state topics for mqtt lock ([@tuxbox] - [#29808]) ([mqtt docs]) (breaking change) +- Upgrade Sphinx to 2.3.1 ([@fabaff] - [#30310]) +- Add light support to Velbus integration ([@brefra] - [#30323]) ([velbus docs]) (new-platform) +- Fix luftdaten integration by adding a sensor for pressure at sealevel ([@Lars-P] - [#30317]) ([luftdaten docs]) +- Simplify Tesla icon get code ([@alandtse] - [#30301]) ([tesla docs]) +- Make the rest of ZHA platforms to use ZHA class registry ([@Adminiuga] - [#30261]) ([zha docs]) +- Improve Withings tests in different time zone ([@frenck] - [#30326]) +- Migrate dsmr tests from coroutine to async/await ([@frenck] - [#30333]) +- Migrate wunderground tests from coroutine to async/await ([@frenck] - [#30330]) +- Bump pyps4-2ndscreen to 1.0.4 ([@frenck] - [#30327]) ([ps4 docs]) +- Bump alarmdecoder to 1.13.9 ([@springstan] - [#30303]) ([alarmdecoder docs]) +- Migrate python_script tests from coroutine to async/await ([@frenck] - [#30335]) +- Migrate api tests from coroutine to async/await ([@frenck] - [#30338]) +- Migrate alexa tests from coroutine to async/await ([@frenck] - [#30332]) +- Migrate xiaomi_miio tests from coroutine to async/await ([@frenck] - [#30329]) +- Migrate emulated_hue tests from coroutine to async/await ([@frenck] - [#30331]) +- Migrate webostv to new library and make integration async with callback state updates ([@bendavid] - [#29296]) ([webostv docs]) (breaking change) +- Migrate input_* tests from coroutine to async/await ([@frenck] - [#30336]) +- Remove use of bin_type in Tesla component ([@alandtse] - [#30315]) ([tesla docs]) +- Upgrade youtube_dl to version 2020.01.01 ([@BKPepe] - [#30341]) ([media_extractor docs]) +- Upgrade zeroconf to 0.24.4 ([@fabaff] - [#30347]) ([zeroconf docs]) +- Migrate startca tests from coroutine to async/await ([@frenck] - [#30354]) +- Migrate teksavvy tests from coroutine to async/await ([@frenck] - [#30353]) +- Migrate timer tests from coroutine to async/await ([@frenck] - [#30352]) +- Migrate yr tests from coroutine to async/await ([@frenck] - [#30351]) +- Fix media_player example for select_source service ([@JeffLIrion] - [#30358]) +- Upgrade python_opendata_transport to 0.2.1 ([@fabaff] - [#30348]) ([swiss_public_transport docs]) +- Fix HVAC mode for Tesla ([@alandtse] - [#30287]) ([tesla docs]) +- Add attributes to fritz device_tracker ([@AaronDavidSchneider] - [#30350]) ([fritz docs]) +- Migrate mailbox tests from coroutine to async/await ([@frenck] - [#30361]) +- Migrate hassio tests from coroutine to async/await ([@frenck] - [#30363]) +- Migrate websocket_api tests from coroutine to async/await ([@frenck] - [#30364]) +- Migrate config tests from coroutine to async/await ([@frenck] - [#30366]) +- Migrate counter tests from coroutine to async/await ([@frenck] - [#30368]) +- Migrate owntracks tests from coroutine to async/await ([@frenck] - [#30369]) +- Migrate no_ip tests from coroutine to async/await ([@frenck] - [#30370]) +- Migrate camera tests from coroutine to async/await ([@frenck] - [#30372]) +- Migrate cast tests from coroutine to async/await ([@frenck] - [#30374]) +- Migrate ffmpeg tests from coroutine to async/await ([@frenck] - [#30375]) +- Migrate discovery tests from coroutine to async/await ([@frenck] - [#30376]) +- Migrate google_* tests from coroutine to async/await ([@frenck] - [#30377]) +- Add charging rate sensor to Tesla ([@alandtse] - [#30286]) ([tesla docs]) +- Restore state for Rfxtrx devices ([@Ernst79] - [#30309]) ([rfxtrx docs]) +- Remove unnessecary rfxtrx light property def ([@Ernst79] - [#30397]) ([rfxtrx docs]) +- Remove unnecessary string literal concatenations ([@scop] - [#30360]) +- Bump pre-commit to 1.21.0 ([@frenck] - [#30406]) +- fix issuecomment-570284682 ([@AaronDavidSchneider] - [#30405]) ([fritz docs]) +- Migrate local_file tests from coroutine to async/await ([@frenck] - [#30392]) +- Migrate fido tests from coroutine to async/await ([@frenck] - [#30391]) +- Migrate freedns tests from coroutine to async/await ([@frenck] - [#30390]) +- Migrate group tests from coroutine to async/await ([@frenck] - [#30389]) +- Migrate generic tests from coroutine to async/await ([@frenck] - [#30388]) +- Migrate media_player tests from coroutine to async/await ([@frenck] - [#30387]) +- Migrate frontend tests from coroutine to async/await ([@frenck] - [#30386]) +- Bump miflora and bluepy ([@springstan] - [#30411]) ([decora docs]) ([miflora docs]) +- Add generic command functionality to denonavr ([@bendavid] - [#29295]) ([denonavr docs]) +- Add generic command/button functionality to webostv ([@bendavid] - [#30379]) ([webostv docs]) +- Axis - Improve tests ([@Kane610] - [#30415]) +- Cleanup of state handling in webostv ([@bendavid] - [#30416]) ([webostv docs]) (breaking change) +- Remove ZHA establish device mappings function ([@dmulcahey] - [#30423]) ([zha docs]) +- Implemented media_play & media_pause / push to version 0.7.11 of denonavr ([@scarface-4711] - [#30421]) ([denonavr docs]) +- Add RTSP stream support for UVC (Unifi Video Client) integration ([@ochlocracy] - [#30297]) ([uvc docs]) +- Fix set tilt position ([@tetienne] - [#30428]) ([somfy docs]) +- Fix number of times seen in debug message ([@scop] - [#30429]) ([bluetooth_le_tracker docs]) +- Use config entry unique id for deCONZ ([@Kane610] - [#30122]) ([deconz docs]) +- Rework FlowManager to use inheritance ([@Jc2k] - [#30133]) ([auth docs]) ([config docs]) +- convert to integer if rounding precision is zero ([@agners] - [#30226]) ([filter docs]) +- Don't allow badly formed upnp devices to kill auto discovery ([@imduffy15] - [#30342]) ([deconz docs]) ([hue docs]) +- Mark API key as deprecated ([@elupus] - [#30402]) ([google_assistant docs]) +- Axis - Improve tests based on feedback ([@Kane610] - [#30430]) +- Update HomeKit position state characteristic for covers ([@neffs] - [#27867]) ([homekit docs]) +- Handle telegram event commands with args ([@sergioisidoro] - [#30254]) ([telegram_bot docs]) +- Various string cleanups ([@scop] - [#30435]) +- Add KEF speakers integration ([@basnijholt] - [#28959]) ([kef docs]) (new-integration) +- WIP deCONZ - Support Fyrtur/Kadrilj battery sensors ([@Kane610] - [#30403]) ([deconz docs]) +- isort homekit ([@Jc2k] - [#30437]) ([homekit docs]) +- Don't expose flows that aren't initialised. ([@Jc2k] - [#30432]) +- Check status field for UPS online binary sensor ([@andersonshatch] - [#30144]) ([apcupsd docs]) +- deCONZ - Improve tests based on Martins feedback in Axis integration ([@Kane610] - [#30438]) +- Bump ring to 0.2.9 ([@tchellomello] - [#30439]) ([ring docs]) +- Improve tests based on Martins feedback from Axis improve tests ([@Kane610] - [#30442]) +- Defer homekit_controller initial poll after all entities are created ([@Jc2k] - [#30355]) ([homekit_controller docs]) +- Implement supported locales for Alexa capabilities ([@ochlocracy] - [#30285]) ([alexa docs]) +- Axis - Remove manual configuration and legacy config file import ([@Kane610] - [#30365]) ([axis docs]) (breaking change) +- Add Sentry component ([@dcramer] - [#30422]) ([sentry docs]) (new-integration) +- Extract Collection helper from Person integration ([@balloob] - [#30313]) ([person docs]) ([websocket_api docs]) +- Fix async call inside sync context ([@brefra] - [#30458]) ([velbus docs]) +- Fix counter with empty config ([@pnbruckner] - [#30454]) ([counter docs]) +- Allow all sources and sound modes to be selected in google assistant ([@elupus] - [#30418]) ([google_assistant docs]) +- Make Axis integration use config entry unique id ([@Kane610] - [#30461]) ([axis docs]) +- Only return remote UI url if remote UI enabled ([@balloob] - [#30453]) ([cloud docs]) +- Allow adding unique device ID to mobile app registration ([@balloob] - [#30457]) ([mobile_app docs]) +- Bump elgato to 0.2.0 ([@frenck] - [#30485]) ([elgato docs]) +- Fix WLED light transition ([@frenck] - [#30490]) ([wled docs]) +- Add unique ID to elgato config entries ([@frenck] - [#30486]) ([elgato docs]) +- Bump adguardhome to 0.4.0 ([@frenck] - [#30483]) ([adguard docs]) +- Add unique ID to WLED config entries ([@frenck] - [#30480]) ([wled docs]) +- Improve WLED pure white support for RGBW ([@frenck] - [#30477]) ([wled docs]) (breaking change) +- Bump wled to 0.2.1 ([@frenck] - [#30474]) ([wled docs]) +- Bump twentemilieu to 0.2.0 ([@frenck] - [#30471]) ([twentemilieu docs]) +- deCONZ - Allow manual configuration to update existing configuration ([@Kane610] - [#30469]) ([deconz docs]) +- Add Zigbee group binding to ZHA ([@dmulcahey] - [#30433]) ([zha docs]) +- Fix timer with empty config ([@pnbruckner] - [#30463]) ([timer docs]) +- Mobile App add device tracker to person registering app ([@balloob] - [#30460]) ([mobile_app docs]) ([person docs]) +- Axis - Allow manual configuration to update existing configuration ([@Kane610] - [#30467]) ([axis docs]) +- Add person reload service ([@balloob] - [#30493]) ([person docs]) +- Add unique id property for Vizio devices so they get added to entity registry ([@raman325] - [#30497]) ([vizio docs]) +- Restore state helper to work with entity registry restoration ([@balloob] - [#30451]) +- Be consistent with Home Assistant and Hass.io spelling ([@scop] - [#30500]) +- Migrate automatic tests from coroutine to async/await ([@frenck] - [#30371]) +- Remove double person data validation ([@balloob] - [#30501]) ([person docs]) +- Add support for v1 and v2 HomeKit fans. ([@Jc2k] - [#30503]) ([homekit_controller docs]) (new-platform) +- Preserve new BLE tracker item name if seen before adding discovery ([@scop] - [#30318]) ([bluetooth_le_tracker docs]) +- Migrate collection of component tests from coroutine to async/await ([@frenck] - [#30504]) +- Add LED control of push buttons and bump velbus-library ([@brefra] - [#30445]) ([velbus docs]) +- Bump teslajsonpy to 0.2.2 ([@alandtse] - [#30512]) ([tesla docs]) +- deCONZ - Rotation support for Xiaomi magic cube ([@FrengerH] - [#30472]) ([deconz docs]) +- Spell Zigbee consistently, with lowercase "b" ([@scop] - [#30440]) ([emulated_hue docs]) ([zigbee docs]) +- Add HmIP-PMFS and HmIP-WHS2 to HomematicIP Cloud ([@SukramJ] - [#30325]) ([homematicip_cloud docs]) +- Add surepetcare component ([@benleb] - [#24426]) ([surepetcare docs]) (new-integration) +- Add support for homekit air quality sensors ([@Jc2k] - [#30510]) ([homekit_controller docs]) (new-platform) +- Set required_features field when registering fan services ([@Jc2k] - [#30516]) ([fan docs]) ([homekit_controller docs]) +- Add Brother Printer integration ([@bieniu] - [#30359]) ([brother docs]) (new-integration) +- Format all manifests with prettier ([@frenck] - [#30521]) +- Fix AVM FRITZ!DECT switch total consumption ([@Alexxander0] - [#30478]) +- Register 'androidtv.download' and 'androidtv.upload' services ([@JeffLIrion] - [#30086]) ([androidtv docs]) +- Allow specific status codes while notifying mobile_app devices ([@rccoleman] - [#30496]) ([mobile_app docs]) +- Correct integration names in manifests (A-B) ([@frenck] - [#30527]) +- Fire restarted event on restarting active timer ([@mnigbur] - [#30475]) ([timer docs]) (breaking change) +- Bump synologydsm to 0.3.0 ([@Quentame] - [#30529]) ([synologydsm docs]) +- Add pilight dimmer as light component ([@Trekky12] - [#30107]) ([pilight docs]) (new-platform) +- Add "autobypass" option when arming AlarmDecoder integration ([@lexam79] - [#30002]) ([alarmdecoder docs]) +- Update vizio component to prepare for config flow and zeroconf support ([@raman325] - [#30522]) ([vizio docs]) +- Correct names in manifests (C-L) ([@frenck] - [#30532]) +- Use collection helpers for input_boolean ([@Adminiuga] - [#30514]) ([input_boolean docs]) +- Add venstar PIN to config and client initialization ([@csfreak] - [#30300]) ([venstar docs]) +- Swiss Transport Data: Save delay on sensor ([@colinfrei] - [#30526]) ([swiss_public_transport docs]) +- Update manifest.json: Typo fixed ([@casperklein] - [#30542]) ([default_config docs]) +- Upgrade to use new version of HASS-nabucasa ([@balloob] - [#30506]) ([cloud docs]) +- Correct names in manifests (M-P) ([@frenck] - [#30541]) +- Bump adb-shell to 0.1.1 and androidtv to 0.0.38 ([@JeffLIrion] - [#30539]) ([androidtv docs]) +- Catch UnicodeDecodeError exceptions in 'androidtv.adb_command' service ([@JeffLIrion] - [#30538]) ([androidtv docs]) +- Remove `suppress_warning` from config options for vizio component ([@raman325] - [#30536]) ([vizio docs]) (breaking change) +- Use capability attributes in climate ([@balloob] - [#30544]) ([climate docs]) +- Correct names in manifests (Q-S) ([@frenck] - [#30543]) +- Update featured integrations screenshot in README ([@springstan] - [#30134]) +- Correct names in manifests (T-Z) ([@frenck] - [#30546]) +- Add TMB sensor ([@alemuro] - [#27964]) ([tmb docs]) (new-integration) +- Add reset_energy_counter service to Homematic IP Cloud ([@SukramJ] - [#30256]) ([homematicip_cloud docs]) +- Add Integration Quality Scale to manifest ([@frenck] - [#30547]) +- Ease code before adding color and temperature to light template ([@tetienne] - [#30455]) ([template docs]) +- Entity Component to no longer generate automatic groups ([@balloob] - [#23789]) ([automation docs]) ([calendar docs]) ([cover docs]) ([device_tracker docs]) ([fan docs]) ([light docs]) ([lock docs]) ([plant docs]) ([remember_the_milk docs]) ([remote docs]) ([script docs]) ([switch docs]) ([vacuum docs]) (breaking change) +- Fix incorrect Rainmachine dict lookups ([@bachya] - [#30550]) ([rainmachine docs]) +- Fix missing strings for deconz magic cube rotation support ([@FrengerH] - [#30552]) ([deconz docs]) +- Fix hue flashing innr lights ([@InuSasha] - [#29828]) ([hue docs]) +- Migrate Integration Quality Scale from docs to manifest: internal ([@frenck] - [#30551]) +- Updated frontend to 20200107.0 ([@bramkragten] - [#30561]) ([frontend docs]) +- Add command to delete lovelace config ([@bramkragten] - [#30558]) ([lovelace docs]) +- Add android repo to issue template ([@dshokouhi] - [#30571]) +- Bump pyRFXtrx to 0.25 ([@Ernst79] - [#30566]) ([rfxtrx docs]) (breaking change) +- deCONZ - Make sensors sorted on creation for deterministic order ([@Kane610] - [#30569]) ([deconz docs]) +- deCONZ - Fix device automations ([@Kane610] - [#30577]) ([deconz docs]) +- Trigger automation without skipping condition ([@Santobert] - [#28484]) ([automation docs]) +- Use more consts for person implementation ([@Adminiuga] - [#30553]) ([person docs]) +- Migrate Integration Quality Scale from docs to manifest ([@frenck] - [#30579]) +- Add missing string for already_configured in Brother integration ([@bieniu] - [#30584]) ([brother docs]) +- Bump adguardhome to 0.4.1 ([@frenck] - [#30586]) ([adguard docs]) +- Add missing string for already_configured in GIOS integration ([@bieniu] - [#30590]) ([gios docs]) +- evohome: allow two round thermostats per gateway ([@zxdavb] - [#30589]) ([evohome docs]) +- Updated frontend to 20200108.0 ([@bramkragten] - [#30591]) ([frontend docs]) +- Fix WLED transition time unit ([@frenck] - [#30583]) ([wled docs]) +- Add Stookalert integration ([@fwestenberg] - [#30306]) ([stookalert docs]) (new-integration) +- The MFI Dimmer Switch model is missing from the list, causing the mfi Wall switches not to be recognized. ([@mohmacht] - [#30572]) ([mfi docs]) +- Add last_online and level attribute to steam online ([@mfaraco] - [#30321]) ([steam_online docs]) +- Fix upnp raw sensor state formatting when None ([@pnbruckner] - [#30444]) ([upnp docs]) (beta fix) +- Implement capability attributes ([@balloob] - [#30545]) ([fan docs]) ([media_player docs]) ([vacuum docs]) ([water_heater docs]) (beta fix) +- Add Ring config flow ([@balloob] - [#30564]) ([ring docs]) (breaking change) (beta fix) +- Fix problem with restoring POE control ([@Kane610] - [#30597]) ([unifi docs]) (beta fix) +- Set body size for Proxy / streams to 16mb ([@pvizeli] - [#30608]) ([http docs]) (beta fix) +- Bump Adafruit_BBIO to 1.1.1 ([@springstan] - [#30630]) ([bbb_gpio docs]) (beta fix) +- Do not save last_seen if older than prev_seen ([@pnbruckner] - [#30647]) ([life360 docs]) (beta fix) +- Fix HomeKit with entity registry restoration where supported_features is a non-None falsey ([@Jc2k] - [#30657]) ([homekit docs]) (beta fix) +- Fix ZHA temperature sensor restoration ([@Adminiuga] - [#30661]) ([zha docs]) (beta fix) +- Update ON/OFF condition and triggers to match documentation and UI, issue #30462 ([@davet2001] - [#30663]) ([binary_sensor docs]) (breaking change) (beta fix) +- Upgrade Ring to new version ([@balloob] - [#30666]) ([ring docs]) (beta fix) +- Fix Error with HomematicIP Cloud Cover ([@SukramJ] - [#30667]) ([homematicip_cloud docs]) (beta fix) +- Ring OTP improvement ([@balloob] - [#30688]) ([ring docs]) (beta fix) +- Log error when integration is missing platform setup ([@balloob] - [#30690]) (beta fix) +- Fix update person validation ([@balloob] - [#30691]) ([person docs]) (beta fix) +- Fix discovery for oauth2 flow implementations ([@frenck] - [#30700]) (beta fix) +- Revert "Forget auth token when going offline so we can reconnect (#26630)" ([@pnbruckner] - [#30705]) ([amcrest docs]) (beta fix) +- Fix Ring wifi sensors ([@balloob] - [#30735]) ([ring docs]) (beta fix) +- update aiopylgtv to 0.2.5 ([@bendavid] - [#30702]) ([webostv docs]) (beta fix) +- update aiopylgtv to 0.2.6 ([@bendavid] - [#30739]) ([webostv docs]) (beta fix) +- Bump ZHA quirks to 0.0.31 ([@dmulcahey] - [#30740]) ([zha docs]) (beta fix) +- Update Ring to 0.6.0 ([@balloob] - [#30748]) ([ring docs]) (beta fix) +- Set default locale for cloud Alexa config ([@balloob] - [#30749]) ([alexa docs]) ([cloud docs]) (beta fix) +- Bump teslajsonpy to 0.2.3 ([@alandtse] - [#30750]) ([tesla docs]) (beta fix) +- Update pyhomematic to 0.1.63 ([@danielperna84] - [#30594]) ([homematic docs]) (beta fix) +- Refactor HomeMatic / Fix issue with 0.104/dev ([@pvizeli] - [#30752]) ([homematic docs]) (beta fix) +- bump aiokef to 0.2.5 which uses locks ([@basnijholt] - [#30753]) ([kef docs]) (beta fix) +- Fix HomeKit behavior with lights supporting color and temperature ([@frenck] - [#30756]) ([homekit docs]) (beta fix) +- Revert #29701 ([@pvizeli] - [#30766]) ([zwave docs]) (beta fix) +- Refactor Ring data handling ([@balloob] - [#30777]) ([ring docs]) (beta fix) +- Restore unit_of_measurement from entity registry ([@Jc2k] - [#30780]) (beta fix) + +[#23789]: https://github.com/home-assistant/home-assistant/pull/23789 +[#24426]: https://github.com/home-assistant/home-assistant/pull/24426 +[#25364]: https://github.com/home-assistant/home-assistant/pull/25364 +[#26650]: https://github.com/home-assistant/home-assistant/pull/26650 +[#27453]: https://github.com/home-assistant/home-assistant/pull/27453 +[#27569]: https://github.com/home-assistant/home-assistant/pull/27569 +[#27692]: https://github.com/home-assistant/home-assistant/pull/27692 +[#27867]: https://github.com/home-assistant/home-assistant/pull/27867 +[#27920]: https://github.com/home-assistant/home-assistant/pull/27920 +[#27964]: https://github.com/home-assistant/home-assistant/pull/27964 +[#28155]: https://github.com/home-assistant/home-assistant/pull/28155 +[#28197]: https://github.com/home-assistant/home-assistant/pull/28197 +[#28276]: https://github.com/home-assistant/home-assistant/pull/28276 +[#28340]: https://github.com/home-assistant/home-assistant/pull/28340 +[#28484]: https://github.com/home-assistant/home-assistant/pull/28484 +[#28537]: https://github.com/home-assistant/home-assistant/pull/28537 +[#28579]: https://github.com/home-assistant/home-assistant/pull/28579 +[#28652]: https://github.com/home-assistant/home-assistant/pull/28652 +[#28671]: https://github.com/home-assistant/home-assistant/pull/28671 +[#28719]: https://github.com/home-assistant/home-assistant/pull/28719 +[#28744]: https://github.com/home-assistant/home-assistant/pull/28744 +[#28837]: https://github.com/home-assistant/home-assistant/pull/28837 +[#28959]: https://github.com/home-assistant/home-assistant/pull/28959 +[#28968]: https://github.com/home-assistant/home-assistant/pull/28968 +[#28975]: https://github.com/home-assistant/home-assistant/pull/28975 +[#29223]: https://github.com/home-assistant/home-assistant/pull/29223 +[#29244]: https://github.com/home-assistant/home-assistant/pull/29244 +[#29246]: https://github.com/home-assistant/home-assistant/pull/29246 +[#29295]: https://github.com/home-assistant/home-assistant/pull/29295 +[#29296]: https://github.com/home-assistant/home-assistant/pull/29296 +[#29374]: https://github.com/home-assistant/home-assistant/pull/29374 +[#29377]: https://github.com/home-assistant/home-assistant/pull/29377 +[#29379]: https://github.com/home-assistant/home-assistant/pull/29379 +[#29439]: https://github.com/home-assistant/home-assistant/pull/29439 +[#29465]: https://github.com/home-assistant/home-assistant/pull/29465 +[#29485]: https://github.com/home-assistant/home-assistant/pull/29485 +[#29487]: https://github.com/home-assistant/home-assistant/pull/29487 +[#29494]: https://github.com/home-assistant/home-assistant/pull/29494 +[#29497]: https://github.com/home-assistant/home-assistant/pull/29497 +[#29498]: https://github.com/home-assistant/home-assistant/pull/29498 +[#29499]: https://github.com/home-assistant/home-assistant/pull/29499 +[#29500]: https://github.com/home-assistant/home-assistant/pull/29500 +[#29501]: https://github.com/home-assistant/home-assistant/pull/29501 +[#29504]: https://github.com/home-assistant/home-assistant/pull/29504 +[#29506]: https://github.com/home-assistant/home-assistant/pull/29506 +[#29507]: https://github.com/home-assistant/home-assistant/pull/29507 +[#29508]: https://github.com/home-assistant/home-assistant/pull/29508 +[#29509]: https://github.com/home-assistant/home-assistant/pull/29509 +[#29510]: https://github.com/home-assistant/home-assistant/pull/29510 +[#29511]: https://github.com/home-assistant/home-assistant/pull/29511 +[#29513]: https://github.com/home-assistant/home-assistant/pull/29513 +[#29514]: https://github.com/home-assistant/home-assistant/pull/29514 +[#29515]: https://github.com/home-assistant/home-assistant/pull/29515 +[#29516]: https://github.com/home-assistant/home-assistant/pull/29516 +[#29517]: https://github.com/home-assistant/home-assistant/pull/29517 +[#29518]: https://github.com/home-assistant/home-assistant/pull/29518 +[#29520]: https://github.com/home-assistant/home-assistant/pull/29520 +[#29523]: https://github.com/home-assistant/home-assistant/pull/29523 +[#29525]: https://github.com/home-assistant/home-assistant/pull/29525 +[#29527]: https://github.com/home-assistant/home-assistant/pull/29527 +[#29530]: https://github.com/home-assistant/home-assistant/pull/29530 +[#29534]: https://github.com/home-assistant/home-assistant/pull/29534 +[#29535]: https://github.com/home-assistant/home-assistant/pull/29535 +[#29537]: https://github.com/home-assistant/home-assistant/pull/29537 +[#29538]: https://github.com/home-assistant/home-assistant/pull/29538 +[#29539]: https://github.com/home-assistant/home-assistant/pull/29539 +[#29540]: https://github.com/home-assistant/home-assistant/pull/29540 +[#29541]: https://github.com/home-assistant/home-assistant/pull/29541 +[#29542]: https://github.com/home-assistant/home-assistant/pull/29542 +[#29543]: https://github.com/home-assistant/home-assistant/pull/29543 +[#29544]: https://github.com/home-assistant/home-assistant/pull/29544 +[#29545]: https://github.com/home-assistant/home-assistant/pull/29545 +[#29546]: https://github.com/home-assistant/home-assistant/pull/29546 +[#29547]: https://github.com/home-assistant/home-assistant/pull/29547 +[#29548]: https://github.com/home-assistant/home-assistant/pull/29548 +[#29550]: https://github.com/home-assistant/home-assistant/pull/29550 +[#29552]: https://github.com/home-assistant/home-assistant/pull/29552 +[#29553]: https://github.com/home-assistant/home-assistant/pull/29553 +[#29555]: https://github.com/home-assistant/home-assistant/pull/29555 +[#29556]: https://github.com/home-assistant/home-assistant/pull/29556 +[#29557]: https://github.com/home-assistant/home-assistant/pull/29557 +[#29558]: https://github.com/home-assistant/home-assistant/pull/29558 +[#29560]: https://github.com/home-assistant/home-assistant/pull/29560 +[#29561]: https://github.com/home-assistant/home-assistant/pull/29561 +[#29562]: https://github.com/home-assistant/home-assistant/pull/29562 +[#29564]: https://github.com/home-assistant/home-assistant/pull/29564 +[#29566]: https://github.com/home-assistant/home-assistant/pull/29566 +[#29571]: https://github.com/home-assistant/home-assistant/pull/29571 +[#29573]: https://github.com/home-assistant/home-assistant/pull/29573 +[#29575]: https://github.com/home-assistant/home-assistant/pull/29575 +[#29579]: https://github.com/home-assistant/home-assistant/pull/29579 +[#29581]: https://github.com/home-assistant/home-assistant/pull/29581 +[#29582]: https://github.com/home-assistant/home-assistant/pull/29582 +[#29584]: https://github.com/home-assistant/home-assistant/pull/29584 +[#29586]: https://github.com/home-assistant/home-assistant/pull/29586 +[#29592]: https://github.com/home-assistant/home-assistant/pull/29592 +[#29594]: https://github.com/home-assistant/home-assistant/pull/29594 +[#29597]: https://github.com/home-assistant/home-assistant/pull/29597 +[#29598]: https://github.com/home-assistant/home-assistant/pull/29598 +[#29601]: https://github.com/home-assistant/home-assistant/pull/29601 +[#29607]: https://github.com/home-assistant/home-assistant/pull/29607 +[#29608]: https://github.com/home-assistant/home-assistant/pull/29608 +[#29609]: https://github.com/home-assistant/home-assistant/pull/29609 +[#29610]: https://github.com/home-assistant/home-assistant/pull/29610 +[#29611]: https://github.com/home-assistant/home-assistant/pull/29611 +[#29612]: https://github.com/home-assistant/home-assistant/pull/29612 +[#29613]: https://github.com/home-assistant/home-assistant/pull/29613 +[#29614]: https://github.com/home-assistant/home-assistant/pull/29614 +[#29615]: https://github.com/home-assistant/home-assistant/pull/29615 +[#29616]: https://github.com/home-assistant/home-assistant/pull/29616 +[#29617]: https://github.com/home-assistant/home-assistant/pull/29617 +[#29618]: https://github.com/home-assistant/home-assistant/pull/29618 +[#29619]: https://github.com/home-assistant/home-assistant/pull/29619 +[#29620]: https://github.com/home-assistant/home-assistant/pull/29620 +[#29621]: https://github.com/home-assistant/home-assistant/pull/29621 +[#29622]: https://github.com/home-assistant/home-assistant/pull/29622 +[#29623]: https://github.com/home-assistant/home-assistant/pull/29623 +[#29624]: https://github.com/home-assistant/home-assistant/pull/29624 +[#29625]: https://github.com/home-assistant/home-assistant/pull/29625 +[#29626]: https://github.com/home-assistant/home-assistant/pull/29626 +[#29627]: https://github.com/home-assistant/home-assistant/pull/29627 +[#29628]: https://github.com/home-assistant/home-assistant/pull/29628 +[#29629]: https://github.com/home-assistant/home-assistant/pull/29629 +[#29630]: https://github.com/home-assistant/home-assistant/pull/29630 +[#29631]: https://github.com/home-assistant/home-assistant/pull/29631 +[#29632]: https://github.com/home-assistant/home-assistant/pull/29632 +[#29633]: https://github.com/home-assistant/home-assistant/pull/29633 +[#29634]: https://github.com/home-assistant/home-assistant/pull/29634 +[#29635]: https://github.com/home-assistant/home-assistant/pull/29635 +[#29638]: https://github.com/home-assistant/home-assistant/pull/29638 +[#29641]: https://github.com/home-assistant/home-assistant/pull/29641 +[#29644]: https://github.com/home-assistant/home-assistant/pull/29644 +[#29645]: https://github.com/home-assistant/home-assistant/pull/29645 +[#29646]: https://github.com/home-assistant/home-assistant/pull/29646 +[#29647]: https://github.com/home-assistant/home-assistant/pull/29647 +[#29648]: https://github.com/home-assistant/home-assistant/pull/29648 +[#29649]: https://github.com/home-assistant/home-assistant/pull/29649 +[#29650]: https://github.com/home-assistant/home-assistant/pull/29650 +[#29651]: https://github.com/home-assistant/home-assistant/pull/29651 +[#29652]: https://github.com/home-assistant/home-assistant/pull/29652 +[#29653]: https://github.com/home-assistant/home-assistant/pull/29653 +[#29654]: https://github.com/home-assistant/home-assistant/pull/29654 +[#29655]: https://github.com/home-assistant/home-assistant/pull/29655 +[#29656]: https://github.com/home-assistant/home-assistant/pull/29656 +[#29657]: https://github.com/home-assistant/home-assistant/pull/29657 +[#29658]: https://github.com/home-assistant/home-assistant/pull/29658 +[#29659]: https://github.com/home-assistant/home-assistant/pull/29659 +[#29660]: https://github.com/home-assistant/home-assistant/pull/29660 +[#29662]: https://github.com/home-assistant/home-assistant/pull/29662 +[#29663]: https://github.com/home-assistant/home-assistant/pull/29663 +[#29664]: https://github.com/home-assistant/home-assistant/pull/29664 +[#29665]: https://github.com/home-assistant/home-assistant/pull/29665 +[#29666]: https://github.com/home-assistant/home-assistant/pull/29666 +[#29667]: https://github.com/home-assistant/home-assistant/pull/29667 +[#29668]: https://github.com/home-assistant/home-assistant/pull/29668 +[#29669]: https://github.com/home-assistant/home-assistant/pull/29669 +[#29670]: https://github.com/home-assistant/home-assistant/pull/29670 +[#29671]: https://github.com/home-assistant/home-assistant/pull/29671 +[#29672]: https://github.com/home-assistant/home-assistant/pull/29672 +[#29673]: https://github.com/home-assistant/home-assistant/pull/29673 +[#29674]: https://github.com/home-assistant/home-assistant/pull/29674 +[#29675]: https://github.com/home-assistant/home-assistant/pull/29675 +[#29676]: https://github.com/home-assistant/home-assistant/pull/29676 +[#29677]: https://github.com/home-assistant/home-assistant/pull/29677 +[#29678]: https://github.com/home-assistant/home-assistant/pull/29678 +[#29679]: https://github.com/home-assistant/home-assistant/pull/29679 +[#29680]: https://github.com/home-assistant/home-assistant/pull/29680 +[#29681]: https://github.com/home-assistant/home-assistant/pull/29681 +[#29682]: https://github.com/home-assistant/home-assistant/pull/29682 +[#29683]: https://github.com/home-assistant/home-assistant/pull/29683 +[#29684]: https://github.com/home-assistant/home-assistant/pull/29684 +[#29685]: https://github.com/home-assistant/home-assistant/pull/29685 +[#29687]: https://github.com/home-assistant/home-assistant/pull/29687 +[#29688]: https://github.com/home-assistant/home-assistant/pull/29688 +[#29689]: https://github.com/home-assistant/home-assistant/pull/29689 +[#29690]: https://github.com/home-assistant/home-assistant/pull/29690 +[#29691]: https://github.com/home-assistant/home-assistant/pull/29691 +[#29692]: https://github.com/home-assistant/home-assistant/pull/29692 +[#29693]: https://github.com/home-assistant/home-assistant/pull/29693 +[#29694]: https://github.com/home-assistant/home-assistant/pull/29694 +[#29695]: https://github.com/home-assistant/home-assistant/pull/29695 +[#29696]: https://github.com/home-assistant/home-assistant/pull/29696 +[#29697]: https://github.com/home-assistant/home-assistant/pull/29697 +[#29698]: https://github.com/home-assistant/home-assistant/pull/29698 +[#29699]: https://github.com/home-assistant/home-assistant/pull/29699 +[#29701]: https://github.com/home-assistant/home-assistant/pull/29701 +[#29702]: https://github.com/home-assistant/home-assistant/pull/29702 +[#29703]: https://github.com/home-assistant/home-assistant/pull/29703 +[#29704]: https://github.com/home-assistant/home-assistant/pull/29704 +[#29705]: https://github.com/home-assistant/home-assistant/pull/29705 +[#29706]: https://github.com/home-assistant/home-assistant/pull/29706 +[#29707]: https://github.com/home-assistant/home-assistant/pull/29707 +[#29708]: https://github.com/home-assistant/home-assistant/pull/29708 +[#29709]: https://github.com/home-assistant/home-assistant/pull/29709 +[#29710]: https://github.com/home-assistant/home-assistant/pull/29710 +[#29711]: https://github.com/home-assistant/home-assistant/pull/29711 +[#29712]: https://github.com/home-assistant/home-assistant/pull/29712 +[#29713]: https://github.com/home-assistant/home-assistant/pull/29713 +[#29714]: https://github.com/home-assistant/home-assistant/pull/29714 +[#29715]: https://github.com/home-assistant/home-assistant/pull/29715 +[#29716]: https://github.com/home-assistant/home-assistant/pull/29716 +[#29717]: https://github.com/home-assistant/home-assistant/pull/29717 +[#29718]: https://github.com/home-assistant/home-assistant/pull/29718 +[#29719]: https://github.com/home-assistant/home-assistant/pull/29719 +[#29720]: https://github.com/home-assistant/home-assistant/pull/29720 +[#29721]: https://github.com/home-assistant/home-assistant/pull/29721 +[#29722]: https://github.com/home-assistant/home-assistant/pull/29722 +[#29723]: https://github.com/home-assistant/home-assistant/pull/29723 +[#29724]: https://github.com/home-assistant/home-assistant/pull/29724 +[#29725]: https://github.com/home-assistant/home-assistant/pull/29725 +[#29726]: https://github.com/home-assistant/home-assistant/pull/29726 +[#29736]: https://github.com/home-assistant/home-assistant/pull/29736 +[#29738]: https://github.com/home-assistant/home-assistant/pull/29738 +[#29739]: https://github.com/home-assistant/home-assistant/pull/29739 +[#29745]: https://github.com/home-assistant/home-assistant/pull/29745 +[#29747]: https://github.com/home-assistant/home-assistant/pull/29747 +[#29748]: https://github.com/home-assistant/home-assistant/pull/29748 +[#29749]: https://github.com/home-assistant/home-assistant/pull/29749 +[#29750]: https://github.com/home-assistant/home-assistant/pull/29750 +[#29751]: https://github.com/home-assistant/home-assistant/pull/29751 +[#29752]: https://github.com/home-assistant/home-assistant/pull/29752 +[#29753]: https://github.com/home-assistant/home-assistant/pull/29753 +[#29754]: https://github.com/home-assistant/home-assistant/pull/29754 +[#29755]: https://github.com/home-assistant/home-assistant/pull/29755 +[#29756]: https://github.com/home-assistant/home-assistant/pull/29756 +[#29757]: https://github.com/home-assistant/home-assistant/pull/29757 +[#29758]: https://github.com/home-assistant/home-assistant/pull/29758 +[#29759]: https://github.com/home-assistant/home-assistant/pull/29759 +[#29760]: https://github.com/home-assistant/home-assistant/pull/29760 +[#29761]: https://github.com/home-assistant/home-assistant/pull/29761 +[#29762]: https://github.com/home-assistant/home-assistant/pull/29762 +[#29763]: https://github.com/home-assistant/home-assistant/pull/29763 +[#29764]: https://github.com/home-assistant/home-assistant/pull/29764 +[#29765]: https://github.com/home-assistant/home-assistant/pull/29765 +[#29766]: https://github.com/home-assistant/home-assistant/pull/29766 +[#29767]: https://github.com/home-assistant/home-assistant/pull/29767 +[#29768]: https://github.com/home-assistant/home-assistant/pull/29768 +[#29769]: https://github.com/home-assistant/home-assistant/pull/29769 +[#29770]: https://github.com/home-assistant/home-assistant/pull/29770 +[#29771]: https://github.com/home-assistant/home-assistant/pull/29771 +[#29772]: https://github.com/home-assistant/home-assistant/pull/29772 +[#29773]: https://github.com/home-assistant/home-assistant/pull/29773 +[#29774]: https://github.com/home-assistant/home-assistant/pull/29774 +[#29775]: https://github.com/home-assistant/home-assistant/pull/29775 +[#29776]: https://github.com/home-assistant/home-assistant/pull/29776 +[#29777]: https://github.com/home-assistant/home-assistant/pull/29777 +[#29778]: https://github.com/home-assistant/home-assistant/pull/29778 +[#29779]: https://github.com/home-assistant/home-assistant/pull/29779 +[#29780]: https://github.com/home-assistant/home-assistant/pull/29780 +[#29781]: https://github.com/home-assistant/home-assistant/pull/29781 +[#29782]: https://github.com/home-assistant/home-assistant/pull/29782 +[#29783]: https://github.com/home-assistant/home-assistant/pull/29783 +[#29784]: https://github.com/home-assistant/home-assistant/pull/29784 +[#29785]: https://github.com/home-assistant/home-assistant/pull/29785 +[#29788]: https://github.com/home-assistant/home-assistant/pull/29788 +[#29789]: https://github.com/home-assistant/home-assistant/pull/29789 +[#29790]: https://github.com/home-assistant/home-assistant/pull/29790 +[#29791]: https://github.com/home-assistant/home-assistant/pull/29791 +[#29792]: https://github.com/home-assistant/home-assistant/pull/29792 +[#29795]: https://github.com/home-assistant/home-assistant/pull/29795 +[#29797]: https://github.com/home-assistant/home-assistant/pull/29797 +[#29798]: https://github.com/home-assistant/home-assistant/pull/29798 +[#29799]: https://github.com/home-assistant/home-assistant/pull/29799 +[#29801]: https://github.com/home-assistant/home-assistant/pull/29801 +[#29802]: https://github.com/home-assistant/home-assistant/pull/29802 +[#29803]: https://github.com/home-assistant/home-assistant/pull/29803 +[#29805]: https://github.com/home-assistant/home-assistant/pull/29805 +[#29806]: https://github.com/home-assistant/home-assistant/pull/29806 +[#29808]: https://github.com/home-assistant/home-assistant/pull/29808 +[#29811]: https://github.com/home-assistant/home-assistant/pull/29811 +[#29818]: https://github.com/home-assistant/home-assistant/pull/29818 +[#29828]: https://github.com/home-assistant/home-assistant/pull/29828 +[#29829]: https://github.com/home-assistant/home-assistant/pull/29829 +[#29830]: https://github.com/home-assistant/home-assistant/pull/29830 +[#29836]: https://github.com/home-assistant/home-assistant/pull/29836 +[#29840]: https://github.com/home-assistant/home-assistant/pull/29840 +[#29842]: https://github.com/home-assistant/home-assistant/pull/29842 +[#29860]: https://github.com/home-assistant/home-assistant/pull/29860 +[#29861]: https://github.com/home-assistant/home-assistant/pull/29861 +[#29874]: https://github.com/home-assistant/home-assistant/pull/29874 +[#29878]: https://github.com/home-assistant/home-assistant/pull/29878 +[#29882]: https://github.com/home-assistant/home-assistant/pull/29882 +[#29888]: https://github.com/home-assistant/home-assistant/pull/29888 +[#29890]: https://github.com/home-assistant/home-assistant/pull/29890 +[#29900]: https://github.com/home-assistant/home-assistant/pull/29900 +[#29903]: https://github.com/home-assistant/home-assistant/pull/29903 +[#29906]: https://github.com/home-assistant/home-assistant/pull/29906 +[#29910]: https://github.com/home-assistant/home-assistant/pull/29910 +[#29911]: https://github.com/home-assistant/home-assistant/pull/29911 +[#29912]: https://github.com/home-assistant/home-assistant/pull/29912 +[#29914]: https://github.com/home-assistant/home-assistant/pull/29914 +[#29917]: https://github.com/home-assistant/home-assistant/pull/29917 +[#29918]: https://github.com/home-assistant/home-assistant/pull/29918 +[#29932]: https://github.com/home-assistant/home-assistant/pull/29932 +[#29938]: https://github.com/home-assistant/home-assistant/pull/29938 +[#29948]: https://github.com/home-assistant/home-assistant/pull/29948 +[#29953]: https://github.com/home-assistant/home-assistant/pull/29953 +[#29954]: https://github.com/home-assistant/home-assistant/pull/29954 +[#29959]: https://github.com/home-assistant/home-assistant/pull/29959 +[#29960]: https://github.com/home-assistant/home-assistant/pull/29960 +[#29965]: https://github.com/home-assistant/home-assistant/pull/29965 +[#29966]: https://github.com/home-assistant/home-assistant/pull/29966 +[#29968]: https://github.com/home-assistant/home-assistant/pull/29968 +[#29969]: https://github.com/home-assistant/home-assistant/pull/29969 +[#29972]: https://github.com/home-assistant/home-assistant/pull/29972 +[#29973]: https://github.com/home-assistant/home-assistant/pull/29973 +[#29977]: https://github.com/home-assistant/home-assistant/pull/29977 +[#29978]: https://github.com/home-assistant/home-assistant/pull/29978 +[#29979]: https://github.com/home-assistant/home-assistant/pull/29979 +[#29984]: https://github.com/home-assistant/home-assistant/pull/29984 +[#29989]: https://github.com/home-assistant/home-assistant/pull/29989 +[#29990]: https://github.com/home-assistant/home-assistant/pull/29990 +[#29991]: https://github.com/home-assistant/home-assistant/pull/29991 +[#29995]: https://github.com/home-assistant/home-assistant/pull/29995 +[#30000]: https://github.com/home-assistant/home-assistant/pull/30000 +[#30002]: https://github.com/home-assistant/home-assistant/pull/30002 +[#30005]: https://github.com/home-assistant/home-assistant/pull/30005 +[#30008]: https://github.com/home-assistant/home-assistant/pull/30008 +[#30011]: https://github.com/home-assistant/home-assistant/pull/30011 +[#30015]: https://github.com/home-assistant/home-assistant/pull/30015 +[#30027]: https://github.com/home-assistant/home-assistant/pull/30027 +[#30028]: https://github.com/home-assistant/home-assistant/pull/30028 +[#30030]: https://github.com/home-assistant/home-assistant/pull/30030 +[#30034]: https://github.com/home-assistant/home-assistant/pull/30034 +[#30035]: https://github.com/home-assistant/home-assistant/pull/30035 +[#30037]: https://github.com/home-assistant/home-assistant/pull/30037 +[#30053]: https://github.com/home-assistant/home-assistant/pull/30053 +[#30057]: https://github.com/home-assistant/home-assistant/pull/30057 +[#30059]: https://github.com/home-assistant/home-assistant/pull/30059 +[#30068]: https://github.com/home-assistant/home-assistant/pull/30068 +[#30077]: https://github.com/home-assistant/home-assistant/pull/30077 +[#30082]: https://github.com/home-assistant/home-assistant/pull/30082 +[#30083]: https://github.com/home-assistant/home-assistant/pull/30083 +[#30086]: https://github.com/home-assistant/home-assistant/pull/30086 +[#30090]: https://github.com/home-assistant/home-assistant/pull/30090 +[#30093]: https://github.com/home-assistant/home-assistant/pull/30093 +[#30094]: https://github.com/home-assistant/home-assistant/pull/30094 +[#30097]: https://github.com/home-assistant/home-assistant/pull/30097 +[#30099]: https://github.com/home-assistant/home-assistant/pull/30099 +[#30100]: https://github.com/home-assistant/home-assistant/pull/30100 +[#30101]: https://github.com/home-assistant/home-assistant/pull/30101 +[#30104]: https://github.com/home-assistant/home-assistant/pull/30104 +[#30106]: https://github.com/home-assistant/home-assistant/pull/30106 +[#30107]: https://github.com/home-assistant/home-assistant/pull/30107 +[#30108]: https://github.com/home-assistant/home-assistant/pull/30108 +[#30110]: https://github.com/home-assistant/home-assistant/pull/30110 +[#30122]: https://github.com/home-assistant/home-assistant/pull/30122 +[#30123]: https://github.com/home-assistant/home-assistant/pull/30123 +[#30125]: https://github.com/home-assistant/home-assistant/pull/30125 +[#30130]: https://github.com/home-assistant/home-assistant/pull/30130 +[#30131]: https://github.com/home-assistant/home-assistant/pull/30131 +[#30132]: https://github.com/home-assistant/home-assistant/pull/30132 +[#30133]: https://github.com/home-assistant/home-assistant/pull/30133 +[#30134]: https://github.com/home-assistant/home-assistant/pull/30134 +[#30135]: https://github.com/home-assistant/home-assistant/pull/30135 +[#30138]: https://github.com/home-assistant/home-assistant/pull/30138 +[#30139]: https://github.com/home-assistant/home-assistant/pull/30139 +[#30140]: https://github.com/home-assistant/home-assistant/pull/30140 +[#30142]: https://github.com/home-assistant/home-assistant/pull/30142 +[#30144]: https://github.com/home-assistant/home-assistant/pull/30144 +[#30145]: https://github.com/home-assistant/home-assistant/pull/30145 +[#30149]: https://github.com/home-assistant/home-assistant/pull/30149 +[#30158]: https://github.com/home-assistant/home-assistant/pull/30158 +[#30159]: https://github.com/home-assistant/home-assistant/pull/30159 +[#30170]: https://github.com/home-assistant/home-assistant/pull/30170 +[#30171]: https://github.com/home-assistant/home-assistant/pull/30171 +[#30172]: https://github.com/home-assistant/home-assistant/pull/30172 +[#30178]: https://github.com/home-assistant/home-assistant/pull/30178 +[#30179]: https://github.com/home-assistant/home-assistant/pull/30179 +[#30183]: https://github.com/home-assistant/home-assistant/pull/30183 +[#30185]: https://github.com/home-assistant/home-assistant/pull/30185 +[#30187]: https://github.com/home-assistant/home-assistant/pull/30187 +[#30191]: https://github.com/home-assistant/home-assistant/pull/30191 +[#30196]: https://github.com/home-assistant/home-assistant/pull/30196 +[#30203]: https://github.com/home-assistant/home-assistant/pull/30203 +[#30206]: https://github.com/home-assistant/home-assistant/pull/30206 +[#30207]: https://github.com/home-assistant/home-assistant/pull/30207 +[#30208]: https://github.com/home-assistant/home-assistant/pull/30208 +[#30213]: https://github.com/home-assistant/home-assistant/pull/30213 +[#30214]: https://github.com/home-assistant/home-assistant/pull/30214 +[#30217]: https://github.com/home-assistant/home-assistant/pull/30217 +[#30223]: https://github.com/home-assistant/home-assistant/pull/30223 +[#30225]: https://github.com/home-assistant/home-assistant/pull/30225 +[#30226]: https://github.com/home-assistant/home-assistant/pull/30226 +[#30228]: https://github.com/home-assistant/home-assistant/pull/30228 +[#30234]: https://github.com/home-assistant/home-assistant/pull/30234 +[#30237]: https://github.com/home-assistant/home-assistant/pull/30237 +[#30239]: https://github.com/home-assistant/home-assistant/pull/30239 +[#30240]: https://github.com/home-assistant/home-assistant/pull/30240 +[#30247]: https://github.com/home-assistant/home-assistant/pull/30247 +[#30249]: https://github.com/home-assistant/home-assistant/pull/30249 +[#30250]: https://github.com/home-assistant/home-assistant/pull/30250 +[#30254]: https://github.com/home-assistant/home-assistant/pull/30254 +[#30255]: https://github.com/home-assistant/home-assistant/pull/30255 +[#30256]: https://github.com/home-assistant/home-assistant/pull/30256 +[#30257]: https://github.com/home-assistant/home-assistant/pull/30257 +[#30259]: https://github.com/home-assistant/home-assistant/pull/30259 +[#30261]: https://github.com/home-assistant/home-assistant/pull/30261 +[#30268]: https://github.com/home-assistant/home-assistant/pull/30268 +[#30269]: https://github.com/home-assistant/home-assistant/pull/30269 +[#30270]: https://github.com/home-assistant/home-assistant/pull/30270 +[#30273]: https://github.com/home-assistant/home-assistant/pull/30273 +[#30274]: https://github.com/home-assistant/home-assistant/pull/30274 +[#30279]: https://github.com/home-assistant/home-assistant/pull/30279 +[#30280]: https://github.com/home-assistant/home-assistant/pull/30280 +[#30285]: https://github.com/home-assistant/home-assistant/pull/30285 +[#30286]: https://github.com/home-assistant/home-assistant/pull/30286 +[#30287]: https://github.com/home-assistant/home-assistant/pull/30287 +[#30288]: https://github.com/home-assistant/home-assistant/pull/30288 +[#30297]: https://github.com/home-assistant/home-assistant/pull/30297 +[#30300]: https://github.com/home-assistant/home-assistant/pull/30300 +[#30301]: https://github.com/home-assistant/home-assistant/pull/30301 +[#30303]: https://github.com/home-assistant/home-assistant/pull/30303 +[#30305]: https://github.com/home-assistant/home-assistant/pull/30305 +[#30306]: https://github.com/home-assistant/home-assistant/pull/30306 +[#30308]: https://github.com/home-assistant/home-assistant/pull/30308 +[#30309]: https://github.com/home-assistant/home-assistant/pull/30309 +[#30310]: https://github.com/home-assistant/home-assistant/pull/30310 +[#30313]: https://github.com/home-assistant/home-assistant/pull/30313 +[#30315]: https://github.com/home-assistant/home-assistant/pull/30315 +[#30317]: https://github.com/home-assistant/home-assistant/pull/30317 +[#30318]: https://github.com/home-assistant/home-assistant/pull/30318 +[#30319]: https://github.com/home-assistant/home-assistant/pull/30319 +[#30320]: https://github.com/home-assistant/home-assistant/pull/30320 +[#30321]: https://github.com/home-assistant/home-assistant/pull/30321 +[#30323]: https://github.com/home-assistant/home-assistant/pull/30323 +[#30325]: https://github.com/home-assistant/home-assistant/pull/30325 +[#30326]: https://github.com/home-assistant/home-assistant/pull/30326 +[#30327]: https://github.com/home-assistant/home-assistant/pull/30327 +[#30329]: https://github.com/home-assistant/home-assistant/pull/30329 +[#30330]: https://github.com/home-assistant/home-assistant/pull/30330 +[#30331]: https://github.com/home-assistant/home-assistant/pull/30331 +[#30332]: https://github.com/home-assistant/home-assistant/pull/30332 +[#30333]: https://github.com/home-assistant/home-assistant/pull/30333 +[#30335]: https://github.com/home-assistant/home-assistant/pull/30335 +[#30336]: https://github.com/home-assistant/home-assistant/pull/30336 +[#30338]: https://github.com/home-assistant/home-assistant/pull/30338 +[#30341]: https://github.com/home-assistant/home-assistant/pull/30341 +[#30342]: https://github.com/home-assistant/home-assistant/pull/30342 +[#30347]: https://github.com/home-assistant/home-assistant/pull/30347 +[#30348]: https://github.com/home-assistant/home-assistant/pull/30348 +[#30350]: https://github.com/home-assistant/home-assistant/pull/30350 +[#30351]: https://github.com/home-assistant/home-assistant/pull/30351 +[#30352]: https://github.com/home-assistant/home-assistant/pull/30352 +[#30353]: https://github.com/home-assistant/home-assistant/pull/30353 +[#30354]: https://github.com/home-assistant/home-assistant/pull/30354 +[#30355]: https://github.com/home-assistant/home-assistant/pull/30355 +[#30358]: https://github.com/home-assistant/home-assistant/pull/30358 +[#30359]: https://github.com/home-assistant/home-assistant/pull/30359 +[#30360]: https://github.com/home-assistant/home-assistant/pull/30360 +[#30361]: https://github.com/home-assistant/home-assistant/pull/30361 +[#30363]: https://github.com/home-assistant/home-assistant/pull/30363 +[#30364]: https://github.com/home-assistant/home-assistant/pull/30364 +[#30365]: https://github.com/home-assistant/home-assistant/pull/30365 +[#30366]: https://github.com/home-assistant/home-assistant/pull/30366 +[#30368]: https://github.com/home-assistant/home-assistant/pull/30368 +[#30369]: https://github.com/home-assistant/home-assistant/pull/30369 +[#30370]: https://github.com/home-assistant/home-assistant/pull/30370 +[#30371]: https://github.com/home-assistant/home-assistant/pull/30371 +[#30372]: https://github.com/home-assistant/home-assistant/pull/30372 +[#30374]: https://github.com/home-assistant/home-assistant/pull/30374 +[#30375]: https://github.com/home-assistant/home-assistant/pull/30375 +[#30376]: https://github.com/home-assistant/home-assistant/pull/30376 +[#30377]: https://github.com/home-assistant/home-assistant/pull/30377 +[#30379]: https://github.com/home-assistant/home-assistant/pull/30379 +[#30386]: https://github.com/home-assistant/home-assistant/pull/30386 +[#30387]: https://github.com/home-assistant/home-assistant/pull/30387 +[#30388]: https://github.com/home-assistant/home-assistant/pull/30388 +[#30389]: https://github.com/home-assistant/home-assistant/pull/30389 +[#30390]: https://github.com/home-assistant/home-assistant/pull/30390 +[#30391]: https://github.com/home-assistant/home-assistant/pull/30391 +[#30392]: https://github.com/home-assistant/home-assistant/pull/30392 +[#30397]: https://github.com/home-assistant/home-assistant/pull/30397 +[#30402]: https://github.com/home-assistant/home-assistant/pull/30402 +[#30403]: https://github.com/home-assistant/home-assistant/pull/30403 +[#30405]: https://github.com/home-assistant/home-assistant/pull/30405 +[#30406]: https://github.com/home-assistant/home-assistant/pull/30406 +[#30411]: https://github.com/home-assistant/home-assistant/pull/30411 +[#30415]: https://github.com/home-assistant/home-assistant/pull/30415 +[#30416]: https://github.com/home-assistant/home-assistant/pull/30416 +[#30418]: https://github.com/home-assistant/home-assistant/pull/30418 +[#30421]: https://github.com/home-assistant/home-assistant/pull/30421 +[#30422]: https://github.com/home-assistant/home-assistant/pull/30422 +[#30423]: https://github.com/home-assistant/home-assistant/pull/30423 +[#30428]: https://github.com/home-assistant/home-assistant/pull/30428 +[#30429]: https://github.com/home-assistant/home-assistant/pull/30429 +[#30430]: https://github.com/home-assistant/home-assistant/pull/30430 +[#30432]: https://github.com/home-assistant/home-assistant/pull/30432 +[#30433]: https://github.com/home-assistant/home-assistant/pull/30433 +[#30435]: https://github.com/home-assistant/home-assistant/pull/30435 +[#30437]: https://github.com/home-assistant/home-assistant/pull/30437 +[#30438]: https://github.com/home-assistant/home-assistant/pull/30438 +[#30439]: https://github.com/home-assistant/home-assistant/pull/30439 +[#30440]: https://github.com/home-assistant/home-assistant/pull/30440 +[#30442]: https://github.com/home-assistant/home-assistant/pull/30442 +[#30444]: https://github.com/home-assistant/home-assistant/pull/30444 +[#30445]: https://github.com/home-assistant/home-assistant/pull/30445 +[#30451]: https://github.com/home-assistant/home-assistant/pull/30451 +[#30453]: https://github.com/home-assistant/home-assistant/pull/30453 +[#30454]: https://github.com/home-assistant/home-assistant/pull/30454 +[#30455]: https://github.com/home-assistant/home-assistant/pull/30455 +[#30457]: https://github.com/home-assistant/home-assistant/pull/30457 +[#30458]: https://github.com/home-assistant/home-assistant/pull/30458 +[#30460]: https://github.com/home-assistant/home-assistant/pull/30460 +[#30461]: https://github.com/home-assistant/home-assistant/pull/30461 +[#30463]: https://github.com/home-assistant/home-assistant/pull/30463 +[#30467]: https://github.com/home-assistant/home-assistant/pull/30467 +[#30469]: https://github.com/home-assistant/home-assistant/pull/30469 +[#30471]: https://github.com/home-assistant/home-assistant/pull/30471 +[#30472]: https://github.com/home-assistant/home-assistant/pull/30472 +[#30474]: https://github.com/home-assistant/home-assistant/pull/30474 +[#30475]: https://github.com/home-assistant/home-assistant/pull/30475 +[#30477]: https://github.com/home-assistant/home-assistant/pull/30477 +[#30478]: https://github.com/home-assistant/home-assistant/pull/30478 +[#30480]: https://github.com/home-assistant/home-assistant/pull/30480 +[#30483]: https://github.com/home-assistant/home-assistant/pull/30483 +[#30485]: https://github.com/home-assistant/home-assistant/pull/30485 +[#30486]: https://github.com/home-assistant/home-assistant/pull/30486 +[#30490]: https://github.com/home-assistant/home-assistant/pull/30490 +[#30493]: https://github.com/home-assistant/home-assistant/pull/30493 +[#30496]: https://github.com/home-assistant/home-assistant/pull/30496 +[#30497]: https://github.com/home-assistant/home-assistant/pull/30497 +[#30500]: https://github.com/home-assistant/home-assistant/pull/30500 +[#30501]: https://github.com/home-assistant/home-assistant/pull/30501 +[#30503]: https://github.com/home-assistant/home-assistant/pull/30503 +[#30504]: https://github.com/home-assistant/home-assistant/pull/30504 +[#30506]: https://github.com/home-assistant/home-assistant/pull/30506 +[#30510]: https://github.com/home-assistant/home-assistant/pull/30510 +[#30512]: https://github.com/home-assistant/home-assistant/pull/30512 +[#30514]: https://github.com/home-assistant/home-assistant/pull/30514 +[#30516]: https://github.com/home-assistant/home-assistant/pull/30516 +[#30521]: https://github.com/home-assistant/home-assistant/pull/30521 +[#30522]: https://github.com/home-assistant/home-assistant/pull/30522 +[#30526]: https://github.com/home-assistant/home-assistant/pull/30526 +[#30527]: https://github.com/home-assistant/home-assistant/pull/30527 +[#30529]: https://github.com/home-assistant/home-assistant/pull/30529 +[#30532]: https://github.com/home-assistant/home-assistant/pull/30532 +[#30536]: https://github.com/home-assistant/home-assistant/pull/30536 +[#30538]: https://github.com/home-assistant/home-assistant/pull/30538 +[#30539]: https://github.com/home-assistant/home-assistant/pull/30539 +[#30541]: https://github.com/home-assistant/home-assistant/pull/30541 +[#30542]: https://github.com/home-assistant/home-assistant/pull/30542 +[#30543]: https://github.com/home-assistant/home-assistant/pull/30543 +[#30544]: https://github.com/home-assistant/home-assistant/pull/30544 +[#30545]: https://github.com/home-assistant/home-assistant/pull/30545 +[#30546]: https://github.com/home-assistant/home-assistant/pull/30546 +[#30547]: https://github.com/home-assistant/home-assistant/pull/30547 +[#30550]: https://github.com/home-assistant/home-assistant/pull/30550 +[#30551]: https://github.com/home-assistant/home-assistant/pull/30551 +[#30552]: https://github.com/home-assistant/home-assistant/pull/30552 +[#30553]: https://github.com/home-assistant/home-assistant/pull/30553 +[#30558]: https://github.com/home-assistant/home-assistant/pull/30558 +[#30561]: https://github.com/home-assistant/home-assistant/pull/30561 +[#30564]: https://github.com/home-assistant/home-assistant/pull/30564 +[#30566]: https://github.com/home-assistant/home-assistant/pull/30566 +[#30569]: https://github.com/home-assistant/home-assistant/pull/30569 +[#30571]: https://github.com/home-assistant/home-assistant/pull/30571 +[#30572]: https://github.com/home-assistant/home-assistant/pull/30572 +[#30577]: https://github.com/home-assistant/home-assistant/pull/30577 +[#30579]: https://github.com/home-assistant/home-assistant/pull/30579 +[#30583]: https://github.com/home-assistant/home-assistant/pull/30583 +[#30584]: https://github.com/home-assistant/home-assistant/pull/30584 +[#30586]: https://github.com/home-assistant/home-assistant/pull/30586 +[#30589]: https://github.com/home-assistant/home-assistant/pull/30589 +[#30590]: https://github.com/home-assistant/home-assistant/pull/30590 +[#30591]: https://github.com/home-assistant/home-assistant/pull/30591 +[#30594]: https://github.com/home-assistant/home-assistant/pull/30594 +[#30597]: https://github.com/home-assistant/home-assistant/pull/30597 +[#30608]: https://github.com/home-assistant/home-assistant/pull/30608 +[#30630]: https://github.com/home-assistant/home-assistant/pull/30630 +[#30647]: https://github.com/home-assistant/home-assistant/pull/30647 +[#30657]: https://github.com/home-assistant/home-assistant/pull/30657 +[#30661]: https://github.com/home-assistant/home-assistant/pull/30661 +[#30663]: https://github.com/home-assistant/home-assistant/pull/30663 +[#30666]: https://github.com/home-assistant/home-assistant/pull/30666 +[#30667]: https://github.com/home-assistant/home-assistant/pull/30667 +[#30688]: https://github.com/home-assistant/home-assistant/pull/30688 +[#30690]: https://github.com/home-assistant/home-assistant/pull/30690 +[#30691]: https://github.com/home-assistant/home-assistant/pull/30691 +[#30700]: https://github.com/home-assistant/home-assistant/pull/30700 +[#30702]: https://github.com/home-assistant/home-assistant/pull/30702 +[#30705]: https://github.com/home-assistant/home-assistant/pull/30705 +[#30735]: https://github.com/home-assistant/home-assistant/pull/30735 +[#30739]: https://github.com/home-assistant/home-assistant/pull/30739 +[#30740]: https://github.com/home-assistant/home-assistant/pull/30740 +[#30748]: https://github.com/home-assistant/home-assistant/pull/30748 +[#30749]: https://github.com/home-assistant/home-assistant/pull/30749 +[#30750]: https://github.com/home-assistant/home-assistant/pull/30750 +[#30752]: https://github.com/home-assistant/home-assistant/pull/30752 +[#30753]: https://github.com/home-assistant/home-assistant/pull/30753 +[#30756]: https://github.com/home-assistant/home-assistant/pull/30756 +[#30766]: https://github.com/home-assistant/home-assistant/pull/30766 +[#30777]: https://github.com/home-assistant/home-assistant/pull/30777 +[#30780]: https://github.com/home-assistant/home-assistant/pull/30780 +[@1v0dev]: https://github.com/1v0dev +[@AaronDavidSchneider]: https://github.com/AaronDavidSchneider +[@Adminiuga]: https://github.com/Adminiuga +[@Alexxander0]: https://github.com/Alexxander0 +[@BKPepe]: https://github.com/BKPepe +[@Cereal2nd]: https://github.com/Cereal2nd +[@DjMoren]: https://github.com/DjMoren +[@Emacee]: https://github.com/Emacee +[@Ernst79]: https://github.com/Ernst79 +[@FrengerH]: https://github.com/FrengerH +[@HarlemSquirrel]: https://github.com/HarlemSquirrel +[@Hypfer]: https://github.com/Hypfer +[@InuSasha]: https://github.com/InuSasha +[@Jc2k]: https://github.com/Jc2k +[@JeffLIrion]: https://github.com/JeffLIrion +[@Kane610]: https://github.com/Kane610 +[@Kerwood]: https://github.com/Kerwood +[@Lars-P]: https://github.com/Lars-P +[@Mariusthvdb]: https://github.com/Mariusthvdb +[@P-Verbrugge]: https://github.com/P-Verbrugge +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@Quentame]: https://github.com/Quentame +[@SNoof85]: https://github.com/SNoof85 +[@Santobert]: https://github.com/Santobert +[@SukramJ]: https://github.com/SukramJ +[@Trekky12]: https://github.com/Trekky12 +[@ViViDboarder]: https://github.com/ViViDboarder +[@aamcrae]: https://github.com/aamcrae +[@agners]: https://github.com/agners +[@alandtse]: https://github.com/alandtse +[@alemuro]: https://github.com/alemuro +[@andersonshatch]: https://github.com/andersonshatch +[@andre-richter]: https://github.com/andre-richter +[@andygrunwald]: https://github.com/andygrunwald +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@basnijholt]: https://github.com/basnijholt +[@bbernhard]: https://github.com/bbernhard +[@bendavid]: https://github.com/bendavid +[@benleb]: https://github.com/benleb +[@bieniu]: https://github.com/bieniu +[@boralyl]: https://github.com/boralyl +[@bramkragten]: https://github.com/bramkragten +[@brefra]: https://github.com/brefra +[@butako]: https://github.com/butako +[@caronc]: https://github.com/caronc +[@casperklein]: https://github.com/casperklein +[@cgtobi]: https://github.com/cgtobi +[@clapbr]: https://github.com/clapbr +[@colinfrei]: https://github.com/colinfrei +[@csfreak]: https://github.com/csfreak +[@cwildt]: https://github.com/cwildt +[@danielperna84]: https://github.com/danielperna84 +[@dannerph]: https://github.com/dannerph +[@davet2001]: https://github.com/davet2001 +[@dcramer]: https://github.com/dcramer +[@dmulcahey]: https://github.com/dmulcahey +[@dshokouhi]: https://github.com/dshokouhi +[@eifinger]: https://github.com/eifinger +[@elupus]: https://github.com/elupus +[@erikkastelec]: https://github.com/erikkastelec +[@fabaff]: https://github.com/fabaff +[@foxy82]: https://github.com/foxy82 +[@frenck]: https://github.com/frenck +[@fwestenberg]: https://github.com/fwestenberg +[@garbled1]: https://github.com/garbled1 +[@geraldhansen]: https://github.com/geraldhansen +[@gjbadros]: https://github.com/gjbadros +[@gppanayotov]: https://github.com/gppanayotov +[@gtdiehl]: https://github.com/gtdiehl +[@heckler]: https://github.com/heckler +[@imduffy15]: https://github.com/imduffy15 +[@issacg]: https://github.com/issacg +[@jnimmo]: https://github.com/jnimmo +[@johnluetke]: https://github.com/johnluetke +[@lddubeau]: https://github.com/lddubeau +[@lexam79]: https://github.com/lexam79 +[@liollury]: https://github.com/liollury +[@mfaraco]: https://github.com/mfaraco +[@michaelarnauts]: https://github.com/michaelarnauts +[@mnigbur]: https://github.com/mnigbur +[@mockersf]: https://github.com/mockersf +[@mohmacht]: https://github.com/mohmacht +[@ndonegan]: https://github.com/ndonegan +[@neffs]: https://github.com/neffs +[@ochlocracy]: https://github.com/ochlocracy +[@orrpan]: https://github.com/orrpan +[@pnbruckner]: https://github.com/pnbruckner +[@proferabg]: https://github.com/proferabg +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@raman325]: https://github.com/raman325 +[@randellhodges]: https://github.com/randellhodges +[@ratsept]: https://github.com/ratsept +[@rccoleman]: https://github.com/rccoleman +[@rhadamantys]: https://github.com/rhadamantys +[@rsnodgrass]: https://github.com/rsnodgrass +[@sbyx]: https://github.com/sbyx +[@scarface-4711]: https://github.com/scarface-4711 +[@scop]: https://github.com/scop +[@sdwilsh]: https://github.com/sdwilsh +[@sergioisidoro]: https://github.com/sergioisidoro +[@shortbloke]: https://github.com/shortbloke +[@springstan]: https://github.com/springstan +[@syssi]: https://github.com/syssi +[@taisholland]: https://github.com/taisholland +[@tchellomello]: https://github.com/tchellomello +[@tetienne]: https://github.com/tetienne +[@tuxbox]: https://github.com/tuxbox +[@tyler-public]: https://github.com/tyler-public +[@vangorra]: https://github.com/vangorra +[@vzahradnik]: https://github.com/vzahradnik +[@xlfe]: https://github.com/xlfe +[@yegle]: https://github.com/yegle +[@zewelor]: https://github.com/zewelor +[@zxdavb]: https://github.com/zxdavb +[abode docs]: /integrations/abode/ +[acer_projector docs]: /integrations/acer_projector/ +[actiontec docs]: /integrations/actiontec/ +[adguard docs]: /integrations/adguard/ +[ads docs]: /integrations/ads/ +[air_quality docs]: /integrations/air_quality/ +[airly docs]: /integrations/airly/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alarmdecoder docs]: /integrations/alarmdecoder/ +[alexa docs]: /integrations/alexa/ +[almond docs]: /integrations/almond/ +[ambiclimate docs]: /integrations/ambiclimate/ +[ambient_station docs]: /integrations/ambient_station/ +[amcrest docs]: /integrations/amcrest/ +[androidtv docs]: /integrations/androidtv/ +[apcupsd docs]: /integrations/apcupsd/ +[arduino docs]: /integrations/arduino/ +[arest docs]: /integrations/arest/ +[auth docs]: /integrations/auth/ +[automation docs]: /integrations/automation/ +[aws docs]: /integrations/aws/ +[axis docs]: /integrations/axis/ +[bbb_gpio docs]: /integrations/bbb_gpio/ +[binary_sensor docs]: /integrations/binary_sensor/ +[bitcoin docs]: /integrations/bitcoin/ +[bluetooth_le_tracker docs]: /integrations/bluetooth_le_tracker/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[broadlink docs]: /integrations/broadlink/ +[brother docs]: /integrations/brother/ +[buienradar docs]: /integrations/buienradar/ +[calendar docs]: /integrations/calendar/ +[camera docs]: /integrations/camera/ +[cast docs]: /integrations/cast/ +[cert_expiry docs]: /integrations/cert_expiry/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[command_line docs]: /integrations/command_line/ +[config docs]: /integrations/config/ +[counter docs]: /integrations/counter/ +[cover docs]: /integrations/cover/ +[darksky docs]: /integrations/darksky/ +[deconz docs]: /integrations/deconz/ +[decora docs]: /integrations/decora/ +[decora_wifi docs]: /integrations/decora_wifi/ +[default_config docs]: /integrations/default_config/ +[demo docs]: /integrations/demo/ +[denonavr docs]: /integrations/denonavr/ +[device_automation docs]: /integrations/device_automation/ +[device_tracker docs]: /integrations/device_tracker/ +[dialogflow docs]: /integrations/dialogflow/ +[doorbird docs]: /integrations/doorbird/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[dwd_weather_warnings docs]: /integrations/dwd_weather_warnings/ +[dyson docs]: /integrations/dyson/ +[ecobee docs]: /integrations/ecobee/ +[elgato docs]: /integrations/elgato/ +[emulated_hue docs]: /integrations/emulated_hue/ +[enocean docs]: /integrations/enocean/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[eufy docs]: /integrations/eufy/ +[evohome docs]: /integrations/evohome/ +[fan docs]: /integrations/fan/ +[ffmpeg docs]: /integrations/ffmpeg/ +[fido docs]: /integrations/fido/ +[file docs]: /integrations/file/ +[filter docs]: /integrations/filter/ +[freebox docs]: /integrations/freebox/ +[fritz docs]: /integrations/fritz/ +[frontend docs]: /integrations/frontend/ +[geofency docs]: /integrations/geofency/ +[geonetnz_quakes docs]: /integrations/geonetnz_quakes/ +[geonetnz_volcano docs]: /integrations/geonetnz_volcano/ +[gios docs]: /integrations/gios/ +[google_assistant docs]: /integrations/google_assistant/ +[google_maps docs]: /integrations/google_maps/ +[google_pubsub docs]: /integrations/google_pubsub/ +[google_translate docs]: /integrations/google_translate/ +[gpslogger docs]: /integrations/gpslogger/ +[group docs]: /integrations/group/ +[hassio docs]: /integrations/hassio/ +[heatmiser docs]: /integrations/heatmiser/ +[here_travel_time docs]: /integrations/here_travel_time/ +[history docs]: /integrations/history/ +[hive docs]: /integrations/hive/ +[homeassistant docs]: /integrations/homeassistant/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[http docs]: /integrations/http/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[iaqualink docs]: /integrations/iaqualink/ +[icloud docs]: /integrations/icloud/ +[ifttt docs]: /integrations/ifttt/ +[ign_sismologia docs]: /integrations/ign_sismologia/ +[ihc docs]: /integrations/ihc/ +[influxdb docs]: /integrations/influxdb/ +[input_boolean docs]: /integrations/input_boolean/ +[input_datetime docs]: /integrations/input_datetime/ +[input_number docs]: /integrations/input_number/ +[input_select docs]: /integrations/input_select/ +[input_text docs]: /integrations/input_text/ +[intesishome docs]: /integrations/intesishome/ +[ipma docs]: /integrations/ipma/ +[iqvia docs]: /integrations/iqvia/ +[islamic_prayer_times docs]: /integrations/islamic_prayer_times/ +[isy994 docs]: /integrations/isy994/ +[izone docs]: /integrations/izone/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[kankun docs]: /integrations/kankun/ +[keba docs]: /integrations/keba/ +[kef docs]: /integrations/kef/ +[keyboard_remote docs]: /integrations/keyboard_remote/ +[kodi docs]: /integrations/kodi/ +[life360 docs]: /integrations/life360/ +[light docs]: /integrations/light/ +[lightwave docs]: /integrations/lightwave/ +[linky docs]: /integrations/linky/ +[localip docs]: /integrations/local_ip/ +[locative docs]: /integrations/locative/ +[lock docs]: /integrations/lock/ +[lovelace docs]: /integrations/lovelace/ +[luftdaten docs]: /integrations/luftdaten/ +[matrix docs]: /integrations/matrix/ +[media_extractor docs]: /integrations/media_extractor/ +[media_player docs]: /integrations/media_player/ +[mediaroom docs]: /integrations/mediaroom/ +[met docs]: /integrations/met/ +[meteoalarm docs]: /integrations/meteoalarm/ +[metoffice docs]: /integrations/metoffice/ +[mfi docs]: /integrations/mfi/ +[miflora docs]: /integrations/miflora/ +[minio docs]: /integrations/minio/ +[mobile_app docs]: /integrations/mobile_app/ +[mochad docs]: /integrations/mochad/ +[modbus docs]: /integrations/modbus/ +[monoprice docs]: /integrations/monoprice/ +[mpd docs]: /integrations/mpd/ +[mqtt docs]: /integrations/mqtt/ +[mysensors docs]: /integrations/mysensors/ +[neato docs]: /integrations/neato/ +[ness_alarm docs]: /integrations/ness_alarm/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netgear_lte docs]: /integrations/netgear_lte/ +[nextbus docs]: /integrations/nextbus/ +[nmbs docs]: /integrations/nmbs/ +[notion docs]: /integrations/notion/ +[nsw_fuel_station docs]: /integrations/nsw_fuel_station/ +[nx584 docs]: /integrations/nx584/ +[onboarding docs]: /integrations/onboarding/ +[onewire docs]: /integrations/onewire/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openuv docs]: /integrations/openuv/ +[owntracks docs]: /integrations/owntracks/ +[person docs]: /integrations/person/ +[pi_hole docs]: /integrations/pi_hole/ +[pilight docs]: /integrations/pilight/ +[pjlink docs]: /integrations/pjlink/ +[plaato docs]: /integrations/plaato/ +[plant docs]: /integrations/plant/ +[plex docs]: /integrations/plex/ +[ps4 docs]: /integrations/ps4/ +[pushbullet docs]: /integrations/pushbullet/ +[python_script docs]: /integrations/python_script/ +[qbittorrent docs]: /integrations/qbittorrent/ +[rainmachine docs]: /integrations/rainmachine/ +[recorder docs]: /integrations/recorder/ +[remember_the_milk docs]: /integrations/remember_the_milk/ +[remote docs]: /integrations/remote/ +[rest docs]: /integrations/rest/ +[rflink docs]: /integrations/rflink/ +[rfxtrx docs]: /integrations/rfxtrx/ +[ring docs]: /integrations/ring/ +[scene docs]: /integrations/scene/ +[scrape docs]: /integrations/scrape/ +[script docs]: /integrations/script/ +[sensor docs]: /integrations/sensor/ +[sentry docs]: /integrations/sentry/ +[shodan docs]: /integrations/shodan/ +[shopping_list docs]: /integrations/shopping_list/ +[signalmessenger docs]: /integrations/signal_messenger/ +[simplisafe docs]: /integrations/simplisafe/ +[sleepiq docs]: /integrations/sleepiq/ +[smappee docs]: /integrations/smappee/ +[smhi docs]: /integrations/smhi/ +[solaredge docs]: /integrations/solaredge/ +[solarlog docs]: /integrations/solarlog/ +[soma docs]: /integrations/soma/ +[somfy docs]: /integrations/somfy/ +[soundtouch docs]: /integrations/soundtouch/ +[spc docs]: /integrations/spc/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[ssdp docs]: /integrations/ssdp/ +[starline docs]: /integrations/starline/ +[statistics docs]: /integrations/statistics/ +[steam_online docs]: /integrations/steam_online/ +[stookalert docs]: /integrations/stookalert/ +[stream docs]: /integrations/stream/ +[surepetcare docs]: /integrations/surepetcare/ +[swiss_public_transport docs]: /integrations/swiss_public_transport/ +[switch docs]: /integrations/switch/ +[switcher_kis docs]: /integrations/switcher_kis/ +[synologydsm docs]: /integrations/synologydsm/ +[system_log docs]: /integrations/system_log/ +[tado docs]: /integrations/tado/ +[tahoma docs]: /integrations/tahoma/ +[tank_utility docs]: /integrations/tank_utility/ +[telegram_bot docs]: /integrations/telegram_bot/ +[tellduslive docs]: /integrations/tellduslive/ +[template docs]: /integrations/template/ +[tesla docs]: /integrations/tesla/ +[time_date docs]: /integrations/time_date/ +[timer docs]: /integrations/timer/ +[tmb docs]: /integrations/tmb/ +[toon docs]: /integrations/toon/ +[tplink docs]: /integrations/tplink/ +[transmission docs]: /integrations/transmission/ +[tuya docs]: /integrations/tuya/ +[twentemilieu docs]: /integrations/twentemilieu/ +[ue_smart_radio docs]: /integrations/ue_smart_radio/ +[uk_transport docs]: /integrations/uk_transport/ +[unifi docs]: /integrations/unifi/ +[universal docs]: /integrations/universal/ +[updater docs]: /integrations/updater/ +[upnp docs]: /integrations/upnp/ +[uscis docs]: /integrations/uscis/ +[utility_meter docs]: /integrations/utility_meter/ +[uvc docs]: /integrations/uvc/ +[vacuum docs]: /integrations/vacuum/ +[velbus docs]: /integrations/velbus/ +[velux docs]: /integrations/velux/ +[venstar docs]: /integrations/venstar/ +[vera docs]: /integrations/vera/ +[verisure docs]: /integrations/verisure/ +[versasense docs]: /integrations/versasense/ +[vesync docs]: /integrations/vesync/ +[vicare docs]: /integrations/vicare/ +[vivotek docs]: /integrations/vivotek/ +[vizio docs]: /integrations/vizio/ +[volumio docs]: /integrations/volumio/ +[water_heater docs]: /integrations/water_heater/ +[webostv docs]: /integrations/webostv/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[whois docs]: /integrations/whois/ +[withings docs]: /integrations/withings/ +[wled docs]: /integrations/wled/ +[workday docs]: /integrations/workday/ +[worxlandroid docs]: /integrations/worxlandroid/ +[x10 docs]: /integrations/x10/ +[xbox_live docs]: /integrations/xbox_live/ +[xeoma docs]: /integrations/xeoma/ +[xfinity docs]: /integrations/xfinity/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[xiaomi_tv docs]: /integrations/xiaomi_tv/ +[xmpp docs]: /integrations/xmpp/ +[xs1 docs]: /integrations/xs1/ +[yale_smart_alarm docs]: /integrations/yale_smart_alarm/ +[yamaha docs]: /integrations/yamaha/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yandex_transport docs]: /integrations/yandex_transport/ +[yeelight docs]: /integrations/yeelight/ +[yeelightsunflower docs]: /integrations/yeelightsunflower/ +[yessssms docs]: /integrations/yessssms/ +[yr docs]: /integrations/yr/ +[zamg docs]: /integrations/zamg/ +[zengge docs]: /integrations/zengge/ +[zeroconf docs]: /integrations/zeroconf/ +[zestimate docs]: /integrations/zestimate/ +[zha docs]: /integrations/zha/ +[zigbee docs]: /integrations/zigbee/ +[zone docs]: /integrations/zone/ +[zwave docs]: /integrations/zwave/ diff --git a/source/_posts/2020-01-28-android-150-release.markdown b/source/_posts/2020-01-28-android-150-release.markdown new file mode 100644 index 000000000000..fb0e562c7594 --- /dev/null +++ b/source/_posts/2020-01-28-android-150-release.markdown @@ -0,0 +1,29 @@ +--- +layout: post +title: "Home Assistant Companion for Android 1.5.0" +description: "Today we're releasing a big update for our Android companion app including widgets, fullscreen and Android TV support." +date: 2020-01-28 00:00:00 +date_formatted: "January 28, 2020" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +--- + +Today we're releasing Home Assistant Companion for Android 1.5.0. This is a great release with some cool new features and new collaborators joining in on the fun! + +Big thanks in this release goes to our Android lead [@JBassett] who has been squashing a ton of bugs, added support for the status bar to adopt the application theme and fixed finding existing Home Assistant instances on the network. + +A cool new feature that has been added is a new home screen widget. Use it to quickly trigger your favorite scripts, scenes or any other service in Home Assistant. Thanks to [@KBerstene] for the initial implementation and [@JBassett] for polishing the configuration screen. + +For all you people that want to run the Home Assistant app on a tablet on the wall, good news! Thanks to [@neopilou] there is now a new option to make the app full screen. + +To get the most out of our apps for Android and iOS, check the [Home Assistant Companion website](https://companion.home-assistant.io/). + +Enjoy the new release! Don't forget to leave a rating if you like the app, it will help other users find the app. + +Get it on Google Play + +[@KBerstene]: https://github.com/KBerstene +[@JBassett]: https://github.com/JBassett +[@neopilou]: https://github.com/neopilou diff --git a/source/_posts/2020-01-29-changing-the-home-assistant-brand.markdown b/source/_posts/2020-01-29-changing-the-home-assistant-brand.markdown new file mode 100644 index 000000000000..f3060b43057b --- /dev/null +++ b/source/_posts/2020-01-29-changing-the-home-assistant-brand.markdown @@ -0,0 +1,45 @@ +--- +title: "Changing the Home Assistant Brand" +description: "Re-branding Home Assistant to make naming things easier!" +date: 2020-01-29 00:00:00 +date_formatted: "January 29, 2020" +author: Paulus Schoutsen +author_twitter: balloob +categories: Announcements +og_image: /images/blog/2020-01-29-changing-the-home-assistant-brand/social.png +--- + +Over the last few years, we have accumulated a wide range of projects under our +umbrella. We started out as a Python application (called Home Assistant) and +later added an operating system (HassOS) and management system (Hass.io Supervisor) +to it, to allow users to easily manage their homes, but also to provide a +system that is easy to keep up to date. + +These different projects all come together in Hass.io. A system that is secure, +easy to keep up to date and runs the most powerful home automation platform in +the world. But having Hass.io and Home Assistant has been confusing for a lot of +people, especially for newcomers to our great community. + +The next step in making Home Assistant simpler is by making our naming simpler. +It’s our goal to make private home automation accessible to everyone. +And as part of that, people need to know how to refer to it. + +Home Assistant is a home automation operating system for your home. +And to make this message clear, we’re renaming Hass.io to Home Assistant, +and Home Assistant to Home Assistant Core. + +**Note:** this is only about renaming projects and does not impact any +functionality of any of the projects. + +If you run Home Assistant today in a Docker container or run it inside a Python +virtual environment, you are running “Home Assistant Core”. +Home Assistant Core will forever remain a standalone application like it is today. +We promise. + +This name change is a huge thing! Not just a big thing we all need to get used +to, but even bigger for everything that needs to be renamed! It definitely +takes a couple of weeks to get the main parts re-branded. + +So bear with us while we do so. + +Paulus diff --git a/source/_posts/2020-01-31-community-highlights.markdown b/source/_posts/2020-01-31-community-highlights.markdown new file mode 100644 index 000000000000..2c30d1f98d2c --- /dev/null +++ b/source/_posts/2020-01-31-community-highlights.markdown @@ -0,0 +1,81 @@ +--- +title: "Community Highlights, first edition!" +description: "A different take on the UI, a smart toilet roll holder and the DIY smart mailbox" +date: 2020-01-31 00:00:00 +date_formatted: "January 31, 2020" +author: Franck Nijhof +author_twitter: frenck +categories: Community +og_image: /images/blog/2020-01-31-community-highlights/social.png +--- + +Back in [2015][community-highlights-2015] and in [2016][community-highlights-2016], we tried starting a series of blog posts called "Community Highlight", +a few times, a blog post appeared about the amazingly awesome stuff our community does with Home Assistant. + +Recently, that idea was picked up again by adding an "In Other News" section to the release notes on each Home Assistant release. However, the development pace of Home Assistant is high! As a result, that section is always hidden all the way down somewhere in those release notes. A bit unfortunate, since there is so much cool stuff to be found! + +So, today, we present you: the Community Highlights, the first edition! + +Technically, not the first, but we rebooted this series, right? + +We hope you enjoy this, please let us know in the comments below! +Or join us for a little chat in our [#lounge at Discord][chat] + +../Frenck + +## A different take on designing your frontend + +Mattias Persson showed an interesting alternative approach to the design of his Lovelace UI. +It looks fabulous; we don't even know where to start explaining, check the video below for an impression: + +
    + +
    + +Mattias created [a post in the Community Forum][different-take] with all the details, including more screenshots, the things he used and links to his GitHub repository. Everything you'd need if you wanted to replicate this for your own use. Thanks Mattias! + +## Smart toilet roll holder + +Com'on, we all know what it is like to be in the restroom, taking a number two, discovering that you are out of paper. + +For the-berik, on our [subreddit][reddit], it was reason enough to do something about it. He converted his toilet roll holder into a smart version using an ESP8266 chip, a load cell and [ESPHome][esphome], allowing Home Assistant to know how many rolls of toilet paper are left on the holder. + +Click on the video below to see how it works. + +
    Smart toiletroll holder with Esphome and Homeassistant from r/homeassistant
    + + +## Smart mailbox sensor, the easy way + +Another one from our [subreddit][reddit], where choketube shares his pride for the mailbox sensor he created. +He placed a Hue motion sensor inside his mailbox that will trigger if it is opened, really smart and simple! + +He demonstrates his mailbox in the video below. + +
    Proud of my new Automation - Hue Sensor in my Mailbox from r/homeassistant
    + +## Got a tip for the next edition? + +Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant? + +[Click here to send us your Community Highlight suggestion](/suggest-community-highlight). + +Also, don't forget to share your creations with us via Social Media: + +- Twitter it! Be sure to mention [@home_assistant][twitter] +- Share it on our [Facebook group][facebook-group] +- Post it to our [subreddit][reddit] +- Tag [@homeasssistant][instagram] on Instagram +- Or via chat, drop us a line in the [#lounge at Discord][chat] + +See you next edition! + +[chat]: https://www.home-assistant.io/join-chat +[community-highlights-2015]: https://www.home-assistant.io/blog/2015/12/05/community-highlights/ +[community-highlights-2016]: https://www.home-assistant.io/blog/2016/02/20/community-highlights/ +[different-take]: https://community.home-assistant.io/t/a-different-take-on-designing-a-lovelace-ui/162594 +[esphome]: https://www.esphome.io +[facebook-group]: https://www.facebook.com/groups/HomeAssistant/ +[instagram]: https://www.instagram.com/homeassistant/ +[reddit]: https://www.reddit.com/r/homeassistant +[twitter]: https://www.twitter.com/home_assistant diff --git a/source/_posts/2020-02-05-release-105.markdown b/source/_posts/2020-02-05-release-105.markdown new file mode 100644 index 000000000000..c4e1c1515a60 --- /dev/null +++ b/source/_posts/2020-02-05-release-105.markdown @@ -0,0 +1,1563 @@ +--- +layout: post +title: "0.105: Safe mode, Headers & Footers, New Zones Editor, Garmin, Sighthound" +description: "5 new integrations, tons of Lovelace updates, a new zones editor and safe mode that saves your day!" +date: 2020-02-05 00:00:00 +date_formatted: "February 5, 2020" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: Release-Notes +og_image: /images/blog/2020-02-0.105/components.png +--- + + + +In case you have missed it, we decided to change the names we use here at Home Assistant, you can read all about it in [this blog post](/blog/2020/01/29/changing-the-home-assistant-brand/). + +Therefore, this is release 0.105 of the Home Assistant Core! + +## The old "States UI" is now deprecated + +In June 2018, we released [Home Assistant 0.72](/blog/2018/06/22/release-72/), which introduced Lovelace. It became our official default user interface in January 2019, with the release of [Home Assistant 0.86](/blog/2019/01/23/lovelace-released/). + +This means, it is now over a year ago that Lovelace was officially introduced as a replacement for the states UI, so it is time to say goodbye to the old states UI. This release deprecates it and in version 0.107, the states UI will be removed from Home Assistant completely. + +If you are not using Lovelace yet, we advise you to switch to it today. Lovelace is, by default, almost the same as old states UI with the bonus of a lot of flexibility, if you want it. + +In addition to this, all configuration options for the States UI are deprecated as well. Please be sure to read the [breaking changes](#breaking-changes) to see if you have options that need to be removed from your configuration. + +## Safe mode + +We are humans, and we do make typos. However, if we make a typo in our configuration, we might end up with Home Assistant being completely unreachable. That really is not helpful. You lose access to Home Assistant and have to do a deep dive via other methods to find out: Why did this happen? + +This release introduces a "Safe mode" for Home Assistant. If during startup, Home Assistant has problems reading your configuration (for whatever reason), it will still continue to start using bits and pieces from the configuration of the last time it did start. + +When this happens, Home Assistant will start in "Safe mode". In this mode, nothing is loaded, but it does give you access to the Home Assistant frontend, settings and add-ons (for example, the VSCode or Configurator add-on). This gives you the possibility to correct the issue +and restart Home Assistant to re-try. + +

    +Screenshot of Home Assistant started in safe mode +Screenshot of Home Assistant started in safe mode. +

    + +Please note, that this feature isn't perfect yet, and only works if Home Assistant was able to start successfully, after upgrading to this release, at least once. + +We believe this feature makes Home Assistant more robust, easier to use and more forgiving, even if you made a mistake. + +## Revamped Supervisor panel + +Remember we used to have a Hass.io panel? Well, with the [new naming](/blog/2020/01/29/changing-the-home-assistant-brand/) for Home Assistant, it has been renamed to the Supervisor panel. + +So [@ludeeus] has been busy! He rewrote the entire Supervisor panel to match our current frontend technologies and added some really slick new visual elements to it. + +Thanks, [@ludeeus], it looks incredible! + +

    +Screenshot of the revamped Supervisor panel +Screenshot of the revamped Supervisor panel. +

    + +The new icons on the add-ons really make the add-on dashboard & store stand out. Also, new status indicators on the add-on cards make it easy to spot add-ons that need to be upgraded, or in case of visiting the add-on store, are installed already. + +Please note, you need to be running Home Assistant Core 0.105 to see the new icons. + +## Configuration panel changes + +In this release, we started the overhaul of the configuration panel. We have accumulated a lot of functionality in the configuration section in the last releases; now, it is time to bring it all together. + +In upcoming releases, we will make changes to make things easier to find and connect the different elements with each other, making it easier to navigate around. For now, we implemented configuration sections, a new tabbed UI, as well as some visual tweaks. + +Also updated, the device page to show the automations, scripts, and scenes a device is used in and added the ability to create new ones with the device easily. + +

    +Screenshot of the new device info page +Screenshot of the new device info page. +

    + +In the more info dialog of entities, we changed the settings button to open the entity settings dialog, and added a related tab as well! +This allows you to can see what device, integration, area, scenes, scripts, automations, entities, and groups belong to that entity. + +For scenes, scripts and automations that are created in the UI, an edit button is added, right in the more info dialog so you can easily edit it without searching for it. + +## Header & Footer for the entities card + +Two new types are added to the entities card, a header and a footer. At this moment, we have two options for these, an image and buttons. + +It allows you to create some very cool looking cards, but also provides you the option to put buttons in the bottom of the card. Very useful for buttons that activate scenes, for example. + +

    +Screenshot of the new header and footer for entities card +Screenshot of the new header and footer for entities card. +

    + +## Improved zones editor + +A brand new zone editor! You can no longer find your zones in the integration list, but they moved to their own section in the configuration panel. + +In this new editor, you can move your zones with drag and drop and even change the size of your zones by dragging the circle. + +Adding, and removing zones or changing the name of a zone, is now easier than ever. + +

    +Screenshot of the zones editor +Screen recording of the zones editor. +

    + +The new editor will only work for zones that are created in the UI, zones that are set up in `configuration.yaml` are read-only. +Additionally, if you define zones in your YAML configuration, please be aware that setting a [`name` is now required](#breaking-changes). + +As an extra added bonus, a new service was added: `zone.reload`. This service allows you to reload your zone configuration without restarting Home Assistant. + +## Icons no longer change color based on state + +A change that is not really apparent at first, but you probably notice it sooner or later. + +The entities card no longer changes the colors of icons based on states, except for lights. + +Reasoning comes from a request, to make icons to become yellow for all types when an entity is active, and not for just a few entity types. However, this would get out of control very quickly, as shown in the screenshot below. + +

    +Yellow icon color on everything, isn't the solution either +Yellow icon color on everything, isn't the solution either. +

    + +So, that is why we disabled it, by default, for all entity types, except lights. However, we did add a new option: `state_color`. +Using this option, you can decide if you want to old behavior back, add it to more entity types or maybe even disable it for lights too! + +Other cards will now display icons from more domains with an active color. + +## Other Lovelace and frontend improvements + +There is a lot more done on Lovelace, more than we can mention, some other highlights: + +- In generated mode, entities that start with the name of the area or group they are in will be shown without the name of the area or group. +So if you have a light named "Living room lights" that is in the area "Living room" they will be shown as "lights" in a card with the header "Living room". + +- We no longer show `device_tracker` entities in generated mode. We advise you to bind one or more device trackers to a person that will be shown in the UI. + +- We added many accessibility features to Lovelace; you can navigate almost everything with the tab key. +We will continue to work on this so that people with disabilities can also enjoy Home Assistant. + +For a full list of changes, see the [Lovelace changelog](/lovelace/changelog/). + +Even more frontend improvements: + +- Logbook panel is a lot quicker +- Maps no longer fit zones, but only entities +- ZHA panel now supports binding devices to groups +- Ability to add new areas on the device page +- Material Design Icons are updated to v4.8.95 +- A lot, like a really large amount, of bug fixes! + +## In other news + +This section is now empty, but don't be sad! The in "In other news" section now has its own dedicated blog post, +which we will put out regularly: + +Want to read the first edition? _[Community Highlights, first edition!](/blog/2020/01/31/community-highlights/)_ + +Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant? [Send us your Community Highlight suggestion](/suggest-community-highlight), so that we can include it in the next blog post. + +## New Integrations + +- Add search integration ([@balloob] - [#30511]) ([search docs]) (new-integration) +- Add Safe Mode ([@balloob] - [#30723]) ([frontend docs]) ([http docs]) ([safe_mode docs]) (breaking change) (new-integration) +- Add Derivative component ([@afaucogney] - [#26456]) ([derivative docs]) (new-integration) +- Add sighthound integration ([@robmarkcole] - [#28824]) ([sighthound docs]) (new-integration) +- Add Garmin Connect integration ([@cyberjunky] - [#30792]) ([garmin_connect docs]) (new-integration) +- Add Gammu based local SMS notifications ([@ocalvo] - [#31233]) ([sms docs]) (new-integration) +- Add OPNSense device tracker ([@mtreinish] - [#26834]) ([opnsense docs]) (new-integration) + +## New Platforms + +- Template alarm panel ([@alistairg] - [#30487]) ([template docs]) (new-platform) +- ZHA cover device support ([@billyburly] - [#30639]) ([zha docs]) (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). + +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 + +- __Safe Mode__ - `--demo-mode` has been removed. A new safe mode has now been introduced, which loads the bare minimum necessary to load the Home Assistant frontend and allows for managing the configuration. This is not yet perfect. An invalid core configuration can still cause Home Assistant to refuse to start up. ([@balloob] - [#30723]) ([frontend docs]) ([http docs]) ([safe_mode docs]) + +- __Google Assistant__ - Entities exposed to Google Assistant, that have aliases configured (YAML only feature), will now expose the configured name, instead of the first configured alias. + + Because of that, it might be that entities that have a name and aliases set for Google Assistant, may show up with a "new" name. + + This mitigates an issue with Google Assistant, which seems to ignore the configured name when aliases are configured. - ([@frenck] - [#30799]) ([google_assistant docs]) + +- __Hass.io/Supervisor__ - The "Hass.io" menu item in the side bar has been renamed to Supervisor. This was done to match the announced re-branding. While not really a breaking change, it still is a change that might cause confusion at first. - ([@frenck] - [#31480]) + +- __Spotify__ - Spotify is now available to be added from the integrations UI! Removing the current Spotify platform and setting up the integration from scratch is recommended. + + The device aliases and the `spotify.play_playlist` service, have been removed. Be sure to remove calls to that service from your automations. + + If you use the Spotify platform at this moment: + + - Remove the current configuration from your `configuration.yaml` file. + - Remove the `.spotify-token-cache` file from your configuration directory. It is no longer used, however, it does contain security credentials. + - Follow the documentation on how to set up the new Spotify integration from scratch. + + Please note, if you have an existing Spotify Developer Application, you need to edit it. The URL's have changed. Consult the integration documentation for the new URL's to use. + + ([@frenck] - [#30717]) ([spotify docs]) + +- __Automation__ *Deprecated* - The `hide_entity` configuration option on an automation is now deprecated and will be removed in Home Assistant 0.107. With Lovelace now being the standard, this option has become obsolete. Please ensure your automations are not using this option. An example of an *invalid* configuration is below. - ([@frenck] - [#30799]) ([automation docs]) + + Bad configuration example YAML: + + ```yaml + automation: + - alias: "Home Automation Gone Wrong" + hide_entity: true <-- remove this + trigger: + platform: state + entity_id: all + action: + service: light.turn_off + entity_id: all + ``` + +- __Group__ *Deprecated* - Group configurations options, services and service options related to the old states UI are now deprecated and pending for removal in Home Assistant 0.107.0. + + This includes: + + - The `view` and `control` configuration options for a group + - The `group.set_visibility` service call + - The `control`, `visible`, and `view` options on the `group.set` service call. + + Please ensure your configuration and automations do not use these anymore. - ([@frenck] - [#30831]) ([group docs]) + +- __Weblink__ *Deprecated* - The weblink integration is now deprecated and pending removal in Home Assistant 0.107.0. This integration only works with the old states UI. - ([@frenck] - [#30834]) + +- __History Graph__ *Deprecated* - The `history_graph` integration has been deprecated and pending for removal in Home Assistant 0.107.0. This integration was used for the old states UI. Going ahead, please ensure this configuration option is not used in your configuration. - ([@frenck] - [#30835]) + +- __Neato__ - This change adds a neato boundary name to the state if it exists, requiring to potentially update automations. - ([@Olen] - [#29915]) ([neato docs]) + +- __Xiaomi miio (fan)__ - This change adjusts some fan speed values according to the Xiaomi app version 5.6.34. and therefore, you will need to update anything that utilizes the following fan speed values: + + - Quiet -> Silent + - Balanced -> Standard + - Turbo -> Medium + - Max -> Turbo + + In addition, the `hidden` configuration option for the `xiaomi_miio` integration has been removed. (This would only affect remotes.) - ([@tiagofreire-pt] - [#30614]) ([@frenck] - [#30727]) ([xiaomi_miio docs]) + +- __Samsung Smart TV__ - Samsung Smart TV is now available to be added from the integrations UI! If you would rather add it manually, please note the new configuration below. - ([@escoand] - [#28306]) ([samsungtv docs]) + + Example configuration YAML: + + ```yaml + samsungtv: + - host: 192.168.12.34 + ``` + +- __Netatmo__ - Netatmo is now available from the integrations UI and takes advantage of OAuth2 account linking! There are a good number of changes to note: + + - For authentication, only client id and secret are required, no need to pass your username and password anymore. + - Public weather sensors are removed and will be added back in a separate PR. + - Service `set_schedule` now requires the name of the home. + - Webhooks are removed and will be added back in a separate update. + - Services to toggle the light/set it to auto have been removed until implemented in `pyatmo`. + + If you have an existing configuration, you will need to remove/update that and run the configuration flow dialogue to get their sensors/etc, back using the `configuration.yaml` option. + + ([@cgtobi] - [#29851]) ([netatmo docs]) (new-platform) + + Example configuration YAML: + + ```yaml + netatmo: + client_id: your_client_id + client_secret: your_client_secret + ``` + +- __Nederlandse Spoorwegen (NS)__ - The Nederlandse Spoorwegen API and NSAPI have recently changed and this change accommodates for that. The `nederlandse_spoorwegen` sensor now requires a single API token instead of username and password credentials. + + The "RetrieveTripInformationPublic" API ("Public-Travel-Information" product) will be deprecated on 31-01-2020. You MUST create a new API token for the "Reisinformatie" API ("Ns-App" product) and use that one instead. + + ([@YarmoM] - [#30599] [#30971]) ([nederlandse_spoorwegen docs]) + + The following platform attributes are renamed for consistency with `time` naming: + + - `departure_platform` becomes `departure_platform_planned` + - `departure_platform_changed` becomes `departure_platform_actual` + - `arrival_platform` becomes `arrival_platform_planned` + - `arrival_platform_changed` becomes `arrival_platform_actual` + + Example configuration YAML: + + ```yaml + - platform: nederlandse_spoorwegen + password: !secret ns_api_key + routes: + - name: Rijswijk-Rotterdam + from: Rsw + to: Rtd + ``` + +- __Simplisafe__ - Many changes here! + + Simplisafe's cloud API anticipates receiving updates all at once, which our method did not do, which and could result in failed updates. This change consolidates all of the service calls into a single admin service, and makes `set_pin` and `remove_pin` require admin rights. + + It is no longer possible to configure `scan_interval` for the integration and a code-defined interval has been set, as there was potential for users setting this too low and possibly ruin the integration for everyone. + + Also, the integration now makes us of `triggered` and `arming` states. Control panel entities no longer have an `alarm_active` attribute. + + ([@bachya] - [#30567], [#30909], [#31060]) ([simplisafe docs]) + + Example configuration YAML: + + ```yaml + simplisafe: + accounts: + username: !secret ss_username + password: !secret ss_password + ``` + +- __Egardia__ - Binary sensors for the Egardia integration were hidden by default, which is no longer the case. This could affect automations that rely on the hidden state attribute of entities created by this integration. - ([@frenck] - [#30728]) ([egardia docs]) + +- __Emby__ - The `auto_hide` configuration option has been removed from the Emby platform. Please be sure to remove it from your configuration. - ([@frenck] - [#30729]) ([emby docs]) + +- __Fibaro__ - Entities from the Fibaro integration were hidden in Home Assistant if they were hidden in Fibaro, which is no longer the case. This could affect automations that rely on the hidden state attribute of entities created by this integration. - ([@frenck] - [#30730]) ([fibaro docs]) + +- __AVM FRITZ!Box Net Monitor__ - The attribute `wan_access_type` has been removed from `fritzbox_netmonitor` as the new version of the fritzconnection integration no longer exposes it. As a result, the information will no longer be available in the Home Assistant sensor. - ([@basdelfos] - [#30210]) ([fritz docs]) ([fritzbox_netmonitor docs]) + +- __MQTT Fan__ - This fixes `supported_features` for an MQTT fan. Setting speed now requires only a speed command topic. + + Before this change, only a speed state topic had to be set to support the setting of a speed. The speed state topic is not taken into account as it just decides if Home Assistant gets feedback for state and speed updates. + + Likewise, setting oscillation now requires only an oscillation command topic. Before this change, only an oscillation state topic had to be set to support the setting of the oscillation. The oscillation state topic is not taken into account as it just decides if Home Assistant gets feedback for state and oscillation update. + + ([@springstan] - [#28680]) ([mqtt docs]) + + Example configuration YAML: + + ```yaml + fan: + - platform: mqtt + name: "room2" + state_topic: "stat/bvent/POWER" + command_topic: "cmnd/bvent/POWER" + availability_topic: "tele/bvent/LWT" + payload_available: "Online" + payload_not_available: "Offline" + payload_on: "ON" + payload_off: "OFF" + qos: 1 + retain: false + optimistic: false + ``` + +- __Vizio SmartCast TV__ - The Vizio integration is now available to be added from the integrations UI! When adding a soundbar the options are now between `tv` or `speaker` in order to align with the device classes defined in the media_player component and to add Amazon Alexa and Google Assistant support. If you prefer to enter the configuration manually make note of the changes below. - ([@raman325] - [#30653], [#30802]) ([vizio docs]) + + Example configuration YAML: + + ```yaml + vizio: + - host: IP_ADDRESS + access_token: AUTH_TOKEN + device_type: speaker + ``` + +- __Statistics__ - If max_age is configured, this change will keep updating the statistics even when none of the observed entities change their state. That means that after some time, all recorded states are purged and the statistics sensor itself changes to state unknown instead of just keeping its old state indefinitely. Also, some attributes (`total`, `min_age`, `change`, `change_rate`, `mean`, `stdev`) will change to `unknown`. + + Users should ensure that any automations that interrogate the statistics sensor's state and attributes can handle `unknown`. + + ([@exxamalte] - [#27372]) ([statistics docs]) + + Example `configuration.yaml`: + + ```yaml + sensor: + - platform: statistics + entity_id: sensor.pulse_counter + max_age: + minutes: 10 + ``` + +- __PulseAudio Loopback__ *Revert* - The default port was incorrectly changed to 4713, however, the official documentation states that the default port is 4712 for `module-cli-protocol` which is used in this integration. Therefore, the port has been changed back to 4712 and all previously configured switches now need to listen to port 4712. - ([@springstan] - [#30939]) ([pulseaudio_loopback docs]) + +- __Apple iCloud__ - `account_name` is removed from the manual configuration; nothing changes when using the integration UI. - ([@Quentame] - [#30898]) ([icloud docs]) + +- __Evohome__ - Honeywell TCC systems that consist of a single thermostat (i.e., non-evohome systems) will now be split into two climate entities instead of one: a) the whole-house zone (for target temperature), and b) the location (for Away, Eco modes). Functionality will not be lost, but this will affect automations, etc.: the entity_id of these may need changing. - ([@zxdavb] - [#30968]) ([evohome docs]) + +- __Sonos__ - The following Sonos services now need to be called by a user with admin access: `sonos.join`, `sonos.unjoin`, `sonos.snapshot`, `sonos.restore`. Sonos services now no longer will default to "all" entities if no `entity_id` is passed in. This has been aligned with the other services in Home Assistant. To target all, add `entity_id: all`. - ([@balloob] - [#30813]) ([sonos docs]) + +- __LG webOS Smart TV__ - After the discovery of some additional commands, the client library now has much better tracking of TV power state. As a result of the client library changes, the standby_connection parameter is no longer needed/present (since the relevant behavior can be steered automatically by the client library now) - ([@bendavid] - [#31042]) ([webostv docs]) + +- __Zone__ - If you're using YAML to configure zones, specifying a name is now required. - ([@balloob] - [#30774]) ([zone docs]) + + Example configuration YAML: + + ```yaml + - name: Hellmouth + latitude: 0.2133478 + longitude: 6.7242336 + radius: 200 + icon: mdi:fire + ``` + +- __Openuv__ - Openuv is now available to be added from the integrations UI! It is no longer possible to specify monitored conditions within the OpenUV integration; all entities are added by default. - ([@bachya] - [#31019]) ([openuv docs]) + + Example configuration yaml: + + ```yaml + openuv: + api_key: !secret openuv_api_key + ``` + +- __RainMachine__ - RainMachine is now available to be added from the integrations UI! It is no longer possible to specify monitored conditions within the RainMachine integration; all entities are added by default. Additionally, the `zone_run_time` parameter is now configured directly within the controller within `configuration.yaml`. - ([@bachya] - [#31066]) ([rainmachine docs]) + + Example configuration YAML: + + ```yaml + rainmachine: + controllers: + - ip_address: !secret rainmachine_ip_address + password: !secret rainmachine_password + ``` + +- __MaryTTS__ - The codec and locale configuration changed to the official config keys from MaryTTS. - ([@Poeschl] - [#30805]) ([marytts docs]) + + - `en-GB`, `en-US` becomes `en_GB`,`en_US` + - `aiff`,`au`,`wav` becomes `AIFF_FILE`,`AU_FILE`, `WAVE_FILE` + + The MaryTTS network logic has been extracted into an external package and the effects setting has been added. + + Example configuration YAML: + + ```yaml + tts: + - platform: marytts + host: 'localhost' + port: 59125 + codec: 'WAVE_FILE' + voice: 'cmu-slt-hsmm' + language: 'en_US' + effect: + Volume: "amount:2.0;", + TractScaler: "amount:1.5;", + F0Scale: "f0Scale:2.0;", + F0Add: "f0Add:50.0;", + Rate: "durScale:1.5;", + Robot: "amount:100.0;", + Whisper: "amount:100.0;", + Stadium: "amount:100.0", + Chorus: "delay1:466;amp1:0.54;delay2:600;amp2:-0.10;delay3:250;amp3:0.30", + FIRFilter: "type:3;fc1:500.0;fc2:2000.0", + JetPilot: "" + ``` + +- __ZHA remotes__ - `binary_sensor` and `switch` entities are not going to be available for some Zigbee "remotes", but they were not supposed to be available to begin with. - ([@Adminiuga] - [#31146]) ([zha docs]) + + Affected devices: + + - Centralite 3130 remote dimmer, DeviceType: 0x0001, removes binary_sensor entity + - OSRAM LIGTIFY Dimming Switch, DeviceType: 0x0001, removes binary_sensor entity + - Securifi Ltd. Penut Plug, DeviceType: 0x0000, removes binary_sensor entity + - 45856GE Jasco Products, DeviceType: 0x0103 + - Aqara Model lumi.remote.b486opcn01, removes switch entity + - Aqara Model lumi.remote.b686opcn01, removes switch entity + - Sercom Corp, SZ-ESW01, removes switch entity + +- __NMBS__ - The generated `unique_id` and `entity_id` have changed for the live sensor. If you were using the live sensor, you will need to update automations and scripts with the newly generated ids, and you might have to clear old entries from the entity registry. - ([@thibmaek] - [#31078]) ([nmbs docs]) + +- __MikroTik__ - MikroTik Integration can now be added from the integrations UI! It also supports importing existing configurations from `configuration.yaml` (refer to the docs to update your configuration). Now uses the entity registry for managing devices (`known_devices.yaml` will not be used anymore), this causes devices to be re-discovered. - ([@engrbm87] - [#27484]) ([mikrotik docs]) + +### Removed + +Hats over your heart for these shuttered integrations. Pour one out for: + +- __PostNL__ *Removed* - PostNL changed their unofficial API and implemented protection, which breaks the integration. It has been confirmed through them that there is no workaround and no likely solution any time in the near future, so it is being removed. - ([@peternijssen] - [#30902]) + +- __Cisco Spark__ *Removed* - Cisco Spark has been rebranded to Cisco Webex Teams. Cisco Webex Teams is available as integration in Home Assistant, which can be used as a replacement. - ([@frenck] - [#30738]) + +- __Owlet__ - *Removed* - The API that the Owlet component was based on has been deprecated by the vendor. There is no other public API provided by the vendor that the component can be upgraded to use, so the component has been removed. - ([@oblogic7] - [#31160]) + +- __Hook__ *Removed* - The `hook` integration has been removed due to the shutdown of the connected service. All servers that have been providing this service will be turned off on 31 Jan 2020. - ([@springstan] - [#31046]) + +## Release 0.105.1 - February 5 + +- Check for known Hue vulnerability ([@balloob] - [#31494]) ([hue docs]) +- Move program_mode check ([@aneisch] - [#31501]) ([radiotherm docs]) +- Updated frontend to 20200130.2 ([@balloob] - [#31502]) ([frontend docs]) +- Sonos services to work without admin access ([@balloob] - [#31506]) ([sonos docs]) + +[#31489]: https://github.com/home-assistant/home-assistant/pull/31489 +[#31494]: https://github.com/home-assistant/home-assistant/pull/31494 +[#31501]: https://github.com/home-assistant/home-assistant/pull/31501 +[#31502]: https://github.com/home-assistant/home-assistant/pull/31502 +[#31506]: https://github.com/home-assistant/home-assistant/pull/31506 +[@aneisch]: https://github.com/aneisch +[@balloob]: https://github.com/balloob +[@frenck]: https://github.com/frenck +[abode docs]: /integrations/abode/ +[adguard docs]: /integrations/adguard/ +[airly docs]: /integrations/airly/ +[frontend docs]: /integrations/frontend/ +[hue docs]: /integrations/hue/ +[radiotherm docs]: /integrations/radiotherm/ +[sonos docs]: /integrations/sonos/ + +## Release 0.105.2 - February 6 + +- 0.105.0 ([@frenck] - [#31489]) ([abode docs]) ([adguard docs]) ([airly docs]) +- Fix automation sun import ([@balloob] - [#31521]) ([automation docs]) +- Fix migrating huawei_lte entry without recipient ([@chmielowiec] - [#31522]) ([huawei_lte docs]) +- Only normalise Garmin connect data to minutes if the value is not None ([@d0ugal] - [#31526]) ([garmin_connect docs]) +- Fix iCloud determine_interval: add default interval to max_interval ([@Quentame] - [#31533]) ([icloud docs]) +- Limit OAuth scopes for Netatmo and Home Assistant Cloud ([@frenck] - [#31538]) ([netatmo docs]) +- Use min and m as units in Garmin Connect for consistency and correctness ([@scop] - [#31543]) ([garmin_connect docs]) (breaking change) +- Deprecate old netatmo keys ([@balloob] - [#31544]) ([netatmo docs]) +- update aiopylgtv to 0.3.3 ([@bendavid] - [#31545]) ([webostv docs]) +- Guard for reloading with no zone config ([@balloob] - [#31547]) ([zone docs]) + +[#31489]: https://github.com/home-assistant/home-assistant/pull/31489 +[#31521]: https://github.com/home-assistant/home-assistant/pull/31521 +[#31522]: https://github.com/home-assistant/home-assistant/pull/31522 +[#31526]: https://github.com/home-assistant/home-assistant/pull/31526 +[#31533]: https://github.com/home-assistant/home-assistant/pull/31533 +[#31538]: https://github.com/home-assistant/home-assistant/pull/31538 +[#31543]: https://github.com/home-assistant/home-assistant/pull/31543 +[#31544]: https://github.com/home-assistant/home-assistant/pull/31544 +[#31545]: https://github.com/home-assistant/home-assistant/pull/31545 +[#31547]: https://github.com/home-assistant/home-assistant/pull/31547 +[@Quentame]: https://github.com/Quentame +[@balloob]: https://github.com/balloob +[@bendavid]: https://github.com/bendavid +[@chmielowiec]: https://github.com/chmielowiec +[@d0ugal]: https://github.com/d0ugal +[@frenck]: https://github.com/frenck +[@scop]: https://github.com/scop +[abode docs]: /integrations/abode/ +[adguard docs]: /integrations/adguard/ +[airly docs]: /integrations/airly/ +[automation docs]: /integrations/automation/ +[garmin_connect docs]: /integrations/garmin_connect/ +[huawei_lte docs]: /integrations/huawei_lte/ +[icloud docs]: /integrations/icloud/ +[netatmo docs]: /integrations/netatmo/ +[webostv docs]: /integrations/webostv/ +[zone docs]: /integrations/zone/ + +## Release 0.105.3 - February 10 + +- Bump ZHA dependencies. ([@Adminiuga] - [#31555]) ([zha docs]) +- Resolve August integration makes too many requests and hits rate limits ([@bdraco] - [#31558]) ([august docs]) +- Bump adguardhome to 0.4.1 ([@frenck] - [#31565]) ([adguard docs]) +- Fix librouteros response error handling ([@engrbm87] - [#31588]) ([mikrotik docs]) +- update pynws to 0.10.4 ([@MatthewFlamm] - [#31591]) ([nws docs]) +- Catch garmin_connect keyerrors with unknown entity type updates ([@cyberjunky] - [#31608]) ([garmin_connect docs]) +- Bump ZHA dependencies. ([@Adminiuga] - [#31619]) ([zha docs]) +- Fix hvac_action for mill ([@Danielhiversen] - [#31630]) ([mill docs]) +- Fix wrong error message in netatmo integration ([@cgtobi] - [#31690]) ([netatmo docs]) + +[#31489]: https://github.com/home-assistant/home-assistant/pull/31489 +[#31555]: https://github.com/home-assistant/home-assistant/pull/31555 +[#31558]: https://github.com/home-assistant/home-assistant/pull/31558 +[#31565]: https://github.com/home-assistant/home-assistant/pull/31565 +[#31588]: https://github.com/home-assistant/home-assistant/pull/31588 +[#31591]: https://github.com/home-assistant/home-assistant/pull/31591 +[#31608]: https://github.com/home-assistant/home-assistant/pull/31608 +[#31619]: https://github.com/home-assistant/home-assistant/pull/31619 +[#31630]: https://github.com/home-assistant/home-assistant/pull/31630 +[#31690]: https://github.com/home-assistant/home-assistant/pull/31690 +[@Adminiuga]: https://github.com/Adminiuga +[@Danielhiversen]: https://github.com/Danielhiversen +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@bdraco]: https://github.com/bdraco +[@cgtobi]: https://github.com/cgtobi +[@cyberjunky]: https://github.com/cyberjunky +[@engrbm87]: https://github.com/engrbm87 +[@frenck]: https://github.com/frenck +[abode docs]: /integrations/abode/ +[adguard docs]: /integrations/adguard/ +[airly docs]: /integrations/airly/ +[august docs]: /integrations/august/ +[garmin_connect docs]: /integrations/garmin_connect/ +[mikrotik docs]: /integrations/mikrotik/ +[mill docs]: /integrations/mill/ +[netatmo docs]: /integrations/netatmo/ +[nws docs]: /integrations/nws/ +[zha docs]: /integrations/zha/ + +## Release 0.105.4 - February 14 + +- Guard writing automation/scene/script config ([@balloob] - [#31568]) ([config docs]) +- For vizio integration, set unique ID early to prevent multiple zeroconf discovery items for the same device to appear ([@raman325] - [#31686]) ([vizio docs]) +- Fix missing device class in netatmo binary sensors ([@cgtobi] - [#31693]) ([netatmo docs]) +- Fix person reload service ([@balloob] - [#31716]) ([person docs]) +- Fix smoke detection for HomematicIP Cloud ([@SukramJ] - [#31753]) ([homematicip_cloud docs]) +- Updated frontend to 20200130.3 ([@bramkragten] - [#31771]) ([frontend docs]) +- Fix person device_trackers null ([@balloob] - [#31829]) ([person docs]) +- Google Assistant: Remove speaker type and earlier filter out devices from being locally exposed ([@balloob] - [#31830]) ([google_assistant docs]) +- Spotify integration hotfixes ([@frenck] - [#31835]) ([spotify docs]) + +[#31489]: https://github.com/home-assistant/home-assistant/pull/31489 +[#31568]: https://github.com/home-assistant/home-assistant/pull/31568 +[#31686]: https://github.com/home-assistant/home-assistant/pull/31686 +[#31693]: https://github.com/home-assistant/home-assistant/pull/31693 +[#31716]: https://github.com/home-assistant/home-assistant/pull/31716 +[#31753]: https://github.com/home-assistant/home-assistant/pull/31753 +[#31771]: https://github.com/home-assistant/home-assistant/pull/31771 +[#31829]: https://github.com/home-assistant/home-assistant/pull/31829 +[#31830]: https://github.com/home-assistant/home-assistant/pull/31830 +[#31835]: https://github.com/home-assistant/home-assistant/pull/31835 +[@SukramJ]: https://github.com/SukramJ +[@balloob]: https://github.com/balloob +[@bramkragten]: https://github.com/bramkragten +[@cgtobi]: https://github.com/cgtobi +[@frenck]: https://github.com/frenck +[@raman325]: https://github.com/raman325 +[abode docs]: /integrations/abode/ +[adguard docs]: /integrations/adguard/ +[airly docs]: /integrations/airly/ +[config docs]: /integrations/config/ +[frontend docs]: /integrations/frontend/ +[google_assistant docs]: /integrations/google_assistant/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[netatmo docs]: /integrations/netatmo/ +[person docs]: /integrations/person/ +[spotify docs]: /integrations/spotify/ +[vizio docs]: /integrations/vizio/ + +## Release 0.105.5 - February 17 + +- Upgrade bimmer_connected to 0.7.0 ([@gerard33] - [#31894]) ([bmw_connected_drive docs]) +- Report which data causes JSON serialization error ([@balloob] - [#31901]) + +[#31489]: https://github.com/home-assistant/home-assistant/pull/31489 +[#31894]: https://github.com/home-assistant/home-assistant/pull/31894 +[#31901]: https://github.com/home-assistant/home-assistant/pull/31901 +[@balloob]: https://github.com/balloob +[@frenck]: https://github.com/frenck +[@gerard33]: https://github.com/gerard33 +[abode docs]: /integrations/abode/ +[adguard docs]: /integrations/adguard/ +[airly docs]: /integrations/airly/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ + +## Beta Fixes + +- ZHA dependencies bump ([@Adminiuga] - [#31295]) ([zha docs]) (beta fix) +- Add zones services.yaml ([@balloob] - [#31298]) (beta fix) +- Add zone to defaul config ([@balloob] - [#31303]) ([default_config docs]) (beta fix) +- Handle service calls that do not refer entity IDs ([@balloob] - [#31317]) (beta fix) +- Updated frontend to 20200130.0 ([@bramkragten] - [#31318]) ([frontend docs]) (beta fix) +- Fix HTTP config serialization ([@balloob] - [#31319]) ([http docs]) (beta fix) +- Guard Z-Wave light HS conversion on None ([@balloob] - [#31320]) ([zwave docs]) (beta fix) +- Fix wemo lights ([@balloob] - [#31323]) ([wemo docs]) (beta fix) +- Emulated Hue: changed fallback device-type to fix Alexa compatibility issues (#30013) ([@xtools-at] - [#31330]) ([emulated_hue docs]) (beta fix) +- Fix async bug in amcrest when registering services ([@pnbruckner] - [#31334]) ([amcrest docs]) (beta fix) +- Guard for callbacks in service helper ([@balloob] - [#31339]) ([camera docs]) (beta fix) +- Fix incorrect annotation async flock notify ([@balloob] - [#31342]) ([flock docs]) (beta fix) +- Update Hue data fetching ([@balloob] - [#31338]) ([hue docs]) (beta fix) +- Upgrade pysma, fix #27154 ([@kellerza] - [#31346]) ([sma docs]) (beta fix) +- Partially Revert "Deprecate hide_if_away from device_tracker (#30833) ([@frenck] - [#31348]) ([device_tracker docs]) (beta fix) +- Protect for unknown state attributes. ([@ochlocracy] - [#31354]) ([alexa docs]) (beta fix) +- bump quirks ([@dmulcahey] - [#31355]) ([zha docs]) (beta fix) +- Fix wemo device types for lights ([@balloob] - [#31360]) ([wemo docs]) (beta fix) +- Updated wemo lights fix for #31360 ([@DanTLehman] - [#31369]) ([wemo docs]) (beta fix) +- Fix auto_bypass in alarmdecoder ([@springstan] - [#30961]) ([alarmdecoder docs]) (beta fix) +- deCONZ - Add support for new switch type ([@Kane610] - [#31362]) ([deconz docs]) (beta fix) +- Add dump service to MQTT integration ([@balloob] - [#31370]) ([mqtt docs]) (beta fix) +- Filter int in fan speed_list when yielding RangeController in Alexa ([@ochlocracy] - [#31375]) ([alexa docs]) (beta fix) +- deCONZ - Services normalize bridge id ([@Kane610] - [#31378]) ([deconz docs]) (beta fix) +- Revert "Bump alarmdecoder to 1.13.9 (#30303)" ([@springstan] - [#31385]) ([alarmdecoder docs]) (beta fix) +- Fix service annotations ([@balloob] - [#31402]) ([input_select docs]) ([media_player docs]) (beta fix) +- deCONZ - Fix magic cube awake gesture ([@FrengerH] - [#31403]) ([deconz docs]) (beta fix) +- Fix rflink commands containing equals sign ([@akasma74] - [#31412]) ([rflink docs]) (beta fix) +- Emulated Hue + Alexa: Fix devices not discovered and error response (#30013 & #29899) ([@xtools-at] - [#31413]) ([emulated_hue docs]) (beta fix) +- Fix device name Google Assistant when using aliases ([@frenck] - [#31416]) ([google_assistant docs]) (breaking change) (beta fix) +- always call set_volume with integer values ([@bendavid] - [#31418]) ([webostv docs]) (beta fix) +- Rework Mikrotik device scanning following Unifi ([@engrbm87] - [#27484]) ([mikrotik docs]) (breaking change) (beta fix) +- Update NSAPI to 3.0.2 ([@YarmoM] - [#30971]) ([nederlandse_spoorwegen docs]) (breaking change) (beta fix) +- Samsung TV refinements ([@escoand] - [#31248]) ([samsungtv docs]) (beta fix) +- Fix theme color ([@quthla] - [#31366]) ([frontend docs]) (beta fix) +- Keep track of the derivative for unit_time ([@basnijholt] - [#31397]) ([derivative docs]) (beta fix) +- Update libpurecool upstream library to latest version ([@etheralm] - [#31457]) ([dyson docs]) (beta fix) +- Updated frontend to 20200130.1 ([@bramkragten] - [#31460]) ([frontend docs]) (beta fix) +- Update vizio host check to handle entries that don't have port ([@raman325] - [#31463]) ([vizio docs]) (beta fix) +- Fix coordinator reference ([@balloob] - [#31467]) ([hue docs]) (beta fix) +- Fix iCloud device battery level can be None ([@Quentame] - [#31468]) ([icloud docs]) (beta fix) +- Automation device/entity extraction to include triggers + conditions ([@balloob] - [#31474]) ([automation docs]) (beta fix) +- Re-branding of Hass.io panel to Supervisor ([@frenck] - [#31480]) ([hassio docs]) (breaking change) (beta fix) +- Remove tests for deprecated key ([@balloob] - [#31491]) (beta fix) +- Fix Google API key test ([@balloob] - [#31492]) (beta fix) + +## All changes + +- Add Doorbird events to logbook ([@oblogic7] - [#30588]) ([doorbird docs]) +- Template alarm panel ([@alistairg] - [#30487]) ([template docs]) (new-platform) +- Fix aurora sensor not converting latitude and longitude correctly ([@Watchfox] - [#28643]) ([aurora docs]) +- Add neato boundary name to state if it exists ([@Olen] - [#29915]) ([neato docs]) (breaking change) +- Fix aurora import order ([@MartinHjelmare] - [#30606]) ([aurora docs]) +- tweak honeywell manifest ([@zxdavb] - [#30612]) ([honeywell docs]) +- Fix statistics sensor honouring max_age ([@exxamalte] - [#27372]) ([statistics docs]) (breaking change) +- Add preset scheduling to radiothermostat ([@zombielinux] - [#29847]) ([radiotherm docs]) +- Fix TOD component incorrectly determining the state between sunrise and sunset ([@Anonym-tsk] - [#30199]) ([tod docs]) +- Update PYAEHW4A1 to version 0.3.4 ([@bannhead] - [#30616]) ([hisense_aehw4a1 docs]) +- Check netgear device_tracker link_rate to ensure device is connected ([@dlashua] - [#30581]) ([netgear docs]) +- Change nomenclature for Roborock fan speeds ([@tiagofreire-pt] - [#30614]) ([xiaomi_miio docs]) (breaking change) +- Add INFO logging to generic_thermostat component for keep-alive turn … ([@nemccarthy] - [#28740]) ([generic_thermostat docs]) +- Add Samsung TV config flow ([@escoand] - [#28306]) ([samsungtv docs]) (breaking change) +- Convert vizio component from sync to async component ([@raman325] - [#30605]) ([vizio docs]) +- Upgrade praw to 6.5.0 ([@fabaff] - [#30643]) ([reddit docs]) +- Upgrade shodan to 1.21.2 ([@fabaff] - [#30641]) ([shodan docs]) +- Upgrade pylast to 3.2.0 ([@fabaff] - [#30644]) ([lastfm docs]) +- Upgrade colorlog to 4.1.0 ([@fabaff] - [#30642]) +- Upgrade pydocstyle to 5.0.2 ([@scop] - [#30648]) +- deCONZ - Disable daylight sensor by default ([@Kane610] - [#30625]) ([deconz docs]) +- Add search integration ([@balloob] - [#30511]) ([search docs]) (new-integration) +- Fix Alexa ChangeReports Filter non-proactively_reported_properties ([@ochlocracy] - [#30655]) ([alexa docs]) +- Remove self as Emulated Hue codeowner ([@NobleKangaroo] - [#30654]) ([emulated_hue docs]) +- Implement TimeHoldController Interface in Alexa ([@ochlocracy] - [#30650]) ([alexa docs]) +- Add support for variable fan speed list length. ([@ochlocracy] - [#30574]) ([alexa docs]) +- Use storage based collections for input_number entities ([@Adminiuga] - [#30576]) ([input_number docs]) +- pushover: improve error when image download fails ([@Mic92] - [#30615]) ([pushover docs]) +- Add support for Dyson TP06 fan ([@etheralm] - [#30611]) ([dyson docs]) +- Refactor Netatmo integration ([@cgtobi] - [#29851]) ([netatmo docs]) (breaking change) +- Use storage collections for input_select entity management ([@Adminiuga] - [#30604]) ([input_number docs]) ([input_select docs]) +- Fix test_scenes_with_entity ([@scop] - [#30684]) +- Update iCloud sensors when service finish its update ([@Quentame] - [#30680]) ([icloud docs]) +- Upgrade huawei-lte-api to 1.4.6 ([@scop] - [#30683]) ([huawei_lte docs]) +- Use collection helpers for input_text entities ([@Adminiuga] - [#30633]) ([input_text docs]) +- Fixing unit of measure for withings hydration. Fixes #30570 ([@vangorra] - [#30685]) ([withings docs]) +- Optimistically set tplink light states ([@vangorra] - [#30189]) ([tplink docs]) +- ZHA cover device support ([@billyburly] - [#30639]) ([zha docs]) (new-platform) +- Drop timer component microseconds ([@inputd] - [#30198]) ([timer docs]) +- Make met config flow tests robust ([@MartinHjelmare] - [#30689]) +- Make hue config flow tests more robust ([@MartinHjelmare] - [#30678]) +- Bumped oru to 0.1.11 (adds a timeout to the api request) ([@bvlaicu] - [#30704]) ([oru docs]) +- Update NSAPI to version 3.0.0 ([@YarmoM] - [#30599]) ([nederlandse_spoorwegen docs]) (breaking change) +- Fix SynologyDSM sensor if network_sensors is None ([@Quentame] - [#30718]) ([synologydsm docs]) +- Consolidate SimpliSafe property services ([@bachya] - [#30567]) ([simplisafe docs]) (breaking change) +- Unhide SPC binary sensors by default ([@frenck] - [#30699]) ([spc docs]) +- Support yeelight color light with nightlight ([@zewelor] - [#30194]) ([yeelight docs]) +- Add unique ID to Airly config entries ([@bieniu] - [#30681]) ([airly docs]) +- Remove hidden property from xiaomi_miio.remote integration ([@frenck] - [#30727]) ([xiaomi_miio docs]) (breaking change) +- Bump apprise to 0.8.3 ([@frenck] - [#30731]) ([apprise docs]) +- Remove hidden property from egardia integration ([@frenck] - [#30728]) ([egardia docs]) (breaking change) +- Remove hidden property from emby integration ([@frenck] - [#30729]) ([emby docs]) (breaking change) +- Remove hidden property from fibaro integration ([@frenck] - [#30730]) ([fibaro docs]) (breaking change) +- Bump env_canada to 0.0.34 ([@michaeldavie] - [#30713]) ([environment_canada docs]) +- Removes unneeded abort if unique id in Oauth2 discovery flow ([@frenck] - [#30733]) +- Update Hue SSDP discovery ([@balloob] - [#30695]) ([hue docs]) +- Fix hassfest allowing omitting discovery methods when using OAuth2Flow ([@frenck] - [#30732]) +- Update config flow test scaffolding ([@balloob] - [#30694]) +- Removes Cisco Spark integration ([@frenck] - [#30738]) (breaking change) +- Fix translation from HA playlist to UPnP playlistItem ([@StevenLooman] - [#30743]) ([dlna_dmr docs]) +- Fix 'NewIPAddress' error in component fritz ([@basdelfos] - [#30210]) ([fritz docs]) ([fritzbox_netmonitor docs]) (breaking change) +- Fix small typo in alarmdotcom component ([@akinomeroglu] - [#30758]) +- Fix supported_features in MQTT fan ([@springstan] - [#28680]) ([mqtt docs]) (breaking change) +- Add support for the voltage sensor on the greeneye GEM ([@garbled1] - [#30484]) ([greeneye_monitor docs]) +- Add Safe Mode ([@balloob] - [#30723]) ([frontend docs]) ([http docs]) ([safe_mode docs]) (breaking change) (new-integration) +- Hass.io allow to reset password with CLI ([@pvizeli] - [#30755]) ([hassio docs]) +- Upgrade youtube_dl to version 2020.01.15 ([@BKPepe] - [#30767]) ([media_extractor docs]) +- Use storage based collections for Timer platform ([@Adminiuga] - [#30765]) ([timer docs]) +- Search: Add search to default config and don't resolve area ([@bramkragten] - [#30762]) ([default_config docs]) ([search docs]) +- Allow input_* and timer component setup without config ([@Adminiuga] - [#30772]) ([input_boolean docs]) ([input_number docs]) ([input_select docs]) ([input_text docs]) ([timer docs]) +- Add Config Flow support, Device Registry support, available property to vizio component ([@raman325] - [#30653]) ([vizio docs]) (breaking change) +- Update pyubee to 0.8 ([@mzdrale] - [#30785]) ([ubee docs]) +- Add support for vacuums to Alexa. ([@ochlocracy] - [#30764]) ([alexa docs]) +- Mark hide_entity deprecated in automation integration ([@frenck] - [#30799]) ([automation docs]) (breaking change) +- Bump librouteros to 3.0.0 ([@springstan] - [#30800]) ([mikrotik docs]) +- Update pynws to v0.10.1 ([@MatthewFlamm] - [#30662]) ([nws docs]) +- Fixed pyyaml requirement from 5.2.0 to 5.2 ([@WoLpH] - [#30808]) +- Use collection helpers for input_datetime component ([@Adminiuga] - [#30815]) ([input_datetime docs]) +- Handle location API being exhausted ([@balloob] - [#30798]) +- Deprecate states UI options in group integration ([@frenck] - [#30831]) ([group docs]) (breaking change) +- Deprecate weblink integration ([@frenck] - [#30834]) (breaking change) +- Deprecate hide_if_away from device_tracker ([@frenck] - [#30833]) ([device_tracker docs]) (breaking change) +- Deprecate history_graph integration ([@frenck] - [#30835]) (breaking change) +- Remove unused import ([@dshokouhi] - [#30858]) ([ring docs]) +- Bump pyvizio version to 0.1.1 ([@raman325] - [#30867]) ([vizio docs]) +- Update pyatmo to 3.2.2 and add available attribute ([@cgtobi] - [#30882]) ([netatmo docs]) +- Extract collection entity registry cleaner into a helper ([@Adminiuga] - [#30844]) ([input_boolean docs]) ([input_datetime docs]) ([input_number docs]) ([input_select docs]) ([input_text docs]) ([person docs]) ([timer docs]) +- Remove option to configure SimpliSafe scan interval ([@bachya] - [#30909]) ([simplisafe docs]) (breaking change) +- remove PostNL component as it is no longer working ([@peternijssen] - [#30902]) (breaking change) +- Adds icon endpoint to NO_AUTH ([@ludeeus] - [#30910]) ([hassio docs]) +- Add battery voltage state attribute for ZHA devices ([@Adminiuga] - [#30901]) ([zha docs]) +- Refactor rounding for ZHA electrical measurement sensor ([@Adminiuga] - [#30923]) ([zha docs]) +- Update outdated documentation links in json files ([@springstan] - [#30916]) ([apprise docs]) ([geonetnz_volcano docs]) ([pcal9535a docs]) ([sinch docs]) ([starline docs]) ([versasense docs]) +- Use default media player device classes for vizio component ([@raman325] - [#30802]) ([vizio docs]) (breaking change) +- Add services to geniushub ([@zxdavb] - [#30918]) ([geniushub docs]) +- Add services to evohome ([@zxdavb] - [#29816]) ([evohome docs]) +- Revert "Pulseaudio: Changed default port from 4712 to 4713 (#28857)" ([@springstan] - [#30939]) ([pulseaudio_loopback docs]) (breaking change) +- Don't use unit_of_measurement in state attributes. ([@Adminiuga] - [#30941]) ([zha docs]) +- Add play media support and Spotify control to Openhome ([@bazwilliams] - [#28698]) ([openhome docs]) +- Minor enhancements to jewish_calendar ([@ajmarks] - [#30632]) ([jewish_calendar docs]) +- Add logical Zigbee device type to ZHA device info ([@dmulcahey] - [#30954]) ([zha docs]) +- Fix can't add multiple iCloud accounts (remove account name) ([@Quentame] - [#30898]) ([icloud docs]) (breaking change) +- Improve Wemo config entry support, add device info ([@balloob] - [#30963]) ([wemo docs]) +- initial commit ([@zxdavb] - [#30968]) ([evohome docs]) (breaking change) +- Add foundation for integration services ([@balloob] - [#30813]) ([sonos docs]) (breaking change) +- Fix options update during import config flow step for vizio component (Bugfix for #30653) ([@raman325] - [#30977]) ([vizio docs]) +- print component import error to logfile ([@zhumuht] - [#30346]) +- Add Derivative component ([@afaucogney] - [#26456]) ([derivative docs]) (new-integration) +- Add state reproduction to remotes ([@bachya] - [#30990]) ([remote docs]) +- Add attributes departure_minutes and delay_minutes to the nmbs sensor ([@rdehuyss] - [#30958]) ([nmbs docs]) +- Minor fixes for webostv ([@bendavid] - [#30998]) ([webostv docs]) +- Add kef supports_on option ([@basnijholt] - [#30937]) ([kef docs]) +- Small tweaks for evohome ([@zxdavb] - [#31007]) ([evohome docs]) +- Adds missing strings to Almond ([@frenck] - [#31013]) ([almond docs]) +- Adds missing strings to Withings ([@frenck] - [#31012]) ([withings docs]) +- Enable some more bandit checks ([@scop] - [#30857]) ([command_line docs]) ([vicare docs]) ([x10 docs]) ([yi docs]) +- Use config_entry.unique_id in iCloud ([@Quentame] - [#30984]) ([icloud docs]) +- Bump zigpy-zigate to 0.5.1 ([@doudz] - [#31004]) ([zha docs]) +- Allow OpenUV entities to be unavailable ([@bachya] - [#31018]) ([openuv docs]) +- Handle ghost zones gracefully ([@zxdavb] - [#31008]) ([evohome docs]) +- Upgrade importlib-metadata to version 1.4.0 ([@BKPepe] - [#31027]) +- Upgrade pyyaml to 5.3 ([@BKPepe] - [#31026]) +- Allow ZHA device creation for the Zigbee coordinator ([@dmulcahey] - [#31032]) ([zha docs]) +- Remove all empty *_setup_platform() from integrations ([@frenck] - [#31025]) +- Bump pyintesishome to v1.6 ([@jnimmo] - [#31044]) ([intesishome docs]) +- Update pyipma to 2.0 ([@abmantis] - [#30746]) ([ipma docs]) +- Add xiaomi miio sensors cgllc.airmonitor.s1 & cgllc.airmonitor.b1 ([@zhumuht] - [#30345]) ([xiaomi_miio docs]) +- Update issue and PR templates ([@frenck] - [#31056]) +- switch evohome to use a whitelist for valid zonetype ([@zxdavb] - [#31047]) ([evohome docs]) +- Bump pytest to 5.3.4 ([@frenck] - [#31045]) +- Iteration on issue and PR templates ([@frenck] - [#31058]) +- Fix prometheus component to fully sanitize Unicode characters ([@joegross] - [#31037]) ([prometheus docs]) +- Add tahoma io:AwningValanceIOComponent ([@jensihnow] - [#30944]) ([tahoma docs]) +- Fix fan_modes in tuya climate ([@springstan] - [#30942]) ([tuya docs]) +- Fix luftdaten broken icon for "Pressure at sealevel" ([@reuank] - [#31053]) ([luftdaten docs]) +- Enhance info_from_service function in zeroconf integration ([@raman325] - [#31059]) ([zeroconf docs]) +- Add zeroconf discovery support for vizio integration ([@raman325] - [#30949]) ([vizio docs]) +- Add the Home Assistant version as a Sentry release ([@d0ugal] - [#31065]) ([sentry docs]) +- Add disabled entities support to WLED ([@frenck] - [#31040]) ([wled docs]) +- change group id creation ([@dmulcahey] - [#31075]) ([zha docs]) +- Allow unloading mobile app ([@balloob] - [#30995]) ([mobile_app docs]) +- Improve state tracking for WebOsTV ([@bendavid] - [#31042]) ([webostv docs]) (breaking change) +- Add DIRECTORY and PLUGIN to kodi media types ([@thoscut] - [#28336]) ([kodi docs]) +- Add zeroconf discovery support to Brother Printer integration ([@bieniu] - [#30959]) ([brother docs]) +- Migrate zone to use collection helpers ([@balloob] - [#30774]) ([zone docs]) (breaking change) +- Code Cleanup for Vizio component ([@raman325] - [#31076]) +- Simplify automation services ([@balloob] - [#30996]) ([automation docs]) +- Remove monitored conditions from OpenUV ([@bachya] - [#31019]) ([openuv docs]) (breaking change) +- Add myself to owners for components I contributed ([@jkeljo] - [#31020]) ([greeneye_monitor docs]) ([sisyphus docs]) +- Deprecate hook integration ([@springstan] - [#31046]) (breaking change) +- Add keep-alive which is required for some hlk-sw16 variants ([@jameshilliard] - [#31062]) ([hlk_sw16 docs]) +- pydaikin version bump ([@fredrike] - [#31080]) ([daikin docs]) +- Remove monitored conditions from RainMachine ([@bachya] - [#31066]) ([rainmachine docs]) (breaking change) +- Add sighthound integration ([@robmarkcole] - [#28824]) ([sighthound docs]) (new-integration) +- Cleanup of PR and issue templates ([@frenck] - [#31070]) +- Upgrade sqlalchemy to 1.3.13 ([@frenck] - [#31101]) ([recorder docs]) ([sql docs]) +- Fix HomeKit window covering to support float numbers in the position ([@dokmic] - [#31081]) ([homekit docs]) +- Add temperature support to light template ([@tetienne] - [#30595]) ([template docs]) +- Allow framerates less than 1 ([@uvjustin] - [#31108]) ([generic docs]) +- Upgrade shodan to 1.21.3 ([@fabaff] - [#31111]) ([shodan docs]) +- Add update_entry dict to unique ID flow abort helper ([@frenck] - [#31090]) +- Change Samsung TV state detection ([@tulindo] - [#30236]) ([samsungtv docs]) +- Use speak2mary for MaryTTS integration and enable sound effects ([@Poeschl] - [#30805]) ([marytts docs]) (breaking change) +- Add disabled entities support to AdGuard ([@frenck] - [#31106]) ([adguard docs]) +- Fix connection failure log message in async_setup_entry for Vizio component ([@raman325] - [#31097]) ([vizio docs]) +- Upgrade youtube_dl to version 2020.01.24 ([@BKPepe] - [#31124]) ([media_extractor docs]) +- Update cast to 4.1.1 ([@balloob] - [#31113]) ([cast docs]) +- Add Buienradar camera for Belgium ([@MiniLau] - [#30399]) ([buienradar docs]) +- Fix Template components to process entity_id configuration option ([@dokmic] - [#31084]) ([template docs]) +- Remove unused async_setup_platform ([@SukramJ] - [#31132]) ([homematicip_cloud docs]) +- Update Hue existing config entry with discovery data ([@frenck] - [#31087]) ([hue docs]) +- Rewrite of Spotify integration ([@frenck] - [#30717]) ([spotify docs]) (breaking change) +- Validate coveragerc with hassfest ([@balloob] - [#31112]) +- Make pylint fail on informational messages too ([@scop] - [#31136]) +- Add logo & icon support to Manifest ([@frenck] - [#31131]) +- Fix when you have two wemo devices ([@balloob] - [#31139]) ([wemo docs]) +- Include supported states in Alexa SecurityPanelController configuration object ([@ochlocracy] - [#31120]) ([alexa docs]) +- Make SimpliSafe integration more resilient to SimpliSafe cloud issues ([@bachya] - [#31116]) ([simplisafe docs]) +- Add smarter API usage for RainMachine ([@bachya] - [#31115]) ([rainmachine docs]) +- Fix RainMachine update action ([@bachya] - [#31147]) ([rainmachine docs]) +- Fix Huawei LTE SMS recipient setting from options UI ([@scop] - [#31117]) ([huawei_lte docs]) +- Remove no longer used Hound config ([@scop] - [#31154]) +- Update ZHA remotes registry to proper identify "remotes ([@Adminiuga] - [#31146]) ([zha docs]) (breaking change) +- improvements to zha cover ([@billyburly] - [#31144]) ([zha docs]) +- Fix state handling for older webos versions ([@bendavid] - [#31099]) ([webostv docs]) +- Separate iCloud class ([@Quentame] - [#31022]) ([icloud docs]) +- Remove Owlet component ([@oblogic7] - [#31160]) (breaking change) +- Fix the ihc.set_runtime_value_int service function not working with templates ([@dingusdk] - [#31145]) ([ihc docs]) +- Add additional alarm states to SimpliSafe ([@bachya] - [#31060]) ([simplisafe docs]) (breaking change) +- Refactor RainMachine switch platform ([@bachya] - [#31148]) ([rainmachine docs]) +- Implement 'volume_set' service for Android TV devices ([@JeffLIrion] - [#31161]) ([androidtv docs]) +- Introduce unique_id for lastfm to allow changing entity_id in backwards compatible way ([@inverse] - [#31163]) ([lastfm docs]) +- Fix Velbus covers (includes velbus lib upgrade) ([@Cereal2nd] - [#31153]) ([velbus docs]) +- Use unique_id for config_entries of HomematicIP Cloud ([@SukramJ] - [#31133]) ([homematicip_cloud docs]) +- Add counters sensors for Velbus ([@brefra] - [#31165]) ([velbus docs]) +- Bump insteonplm to 0.16.6 ([@teharris1] - [#31182]) ([insteon docs]) +- Add hassfest URL validation to documentation link ([@frenck] - [#31143]) ([soma docs]) +- Bump aiobotocore to 0.11.1 ([@finnysamuel] - [#30951]) ([aws docs]) +- Use non-deprecated method of instantiating RainMachine client ([@bachya] - [#31149]) ([rainmachine docs]) +- Upgrade huawei-lte-api to 1.4.7 ([@scop] - [#31155]) ([huawei_lte docs]) +- Add unique IDs to automation/scenes ([@balloob] - [#31150]) ([automation docs]) ([config docs]) ([homeassistant docs]) ([script docs]) +- Add webostv sound_output capability ([@starkillerOG] - [#31121]) ([webostv docs]) +- Check that documentation urls are valid ([@rohankapoorcom] - [#31188]) ([solarlog docs]) +- Disable failing dsmr tests ([@frenck] - [#31202]) +- Fix unnecessary regeneration of access token in Tesla component ([@alandtse] - [#31193]) ([tesla docs]) +- Upgrade HAP-python to 2.7.0 ([@frenck] - [#31201]) ([homekit docs]) +- Added missing file ([@cyberjunky] - [#31189]) +- update remove service ([@dmulcahey] - [#31164]) ([zha docs]) +- Fix ps4 errors if pin begins with a 0 ([@ktnrg45] - [#31198]) ([ps4 docs]) +- Use config_entry.unique_id in Linky ([@Quentame] - [#31051]) ([linky docs]) +- Add Garmin Connect integration ([@cyberjunky] - [#30792]) ([garmin_connect docs]) (new-integration) +- Constrain SimpliSafe's check for emergency token usage ([@bachya] - [#31214]) ([simplisafe docs]) +- Update Hue discovery ([@balloob] - [#31215]) ([hue docs]) +- Fix typo: serivce --> service ([@cclauss] - [#31217]) +- Cleanup of HomematicIP Cloud tests ([@SukramJ] - [#31181]) ([homematicip_cloud docs]) +- Bump python-synology to 0.4.0 : Add support for DSM v5 + fix sensors unknown for 15 min ([@aaska] - [#31049]) ([synologydsm docs]) +- Update ZHA entity discovery tests ([@Adminiuga] - [#31191]) ([zha docs]) +- Add test for adding a device to HomematicIP Cloud ([@SukramJ] - [#31224]) ([homematicip_cloud docs]) +- Add Gammu based local SMS notifications ([@ocalvo] - [#31233]) ([sms docs]) (new-integration) +- Add gammu to wheels ([@pvizeli] - [#31239]) +- Mill, correct hvac_mode. Fixes #31236 ([@Danielhiversen] - [#31242]) ([mill docs]) +- Add brefra to codeowners list Velbus integration ([@brefra] - [#31245]) ([velbus docs]) +- Google Assistant: Track if request is local ([@balloob] - [#31226]) ([cloud docs]) ([google_assistant docs]) +- Add proxmoxve SSLError check and remove log spam ([@jhollowe] - [#30818]) ([proxmoxve docs]) +- Upgrade iaqualink to 0.3.1 ([@frenck] - [#31257]) ([iaqualink docs]) +- Upgrade dsmr_parser to 0.18, re-enable tests ([@frenck] - [#31256]) ([dsmr docs]) +- Mark device unavailable when it leaves Zigbee network. ([@Adminiuga] - [#31264]) ([zha docs]) +- deCONZ - New light level sensor attribute ([@Kane610] - [#31255]) ([deconz docs]) +- Bump abodepy version to 0.17.0 ([@shred86] - [#31250]) ([abode docs]) +- Bump pyhaversion to 3.2.0 ([@basnijholt] - [#31241]) +- Fix Plugwise climate issues ([@bouwew] - [#31209]) ([plugwise docs]) +- Fix reporting of battery sensor for Tesla ([@alandtse] - [#31232]) ([tesla docs]) +- Add channel-mapping for HomeMatic ([@danielperna84] - [#31178]) ([homematic docs]) +- Update homeassistant-pyozw to 0.1.8 ([@pvizeli] - [#31270]) ([zwave docs]) +- Upgrade pre-commit to 2.0.0 ([@frenck] - [#31267]) +- fix knx light turn_on with ct ([@farmio] - [#31184]) ([knx docs]) +- Fix example for set_datetime service ([@l3d00m] - [#31159]) +- Fix light.turn_on for emulated_hue ([@rslota] - [#31195]) ([emulated_hue docs]) +- Create truly live unique id ([@thibmaek] - [#31078]) ([nmbs docs]) (breaking change) +- Add device_class to Tesla sensors ([@alandtse] - [#31231]) ([tesla docs]) +- Remove useless assignment ([@tetienne] - [#31272]) ([template docs]) +- Bump iCloud to 0.9.2 + fix setup log ([@Quentame] - [#31273]) ([icloud docs]) +- Catch 'ConnectionResetError' exceptions for Android TV integra… ([@JeffLIrion] - [#31274]) ([androidtv docs]) +- Add OPNSense device tracker ([@mtreinish] - [#26834]) ([opnsense docs]) (new-integration) +- Add PowerController to covers in Alexa ([@ochlocracy] - [#31265]) ([alexa docs]) +- Add support for rangeValueDeltaDefault in Alexa AdjustRangeValue directive ([@ochlocracy] - [#31258]) ([alexa docs]) +- Fix tests for opnsense ([@pvizeli] - [#31277]) +- ZHA group and device cleanup ([@dmulcahey] - [#31260]) ([zha docs]) +- Add code owner for amcrest integration ([@pnbruckner] - [#31276]) ([amcrest docs]) +- Allow filtering of sources for Android TV ([@JeffLIrion] - [#30994]) ([androidtv docs]) +- Updated frontend to 20200129.0 ([@bramkragten] - [#31279]) ([frontend docs]) +- Add command 'ps_hold' to PS4 ([@ktnrg45] - [#31283]) ([ps4 docs]) +- Fix callback and async ([@balloob] - [#31281]) +- Catch error when searching for scenes or automations ([@balloob] - [#31288]) ([search docs]) +- Find related items scripts/automations ([@balloob] - [#31293]) ([automation docs]) ([script docs]) ([search docs]) +- Use all new helper functions ([@Kane610] - [#31278]) ([deconz docs]) +- Fix service helper not handling sync methods ([@balloob] - [#31254]) +- ZHA dependencies bump ([@Adminiuga] - [#31295]) ([zha docs]) (beta fix) +- Add zones services.yaml ([@balloob] - [#31298]) (beta fix) +- Add zone to defaul config ([@balloob] - [#31303]) ([default_config docs]) (beta fix) +- Handle service calls that do not refer entity IDs ([@balloob] - [#31317]) (beta fix) +- Updated frontend to 20200130.0 ([@bramkragten] - [#31318]) ([frontend docs]) (beta fix) +- Fix HTTP config serialization ([@balloob] - [#31319]) ([http docs]) (beta fix) +- Guard Z-Wave light HS conversion on None ([@balloob] - [#31320]) ([zwave docs]) (beta fix) +- Fix wemo lights ([@balloob] - [#31323]) ([wemo docs]) (beta fix) +- Emulated Hue: changed fallback device-type to fix Alexa compatibility issues (#30013) ([@xtools-at] - [#31330]) ([emulated_hue docs]) (beta fix) +- Fix async bug in amcrest when registering services ([@pnbruckner] - [#31334]) ([amcrest docs]) (beta fix) +- Guard for callbacks in service helper ([@balloob] - [#31339]) ([camera docs]) (beta fix) +- Fix incorrect annotation async flock notify ([@balloob] - [#31342]) ([flock docs]) (beta fix) +- Update Hue data fetching ([@balloob] - [#31338]) ([hue docs]) (beta fix) +- Upgrade pysma, fix #27154 ([@kellerza] - [#31346]) ([sma docs]) (beta fix) +- Partially Revert "Deprecate hide_if_away from device_tracker (#30833) ([@frenck] - [#31348]) ([device_tracker docs]) (beta fix) +- Protect for unknown state attributes. ([@ochlocracy] - [#31354]) ([alexa docs]) (beta fix) +- bump quirks ([@dmulcahey] - [#31355]) ([zha docs]) (beta fix) +- Fix wemo device types for lights ([@balloob] - [#31360]) ([wemo docs]) (beta fix) +- Updated wemo lights fix for #31360 ([@DanTLehman] - [#31369]) ([wemo docs]) (beta fix) +- Fix auto_bypass in alarmdecoder ([@springstan] - [#30961]) ([alarmdecoder docs]) (beta fix) +- deCONZ - Add support for new switch type ([@Kane610] - [#31362]) ([deconz docs]) (beta fix) +- Add dump service to MQTT integration ([@balloob] - [#31370]) ([mqtt docs]) (beta fix) +- Filter int in fan speed_list when yielding RangeController in Alexa ([@ochlocracy] - [#31375]) ([alexa docs]) (beta fix) +- deCONZ - Services normalize bridge id ([@Kane610] - [#31378]) ([deconz docs]) (beta fix) +- Revert "Bump alarmdecoder to 1.13.9 (#30303)" ([@springstan] - [#31385]) ([alarmdecoder docs]) (beta fix) +- Fix service annotations ([@balloob] - [#31402]) ([input_select docs]) ([media_player docs]) (beta fix) +- deCONZ - Fix magic cube awake gesture ([@FrengerH] - [#31403]) ([deconz docs]) (beta fix) +- Fix rflink commands containing equals sign ([@akasma74] - [#31412]) ([rflink docs]) (beta fix) +- Emulated Hue + Alexa: Fix devices not discovered and error response (#30013 & #29899) ([@xtools-at] - [#31413]) ([emulated_hue docs]) (beta fix) +- Fix device name Google Assistant when using aliases ([@frenck] - [#31416]) ([google_assistant docs]) (breaking change) (beta fix) +- always call set_volume with integer values ([@bendavid] - [#31418]) ([webostv docs]) (beta fix) +- Rework Mikrotik device scanning following Unifi ([@engrbm87] - [#27484]) ([mikrotik docs]) (breaking change) (beta fix) +- Update NSAPI to 3.0.2 ([@YarmoM] - [#30971]) ([nederlandse_spoorwegen docs]) (breaking change) (beta fix) +- Samsung TV refinements ([@escoand] - [#31248]) ([samsungtv docs]) (beta fix) +- Fix theme color ([@quthla] - [#31366]) ([frontend docs]) (beta fix) +- Keep track of the derivative for unit_time ([@basnijholt] - [#31397]) ([derivative docs]) (beta fix) +- Update libpurecool upstream library to latest version ([@etheralm] - [#31457]) ([dyson docs]) (beta fix) +- Updated frontend to 20200130.1 ([@bramkragten] - [#31460]) ([frontend docs]) (beta fix) +- Update vizio host check to handle entries that don't have port ([@raman325] - [#31463]) ([vizio docs]) (beta fix) +- Fix coordinator reference ([@balloob] - [#31467]) ([hue docs]) (beta fix) +- Fix iCloud device battery level can be None ([@Quentame] - [#31468]) ([icloud docs]) (beta fix) +- Automation device/entity extraction to include triggers + conditions ([@balloob] - [#31474]) ([automation docs]) (beta fix) +- Re-branding of Hass.io panel to Supervisor ([@frenck] - [#31480]) ([hassio docs]) (breaking change) (beta fix) +- Remove tests for deprecated key ([@balloob] - [#31491]) (beta fix) +- Fix Google API key test ([@balloob] - [#31492]) (beta fix) + +[#26456]: https://github.com/home-assistant/home-assistant/pull/26456 +[#26834]: https://github.com/home-assistant/home-assistant/pull/26834 +[#27372]: https://github.com/home-assistant/home-assistant/pull/27372 +[#27484]: https://github.com/home-assistant/home-assistant/pull/27484 +[#28306]: https://github.com/home-assistant/home-assistant/pull/28306 +[#28336]: https://github.com/home-assistant/home-assistant/pull/28336 +[#28643]: https://github.com/home-assistant/home-assistant/pull/28643 +[#28680]: https://github.com/home-assistant/home-assistant/pull/28680 +[#28698]: https://github.com/home-assistant/home-assistant/pull/28698 +[#28740]: https://github.com/home-assistant/home-assistant/pull/28740 +[#28824]: https://github.com/home-assistant/home-assistant/pull/28824 +[#29816]: https://github.com/home-assistant/home-assistant/pull/29816 +[#29847]: https://github.com/home-assistant/home-assistant/pull/29847 +[#29851]: https://github.com/home-assistant/home-assistant/pull/29851 +[#29915]: https://github.com/home-assistant/home-assistant/pull/29915 +[#30189]: https://github.com/home-assistant/home-assistant/pull/30189 +[#30194]: https://github.com/home-assistant/home-assistant/pull/30194 +[#30198]: https://github.com/home-assistant/home-assistant/pull/30198 +[#30199]: https://github.com/home-assistant/home-assistant/pull/30199 +[#30210]: https://github.com/home-assistant/home-assistant/pull/30210 +[#30236]: https://github.com/home-assistant/home-assistant/pull/30236 +[#30345]: https://github.com/home-assistant/home-assistant/pull/30345 +[#30346]: https://github.com/home-assistant/home-assistant/pull/30346 +[#30399]: https://github.com/home-assistant/home-assistant/pull/30399 +[#30484]: https://github.com/home-assistant/home-assistant/pull/30484 +[#30487]: https://github.com/home-assistant/home-assistant/pull/30487 +[#30511]: https://github.com/home-assistant/home-assistant/pull/30511 +[#30567]: https://github.com/home-assistant/home-assistant/pull/30567 +[#30574]: https://github.com/home-assistant/home-assistant/pull/30574 +[#30576]: https://github.com/home-assistant/home-assistant/pull/30576 +[#30581]: https://github.com/home-assistant/home-assistant/pull/30581 +[#30588]: https://github.com/home-assistant/home-assistant/pull/30588 +[#30595]: https://github.com/home-assistant/home-assistant/pull/30595 +[#30599]: https://github.com/home-assistant/home-assistant/pull/30599 +[#30604]: https://github.com/home-assistant/home-assistant/pull/30604 +[#30605]: https://github.com/home-assistant/home-assistant/pull/30605 +[#30606]: https://github.com/home-assistant/home-assistant/pull/30606 +[#30611]: https://github.com/home-assistant/home-assistant/pull/30611 +[#30612]: https://github.com/home-assistant/home-assistant/pull/30612 +[#30614]: https://github.com/home-assistant/home-assistant/pull/30614 +[#30615]: https://github.com/home-assistant/home-assistant/pull/30615 +[#30616]: https://github.com/home-assistant/home-assistant/pull/30616 +[#30625]: https://github.com/home-assistant/home-assistant/pull/30625 +[#30632]: https://github.com/home-assistant/home-assistant/pull/30632 +[#30633]: https://github.com/home-assistant/home-assistant/pull/30633 +[#30639]: https://github.com/home-assistant/home-assistant/pull/30639 +[#30641]: https://github.com/home-assistant/home-assistant/pull/30641 +[#30642]: https://github.com/home-assistant/home-assistant/pull/30642 +[#30643]: https://github.com/home-assistant/home-assistant/pull/30643 +[#30644]: https://github.com/home-assistant/home-assistant/pull/30644 +[#30648]: https://github.com/home-assistant/home-assistant/pull/30648 +[#30650]: https://github.com/home-assistant/home-assistant/pull/30650 +[#30653]: https://github.com/home-assistant/home-assistant/pull/30653 +[#30654]: https://github.com/home-assistant/home-assistant/pull/30654 +[#30655]: https://github.com/home-assistant/home-assistant/pull/30655 +[#30662]: https://github.com/home-assistant/home-assistant/pull/30662 +[#30678]: https://github.com/home-assistant/home-assistant/pull/30678 +[#30680]: https://github.com/home-assistant/home-assistant/pull/30680 +[#30681]: https://github.com/home-assistant/home-assistant/pull/30681 +[#30683]: https://github.com/home-assistant/home-assistant/pull/30683 +[#30684]: https://github.com/home-assistant/home-assistant/pull/30684 +[#30685]: https://github.com/home-assistant/home-assistant/pull/30685 +[#30689]: https://github.com/home-assistant/home-assistant/pull/30689 +[#30694]: https://github.com/home-assistant/home-assistant/pull/30694 +[#30695]: https://github.com/home-assistant/home-assistant/pull/30695 +[#30699]: https://github.com/home-assistant/home-assistant/pull/30699 +[#30704]: https://github.com/home-assistant/home-assistant/pull/30704 +[#30713]: https://github.com/home-assistant/home-assistant/pull/30713 +[#30717]: https://github.com/home-assistant/home-assistant/pull/30717 +[#30718]: https://github.com/home-assistant/home-assistant/pull/30718 +[#30723]: https://github.com/home-assistant/home-assistant/pull/30723 +[#30727]: https://github.com/home-assistant/home-assistant/pull/30727 +[#30728]: https://github.com/home-assistant/home-assistant/pull/30728 +[#30729]: https://github.com/home-assistant/home-assistant/pull/30729 +[#30730]: https://github.com/home-assistant/home-assistant/pull/30730 +[#30731]: https://github.com/home-assistant/home-assistant/pull/30731 +[#30732]: https://github.com/home-assistant/home-assistant/pull/30732 +[#30733]: https://github.com/home-assistant/home-assistant/pull/30733 +[#30738]: https://github.com/home-assistant/home-assistant/pull/30738 +[#30743]: https://github.com/home-assistant/home-assistant/pull/30743 +[#30746]: https://github.com/home-assistant/home-assistant/pull/30746 +[#30755]: https://github.com/home-assistant/home-assistant/pull/30755 +[#30758]: https://github.com/home-assistant/home-assistant/pull/30758 +[#30762]: https://github.com/home-assistant/home-assistant/pull/30762 +[#30764]: https://github.com/home-assistant/home-assistant/pull/30764 +[#30765]: https://github.com/home-assistant/home-assistant/pull/30765 +[#30767]: https://github.com/home-assistant/home-assistant/pull/30767 +[#30772]: https://github.com/home-assistant/home-assistant/pull/30772 +[#30774]: https://github.com/home-assistant/home-assistant/pull/30774 +[#30785]: https://github.com/home-assistant/home-assistant/pull/30785 +[#30792]: https://github.com/home-assistant/home-assistant/pull/30792 +[#30798]: https://github.com/home-assistant/home-assistant/pull/30798 +[#30799]: https://github.com/home-assistant/home-assistant/pull/30799 +[#30800]: https://github.com/home-assistant/home-assistant/pull/30800 +[#30802]: https://github.com/home-assistant/home-assistant/pull/30802 +[#30805]: https://github.com/home-assistant/home-assistant/pull/30805 +[#30808]: https://github.com/home-assistant/home-assistant/pull/30808 +[#30813]: https://github.com/home-assistant/home-assistant/pull/30813 +[#30815]: https://github.com/home-assistant/home-assistant/pull/30815 +[#30818]: https://github.com/home-assistant/home-assistant/pull/30818 +[#30831]: https://github.com/home-assistant/home-assistant/pull/30831 +[#30833]: https://github.com/home-assistant/home-assistant/pull/30833 +[#30834]: https://github.com/home-assistant/home-assistant/pull/30834 +[#30835]: https://github.com/home-assistant/home-assistant/pull/30835 +[#30844]: https://github.com/home-assistant/home-assistant/pull/30844 +[#30857]: https://github.com/home-assistant/home-assistant/pull/30857 +[#30858]: https://github.com/home-assistant/home-assistant/pull/30858 +[#30867]: https://github.com/home-assistant/home-assistant/pull/30867 +[#30882]: https://github.com/home-assistant/home-assistant/pull/30882 +[#30898]: https://github.com/home-assistant/home-assistant/pull/30898 +[#30901]: https://github.com/home-assistant/home-assistant/pull/30901 +[#30902]: https://github.com/home-assistant/home-assistant/pull/30902 +[#30909]: https://github.com/home-assistant/home-assistant/pull/30909 +[#30910]: https://github.com/home-assistant/home-assistant/pull/30910 +[#30916]: https://github.com/home-assistant/home-assistant/pull/30916 +[#30918]: https://github.com/home-assistant/home-assistant/pull/30918 +[#30923]: https://github.com/home-assistant/home-assistant/pull/30923 +[#30937]: https://github.com/home-assistant/home-assistant/pull/30937 +[#30939]: https://github.com/home-assistant/home-assistant/pull/30939 +[#30941]: https://github.com/home-assistant/home-assistant/pull/30941 +[#30942]: https://github.com/home-assistant/home-assistant/pull/30942 +[#30944]: https://github.com/home-assistant/home-assistant/pull/30944 +[#30949]: https://github.com/home-assistant/home-assistant/pull/30949 +[#30951]: https://github.com/home-assistant/home-assistant/pull/30951 +[#30954]: https://github.com/home-assistant/home-assistant/pull/30954 +[#30958]: https://github.com/home-assistant/home-assistant/pull/30958 +[#30959]: https://github.com/home-assistant/home-assistant/pull/30959 +[#30961]: https://github.com/home-assistant/home-assistant/pull/30961 +[#30963]: https://github.com/home-assistant/home-assistant/pull/30963 +[#30968]: https://github.com/home-assistant/home-assistant/pull/30968 +[#30971]: https://github.com/home-assistant/home-assistant/pull/30971 +[#30977]: https://github.com/home-assistant/home-assistant/pull/30977 +[#30984]: https://github.com/home-assistant/home-assistant/pull/30984 +[#30990]: https://github.com/home-assistant/home-assistant/pull/30990 +[#30994]: https://github.com/home-assistant/home-assistant/pull/30994 +[#30995]: https://github.com/home-assistant/home-assistant/pull/30995 +[#30996]: https://github.com/home-assistant/home-assistant/pull/30996 +[#30998]: https://github.com/home-assistant/home-assistant/pull/30998 +[#31004]: https://github.com/home-assistant/home-assistant/pull/31004 +[#31007]: https://github.com/home-assistant/home-assistant/pull/31007 +[#31008]: https://github.com/home-assistant/home-assistant/pull/31008 +[#31012]: https://github.com/home-assistant/home-assistant/pull/31012 +[#31013]: https://github.com/home-assistant/home-assistant/pull/31013 +[#31018]: https://github.com/home-assistant/home-assistant/pull/31018 +[#31019]: https://github.com/home-assistant/home-assistant/pull/31019 +[#31020]: https://github.com/home-assistant/home-assistant/pull/31020 +[#31022]: https://github.com/home-assistant/home-assistant/pull/31022 +[#31025]: https://github.com/home-assistant/home-assistant/pull/31025 +[#31026]: https://github.com/home-assistant/home-assistant/pull/31026 +[#31027]: https://github.com/home-assistant/home-assistant/pull/31027 +[#31032]: https://github.com/home-assistant/home-assistant/pull/31032 +[#31037]: https://github.com/home-assistant/home-assistant/pull/31037 +[#31040]: https://github.com/home-assistant/home-assistant/pull/31040 +[#31042]: https://github.com/home-assistant/home-assistant/pull/31042 +[#31044]: https://github.com/home-assistant/home-assistant/pull/31044 +[#31045]: https://github.com/home-assistant/home-assistant/pull/31045 +[#31046]: https://github.com/home-assistant/home-assistant/pull/31046 +[#31047]: https://github.com/home-assistant/home-assistant/pull/31047 +[#31049]: https://github.com/home-assistant/home-assistant/pull/31049 +[#31051]: https://github.com/home-assistant/home-assistant/pull/31051 +[#31053]: https://github.com/home-assistant/home-assistant/pull/31053 +[#31056]: https://github.com/home-assistant/home-assistant/pull/31056 +[#31058]: https://github.com/home-assistant/home-assistant/pull/31058 +[#31059]: https://github.com/home-assistant/home-assistant/pull/31059 +[#31060]: https://github.com/home-assistant/home-assistant/pull/31060 +[#31062]: https://github.com/home-assistant/home-assistant/pull/31062 +[#31065]: https://github.com/home-assistant/home-assistant/pull/31065 +[#31066]: https://github.com/home-assistant/home-assistant/pull/31066 +[#31070]: https://github.com/home-assistant/home-assistant/pull/31070 +[#31075]: https://github.com/home-assistant/home-assistant/pull/31075 +[#31076]: https://github.com/home-assistant/home-assistant/pull/31076 +[#31078]: https://github.com/home-assistant/home-assistant/pull/31078 +[#31080]: https://github.com/home-assistant/home-assistant/pull/31080 +[#31081]: https://github.com/home-assistant/home-assistant/pull/31081 +[#31084]: https://github.com/home-assistant/home-assistant/pull/31084 +[#31087]: https://github.com/home-assistant/home-assistant/pull/31087 +[#31090]: https://github.com/home-assistant/home-assistant/pull/31090 +[#31097]: https://github.com/home-assistant/home-assistant/pull/31097 +[#31099]: https://github.com/home-assistant/home-assistant/pull/31099 +[#31101]: https://github.com/home-assistant/home-assistant/pull/31101 +[#31106]: https://github.com/home-assistant/home-assistant/pull/31106 +[#31108]: https://github.com/home-assistant/home-assistant/pull/31108 +[#31111]: https://github.com/home-assistant/home-assistant/pull/31111 +[#31112]: https://github.com/home-assistant/home-assistant/pull/31112 +[#31113]: https://github.com/home-assistant/home-assistant/pull/31113 +[#31115]: https://github.com/home-assistant/home-assistant/pull/31115 +[#31116]: https://github.com/home-assistant/home-assistant/pull/31116 +[#31117]: https://github.com/home-assistant/home-assistant/pull/31117 +[#31120]: https://github.com/home-assistant/home-assistant/pull/31120 +[#31121]: https://github.com/home-assistant/home-assistant/pull/31121 +[#31124]: https://github.com/home-assistant/home-assistant/pull/31124 +[#31131]: https://github.com/home-assistant/home-assistant/pull/31131 +[#31132]: https://github.com/home-assistant/home-assistant/pull/31132 +[#31133]: https://github.com/home-assistant/home-assistant/pull/31133 +[#31136]: https://github.com/home-assistant/home-assistant/pull/31136 +[#31139]: https://github.com/home-assistant/home-assistant/pull/31139 +[#31143]: https://github.com/home-assistant/home-assistant/pull/31143 +[#31144]: https://github.com/home-assistant/home-assistant/pull/31144 +[#31145]: https://github.com/home-assistant/home-assistant/pull/31145 +[#31146]: https://github.com/home-assistant/home-assistant/pull/31146 +[#31147]: https://github.com/home-assistant/home-assistant/pull/31147 +[#31148]: https://github.com/home-assistant/home-assistant/pull/31148 +[#31149]: https://github.com/home-assistant/home-assistant/pull/31149 +[#31150]: https://github.com/home-assistant/home-assistant/pull/31150 +[#31153]: https://github.com/home-assistant/home-assistant/pull/31153 +[#31154]: https://github.com/home-assistant/home-assistant/pull/31154 +[#31155]: https://github.com/home-assistant/home-assistant/pull/31155 +[#31159]: https://github.com/home-assistant/home-assistant/pull/31159 +[#31160]: https://github.com/home-assistant/home-assistant/pull/31160 +[#31161]: https://github.com/home-assistant/home-assistant/pull/31161 +[#31163]: https://github.com/home-assistant/home-assistant/pull/31163 +[#31164]: https://github.com/home-assistant/home-assistant/pull/31164 +[#31165]: https://github.com/home-assistant/home-assistant/pull/31165 +[#31178]: https://github.com/home-assistant/home-assistant/pull/31178 +[#31181]: https://github.com/home-assistant/home-assistant/pull/31181 +[#31182]: https://github.com/home-assistant/home-assistant/pull/31182 +[#31184]: https://github.com/home-assistant/home-assistant/pull/31184 +[#31188]: https://github.com/home-assistant/home-assistant/pull/31188 +[#31189]: https://github.com/home-assistant/home-assistant/pull/31189 +[#31191]: https://github.com/home-assistant/home-assistant/pull/31191 +[#31193]: https://github.com/home-assistant/home-assistant/pull/31193 +[#31195]: https://github.com/home-assistant/home-assistant/pull/31195 +[#31198]: https://github.com/home-assistant/home-assistant/pull/31198 +[#31201]: https://github.com/home-assistant/home-assistant/pull/31201 +[#31202]: https://github.com/home-assistant/home-assistant/pull/31202 +[#31209]: https://github.com/home-assistant/home-assistant/pull/31209 +[#31214]: https://github.com/home-assistant/home-assistant/pull/31214 +[#31215]: https://github.com/home-assistant/home-assistant/pull/31215 +[#31217]: https://github.com/home-assistant/home-assistant/pull/31217 +[#31224]: https://github.com/home-assistant/home-assistant/pull/31224 +[#31226]: https://github.com/home-assistant/home-assistant/pull/31226 +[#31231]: https://github.com/home-assistant/home-assistant/pull/31231 +[#31232]: https://github.com/home-assistant/home-assistant/pull/31232 +[#31233]: https://github.com/home-assistant/home-assistant/pull/31233 +[#31239]: https://github.com/home-assistant/home-assistant/pull/31239 +[#31241]: https://github.com/home-assistant/home-assistant/pull/31241 +[#31242]: https://github.com/home-assistant/home-assistant/pull/31242 +[#31245]: https://github.com/home-assistant/home-assistant/pull/31245 +[#31248]: https://github.com/home-assistant/home-assistant/pull/31248 +[#31250]: https://github.com/home-assistant/home-assistant/pull/31250 +[#31254]: https://github.com/home-assistant/home-assistant/pull/31254 +[#31255]: https://github.com/home-assistant/home-assistant/pull/31255 +[#31256]: https://github.com/home-assistant/home-assistant/pull/31256 +[#31257]: https://github.com/home-assistant/home-assistant/pull/31257 +[#31258]: https://github.com/home-assistant/home-assistant/pull/31258 +[#31260]: https://github.com/home-assistant/home-assistant/pull/31260 +[#31264]: https://github.com/home-assistant/home-assistant/pull/31264 +[#31265]: https://github.com/home-assistant/home-assistant/pull/31265 +[#31267]: https://github.com/home-assistant/home-assistant/pull/31267 +[#31270]: https://github.com/home-assistant/home-assistant/pull/31270 +[#31272]: https://github.com/home-assistant/home-assistant/pull/31272 +[#31273]: https://github.com/home-assistant/home-assistant/pull/31273 +[#31274]: https://github.com/home-assistant/home-assistant/pull/31274 +[#31276]: https://github.com/home-assistant/home-assistant/pull/31276 +[#31277]: https://github.com/home-assistant/home-assistant/pull/31277 +[#31278]: https://github.com/home-assistant/home-assistant/pull/31278 +[#31279]: https://github.com/home-assistant/home-assistant/pull/31279 +[#31281]: https://github.com/home-assistant/home-assistant/pull/31281 +[#31283]: https://github.com/home-assistant/home-assistant/pull/31283 +[#31288]: https://github.com/home-assistant/home-assistant/pull/31288 +[#31293]: https://github.com/home-assistant/home-assistant/pull/31293 +[#31295]: https://github.com/home-assistant/home-assistant/pull/31295 +[#31298]: https://github.com/home-assistant/home-assistant/pull/31298 +[#31303]: https://github.com/home-assistant/home-assistant/pull/31303 +[#31317]: https://github.com/home-assistant/home-assistant/pull/31317 +[#31318]: https://github.com/home-assistant/home-assistant/pull/31318 +[#31319]: https://github.com/home-assistant/home-assistant/pull/31319 +[#31320]: https://github.com/home-assistant/home-assistant/pull/31320 +[#31323]: https://github.com/home-assistant/home-assistant/pull/31323 +[#31330]: https://github.com/home-assistant/home-assistant/pull/31330 +[#31334]: https://github.com/home-assistant/home-assistant/pull/31334 +[#31338]: https://github.com/home-assistant/home-assistant/pull/31338 +[#31339]: https://github.com/home-assistant/home-assistant/pull/31339 +[#31342]: https://github.com/home-assistant/home-assistant/pull/31342 +[#31346]: https://github.com/home-assistant/home-assistant/pull/31346 +[#31348]: https://github.com/home-assistant/home-assistant/pull/31348 +[#31354]: https://github.com/home-assistant/home-assistant/pull/31354 +[#31355]: https://github.com/home-assistant/home-assistant/pull/31355 +[#31360]: https://github.com/home-assistant/home-assistant/pull/31360 +[#31362]: https://github.com/home-assistant/home-assistant/pull/31362 +[#31366]: https://github.com/home-assistant/home-assistant/pull/31366 +[#31369]: https://github.com/home-assistant/home-assistant/pull/31369 +[#31370]: https://github.com/home-assistant/home-assistant/pull/31370 +[#31375]: https://github.com/home-assistant/home-assistant/pull/31375 +[#31378]: https://github.com/home-assistant/home-assistant/pull/31378 +[#31385]: https://github.com/home-assistant/home-assistant/pull/31385 +[#31397]: https://github.com/home-assistant/home-assistant/pull/31397 +[#31402]: https://github.com/home-assistant/home-assistant/pull/31402 +[#31403]: https://github.com/home-assistant/home-assistant/pull/31403 +[#31412]: https://github.com/home-assistant/home-assistant/pull/31412 +[#31413]: https://github.com/home-assistant/home-assistant/pull/31413 +[#31416]: https://github.com/home-assistant/home-assistant/pull/31416 +[#31418]: https://github.com/home-assistant/home-assistant/pull/31418 +[#31457]: https://github.com/home-assistant/home-assistant/pull/31457 +[#31460]: https://github.com/home-assistant/home-assistant/pull/31460 +[#31463]: https://github.com/home-assistant/home-assistant/pull/31463 +[#31467]: https://github.com/home-assistant/home-assistant/pull/31467 +[#31468]: https://github.com/home-assistant/home-assistant/pull/31468 +[#31474]: https://github.com/home-assistant/home-assistant/pull/31474 +[#31480]: https://github.com/home-assistant/home-assistant/pull/31480 +[#31491]: https://github.com/home-assistant/home-assistant/pull/31491 +[#31492]: https://github.com/home-assistant/home-assistant/pull/31492 +[@Adminiuga]: https://github.com/Adminiuga +[@Anonym-tsk]: https://github.com/Anonym-tsk +[@BKPepe]: https://github.com/BKPepe +[@Cereal2nd]: https://github.com/Cereal2nd +[@DanTLehman]: https://github.com/DanTLehman +[@Danielhiversen]: https://github.com/Danielhiversen +[@FrengerH]: https://github.com/FrengerH +[@JeffLIrion]: https://github.com/JeffLIrion +[@Kane610]: https://github.com/Kane610 +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@Mic92]: https://github.com/Mic92 +[@MiniLau]: https://github.com/MiniLau +[@NobleKangaroo]: https://github.com/NobleKangaroo +[@Olen]: https://github.com/Olen +[@Poeschl]: https://github.com/Poeschl +[@Quentame]: https://github.com/Quentame +[@StevenLooman]: https://github.com/StevenLooman +[@SukramJ]: https://github.com/SukramJ +[@Watchfox]: https://github.com/Watchfox +[@WoLpH]: https://github.com/WoLpH +[@YarmoM]: https://github.com/YarmoM +[@aaska]: https://github.com/aaska +[@abmantis]: https://github.com/abmantis +[@afaucogney]: https://github.com/afaucogney +[@ajmarks]: https://github.com/ajmarks +[@akasma74]: https://github.com/akasma74 +[@akinomeroglu]: https://github.com/akinomeroglu +[@alandtse]: https://github.com/alandtse +[@alistairg]: https://github.com/alistairg +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bannhead]: https://github.com/bannhead +[@basdelfos]: https://github.com/basdelfos +[@basnijholt]: https://github.com/basnijholt +[@bazwilliams]: https://github.com/bazwilliams +[@bendavid]: https://github.com/bendavid +[@bieniu]: https://github.com/bieniu +[@billyburly]: https://github.com/billyburly +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@brefra]: https://github.com/brefra +[@bvlaicu]: https://github.com/bvlaicu +[@cclauss]: https://github.com/cclauss +[@cgtobi]: https://github.com/cgtobi +[@cyberjunky]: https://github.com/cyberjunky +[@d0ugal]: https://github.com/d0ugal +[@danielperna84]: https://github.com/danielperna84 +[@dingusdk]: https://github.com/dingusdk +[@dlashua]: https://github.com/dlashua +[@dmulcahey]: https://github.com/dmulcahey +[@dokmic]: https://github.com/dokmic +[@doudz]: https://github.com/doudz +[@dshokouhi]: https://github.com/dshokouhi +[@engrbm87]: https://github.com/engrbm87 +[@escoand]: https://github.com/escoand +[@etheralm]: https://github.com/etheralm +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@farmio]: https://github.com/farmio +[@finnysamuel]: https://github.com/finnysamuel +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[@garbled1]: https://github.com/garbled1 +[@inputd]: https://github.com/inputd +[@inverse]: https://github.com/inverse +[@jameshilliard]: https://github.com/jameshilliard +[@jensihnow]: https://github.com/jensihnow +[@jhollowe]: https://github.com/jhollowe +[@jkeljo]: https://github.com/jkeljo +[@jnimmo]: https://github.com/jnimmo +[@joegross]: https://github.com/joegross +[@kellerza]: https://github.com/kellerza +[@ktnrg45]: https://github.com/ktnrg45 +[@l3d00m]: https://github.com/l3d00m +[@ludeeus]: https://github.com/ludeeus +[@michaeldavie]: https://github.com/michaeldavie +[@mtreinish]: https://github.com/mtreinish +[@mzdrale]: https://github.com/mzdrale +[@nemccarthy]: https://github.com/nemccarthy +[@oblogic7]: https://github.com/oblogic7 +[@ocalvo]: https://github.com/ocalvo +[@ochlocracy]: https://github.com/ochlocracy +[@peternijssen]: https://github.com/peternijssen +[@pnbruckner]: https://github.com/pnbruckner +[@pvizeli]: https://github.com/pvizeli +[@quthla]: https://github.com/quthla +[@raman325]: https://github.com/raman325 +[@rdehuyss]: https://github.com/rdehuyss +[@reuank]: https://github.com/reuank +[@robmarkcole]: https://github.com/robmarkcole +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@rslota]: https://github.com/rslota +[@scop]: https://github.com/scop +[@shred86]: https://github.com/shred86 +[@springstan]: https://github.com/springstan +[@starkillerOG]: https://github.com/starkillerOG +[@teharris1]: https://github.com/teharris1 +[@tetienne]: https://github.com/tetienne +[@thibmaek]: https://github.com/thibmaek +[@thoscut]: https://github.com/thoscut +[@tiagofreire-pt]: https://github.com/tiagofreire-pt +[@tulindo]: https://github.com/tulindo +[@uvjustin]: https://github.com/uvjustin +[@vangorra]: https://github.com/vangorra +[@xtools-at]: https://github.com/xtools-at +[@zewelor]: https://github.com/zewelor +[@zhumuht]: https://github.com/zhumuht +[@zombielinux]: https://github.com/zombielinux +[@zxdavb]: https://github.com/zxdavb +[abode docs]: /integrations/abode/ +[adguard docs]: /integrations/adguard/ +[airly docs]: /integrations/airly/ +[alarmdecoder docs]: /integrations/alarmdecoder/ +[alexa docs]: /integrations/alexa/ +[almond docs]: /integrations/almond/ +[amcrest docs]: /integrations/amcrest/ +[androidtv docs]: /integrations/androidtv/ +[apprise docs]: /integrations/apprise/ +[aurora docs]: /integrations/aurora/ +[automation docs]: /integrations/automation/ +[aws docs]: /integrations/aws/ +[brother docs]: /integrations/brother/ +[buienradar docs]: /integrations/buienradar/ +[camera docs]: /integrations/camera/ +[cast docs]: /integrations/cast/ +[cloud docs]: /integrations/cloud/ +[command_line docs]: /integrations/command_line/ +[config docs]: /integrations/config/ +[daikin docs]: /integrations/daikin/ +[deconz docs]: /integrations/deconz/ +[default_config docs]: /integrations/default_config/ +[derivative docs]: /integrations/derivative/ +[device_tracker docs]: /integrations/device_tracker/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[doorbird docs]: /integrations/doorbird/ +[dsmr docs]: /integrations/dsmr/ +[dyson docs]: /integrations/dyson/ +[egardia docs]: /integrations/egardia/ +[emby docs]: /integrations/emby/ +[emulated_hue docs]: /integrations/emulated_hue/ +[environment_canada docs]: /integrations/environment_canada/ +[evohome docs]: /integrations/evohome/ +[fibaro docs]: /integrations/fibaro/ +[flock docs]: /integrations/flock/ +[fritz docs]: /integrations/fritz/ +[fritzbox_netmonitor docs]: /integrations/fritzbox_netmonitor/ +[frontend docs]: /integrations/frontend/ +[garmin_connect docs]: /integrations/garmin_connect/ +[generic docs]: /integrations/generic/ +[generic_thermostat docs]: /integrations/generic_thermostat/ +[geniushub docs]: /integrations/geniushub/ +[geonetnz_volcano docs]: /integrations/geonetnz_volcano/ +[google_assistant docs]: /integrations/google_assistant/ +[greeneye_monitor docs]: /integrations/greeneye_monitor/ +[group docs]: /integrations/group/ +[hassio docs]: /integrations/hassio/ +[hisense_aehw4a1 docs]: /integrations/hisense_aehw4a1/ +[hlk_sw16 docs]: /integrations/hlk_sw16/ +[homeassistant docs]: /integrations/homeassistant/ +[homekit docs]: /integrations/homekit/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[honeywell docs]: /integrations/honeywell/ +[http docs]: /integrations/http/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[iaqualink docs]: /integrations/iaqualink/ +[icloud docs]: /integrations/icloud/ +[ihc docs]: /integrations/ihc/ +[input_boolean docs]: /integrations/input_boolean/ +[input_datetime docs]: /integrations/input_datetime/ +[input_number docs]: /integrations/input_number/ +[input_select docs]: /integrations/input_select/ +[input_text docs]: /integrations/input_text/ +[insteon docs]: /integrations/insteon/ +[intesishome docs]: /integrations/intesishome/ +[ipma docs]: /integrations/ipma/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[kef docs]: /integrations/kef/ +[knx docs]: /integrations/knx/ +[kodi docs]: /integrations/kodi/ +[lastfm docs]: /integrations/lastfm/ +[linky docs]: /integrations/linky/ +[luftdaten docs]: /integrations/luftdaten/ +[marytts docs]: /integrations/marytts/ +[media_extractor docs]: /integrations/media_extractor/ +[media_player docs]: /integrations/media_player/ +[mikrotik docs]: /integrations/mikrotik/ +[mill docs]: /integrations/mill/ +[mobile_app docs]: /integrations/mobile_app/ +[mqtt docs]: /integrations/mqtt/ +[neato docs]: /integrations/neato/ +[nederlandse_spoorwegen docs]: /integrations/nederlandse_spoorwegen/ +[netatmo docs]: /integrations/netatmo/ +[netgear docs]: /integrations/netgear/ +[nmbs docs]: /integrations/nmbs/ +[nws docs]: /integrations/nws/ +[openhome docs]: /integrations/openhome/ +[openuv docs]: /integrations/openuv/ +[opnsense docs]: /integrations/opnsense/ +[oru docs]: /integrations/oru/ +[pcal9535a docs]: /integrations/pcal9535a/ +[person docs]: /integrations/person/ +[plugwise docs]: /integrations/plugwise/ +[prometheus docs]: /integrations/prometheus/ +[proxmoxve docs]: /integrations/proxmoxve/ +[ps4 docs]: /integrations/ps4/ +[pulseaudio_loopback docs]: /integrations/pulseaudio_loopback/ +[pushover docs]: /integrations/pushover/ +[radiotherm docs]: /integrations/radiotherm/ +[rainmachine docs]: /integrations/rainmachine/ +[recorder docs]: /integrations/recorder/ +[reddit docs]: /integrations/reddit/ +[remote docs]: /integrations/remote/ +[rflink docs]: /integrations/rflink/ +[ring docs]: /integrations/ring/ +[safe_mode docs]: /integrations/safe_mode/ +[samsungtv docs]: /integrations/samsungtv/ +[script docs]: /integrations/script/ +[search docs]: /integrations/search/ +[sentry docs]: /integrations/sentry/ +[shodan docs]: /integrations/shodan/ +[sighthound docs]: /integrations/sighthound/ +[simplisafe docs]: /integrations/simplisafe/ +[sinch docs]: /integrations/sinch/ +[sisyphus docs]: /integrations/sisyphus/ +[sma docs]: /integrations/sma/ +[sms docs]: /integrations/sms/ +[solarlog docs]: /integrations/solarlog/ +[soma docs]: /integrations/soma/ +[sonos docs]: /integrations/sonos/ +[spc docs]: /integrations/spc/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[starline docs]: /integrations/starline/ +[statistics docs]: /integrations/statistics/ +[synologydsm docs]: /integrations/synologydsm/ +[tahoma docs]: /integrations/tahoma/ +[template docs]: /integrations/template/ +[tesla docs]: /integrations/tesla/ +[timer docs]: /integrations/timer/ +[tod docs]: /integrations/tod/ +[tplink docs]: /integrations/tplink/ +[tuya docs]: /integrations/tuya/ +[ubee docs]: /integrations/ubee/ +[velbus docs]: /integrations/velbus/ +[versasense docs]: /integrations/versasense/ +[vicare docs]: /integrations/vicare/ +[vizio docs]: /integrations/vizio/ +[webostv docs]: /integrations/webostv/ +[wemo docs]: /integrations/wemo/ +[withings docs]: /integrations/withings/ +[wled docs]: /integrations/wled/ +[x10 docs]: /integrations/x10/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yeelight docs]: /integrations/yeelight/ +[yi docs]: /integrations/yi/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zone docs]: /integrations/zone/ +[zwave docs]: /integrations/zwave/ diff --git a/source/_posts/2020-02-07-community-highlights.markdown b/source/_posts/2020-02-07-community-highlights.markdown new file mode 100644 index 000000000000..1f2adb85fbd9 --- /dev/null +++ b/source/_posts/2020-02-07-community-highlights.markdown @@ -0,0 +1,91 @@ +--- +title: "Community Highlights: 2nd edition" +description: "DIY smart candles, automating a van, a self generating Lovelace theme and visualizing with Grafana" +date: 2020-02-07 00:00:00 +date_formatted: "February 7, 2020" +author: Franck Nijhof +author_twitter: frenck +categories: Community +og_image: /images/blog/2020-02-07-community-highlights/social.png +--- + +Thank god, its Friday! For most of us, it means we can tinker with our Home Automation projects again 😃 + +The second edition of the Community Highlights is here to provide you a fresh source of inspiration this weekend. And, if that is not enough, upgrading to the latest release of [Home Assistant Core 0.105](/blog/2020/02/05/release-105/) is definitely a recommendation for your list. It introduces tons of new shiny features for you to play with. + +So, what changes did you make to your Home Assistant setup this week? + +## DIY Smart Candles + +For starters, if you are looking for a cool DIY project, [3ATIVE](https://twitter.com/3ATIVE) shared a YouTube tutorial on how to make sweet little smart candles that work with Home Assistant. + +
    + +
    + +The code for this project is shared on GitHub: [Smart-Candles](https://github.com/3ative/Smart-Candles). + +_Thanks [balloob](https://twitter.com/balloob), for [submitting](/suggest-community-highlight) this suggestion 👍_ + +## Vanlife: Home Assistant on the Road + +Creative use of Home Assistant; we've seen quite a few vehicles in the past being fitted with Home Assistant (including boats). [Zane Claes](https://www.instagram.com/zaneclaes) (aka Technically Wizardry), shares his story on building a vanlife van with a touch of home automation magic. + +In the past few months on the road, he built out a Home Assistant installation that's geared to work in a car/vehicle. A [full blog post](https://www.technicallywizardry.com/iot-cars-vans-home-automation/) explains how he integrated with On-Board Diagnostics (OBD) to read out the status of the van, implemented a dash camera (that doubles as a security camera), temperature sensors and the monitoring cellular internet usage. + +
    + + +You can read Zane's full blog post here: + + + +He also made his Home Assistant configuration [publicly available on GitHub](https://github.com/zaneclaes/van-home-assistant-config). + +_Thanks, [Robbie Trencheny](https://twitter.com/robbie) & [cgtobi](https://twitter.com/cgtobi) for sending in this item in! 👍_ + +## An auto-generating Lovelace UI theme + +Dwain Scheeren shared a preview of his Lovelace theme on the [Home Assistant Community Forum]((https://community.home-assistant.io/t/dwains-theme-an-auto-generating-lovelace-ui-theme/168593)). The cool think about this theme, is that it automatically generates itself! + +
    + +
    + +Unfortunately, the source code for this isn't available yet, however, Dwain wrote on the forums that he is planning on releasing it soon. We are looking forward to that, Dwain! + +You can follow the development of this theme on the [dedicated topic for it on our Community Forum](https://community.home-assistant.io/t/dwains-theme-an-auto-generating-lovelace-ui-theme/168593). + +## Visualizing everything in Grafana + +[Ivana Huckova](https://twitter.com/ivanahuckova) had a Hack Day at [Grafana](https://www.grafana.com) (the company she works for) and decided to work on her home to visualize everything (in Grafana, of course). + + + +Click on the tweet above to see the full thread of all tweets she did that day. + +Oh, Ivana? Did you know we have Grafana available as an add-on? You can find it in the Home Assistant add-on store. + +## Got a tip for the next edition? + +Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant? + +[Click here to send us your Community Highlight suggestion](/suggest-community-highlight). + +Also, don't forget to share your creations with us via Social Media: + +- Twitter it! Be sure to mention [@home_assistant][twitter] +- Share it on our [Facebook group][facebook-group] +- Post it to our [subreddit][reddit] +- Tag [@homeasssistant][instagram] on Instagram +- Or via chat, drop us a line in the [#lounge at Discord][chat] + +See you next edition! + +[chat]: https://www.home-assistant.io/join-chat +[facebook-group]: https://www.facebook.com/groups/HomeAssistant/ +[instagram]: https://www.instagram.com/homeassistant/ +[reddit]: https://www.reddit.com/r/homeassistant +[twitter]: https://www.twitter.com/home_assistant diff --git a/source/_posts/2020-02-11-android-16-17-release.markdown b/source/_posts/2020-02-11-android-16-17-release.markdown new file mode 100644 index 000000000000..173d6bcfc4c8 --- /dev/null +++ b/source/_posts/2020-02-11-android-16-17-release.markdown @@ -0,0 +1,88 @@ +--- +layout: post +title: "Home Assistant Companion for Android 1.6 and 1.7" +description: "Today we're releasing a big update for our Android companion app including actionable notifications, requesting location updates, sensors and more" +date: 2020-02-11 00:00:00 +date_formatted: "February 11, 2020" +author: Robbie Trencheny +author_twitter: robbie +comments: true +categories: Release-Notes +og_image: /images/blog/2020-02-android-16-17-release/garage.png +--- + +Over the last week, we've released some awesome new features and improvements to Home Assistant Companion for Android. I wanted to take a moment to highlight some of the recent things that we introduced in 1.6 and 1.7. + +## Actionable notifications + +Now you can define action buttons to attach to a notification dynamically. When you click one of those buttons, an event is fired back to Home Assistant so you can take action based on the button chosen. + +Here's an example to check with a user if they want to close the garage door after it has been left open for 30 minutes: + +```yaml +automation: + - alias: Notify apps when the garage door opens + trigger: + platform: state + entity_id: cover.garage_door + from: 'closed' + to: 'open' + for: ‘0:30:00’ + action: + service: notify.mobile_app_robbies_pixel_5 + data: + message: "The garage has been left open" + data: + image: https://www.home-assistant.io/images/merchandise/shirt-frontpage.png + actions: + - action: "close_garage" # The key you are sending for the event + title: "Close Garage Door" # The button title + + - alias: Close the garage when notification action is tapped + trigger: + platform: event + event_type: mobile_app_notification_action + event_data: + action: close_garage + action: + service: cover.close_cover + entity_id: cover.garage_door +``` + +After adding these automations, whenever your garage door remains open for 30 minutes, your device will get a notification that looks like this: + +![A notification showing an open garage](/images/blog/2020-02-android-16-17-release/garage.png) + +When you press that close garage button… your garage will close! + +We are planning to expand notifications over the next few versions to continue to match the existing functionality available in the iOS app. That includes things like sending text back to Home Assistant and critical alerts. + +## Requesting location updates via notification + +You can now send a notification with just the message `request_location_update` and once it reaches your device, it will update its current location in Home Assistant. Be careful using this too much though, as it can drain your battery. + +## Sensors + +New in version 1.7, we have added the first sensors to the app. For now, you will find the following new sensors: + +- Battery percentage +- Battery state +- Current Wi-Fi network information + +We plan to keep expanding sensors in the near future to add things like cellular status and more. + +## Docs + +Thanks to a few dedicated volunteers and a mad dash, [we have a newly refreshed docs website](https://companion.home-assistant.io/). It’s using the latest version of [Docusaurus](https://docusaurus.io/), which means it’s got a new coat of paint and even dark mode support. So much easier on the eyes! + +In addition to the tooling updates, we’ve also begun documenting Android and iOS differences. Keep an eye out for the Android and Apple logos to denote what works where. + +Over time we plan to bring Android and iOS as close together, in terms of features and the ways they interact with Home Assistant, as much as possible. To allow using both platforms in the same way, so that users who are using both platforms, or switching platforms, can use them without any modifications. + +## Finale + +In addition to the highlights above, we’ve also killed an impressive amount of bugs. Thanks goes to [JBassett](https://github.com/JBassett), [KBerstene](https://github.com/KBerstene), [quthla](https://github.com/quthla) and [neopilou](https://github.com/neopilou) for their work on all of the above. + +Enjoy the new release! Don't forget to leave a rating if you like the app, it will help other users find the app. + +Get it on Google Play diff --git a/source/_posts/2020-02-19-community-highlights.markdown b/source/_posts/2020-02-19-community-highlights.markdown new file mode 100644 index 000000000000..d60fe20479d6 --- /dev/null +++ b/source/_posts/2020-02-19-community-highlights.markdown @@ -0,0 +1,103 @@ +--- +title: "Community Highlights: 3rd edition" +description: "VS Code add-on, beta, traffic indicator" +date: 2020-02-19 00:00:00 +date_formatted: "February 19, 2020" +author: Paulus Schoutsen +author_twitter: balloob +categories: Community +og_image: /images/blog/2020-02-19-community-highlights/social.png +--- + +It's time for the third installment of our revamped community highlights. We got some really great stuff again. + +This time I (Paulus) am in charge of writing the community highlights. The reason for this is that the main item involves Frenck's own work, and he felt weird promoting his own awesome, great, wonderful, enlighting and fabulous work on the revamped Visual Studio Code add-on. + +## Visual Studio Code add-on updated + +Visual Studio Code is a free text editor by Microsoft that works inside your browser. It makes it very easy to manage your configuration. + +The add-on used to be only available for x64 devices like intel NUC. With this update, it is now also available for ARM64 devices, including the Raspberry Pi 3 and 4 (the 64-bit version). + +It comes installed with all the extensions necessary for editing Home Assistant related files: + +- [Home Assistant Config Helper](https://marketplace.visualstudio.com/items?itemName=keesschollaart.vscode-home-assistant) +- [ESPHome VSCode](https://marketplace.visualstudio.com/items?itemName=ESPHome.esphome-vscode) +- YAML checker +- Material Design Icons support + +If this is the first time you hear about the Home Assistant Config Helper, it is genius. It will set-up a realtime connection from VS Code directly to your Home Assistant installation so it can offer auto-complete suggestions when editing your configuration. This is pre-configured and works out of the box with the VS Code add-on. + +To install the add-on, search for Visual Studio Code in the add-on store. + +Screenshot of Visual Studio Code. + +## VS Code add-on part 2 + +But there is more in the add-on! Home Assistant contains an add-on service registry where add-ons can make their services available for other add-ons without requiring any configuration. The VS Code add-on uses this feature to offer a built-in terminal that has pre-configured tools to connect to the MariaDB add-on and the MQTT add-on. + +To try it out, open VS Code, click on the menu button top left -> view -> terminal. + +### MQTT command-line + +_This requires the Mosquitto add-on to be installed and an MQTT sensor ([instructions](https://www.home-assistant.io/integrations/sensor.mqtt))._ + +To publish a message to an MQTT topic: + +```bash +mosquitto_pub -t home/bedroom/temperature -m 23 +``` + +Or watch all messages that go through your MQTT broker: + +```bash +mosquitto_sub -t \# +``` + +### SQL command-line + +_This requires the MariaDB add-on to be installed and the recorder configured to use it ([instructions](https://github.com/home-assistant/hassio-addons/tree/master/mariadb))._ + +To query the available tables: + +```bash +mysql -D homeassistant -e "SELECT entity_id, state, last_updated FROM states LIMIT 0, 10" +``` + +## Beta time! + +Today we are releasing the first beta of Home Assistant Core 0.106. It is packed with awesome features. For a sneak peek of what is coming, check the [beta release notes](https://rc.home-assistant.io/latest-release-notes/). + +I'm personally most excited about the extended safe mode. It will guarantee that the frontend will always load, no matter how broken your configuration is. + +## Navigation Arrow + +On Reddit user /u/Jenova70 showed a super slick navigation arrow that indicates the traffic on his daily commute. Very slick! Instructions can be found in the comments. + +
    I built a physical "navigation arrow" that is changing color based on the estimated time of arrival at work (Waze commute data :) ) from r/homeassistant
    + + + +_Thanks, Jean-Loïc Pouffier & cogneato for sending in this item! 👍_ + +## Got a tip for the next edition? + +Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant? + +[Click here to send us your Community Highlight suggestion](/suggest-community-highlight). + +Also, don't forget to share your creations with us via Social Media: + +- Twitter it! Be sure to mention [@home_assistant][twitter] +- Share it on our [Facebook group][facebook-group] +- Post it to our [subreddit][reddit] +- Tag [@homeasssistant][instagram] on Instagram +- Or via chat, drop us a line in the [#lounge at Discord][chat] + +See you next edition! + +[chat]: https://www.home-assistant.io/join-chat +[facebook-group]: https://www.facebook.com/groups/HomeAssistant/ +[instagram]: https://www.instagram.com/homeassistant/ +[reddit]: https://www.reddit.com/r/homeassistant +[twitter]: https://www.twitter.com/home_assistant diff --git a/source/_posts/2020-02-26-release-106-3.markdown b/source/_posts/2020-02-26-release-106-3.markdown new file mode 100644 index 000000000000..cd0cab557726 --- /dev/null +++ b/source/_posts/2020-02-26-release-106-3.markdown @@ -0,0 +1,70 @@ +--- +layout: post +title: "0.106.3: Coronavirus integration (COVID-19), track the outbreak" +description: "A special release of Home Assistant, adding the Coronavirus integration (COVID-19)." +date: 2020-03-02 00:00:00 +date_formatted: "March 02, 2020" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: Release-Notes +og_image: /images/blog/2020-03-0.106.3/social.png +--- + + + +In December 2019, an outbreak of a novel [Coronavirus](https://en.wikipedia.org/wiki/Coronavirus) +also called severe acute respiratory syndrome coronavirus-2 +([SARS-CoV-2](https://en.wikipedia.org/wiki/Severe_acute_respiratory_syndrome_coronavirus_2)), +began in the Wuhan region of China. This virus can cause the +[COVID-19](https://en.wikipedia.org/wiki/Coronavirus_disease_2019) disease. + +This novel Coronavirus is spreading globally at a disturbing rate, which keeps +everybody on top of the news. The media worldwide is covering the spread of +the virus constantly, and a lot of people are tracking the number of cases +in their country. + +This special release adds the [Coronavirus integration](/integrations/coronavirus), +allowing you to track the outbreak from within Home Assistant. + +## The Coronavirus integration + +While having a meeting at [Nabu Casa](https://www.nabucasa.com/), +we caught ourselves talking a lot about the state of the virus spreading in +the countries we live in. Which brought us to the subject of being able to +track the virus in Home Assistant itself. + +So together, we started working on an integration right away. We decided to +bring you a special release of Home Assistant that includes this integration. + +The Coronavirus integration tracks the number of people that are confirmed with, +recovered from, and deceased caused by the virus in your country, or worldwide. + +The data is sourced from the [Johns Hopkins University](https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6). + +

    +Screenshot of the Coronavirus integration in Home Assistant +Screenshot of the Coronavirus integration in Home Assistant. +

    + +## Adding the Coronavirus integration + +This integration can be configured via the Home Assistant frontend. + +- Go to **Configuration** -> **Integrations**. +- Click on the `+` in the bottom right corner to add a new integration. +- Search and select the **Coronavirus** integration form the list. +- Follow the instruction on screen to add the sensors. Either choose for adding + world-wide sensors, or a specific set of sensors for your country. + +If you want to track both world-wide and one or more countries at the same time, +you can repeat the configuration process described above to add multiple +instances of the integration. + +## Resources + +For the latest information about the Coronavirus, be sure check the website +of the [World Health Organization](https://www.who.int/). The WHO provides +good information on +[basic protective measures](https://www.who.int/emergencies/diseases/novel-coronavirus-2019/advice-for-public) +you can take against the new Coronavirus. diff --git a/source/_posts/2020-02-26-release-106.markdown b/source/_posts/2020-02-26-release-106.markdown new file mode 100644 index 000000000000..2a8198f96f7b --- /dev/null +++ b/source/_posts/2020-02-26-release-106.markdown @@ -0,0 +1,1244 @@ +--- +layout: post +title: "0.106: Light brightness stepping, better Safe Mode and person dialog" +description: "A great release that improves stability, reliability and a lot of helpful additions to make everything much more friendly and easier to use." +date: 2020-02-26 00:00:00 +date_formatted: "February 26, 2020" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: Release-Notes +og_image: /images/blog/2020-02-0.106/social.png +--- + + + +Well, hello!, Home Assistant Core 0.106! We are happy to see you 😃 + +A great release that improves stability, reliability and a lot of helpful additions to make everything much more friendly and easier to use. So let's dive in! + +## Safe Mode improvements + +In Home Assistant [0.105](/blog/2020/02/05/release-105/#safe-mode), we introduced Safe Mode. Our goal is to make sure Home Assistant always starts and provide you an interface to work with. No matter what. + +[@balloob] has been busy this release to improve on this feature even more, and Home Assistant is now able to overcome issues when things in the core system get into trouble and even when the Lovelace configuration isn't readable. Besides that, the way Safe Mode is presented has changed, so you instantly know you are in Safe Mode: + +

    +Screenshot of Home Assistant running in Safe Mode +Screenshot of Home Assistant running in Safe Mode. +

    + +## Stepping up and down the brightness of lights + +Ever tried to make an automation to brighten or dim your lights? Or tried to hook up a remote to control the brightness of a light? +If you have, you probably know that doing that was pretty painful and involved some additional templating to get that going. + +This release just made that a lot easier. An example device automation: +

    +Screenshot of a device automation with dimming lights +Screenshot of a device automation with dimming lights. +

    + +We have also added this functionality to the `light.turn_on` service. You can now change the brightness, based on the current brightness, +using the `brightness_step` (-255, 255) and `brightness_step_pct` (-100, 100) parameters. + +Good to know, when the brightness hits 0, it will turn off the light. If the light is already off, and you step the brightness up, it will turn on. +This is awesome, because if you have a rotating dimmer button (for example, an IKEA SYMFONISK), you can rotate it to change the brightness, but also turn the light on/off by just rotating it. + +## Person more info dialogs improvements + +Persons have a new more info dialog. They now show the location of the person on the map and if the person is not in a zone, you can create a zone with the current location of that person with one click. + +

    +Screenshot of the new more info for a person +Screenshot of the new more info for a person. +

    + +## Entities configuration panel now shows all entities + +The entities configuration panel previously only contained entities that were uniquely identifiable by Home Assistant (they have a so-called: unique ID). However, those are not provided by all integrations of Home Assistant, confusing since the entities panel did not show all of your entities. + +In this version, we now include all entities in the panel, giving you a nice complete overview of all available entities in your system. You can't edit all entities, since that requires an entity to be uniquely identifiable. If an entity doesn't have a unique ID, the pencil icon will be striked through. + +

    +Screenshot of uneditable entities in the configuration panel +Screenshot of uneditable entities in the configuration panel. +

    + +Since all entities are now available in this panel, it does not only provide you a clear overview of all the available entities; you can also make use of the "related items" feature introduced in release [0.105](/blog/2020/02/05/release-105/) to see where they are being used! + +## Updates to the developer tools panels + +The developer tools panel also got some nice little touches. In the "Info" tab you can now find a list of all integrations you are using and the logs are now aware of the integrations as well. + +Both now include links to the documentation and our GitHub issue tracker. This allows you to dive in quickly when you run into troubles with an integration. + +

    +Screenshot of the integrations list and an example log message +Screenshot of the integrations list and an example log message. +

    + +## Sensor card + +Our sensor card has had a style update. We initially got the design from the [Lovelace Mini Graph Card](https://github.com/kalkih/mini-graph-card) and now updated to match the improved new look of that card. + +

    +Screenshot of the updated sensor card +Screenshot of the updated sensor card. +

    + +## Other noteworthy changes + +But wait... there is more! Some other smaller noteworthy changes in this release: + +- In the zone editor that was introduced in the previous release, you can now change the location of your home zone. The radius of the home zone cannot be changed yet (we will work on that!), but you can drag the home zone on the map. + +- Also an improvement on a feature introduced in the previous release, the `state_color` option is now also available for other cards, so you can override the defaults of the cards. + +- New automations now default to device automations instead of state triggers and service calls. Device automations are so much easier and clearer to create from the UI. You can, of course, still use the old triggers and actions like you are used to. + +- In the generated Lovelace we no longer include automations and battery entities. You can find these in the automation configuration panel and the battery in the device configuration page. +If you want to have your automations and/or battery in your Lovelace UI, you can always take control and add them. + +- Scripts and scenes now have the ability to set a custom icon. Previously, you would have to create a customization to do this, now, you can just set them in your configuration. + + ```yaml + scene: + - name: Movies + icon: mdi:movie-open + entities: + light.tv_back_light: + state: on + brightness: 125 + light.ceiling: off + ``` + +## Custom cards + +Are you the creator of an awesome custom card for Lovelace? + +We have made some changes to Lovelace that might impact your custom card, so be sure to read the [blog post](https://developers.home-assistant.io/blog/2020/02/18/106-custom-card-changes.html) on the developers site about this. + +## New Integrations + +- Add Salt Fiber Box device tracker ([@bjornorri] - [#30986]) ([salt docs]) (new-integration) +- Add GDACS feed integration ([@exxamalte] - [#31235]) ([gdacs docs]) (new-integration) +- Add Minecraft Server Integration ([@elmurato] - [#30992]) ([minecraft_server docs]) (new-integration) +- Add MELCloud integration ([@vilppuvuorinen] - [#30712]) ([melcloud docs]) (new-integration) +- Dynalite Integration ([@ziv1234] - [#27841]) ([dynalite docs]) (new-integration) +- Add initial version of Vilfo Router integration ([@ManneW] - [#31177]) ([vilfo docs]) (new-integration) + +## New Platforms + +- Add totalconnect zones as binary sensors ([@austinmroczek] - [#28712]) ([totalconnect docs]) (new-platform) +- Add Tahoma lock support ([@vlebourl] - [#31311]) ([tahoma docs]) (new-platform) +- Clean up Tahoma smartlock ([@vlebourl] - [#31430]) ([tahoma docs]) (new-platform) +- Add Tado water_heater ([@michaelarnauts] - [#30095]) ([tado 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). + +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 + +- **Tesla** - Tesla default scan interval has been raised to 660 seconds from 300 seconds. This is the result of new testing showing the prior default would not allow Tesla vehicles to fall asleep. You should reevaluate your scan interval if you have changed it, to avoid battery drain. The scan interval has had the minimum lowered to 60. - ([@alandtse] - [#31194]) ([tesla docs]) + +- **Insteon** - The Insteon entity device state attributes were changed to conform to naming standards. Insteon Address is now `insteon_address` and Insteon Group is now `insteon_group`. You may need to update automations and scripts that rely on these attributes. - ([@teharris1] - [#31183]) ([insteon docs]) + +- **AVM FRITZ!DECT** _(Removed)_ - FRITZ!Dect is being removed and you should use the FRITZ!Box integration instead, which offers more features. - ([@escoand] - [#31359]) ([fritzbox docs]) + + Example YAML configuration: + + ```yaml + switch: + - platform: fritzdect + username: YOUR_USERNAME + password: YOUR_PASSWORD + ``` + + should change to + + ```yaml + fritzbox: + devices: + - host: fritz.box + username: YOUR_USERNAME + password: YOUR_PASSWORD + ``` + +- **Danfoss Air** - The names of some danfoss_air sensors include a misspelling of the word Danfoss. This typo has been corrected and you will need to adjust all occurrences respectively. - ([@KasperLK] - [#31344]) ([danfoss_air docs]) + + The following sensors are affected: + + - `dandoss_air_dial_battery` -> `danfoss_air_dial_battery` + - `dandoss_air_exhaust_fan_speed` -> `danfoss_air_exhaust_fan_speed` + - `dandoss_air_supply_fan_speed` -> `danfoss_air_supply_fan_speed` + +- **Météo-France** - Météo-France now supports the configuration flow and is now available to be added as an integration from the integrations UI! There are no more `monitored_conditions` and all sensors will be added automatically. - ([@Quentame] - [#29927]) ([meteo_france docs]) + +- **Glances** - Glances sensors are now dynamically added, which results in entities having new names, in particular sensors for mounted disks and temperature. You will need to remove the existing configuration and re-add it, and adjust for any automations you have using the new entity names. - ([@engrbm87] - [#28639]) ([glances docs]) + +- **Service Calls** - Service calls that reference non-existing entities will now log a warning instead of silently being omitted. If you are using a template and want to select no entities, you need to pass `none` instead. The TTS integration will no longer target all media players if no entity ID passed in. You need to specify `all` instead. - ([@balloob] - [#31427]) + +- **Light** - It is no longer allowed to pass both `brightness` and `brightness_pct` to `light.turn_on` service. Previously passing both would have used `brightness_pct`. - ([@balloob] - [#31452]) ([light docs]) + +- **DSMR** - Added Belgian meter. Some DSMR sensors have been renamed to align with DSMR specifications. "Power" sensors are now properly "Energy" sensors and those which were previously using "low" and "normal" descriptions now use "tarif 1" and "tarif 2", respectively. - ([@dupondje] - [#30121]) ([dsmr docs]) + + Example of sensor changes: + + - `Power Consumption (low)` -> `Energy Consumption (tarif 1)` + - `Power Consumption (normal)` -> `Energy Consumption (tarif 2)` + +- **Orange Livebox Play TV** - The Orange Livebox Play TV integration has been removed. A change to the site scraped with this integration has changed, causing the integration to break. This integration violated our design decisions and is therefore removed. - ([@frenck] - [#31525]) (breaking change) + +- **Core** - Only administrator users can stop or restart Home Assistant. - ([@balloob] - [#31509]) ([homeassistant docs]) + +- **Sure Petcare** - Sure Petcare supports new features and has improved existing features. As a result, you will want to note that the format of the `feeders`/`flaps`/`pets` options changed from a map (`id`/`name`) to a simple list of IDs, which means the `name` option is removed. The `name` is now gathered directly from the Sure Petcare API but changeable via the HA UI. + + The `household_id` (which is no longer needed) and customizing options `icon` and `device_class` are also removed but can still be configured via the UI. - ([@benleb] - [#31437]) ([surepetcare docs]) + + Example YAML configuration: + + ```yaml + surepetcare: + username: YOUR_SURE_PETCARE_LOGIN + password: YOUR_SURE_PETCARE_PASSWORD + feeders: [12345, 67890] + flaps: [13579] + pets: [24680] + ``` + +- **Frontend** - `frontend.set_theme` and `frontend.reload_themes` now require admin access. This will not break automations that set themes because those are run with admin access. Also, a `themes_updated event` no longer contains all theme data. - ([@balloob] - [#31654]) ([frontend docs]) + +- **Modbus** - The Modbus Binary Sensor can now read data from discrete inputs. A new variable `input_type` was added to define if you want to read from `coil` or `discrete_input`. Coil is the default option. - ([@vzahradnik] - [#30004]) ([modbus docs]) + + Example YAML configuration: + + ```yaml + binary_sensor: + - platform: modbus + scan_interval: 10 + inputs: + - name: Sensor1 + hub: hub1 + slave: 1 + address: 100 + input_type: discrete_input + ``` + +- **Tado** - Adding support of multiple Tado accounts has changed the unique ID generation of sensor and climate devices, and now includes the ID of the home. As a result you will see new entity ID's for `sensor` and `climate` devices. + + In addition, support for water heater zones has been added. Tado hot water zones with temperature control previously created a climate entity, e.g., `climate.hot_water`, and these will be replaced by a `water_heater.hot_water` entity. This change is not breaking for hot water zones without temperature control as they do not have a climate zone. + + ([@gorynychzmey] - [#31527]) ([@michaelarnauts] - [#30095]) ([tado docs]) + + Example YAML configuration: + + ```yaml + tado: + - username: user1@example.com + password: !secret tado_pwd1 + - username: user2@example.com + password: !secret tado_pwd2 + ``` + + If you have only one account this configuration will also work: + + ```yaml + tado: + username: user@example.com + password: !secret tado_pwd + ``` + +- **UniFi** - Changing tracking settings will no longer disable entities but will remove them completely from the state machine and entity registry. The SSID filter will now mark all wireless clients as `not_home` if they are connected to SSIDs that are not a part of the filter. - ([@Kane610] - [#31762]) ([unifi docs]) + +- **Rest** - Many devices continue to use XML for RESTful APIs. This change implements converting XML output to JSON via `xmltojson` so it can work with the existing rest sensor component. + + `xmltojson` tags may be confusing; if you are not familiar with the conversion, please use the [xmltodict](https://xmltodict-debugger.glitch.me/) tool created by [@balloob] to identify the tags to be used to parse the resulting JSON. + + As the attributes that usually need to be scraped are deeper in the document, support for passing in a template to find the JSON attributes has been added. JSON APIs that do not have their attributes at the top level can also benefit from this change. - ([@bdraco] - [#31809]) ([rest docs]) + + Example YAML configuration: + + ```yaml + sensor: + - platform: rest + resource: http://192.168.1.20/status.xml + authentication: basic + username: username + password: password + json_attributes: + - "htstatus" + - "poolsp" + - "spasp" + - "pooltemp" + - "spatemp" + - "airtemp" + json_attributes_path: "$.response.temp" + value_template: "{{ value_json.response.temp.poolsp }}" + - platform: rest + resource: http://192.168.1.5/status.xml + json_attributes: + - "led0" + - "led1" + - "user0" + - "temp0" + - "btn0" + json_attributes_path: "$.response" + value_template: "OK" + ``` + +- **GreenEye Monitor (GEM)** - Greeneye Monitor temperature readings are now correct (previously they would report as twice the actual value). If you've compensated for this in your dashboards or displays, you'll need to undo that compensation with this release. - ([@jkeljo] - [#31896]) ([greeneye_monitor docs]) + +- **Duke Energy** - The Duke Energy integration has been removed. The website of Duke Energy changed, causing the integration to break because it relied on web scraping, which is no longer allowed to be used. - ([@frenck] - [#31921]) (breaking change) + +- **deCONZ** - deCONZ will no longer change entities to being disabled when using the integration configuration options but rather remove them completely from the state machine. Enabling the option will load all relevant entities again. - ([@Kane610] - [#31661]) ([deconz docs]) + +- **Ring** - All Ring accounts require two-factor authentication. This means that it is no longer possible to configure it via YAML as this cannot support 2FA. - ([@balloob] - [#32039]) ([ring docs]) (breaking change) (beta fix) + +- **Hue** - The `filename` option from the Hue bridge configuration has been deprecated in 0.104 and now removed. - ([@frenck] - [#32027]) ([hue docs]) (breaking change) (beta fix) + +## Beta Fixes + +- Only check frontend for safe mode if frontend wanted to be loa… ([@balloob] - [#31969]) (beta fix) +- Fix Plex sensor title handling ([@jjlawren] - [#31973]) ([plex docs]) (beta fix) +- Bump ZHA quirks and add skip configuration support ([@dmulcahey] - [#31982]) ([zha docs]) (beta fix) +- Fix bug in ecobee integration ([@marthoc] - [#32008]) ([ecobee docs]) (beta fix) +- Fix recursion bug ([@balloob] - [#32009]) ([homeassistant docs]) (beta fix) +- Don't return coroutine in DLNA/DMR service handler ([@tsvi] - [#32011]) ([dlna_dmr docs]) (beta fix) +- Bump pyatmo to 3.2.4 ([@cgtobi] - [#32018]) ([netatmo docs]) (beta fix) +- Add missing name to logging in DataUpdateCoordinator ([@MatthewFlamm] - [#32023]) (beta fix) +- Add minimal version contrain to urllib3 ([@frenck] - [#32031]) (beta fix) +- Updated frontend to 20200220.0 ([@balloob] - [#32033]) ([frontend docs]) (beta fix) +- Enhance Dynalite Integration after review ([@ziv1234] - [#31760]) ([dynalite docs]) (beta fix) +- Remove YAML config from Ring integration ([@balloob] - [#32039]) ([ring docs]) (breaking change) (beta fix) +- Fix i/o in august camera async image update ([@bdraco] - [#32044]) ([august docs]) (beta fix) +- Updated frontend to 20200220.1 ([@balloob] - [#32046]) ([frontend docs]) (beta fix) +- Bump brother to 0.1.6 ([@bieniu] - [#32054]) ([brother docs]) (beta fix) +- Add additional logging to rest sensor ([@arsaboo] - [#32068]) ([rest docs]) (beta fix) +- Add ConfigEntryNotReady exception to Plex ([@jjlawren] - [#32071]) ([plex docs]) (beta fix) +- Fix Plugwise climate issues for new firmware #32080 ([@CoMPaTech] - [#32109]) ([plugwise docs]) (beta fix) +- 0.106 Beta - provide correctly formatted placeholders ([@kit-klein] - [#32119]) ([konnected docs]) (beta fix) +- Properly define depenency for Scrape integration on Rest integ… ([@balloob] - [#32136]) ([scrape docs]) (beta fix) +- Fix vizio bug to use 'get' to get volume_step since it is optional ([@raman325] - [#32151]) ([vizio docs]) (beta fix) +- Improve Vizio fix to avoid KeyError ([@raman325] - [#32163]) ([vizio docs]) (beta fix) +- Dedup and clarify imported konnected config flows ([@kit-klein] - [#32138]) ([konnected docs]) (beta fix) +- Bump python-tado to 0.3.0 ([@michaelarnauts] - [#32186]) ([tado docs]) (beta fix) +- Updated frontend to 20200220.3 ([@bramkragten] - [#32189]) ([frontend docs]) (beta fix) +- Fix Arlo doing I/O in event loop ([@balloob] - [#32190]) ([arlo docs]) (beta fix) +- Bump socialbladeclient to 0.5 ([@pinkywafer] - [#32191]) ([socialblade docs]) (beta fix) +- Fix error where SimpliSafe websocket would disconnect and not reconnect ([@bachya] - [#32199]) ([simplisafe docs]) (beta fix) +- Updated frontend to 20200220.4 ([@bramkragten] - [#32205]) ([frontend docs]) (beta fix) +- Remove deprecated Hue options (fixes CI) ([@frenck] - [#32027]) ([hue docs]) (breaking change) (beta fix) + +## Release 0.106.1 - February 27 + +- Add missing translations for light actions ([@emontnemery] - [#32216]) ([light docs]) +- Mark clients away if they have never been seen. ([@lociii] - [#32222]) ([unifi docs]) +- Fix DSMR 5 ([@dupondje] - [#32233]) ([dsmr docs]) +- Bump simplisafe-python to 9.0.0 ([@bachya] - [#32215]) ([simplisafe docs]) +- Bump simplisafe-python to 9.0.2 ([@bachya] - [#32273]) ([simplisafe docs]) +- deCONZ - Race condition on slower systems ([@Kane610] - [#32274]) ([deconz docs]) +- Catch more Hue errors ([@balloob] - [#32275]) ([hue docs]) + +[#32215]: https://github.com/home-assistant/home-assistant/pull/32215 +[#32216]: https://github.com/home-assistant/home-assistant/pull/32216 +[#32222]: https://github.com/home-assistant/home-assistant/pull/32222 +[#32233]: https://github.com/home-assistant/home-assistant/pull/32233 +[#32273]: https://github.com/home-assistant/home-assistant/pull/32273 +[#32274]: https://github.com/home-assistant/home-assistant/pull/32274 +[#32275]: https://github.com/home-assistant/home-assistant/pull/32275 +[@Kane610]: https://github.com/Kane610 +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@dupondje]: https://github.com/dupondje +[@emontnemery]: https://github.com/emontnemery +[@lociii]: https://github.com/lociii +[deconz docs]: /integrations/deconz/ +[dsmr docs]: /integrations/dsmr/ +[hue docs]: /integrations/hue/ +[light docs]: /integrations/light/ +[simplisafe docs]: /integrations/simplisafe/ +[unifi docs]: /integrations/unifi/ + +## Release 0.106.2 - February 28 + +- Updated frontend to 20200220.5 ([@bramkragten] - [#32312]) ([frontend docs]) +- revent saving/deleting Lovelace config in safe mode ([@balloob] - [#32319]) ([lovelace docs]) +- UniFi - Temporary workaround to get device tracker to mark cli… ([@Kane610] - [#32321]) ([unifi docs]) +- Ensure rest sensors are marked unavailable when http requests… ([@bdraco] - [#32309]) ([rest docs]) + +[#32309]: https://github.com/home-assistant/home-assistant/pull/32309 +[#32312]: https://github.com/home-assistant/home-assistant/pull/32312 +[#32319]: https://github.com/home-assistant/home-assistant/pull/32319 +[#32321]: https://github.com/home-assistant/home-assistant/pull/32321 +[@Kane610]: https://github.com/Kane610 +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bramkragten]: https://github.com/bramkragten +[frontend docs]: /integrations/frontend/ +[lovelace docs]: /integrations/lovelace/ +[rest docs]: /integrations/rest/ +[unifi docs]: /integrations/unifi/ + +## Release 0.106.3 - March 2 + +Added a Coronavirus integration to help monitor the ongoing epidemic. [More information here.](/blog/2020/03/02/release-106-3/) + +## Release 0.106.4 - March 2 + +- Fixed TypeError with old server versions ([@elmurato] - [#32329]) ([minecraft_server docs]) +- Bump pyeight to 0.1.4 ([@mezz64] - [#32363]) ([eight_sleep docs]) +- Catch Eight Sleep API errors, don't round None type ([@mezz64] - [#32410]) +- Coronavirus updates ([@balloob] - [#32417]) +- Add unique ID to coronavirus ([@balloob] - [#32423]) + +[#32329]: https://github.com/home-assistant/core/pull/32329 +[#32363]: https://github.com/home-assistant/core/pull/32363 +[#32410]: https://github.com/home-assistant/core/pull/32410 +[#32417]: https://github.com/home-assistant/core/pull/32417 +[#32423]: https://github.com/home-assistant/core/pull/32423 +[@balloob]: https://github.com/balloob +[@elmurato]: https://github.com/elmurato +[@mezz64]: https://github.com/mezz64 +[eight_sleep docs]: /integrations/eight_sleep/ +[minecraft_server docs]: /integrations/minecraft_server/ + +## Release 0.106.5 - March 3 + +- Fix too many device tracker updates in log for Tesla ([@alandtse] - [#32426]) +- Filter out duplicate logbook states ([@balloob] - [#32427]) +- Properly define dependency for pvoutput integration on rest in… ([@bdraco] - [#32435]) +- Fix pushover's ATTR_RETRY env variable typo ([@axilleas] - [#32440]) +- Remove hassfest blacklisted rest ([@balloob] - [#32441]) +- UniFi - Fix websocket bug ([@Kane610] - [#32449]) + +[#32426]: https://github.com/home-assistant/core/pull/32426 +[#32427]: https://github.com/home-assistant/core/pull/32427 +[#32435]: https://github.com/home-assistant/core/pull/32435 +[#32440]: https://github.com/home-assistant/core/pull/32440 +[#32441]: https://github.com/home-assistant/core/pull/32441 +[#32449]: https://github.com/home-assistant/core/pull/32449 +[@Kane610]: https://github.com/Kane610 +[@alandtse]: https://github.com/alandtse +[@axilleas]: https://github.com/axilleas +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco + +## Release 0.106.6 - March 10 + +- Get pending iCloud devices when available + request again when needs an update ([@Quentame] - [#32400]) ([icloud docs]) +- Send messages conforming new facebook policy ([@chmielowiec] - [#32516]) ([facebook docs]) +- Update python-velbus to fix a missing data file ([@Cereal2nd] - [#32580]) ([velbus docs]) +- Upgrade to coronavirus 1.1.0 ([@balloob] - [#32648]) ([coronavirus docs]) + +[#32400]: https://github.com/home-assistant/core/pull/32400 +[#32516]: https://github.com/home-assistant/core/pull/32516 +[#32580]: https://github.com/home-assistant/core/pull/32580 +[#32648]: https://github.com/home-assistant/core/pull/32648 +[@Cereal2nd]: https://github.com/Cereal2nd +[@Quentame]: https://github.com/Quentame +[@balloob]: https://github.com/balloob +[@chmielowiec]: https://github.com/chmielowiec +[coronavirus docs]: /integrations/coronavirus/ +[facebook docs]: /integrations/facebook/ +[icloud docs]: /integrations/icloud/ +[velbus docs]: /integrations/velbus/ + +## All changes + +- Change scan_interval defaults for Tesla ([@alandtse] - [#31194]) ([tesla docs]) (breaking change) +- Removes I/O from linky tests ([@balloob] - [#31299]) ([linky docs]) +- Reorganize insteon code ([@teharris1] - [#31183]) ([insteon docs]) (breaking change) +- Upgrade pre-commit to 2.0.1 ([@frenck] - [#31308]) +- Add opening and closing states to MQTT covers ([@rickvdl] - [#31259]) ([mqtt docs]) +- Bump pytrafikverket to 0.1.6.1 ([@endor-force] - [#30697]) ([trafikverket_train docs]) ([trafikverket_weatherstation docs]) +- Update media_player and add tests to qualify vizio integration for platinum quality score ([@raman325] - [#31187]) ([vizio docs]) +- Register on HA stop event to gracefully shutdown HomematicIP Cloud connections ([@SukramJ] - [#31289]) ([homematicip_cloud docs]) +- Axis - config flow use new helper functions ([@Kane610] - [#31286]) ([axis docs]) +- UniFi - Try to discover local controller ([@Kane610] - [#31326]) ([unifi docs]) +- Bump pytest to 5.3.5 ([@frenck] - [#31327]) +- Remove Throttle on async_setup and bump pyvizio version ([@raman325] - [#31337]) ([vizio docs]) +- Fix typos found by codespell ([@cclauss] - [#31243]) +- UniFi integration move to push messaging ([@Kane610] - [#31086]) ([unifi docs]) +- Axis - Use core to start component tests ([@Kane610] - [#31328]) +- drop fritzdect ([@escoand] - [#31359]) (breaking change) +- Let core resolve entity_id for lastfm from username ([@inverse] - [#31280]) ([lastfm docs]) +- Add totalconnect zones as binary sensors ([@austinmroczek] - [#28712]) ([totalconnect docs]) (new-platform) +- Add Tahoma lock support ([@vlebourl] - [#31311]) ([tahoma docs]) (new-platform) +- Run mypy through a pyenv/virtualenv enabler wrapper script ([@scop] - [#30922]) +- Remove hour delay before checking for updates ([@balloob] - [#31368]) ([updater docs]) +- Add play, pause, previous and next track to kef ([@basnijholt] - [#31373]) ([kef docs]) +- Replace unmaintained BraviaRC backend with new fork: ([@dcnielsen90] - [#31234]) ([braviatv docs]) ([braviatv docs]) ([braviatv docs]) +- deCONZ - Improve config flow logging ([@Kane610] - [#31381]) ([deconz docs]) +- UniFi - Log better information than a backtrace when poor switch data is involved ([@Kane610] - [#31382]) ([unifi docs]) +- Add temperature and humidity to xiaomi miio air quality monitor ([@fierland] - [#31287]) ([xiaomi_miio docs]) +- Support multiple attachments in signal messenger integration ([@bbernhard] - [#31141]) ([signal_messenger docs]) +- Upgrade importlib-metadata to 1.5.0 ([@fabaff] - [#31390]) +- Upgrade sendgrid to 6.1.1 ([@fabaff] - [#31394]) ([sendgrid docs]) +- Upgrade holidays to 0.10.1 ([@fabaff] - [#31392]) ([workday docs]) +- Upgrade discord.py to 1.3.1 ([@fabaff] - [#31391]) ([discord docs]) +- Upgrade praw to 6.5.1 ([@fabaff] - [#31393]) ([reddit docs]) +- Add unique_id to essent sensors ([@vanbalken] - [#31408]) ([essent docs]) +- Catch device not found in device automations ([@balloob] - [#31401]) ([device_automation docs]) +- Upgrade numpy to 1.18.1 ([@fabaff] - [#31411]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs]) +- Update pyhomematic to 0.1.64 ([@danielperna84] - [#31406]) ([homematic docs]) +- Add Salt Fiber Box device tracker ([@bjornorri] - [#30986]) ([salt docs]) (new-integration) +- Upgrade alpha_vantage to 2.1.3 ([@fabaff] - [#31388]) ([alpha_vantage docs]) +- Search specific train in Nederlandse Spoorwegen ([@gurbyz] - [#28898]) ([nederlandse_spoorwegen docs]) +- Enable SUPPORT_VOLUME_STEP ([@Cloudenius] - [#31023]) ([pioneer docs]) +- deCONZ - Library cleanup ([@Kane610] - [#31410]) ([deconz docs]) +- Streamline SimpliSafe data and token management ([@bachya] - [#31324]) ([simplisafe docs]) +- Replace cmp option with eq and order ([@springstan] - [#31423]) +- Bump pyvizio version and add additional device info ([@raman325] - [#31417]) ([vizio docs]) +- Pass correct config to updater ([@balloob] - [#31428]) ([updater docs]) +- Add guard clause for discovery_info to tahoma platforms ([@vlebourl] - [#31434]) ([tahoma docs]) +- Add color to light template ([@tetienne] - [#31435]) ([template docs]) +- Clean up Tahoma smartlock ([@vlebourl] - [#31430]) ([tahoma docs]) (new-platform) +- Fix issue with Notion dispatcher topic ([@bachya] - [#31441]) ([notion docs]) +- Fix issue with IQVIA dispatcher topic ([@bachya] - [#31440]) ([iqvia docs]) +- Fix issue with WWLLN dispatcher topic ([@bachya] - [#31442]) ([wwlln docs]) +- Fix issues with Ambient PWS dispatcher topic ([@bachya] - [#31439]) ([ambient_station docs]) +- Add missing await to HMIPC ([@SukramJ] - [#31415]) ([homematicip_cloud docs]) +- Add timeout attribute for send files ([@Konsts] - [#31379]) ([telegram_bot docs]) +- Fix misspelled sensor names ([@KasperLK] - [#31344]) ([danfoss_air docs]) (breaking change) +- Update StepSpeaker and Speaker interfaces in Alexa ([@ochlocracy] - [#31444]) ([alexa docs]) +- Remove Alexa.InputController from devices without supported inputs in Alexa ([@ochlocracy] - [#31450]) ([alexa docs]) +- Bump pyvizio version for bug fixes ([@raman325] - [#31453]) ([vizio docs]) +- Add config flow to Meteo-France ([@Quentame] - [#29927]) ([meteo_france docs]) (breaking change) +- Log warning when entities referenced in service call not found ([@balloob] - [#31427]) (breaking change) +- Use entity.async_request_call in service helper ([@balloob] - [#31454]) +- Add brightness_step to light.turn_on ([@balloob] - [#31452]) ([light docs]) (breaking change) +- deCONZ - Revert from using disabled_by when setting options ([@Kane610] - [#31446]) ([deconz docs]) +- Add belgian meter and rename some dsmr sensors ([@dupondje] - [#30121]) ([dsmr docs]) (breaking change) +- Add GDACS feed integration ([@exxamalte] - [#31235]) ([gdacs docs]) (new-integration) +- Update link when IO in event loop ([@balloob] - [#31519]) +- Remove of liveboxplaytv integration (ADR0004) ([@frenck] - [#31525]) (breaking change) +- Updated the provider name to blockchain.com ([@P-Verbrugge] - [#31534]) ([blockchain docs]) +- Changed website name to blockchain.com ([@P-Verbrugge] - [#31528]) ([bitcoin docs]) +- Update the update coordinator API to make it easier to use ([@balloob] - [#31471]) ([hue docs]) +- Make amcrest integration more robust ([@pnbruckner] - [#30843]) ([amcrest docs]) +- Skip updates when Plex client viewing photos ([@jjlawren] - [#31556]) ([plex docs]) +- Unregister listener for stats sensor with max_age ([@azogue] - [#31580]) ([statistics docs]) +- Add Minecraft Server Integration ([@elmurato] - [#30992]) ([minecraft_server docs]) (new-integration) +- Extract services from init.py for HomematicIP Cloud ([@SukramJ] - [#31376]) ([homematicip_cloud docs]) +- Fix exceptions when using newer Samsung TVs ([@escoand] - [#31602]) ([samsungtv docs]) +- Clean up core services ([@balloob] - [#31509]) ([group docs]) ([homeassistant docs]) (breaking change) +- Bump denonavr to 0.7.12 ([@scarface-4711] - [#31629]) ([denonavr docs]) +- Actually enable alarmdecoder to see open/close state of bypassed RF zones when armed ([@melyux] - [#31426]) ([alarmdecoder docs]) +- Use slug in ping device tracker config validation ([@springstan] - [#31329]) ([ifttt docs]) ([media_extractor docs]) ([onewire docs]) ([ping docs]) +- Handle missing next train from NS ([@YarmoM] - [#31626]) ([nederlandse_spoorwegen docs]) +- Remove stray debug from unifi integration ([@CHAZICLE] - [#31634]) ([unifi docs]) +- Add Abode water valve support ([@shred86] - [#30635]) ([abode docs]) +- Device tracker entities based on GPS should always publish updates ([@balloob] - [#31551]) ([device_tracker docs]) +- Hue to retry if hub errors out ([@balloob] - [#31616]) ([hue docs]) +- Bump insteonplm to 0.16.7 ([@teharris1] - [#31645]) ([insteon docs]) +- Only auth on enter_learning in response to errors for broadlink ([@bmfurtado] - [#27341]) ([broadlink docs]) +- Add unique ID to edimax switches ([@andersonshatch] - [#27984]) ([edimax docs]) +- Added zone type Technical as power. ([@crallian] - [#31611]) ([spc docs]) +- Add recorder vars db_max_retries and db_retry_wait ([@TechnicallyJoe] - [#31561]) ([recorder docs]) +- Sure Petcare new features various improvements ([@benleb] - [#31437]) ([surepetcare docs]) (breaking change) +- Add ZHA Texas Instruments CC device support ([@sanyatuning] - [#31621]) ([zha docs]) +- ZHA tests refactoring ([@Adminiuga] - [#31682]) ([zha docs]) +- Clean up frontend services and events ([@balloob] - [#31654]) ([frontend docs]) (breaking change) +- Add brightness light device actions ([@balloob] - [#31567]) ([device_automation docs]) ([light docs]) +- Fix Météo-France I/O while testing ([@Quentame] - [#31695]) ([meteo_france docs]) +- Bump velbus version + load velbus module names into device info ([@Cereal2nd] - [#31664]) ([velbus docs]) +- Vicare water_heater set_temperature fix and bump PyVicare to 0.1.7 ([@oischinger] - [#31672]) ([vicare docs]) +- Add MELCloud integration ([@vilppuvuorinen] - [#30712]) ([melcloud docs]) (new-integration) +- Dynalite Integration ([@ziv1234] - [#27841]) ([dynalite docs]) (new-integration) +- Extend Modbus binary sensor to support discrete inputs ([@vzahradnik] - [#30004]) ([modbus docs]) (breaking change) +- Fix Evohome checking override duration ([@eavanvalkenburg] - [#31697]) ([evohome docs]) +- For vizio integration, set unique ID early to prevent multiple zeroconf discovery items for the same device to appear ([@raman325] - [#31686]) ([vizio docs]) +- Use latest version of python-pushover (forked) to fix issue with diff… ([@SoftXperience] - [#31647]) ([pushover docs]) +- Add Glances sensors dynamically ([@engrbm87] - [#28639]) ([glances docs]) +- Adjust entity slow warning for custom component ([@balloob] - [#31711]) +- Limit derivative test ([@balloob] - [#31717]) +- Add support of multiple Tado accounts ([@gorynychzmey] - [#31527]) ([tado docs]) (breaking change) +- Disable Hue groups for new setups ([@balloob] - [#31713]) ([hue docs]) +- Significantly reduce the number of API calls that the august integration ([@bdraco] - [#31685]) ([august docs]) +- Entity Registry to store and restore name/icon ([@balloob] - [#31714]) ([config docs]) +- Support Konnected Pro alarm panel, embrace async, leverage latest HA features/architecture ([@kit-klein] - [#30894]) ([konnected docs]) +- Fix set volume level ([@maxcanna] - [#31731]) ([frontier_silicon docs]) +- Update Modbus service manifest ([@vzahradnik] - [#31727]) +- pyipma version bump ([@dgomes] - [#31739]) ([ipma docs]) +- Read door open/close events from the activity log. ([@bdraco] - [#31732]) ([august docs]) +- Improve Huawei LTE timeouting/stalling request behavior ([@scop] - [#31710]) ([huawei_lte docs]) +- Refresh the august access token when needed ([@bdraco] - [#31735]) ([august docs]) +- Add new webhook action to allow enabling encryption in an exis… ([@robbiet480] - [#31743]) ([mobile_app docs]) +- Use set for dependency lookup in hassfest ([@balloob] - [#31746]) +- Fix spelling of ecobee in manifest ([@frenck] - [#31751]) ([ecobee docs]) +- Add availability status to Modbus entities and improve error handling ([@vzahradnik] - [#31073]) ([modbus docs]) +- Fix moving average test for discrete derivative sensor ([@basnijholt] - [#31750]) +- Improve Plex media_player entity naming ([@jjlawren] - [#31755]) ([plex docs]) +- Add initial version of Vilfo Router integration ([@ManneW] - [#31177]) ([vilfo docs]) (new-integration) +- Whitelist shopping list updated event ([@balloob] - [#31742]) ([websocket_api docs]) +- Add device name to sensor name for mobile_app ([@dshokouhi] - [#31756]) ([mobile_app docs]) +- ZHA tests refactoring ([@Adminiuga] - [#31744]) ([zha docs]) +- Updated frontend to 20200212.0 ([@bramkragten] - [#31772]) ([frontend docs]) +- Cleanup August activity processing and add tests ([@bdraco] - [#31774]) ([august docs]) +- Fix spelling of VIVOTEK ([@frenck] - [#31773]) ([vivotek docs]) +- Fix spelling of apcupsd in manifest ([@frenck] - [#31770]) ([apcupsd docs]) +- Fix spelling of AVM FRITZ!Box in manifest ([@frenck] - [#31765]) ([fritz docs]) +- Implement PlatformNotReady to Linky + fix TypeError ([@Quentame] - [#31768]) ([linky docs]) +- UniFi - Change handling of updated options ([@Kane610] - [#31762]) ([unifi docs]) (breaking change) +- Rename codecov so it will be picked up ([@balloob] - [#31775]) +- Fix spelling of ASUSWRT in manifest ([@frenck] - [#31764]) ([asuswrt docs]) +- Update to version 2.6 of ihcsdk ([@dingusdk] - [#31789]) ([ihc docs]) +- Spelling: Config(uration) ([@frenck] - [#31782]) +- Add and use bunch of data size and rate related constants ([@scop] - [#31781]) +- Fix spelling of NETGEAR and CalDAV in manifests ([@frenck] - [#31790]) ([caldav docs]) ([netgear docs]) ([netgear_lte docs]) +- Write state if schedule update state from async context ([@balloob] - [#31758]) ([ps4 docs]) +- Add support for real-time data from SimpliSafe ([@bachya] - [#31424]) ([simplisafe docs]) +- Update onewire component ([@MrDadoo] - [#31419]) ([onewire docs]) +- Add multi select support to config validation and to custom serializer ([@Kane610] - [#31798]) +- Catch unexpected exceptions when validating config ([@balloob] - [#31795]) +- Use time.monotonic instead of time.time where appropriate ([@scop] - [#31780]) ([bme680 docs]) ([doods docs]) ([maxcube docs]) ([netatmo docs]) ([proxmoxve docs]) ([verisure docs]) +- Add Home Assistant Companion to manifest.json so we can sugges… ([@robbiet480] - [#31808]) ([frontend docs]) +- Update Plex connection class to push ([@jjlawren] - [#31806]) ([plex docs]) +- Remove force from async_schedule_update_ha_state for HMIPC ([@SukramJ] - [#31796]) ([homematicip_cloud docs]) +- Add summary attribtue for currently playing media ([@jjlawren] - [#31803]) ([plex docs]) +- Fix swap of min and max default values in Modbus climate ([@vzahradnik] - [#31801]) ([modbus docs]) +- Add device registry support for Plex ([@jjlawren] - [#31797]) ([plex docs]) +- update directv to directpy==0.6 ([@ctalkington] - [#31812]) ([directv docs]) ([directv docs]) +- Speed up tests of HomematicIP Cloud ([@SukramJ] - [#31810]) +- Allow hourly forecast in IPMA ([@abmantis] - [#30979]) ([ipma docs]) +- Limit translations_develop to an integration ([@balloob] - [#31804]) +- Annotate more async functions correctly ([@balloob] - [#31802]) ([coolmaster docs]) ([esphome docs]) ([homekit_controller docs]) ([mysensors docs]) ([sonos docs]) ([starline docs]) ([upnp docs]) +- Fire HASS events on SimpliSafe events ([@bachya] - [#31811]) ([simplisafe docs]) +- Change multi_select config validator to class ([@Kane610] - [#31828]) +- Remove energy sensor from incompatible Ata devices ([@vilppuvuorinen] - [#31831]) ([melcloud docs]) +- Add turn_on_action configuration variable ([@maxcanna] - [#31792]) ([lg_netcast docs]) +- Bump pillow to 7.0 ([@robmarkcole] - [#31847]) ([doods docs]) ([proxy docs]) ([qrcode docs]) ([seven_segments docs]) ([tensorflow docs]) +- Simplify missing Garmin Connect data handling, mark entities un/available ([@scop] - [#31718]) ([garmin_connect docs]) +- Add Tado water_heater ([@michaelarnauts] - [#30095]) ([tado docs]) (breaking change) (new-platform) +- Revert "Check netgear device_tracker link_rate to ensure device is connected" ([@MartinHjelmare] - [#31855]) ([netgear docs]) +- Helpers typing improvements ([@scop] - [#31865]) +- Improve media name detection on lg_netcast ([@maxcanna] - [#31863]) ([lg_netcast docs]) +- update pyTibber libary, add signal strength for Pulse and watty ([@Danielhiversen] - [#31851]) ([tibber docs]) +- Bump Apprise version to v0.8.4 ([@caronc] - [#31868]) ([apprise docs]) +- Add support for displaying Daf Yomi ([@moshekaplan] - [#30628]) ([jewish_calendar docs]) +- Use new custom_serializer ([@jjlawren] - [#31871]) ([config docs]) +- Fix CalDAV recurring events ([@PhilRW] - [#31805]) ([caldav docs]) +- Convert august to async so a token refresh lock can be used ([@bdraco] - [#31848]) ([august docs]) +- Add rainforest_eagle support for legacy hardware ([@jcalbert] - [#28082]) ([rainforest_eagle docs]) +- Support XML conversion for RESTful sensors ([@bdraco] - [#31809]) ([rest docs]) (breaking change) +- Fix mikrotik detecting capsman support ([@Marco98] - [#31819]) ([mikrotik docs]) +- Adjust tests after speed up to restore coverage for HomematicIP Cloud ([@SukramJ] - [#31836]) ([homematicip_cloud docs]) +- Upgrade python-velbus to 2.0.41 ([@Cereal2nd] - [#31875]) +- Type hint improvements ([@scop] - [#31876]) ([elgato docs]) ([esphome docs]) ([iaqualink docs]) ([nsw_rural_fire_service_feed docs]) ([remote docs]) ([wled docs]) +- Bump adafruit-blinka and adafruit-circuitpython-mcp230xx ([@jardiamj] - [#31845]) ([mcp23017 docs]) +- Update nederlandse_spoorwegen to properly handle punctuality ([@Squixx] - [#31741]) ([nederlandse_spoorwegen docs]) +- Add timestamp to lg_netcast media_image_url to update image correctly ([@laszlojakab] - [#30933]) ([lg_netcast docs]) +- Clean up netgear device tracker ([@MartinHjelmare] - [#31861]) ([netgear docs]) +- Activate Stale bot for PR's ([@frenck] - [#31837]) +- Fix check_real location guard ([@MartinHjelmare] - [#31890]) +- Clean soundtouch ([@MartinHjelmare] - [#31888]) ([soundtouch docs]) +- Fix bugs in greeneye_monitor voltage reporting ([@jkeljo] - [#31895]) ([greeneye_monitor docs]) +- Upgrade greeneye_monitor to 2.0 ([@jkeljo] - [#31896]) ([greeneye_monitor docs]) (breaking change) +- prevent dev_id being permanently assigned as config_name ([@mueslo] - [#31886]) ([device_tracker docs]) +- Upgrade youtube_dl to version 2020.02.16 ([@BKPepe] - [#31905]) ([media_extractor docs]) +- Upgrade aiohue ([@balloob] - [#31903]) ([hue docs]) +- Add POD support, sleep fitness sensor to EightSleep ([@mezz64] - [#31874]) ([eight_sleep docs]) +- Add logger name to system log ([@balloob] - [#31902]) ([system_log docs]) +- Allow specifying an icon for a scene ([@balloob] - [#31898]) ([homeassistant docs]) +- Add icons to scripts ([@balloob] - [#31899]) ([script docs]) +- Bump dependency to 0.10.17 for HomematicIP Cloud ([@SukramJ] - [#31911]) ([homematicip_cloud docs]) +- Start safe mode if invalid core conf ([@balloob] - [#31904]) +- Hue Group features based on the bulbs in it ([@guimaraes13] - [#31897]) ([hue docs]) +- Updated frontend to 20200212.0 ([@bramkragten] - [#31912]) ([frontend docs]) +- Provide user consumable errors when lock operations fail ([@bdraco] - [#31864]) ([august docs]) +- Bump simplisafe-python to 8.1.1 ([@bachya] - [#31915]) ([simplisafe docs]) +- Remove duke_energy integration (ADR-0004) ([@frenck] - [#31921]) (breaking change) +- Updated frontend to 20200217.0 ([@bramkragten] - [#31922]) ([frontend docs]) +- Add async_unload_entry to iCloud ([@Quentame] - [#31917]) ([icloud docs]) +- Add an options flow to demo ([@bramkragten] - [#31920]) ([demo docs]) +- Bump aio_geojson_geonetnz_quakes to 0.12 ([@exxamalte] - [#31930]) ([geonetnz_quakes docs]) +- Fix translations_develop ([@austinmroczek] - [#31942]) +- Bump aio_geojson_nsw_rfs_incidents to 0.3 ([@exxamalte] - [#31941]) ([nsw_rural_fire_service_feed docs]) +- Bump pyps4-2ndscreen to 1.0.7 ([@ktnrg45] - [#31943]) ([ps4 docs]) +- Add pigpio remote functionality ([@Poeschl] - [#31667]) ([rpi_gpio_pwm docs]) +- Fix entity registry not saving name/icon ([@balloob] - [#31932]) +- Untag discovery as an allowed dependency ([@balloob] - [#31934]) ([apple_tv docs]) ([freebox docs]) ([octoprint docs]) ([roku docs]) ([sabnzbd docs]) ([xiaomi_aqara docs]) ([yeelight docs]) +- Read Modbus climate current temp from input register ([@vzahradnik] - [#31944]) ([modbus docs]) +- Add support for SimpliSafe system notifications ([@bachya] - [#31936]) ([simplisafe docs]) +- Add Twitch subscription and additional stats ([@Poeschl] - [#31122]) ([twitch docs]) +- Extend safe mode ([@balloob] - [#31927]) ([zeroconf docs]) +- Do not use a set for hvac modes in SmartThings ([@balloob] - [#31959]) ([smartthings docs]) +- Audit state handling off august bridges and sensors ([@bdraco] - [#31935]) ([august docs]) +- deCONZ - Directly reflect changes to config entry options ([@Kane610] - [#31661]) ([deconz docs]) (breaking change) +- Upgrade pre-commit to 2.1.0 ([@frenck] - [#31962]) +- Fix pre-commit hook issue on Windows ([@teharris1] - [#31648]) +- Add support for MQTT device triggers ([@emontnemery] - [#31679]) ([device_automation docs]) ([mqtt docs]) +- UniFi config option SSID filter ([@Kane610] - [#31842]) ([unifi docs]) +- deConz - Use proper mechanisms for options flow tests ([@Kane610] - [#31965]) +- Optimize find bad JSON data ([@balloob] - [#31963]) +- Add options to ignore shared/managed Plex clients ([@jjlawren] - [#31738]) ([plex docs]) +- Fix Plex naming and devices for misbehaving clients ([@jjlawren] - [#31970]) ([plex docs]) +- Upgrade to bimmer_connected 0.7.1 to fix US and China access ([@gerard33] - [#31968]) ([bmw_connected_drive docs]) +- Modbus remove unnecessary get calls ([@vzahradnik] - [#31966]) ([modbus docs]) +- Bump vallox-websocket-api to 2.4.0 ([@springstan] - [#31913]) ([vallox docs]) +- Add new devices to HomematicIP Cloud ([@SukramJ] - [#31914]) ([homematicip_cloud docs]) +- Add shutter group to HomematicIP Cloud ([@SukramJ] - [#31916]) ([homematicip_cloud docs]) +- Fix test for HMIPC ([@SukramJ] - [#31981]) +- Updated frontend to 20200219.0 ([@bramkragten] - [#31979]) ([frontend docs]) +- Only check frontend for safe mode if frontend wanted to be loa… ([@balloob] - [#31969]) (beta fix) +- Fix Plex sensor title handling ([@jjlawren] - [#31973]) ([plex docs]) (beta fix) +- Bump ZHA quirks and add skip configuration support ([@dmulcahey] - [#31982]) ([zha docs]) (beta fix) +- Fix bug in ecobee integration ([@marthoc] - [#32008]) ([ecobee docs]) (beta fix) +- Fix recursion bug ([@balloob] - [#32009]) ([homeassistant docs]) (beta fix) +- Don't return coroutine in DLNA/DMR service handler ([@tsvi] - [#32011]) ([dlna_dmr docs]) (beta fix) +- Bump pyatmo to 3.2.4 ([@cgtobi] - [#32018]) ([netatmo docs]) (beta fix) +- Add missing name to logging in DataUpdateCoordinator ([@MatthewFlamm] - [#32023]) (beta fix) +- Add minimal version contrain to urllib3 ([@frenck] - [#32031]) (beta fix) +- Updated frontend to 20200220.0 ([@balloob] - [#32033]) ([frontend docs]) (beta fix) +- Enhance Dynalite Integration after review ([@ziv1234] - [#31760]) ([dynalite docs]) (beta fix) +- Remove YAML config from Ring integration ([@balloob] - [#32039]) ([ring docs]) (breaking change) (beta fix) +- Fix i/o in august camera async image update ([@bdraco] - [#32044]) ([august docs]) (beta fix) +- Updated frontend to 20200220.1 ([@balloob] - [#32046]) ([frontend docs]) (beta fix) +- Bump brother to 0.1.6 ([@bieniu] - [#32054]) ([brother docs]) (beta fix) +- Add additional logging to rest sensor ([@arsaboo] - [#32068]) ([rest docs]) (beta fix) +- Add ConfigEntryNotReady exception to Plex ([@jjlawren] - [#32071]) ([plex docs]) (beta fix) +- Fix Plugwise climate issues for new firmware #32080 ([@CoMPaTech] - [#32109]) ([plugwise docs]) (beta fix) +- 0.106 Beta - provide correctly formatted placeholders ([@kit-klein] - [#32119]) ([konnected docs]) (beta fix) +- Properly define depenency for Scrape integration on Rest integ… ([@balloob] - [#32136]) ([scrape docs]) (beta fix) +- Fix vizio bug to use 'get' to get volume_step since it is optional ([@raman325] - [#32151]) ([vizio docs]) (beta fix) +- Improve Vizio fix to avoid KeyError ([@raman325] - [#32163]) ([vizio docs]) (beta fix) +- Dedup and clarify imported konnected config flows ([@kit-klein] - [#32138]) ([konnected docs]) (beta fix) +- Bump python-tado to 0.3.0 ([@michaelarnauts] - [#32186]) ([tado docs]) (beta fix) +- Updated frontend to 20200220.3 ([@bramkragten] - [#32189]) ([frontend docs]) (beta fix) +- Fix Arlo doing I/O in event loop ([@balloob] - [#32190]) ([arlo docs]) (beta fix) +- Bump socialbladeclient to 0.5 ([@pinkywafer] - [#32191]) ([socialblade docs]) (beta fix) +- Fix error where SimpliSafe websocket would disconnect and not reconnect ([@bachya] - [#32199]) ([simplisafe docs]) (beta fix) +- Updated frontend to 20200220.4 ([@bramkragten] - [#32205]) ([frontend docs]) (beta fix) +- Remove deprecated Hue options (fixes CI) ([@frenck] - [#32027]) ([hue docs]) (breaking change) (beta fix) + +[#27341]: https://github.com/home-assistant/home-assistant/pull/27341 +[#27841]: https://github.com/home-assistant/home-assistant/pull/27841 +[#27984]: https://github.com/home-assistant/home-assistant/pull/27984 +[#28082]: https://github.com/home-assistant/home-assistant/pull/28082 +[#28639]: https://github.com/home-assistant/home-assistant/pull/28639 +[#28712]: https://github.com/home-assistant/home-assistant/pull/28712 +[#28898]: https://github.com/home-assistant/home-assistant/pull/28898 +[#29927]: https://github.com/home-assistant/home-assistant/pull/29927 +[#30004]: https://github.com/home-assistant/home-assistant/pull/30004 +[#30095]: https://github.com/home-assistant/home-assistant/pull/30095 +[#30121]: https://github.com/home-assistant/home-assistant/pull/30121 +[#30628]: https://github.com/home-assistant/home-assistant/pull/30628 +[#30635]: https://github.com/home-assistant/home-assistant/pull/30635 +[#30697]: https://github.com/home-assistant/home-assistant/pull/30697 +[#30712]: https://github.com/home-assistant/home-assistant/pull/30712 +[#30843]: https://github.com/home-assistant/home-assistant/pull/30843 +[#30894]: https://github.com/home-assistant/home-assistant/pull/30894 +[#30922]: https://github.com/home-assistant/home-assistant/pull/30922 +[#30933]: https://github.com/home-assistant/home-assistant/pull/30933 +[#30979]: https://github.com/home-assistant/home-assistant/pull/30979 +[#30986]: https://github.com/home-assistant/home-assistant/pull/30986 +[#30992]: https://github.com/home-assistant/home-assistant/pull/30992 +[#31023]: https://github.com/home-assistant/home-assistant/pull/31023 +[#31073]: https://github.com/home-assistant/home-assistant/pull/31073 +[#31086]: https://github.com/home-assistant/home-assistant/pull/31086 +[#31122]: https://github.com/home-assistant/home-assistant/pull/31122 +[#31141]: https://github.com/home-assistant/home-assistant/pull/31141 +[#31177]: https://github.com/home-assistant/home-assistant/pull/31177 +[#31183]: https://github.com/home-assistant/home-assistant/pull/31183 +[#31187]: https://github.com/home-assistant/home-assistant/pull/31187 +[#31194]: https://github.com/home-assistant/home-assistant/pull/31194 +[#31234]: https://github.com/home-assistant/home-assistant/pull/31234 +[#31235]: https://github.com/home-assistant/home-assistant/pull/31235 +[#31243]: https://github.com/home-assistant/home-assistant/pull/31243 +[#31259]: https://github.com/home-assistant/home-assistant/pull/31259 +[#31280]: https://github.com/home-assistant/home-assistant/pull/31280 +[#31286]: https://github.com/home-assistant/home-assistant/pull/31286 +[#31287]: https://github.com/home-assistant/home-assistant/pull/31287 +[#31289]: https://github.com/home-assistant/home-assistant/pull/31289 +[#31299]: https://github.com/home-assistant/home-assistant/pull/31299 +[#31308]: https://github.com/home-assistant/home-assistant/pull/31308 +[#31311]: https://github.com/home-assistant/home-assistant/pull/31311 +[#31324]: https://github.com/home-assistant/home-assistant/pull/31324 +[#31326]: https://github.com/home-assistant/home-assistant/pull/31326 +[#31327]: https://github.com/home-assistant/home-assistant/pull/31327 +[#31328]: https://github.com/home-assistant/home-assistant/pull/31328 +[#31329]: https://github.com/home-assistant/home-assistant/pull/31329 +[#31337]: https://github.com/home-assistant/home-assistant/pull/31337 +[#31344]: https://github.com/home-assistant/home-assistant/pull/31344 +[#31359]: https://github.com/home-assistant/home-assistant/pull/31359 +[#31368]: https://github.com/home-assistant/home-assistant/pull/31368 +[#31373]: https://github.com/home-assistant/home-assistant/pull/31373 +[#31376]: https://github.com/home-assistant/home-assistant/pull/31376 +[#31379]: https://github.com/home-assistant/home-assistant/pull/31379 +[#31381]: https://github.com/home-assistant/home-assistant/pull/31381 +[#31382]: https://github.com/home-assistant/home-assistant/pull/31382 +[#31388]: https://github.com/home-assistant/home-assistant/pull/31388 +[#31390]: https://github.com/home-assistant/home-assistant/pull/31390 +[#31391]: https://github.com/home-assistant/home-assistant/pull/31391 +[#31392]: https://github.com/home-assistant/home-assistant/pull/31392 +[#31393]: https://github.com/home-assistant/home-assistant/pull/31393 +[#31394]: https://github.com/home-assistant/home-assistant/pull/31394 +[#31401]: https://github.com/home-assistant/home-assistant/pull/31401 +[#31406]: https://github.com/home-assistant/home-assistant/pull/31406 +[#31408]: https://github.com/home-assistant/home-assistant/pull/31408 +[#31410]: https://github.com/home-assistant/home-assistant/pull/31410 +[#31411]: https://github.com/home-assistant/home-assistant/pull/31411 +[#31415]: https://github.com/home-assistant/home-assistant/pull/31415 +[#31417]: https://github.com/home-assistant/home-assistant/pull/31417 +[#31419]: https://github.com/home-assistant/home-assistant/pull/31419 +[#31423]: https://github.com/home-assistant/home-assistant/pull/31423 +[#31424]: https://github.com/home-assistant/home-assistant/pull/31424 +[#31426]: https://github.com/home-assistant/home-assistant/pull/31426 +[#31427]: https://github.com/home-assistant/home-assistant/pull/31427 +[#31428]: https://github.com/home-assistant/home-assistant/pull/31428 +[#31430]: https://github.com/home-assistant/home-assistant/pull/31430 +[#31434]: https://github.com/home-assistant/home-assistant/pull/31434 +[#31435]: https://github.com/home-assistant/home-assistant/pull/31435 +[#31437]: https://github.com/home-assistant/home-assistant/pull/31437 +[#31439]: https://github.com/home-assistant/home-assistant/pull/31439 +[#31440]: https://github.com/home-assistant/home-assistant/pull/31440 +[#31441]: https://github.com/home-assistant/home-assistant/pull/31441 +[#31442]: https://github.com/home-assistant/home-assistant/pull/31442 +[#31444]: https://github.com/home-assistant/home-assistant/pull/31444 +[#31446]: https://github.com/home-assistant/home-assistant/pull/31446 +[#31450]: https://github.com/home-assistant/home-assistant/pull/31450 +[#31452]: https://github.com/home-assistant/home-assistant/pull/31452 +[#31453]: https://github.com/home-assistant/home-assistant/pull/31453 +[#31454]: https://github.com/home-assistant/home-assistant/pull/31454 +[#31471]: https://github.com/home-assistant/home-assistant/pull/31471 +[#31509]: https://github.com/home-assistant/home-assistant/pull/31509 +[#31519]: https://github.com/home-assistant/home-assistant/pull/31519 +[#31525]: https://github.com/home-assistant/home-assistant/pull/31525 +[#31527]: https://github.com/home-assistant/home-assistant/pull/31527 +[#31528]: https://github.com/home-assistant/home-assistant/pull/31528 +[#31534]: https://github.com/home-assistant/home-assistant/pull/31534 +[#31551]: https://github.com/home-assistant/home-assistant/pull/31551 +[#31556]: https://github.com/home-assistant/home-assistant/pull/31556 +[#31561]: https://github.com/home-assistant/home-assistant/pull/31561 +[#31567]: https://github.com/home-assistant/home-assistant/pull/31567 +[#31580]: https://github.com/home-assistant/home-assistant/pull/31580 +[#31602]: https://github.com/home-assistant/home-assistant/pull/31602 +[#31611]: https://github.com/home-assistant/home-assistant/pull/31611 +[#31616]: https://github.com/home-assistant/home-assistant/pull/31616 +[#31621]: https://github.com/home-assistant/home-assistant/pull/31621 +[#31626]: https://github.com/home-assistant/home-assistant/pull/31626 +[#31629]: https://github.com/home-assistant/home-assistant/pull/31629 +[#31634]: https://github.com/home-assistant/home-assistant/pull/31634 +[#31645]: https://github.com/home-assistant/home-assistant/pull/31645 +[#31647]: https://github.com/home-assistant/home-assistant/pull/31647 +[#31648]: https://github.com/home-assistant/home-assistant/pull/31648 +[#31654]: https://github.com/home-assistant/home-assistant/pull/31654 +[#31661]: https://github.com/home-assistant/home-assistant/pull/31661 +[#31664]: https://github.com/home-assistant/home-assistant/pull/31664 +[#31667]: https://github.com/home-assistant/home-assistant/pull/31667 +[#31672]: https://github.com/home-assistant/home-assistant/pull/31672 +[#31679]: https://github.com/home-assistant/home-assistant/pull/31679 +[#31682]: https://github.com/home-assistant/home-assistant/pull/31682 +[#31685]: https://github.com/home-assistant/home-assistant/pull/31685 +[#31686]: https://github.com/home-assistant/home-assistant/pull/31686 +[#31695]: https://github.com/home-assistant/home-assistant/pull/31695 +[#31697]: https://github.com/home-assistant/home-assistant/pull/31697 +[#31710]: https://github.com/home-assistant/home-assistant/pull/31710 +[#31711]: https://github.com/home-assistant/home-assistant/pull/31711 +[#31713]: https://github.com/home-assistant/home-assistant/pull/31713 +[#31714]: https://github.com/home-assistant/home-assistant/pull/31714 +[#31717]: https://github.com/home-assistant/home-assistant/pull/31717 +[#31718]: https://github.com/home-assistant/home-assistant/pull/31718 +[#31727]: https://github.com/home-assistant/home-assistant/pull/31727 +[#31731]: https://github.com/home-assistant/home-assistant/pull/31731 +[#31732]: https://github.com/home-assistant/home-assistant/pull/31732 +[#31735]: https://github.com/home-assistant/home-assistant/pull/31735 +[#31738]: https://github.com/home-assistant/home-assistant/pull/31738 +[#31739]: https://github.com/home-assistant/home-assistant/pull/31739 +[#31741]: https://github.com/home-assistant/home-assistant/pull/31741 +[#31742]: https://github.com/home-assistant/home-assistant/pull/31742 +[#31743]: https://github.com/home-assistant/home-assistant/pull/31743 +[#31744]: https://github.com/home-assistant/home-assistant/pull/31744 +[#31746]: https://github.com/home-assistant/home-assistant/pull/31746 +[#31750]: https://github.com/home-assistant/home-assistant/pull/31750 +[#31751]: https://github.com/home-assistant/home-assistant/pull/31751 +[#31755]: https://github.com/home-assistant/home-assistant/pull/31755 +[#31756]: https://github.com/home-assistant/home-assistant/pull/31756 +[#31758]: https://github.com/home-assistant/home-assistant/pull/31758 +[#31760]: https://github.com/home-assistant/home-assistant/pull/31760 +[#31762]: https://github.com/home-assistant/home-assistant/pull/31762 +[#31764]: https://github.com/home-assistant/home-assistant/pull/31764 +[#31765]: https://github.com/home-assistant/home-assistant/pull/31765 +[#31768]: https://github.com/home-assistant/home-assistant/pull/31768 +[#31770]: https://github.com/home-assistant/home-assistant/pull/31770 +[#31772]: https://github.com/home-assistant/home-assistant/pull/31772 +[#31773]: https://github.com/home-assistant/home-assistant/pull/31773 +[#31774]: https://github.com/home-assistant/home-assistant/pull/31774 +[#31775]: https://github.com/home-assistant/home-assistant/pull/31775 +[#31780]: https://github.com/home-assistant/home-assistant/pull/31780 +[#31781]: https://github.com/home-assistant/home-assistant/pull/31781 +[#31782]: https://github.com/home-assistant/home-assistant/pull/31782 +[#31789]: https://github.com/home-assistant/home-assistant/pull/31789 +[#31790]: https://github.com/home-assistant/home-assistant/pull/31790 +[#31792]: https://github.com/home-assistant/home-assistant/pull/31792 +[#31795]: https://github.com/home-assistant/home-assistant/pull/31795 +[#31796]: https://github.com/home-assistant/home-assistant/pull/31796 +[#31797]: https://github.com/home-assistant/home-assistant/pull/31797 +[#31798]: https://github.com/home-assistant/home-assistant/pull/31798 +[#31801]: https://github.com/home-assistant/home-assistant/pull/31801 +[#31802]: https://github.com/home-assistant/home-assistant/pull/31802 +[#31803]: https://github.com/home-assistant/home-assistant/pull/31803 +[#31804]: https://github.com/home-assistant/home-assistant/pull/31804 +[#31805]: https://github.com/home-assistant/home-assistant/pull/31805 +[#31806]: https://github.com/home-assistant/home-assistant/pull/31806 +[#31808]: https://github.com/home-assistant/home-assistant/pull/31808 +[#31809]: https://github.com/home-assistant/home-assistant/pull/31809 +[#31810]: https://github.com/home-assistant/home-assistant/pull/31810 +[#31811]: https://github.com/home-assistant/home-assistant/pull/31811 +[#31812]: https://github.com/home-assistant/home-assistant/pull/31812 +[#31819]: https://github.com/home-assistant/home-assistant/pull/31819 +[#31828]: https://github.com/home-assistant/home-assistant/pull/31828 +[#31831]: https://github.com/home-assistant/home-assistant/pull/31831 +[#31836]: https://github.com/home-assistant/home-assistant/pull/31836 +[#31837]: https://github.com/home-assistant/home-assistant/pull/31837 +[#31842]: https://github.com/home-assistant/home-assistant/pull/31842 +[#31845]: https://github.com/home-assistant/home-assistant/pull/31845 +[#31847]: https://github.com/home-assistant/home-assistant/pull/31847 +[#31848]: https://github.com/home-assistant/home-assistant/pull/31848 +[#31851]: https://github.com/home-assistant/home-assistant/pull/31851 +[#31855]: https://github.com/home-assistant/home-assistant/pull/31855 +[#31861]: https://github.com/home-assistant/home-assistant/pull/31861 +[#31863]: https://github.com/home-assistant/home-assistant/pull/31863 +[#31864]: https://github.com/home-assistant/home-assistant/pull/31864 +[#31865]: https://github.com/home-assistant/home-assistant/pull/31865 +[#31868]: https://github.com/home-assistant/home-assistant/pull/31868 +[#31871]: https://github.com/home-assistant/home-assistant/pull/31871 +[#31874]: https://github.com/home-assistant/home-assistant/pull/31874 +[#31875]: https://github.com/home-assistant/home-assistant/pull/31875 +[#31876]: https://github.com/home-assistant/home-assistant/pull/31876 +[#31886]: https://github.com/home-assistant/home-assistant/pull/31886 +[#31888]: https://github.com/home-assistant/home-assistant/pull/31888 +[#31890]: https://github.com/home-assistant/home-assistant/pull/31890 +[#31895]: https://github.com/home-assistant/home-assistant/pull/31895 +[#31896]: https://github.com/home-assistant/home-assistant/pull/31896 +[#31897]: https://github.com/home-assistant/home-assistant/pull/31897 +[#31898]: https://github.com/home-assistant/home-assistant/pull/31898 +[#31899]: https://github.com/home-assistant/home-assistant/pull/31899 +[#31902]: https://github.com/home-assistant/home-assistant/pull/31902 +[#31903]: https://github.com/home-assistant/home-assistant/pull/31903 +[#31904]: https://github.com/home-assistant/home-assistant/pull/31904 +[#31905]: https://github.com/home-assistant/home-assistant/pull/31905 +[#31911]: https://github.com/home-assistant/home-assistant/pull/31911 +[#31912]: https://github.com/home-assistant/home-assistant/pull/31912 +[#31913]: https://github.com/home-assistant/home-assistant/pull/31913 +[#31914]: https://github.com/home-assistant/home-assistant/pull/31914 +[#31915]: https://github.com/home-assistant/home-assistant/pull/31915 +[#31916]: https://github.com/home-assistant/home-assistant/pull/31916 +[#31917]: https://github.com/home-assistant/home-assistant/pull/31917 +[#31920]: https://github.com/home-assistant/home-assistant/pull/31920 +[#31921]: https://github.com/home-assistant/home-assistant/pull/31921 +[#31922]: https://github.com/home-assistant/home-assistant/pull/31922 +[#31927]: https://github.com/home-assistant/home-assistant/pull/31927 +[#31930]: https://github.com/home-assistant/home-assistant/pull/31930 +[#31932]: https://github.com/home-assistant/home-assistant/pull/31932 +[#31934]: https://github.com/home-assistant/home-assistant/pull/31934 +[#31935]: https://github.com/home-assistant/home-assistant/pull/31935 +[#31936]: https://github.com/home-assistant/home-assistant/pull/31936 +[#31941]: https://github.com/home-assistant/home-assistant/pull/31941 +[#31942]: https://github.com/home-assistant/home-assistant/pull/31942 +[#31943]: https://github.com/home-assistant/home-assistant/pull/31943 +[#31944]: https://github.com/home-assistant/home-assistant/pull/31944 +[#31959]: https://github.com/home-assistant/home-assistant/pull/31959 +[#31962]: https://github.com/home-assistant/home-assistant/pull/31962 +[#31963]: https://github.com/home-assistant/home-assistant/pull/31963 +[#31965]: https://github.com/home-assistant/home-assistant/pull/31965 +[#31966]: https://github.com/home-assistant/home-assistant/pull/31966 +[#31968]: https://github.com/home-assistant/home-assistant/pull/31968 +[#31969]: https://github.com/home-assistant/home-assistant/pull/31969 +[#31970]: https://github.com/home-assistant/home-assistant/pull/31970 +[#31973]: https://github.com/home-assistant/home-assistant/pull/31973 +[#31979]: https://github.com/home-assistant/home-assistant/pull/31979 +[#31981]: https://github.com/home-assistant/home-assistant/pull/31981 +[#31982]: https://github.com/home-assistant/home-assistant/pull/31982 +[#32008]: https://github.com/home-assistant/home-assistant/pull/32008 +[#32009]: https://github.com/home-assistant/home-assistant/pull/32009 +[#32011]: https://github.com/home-assistant/home-assistant/pull/32011 +[#32018]: https://github.com/home-assistant/home-assistant/pull/32018 +[#32023]: https://github.com/home-assistant/home-assistant/pull/32023 +[#32027]: https://github.com/home-assistant/home-assistant/pull/32027 +[#32031]: https://github.com/home-assistant/home-assistant/pull/32031 +[#32033]: https://github.com/home-assistant/home-assistant/pull/32033 +[#32039]: https://github.com/home-assistant/home-assistant/pull/32039 +[#32044]: https://github.com/home-assistant/home-assistant/pull/32044 +[#32046]: https://github.com/home-assistant/home-assistant/pull/32046 +[#32054]: https://github.com/home-assistant/home-assistant/pull/32054 +[#32068]: https://github.com/home-assistant/home-assistant/pull/32068 +[#32071]: https://github.com/home-assistant/home-assistant/pull/32071 +[#32109]: https://github.com/home-assistant/home-assistant/pull/32109 +[#32119]: https://github.com/home-assistant/home-assistant/pull/32119 +[#32136]: https://github.com/home-assistant/home-assistant/pull/32136 +[#32138]: https://github.com/home-assistant/home-assistant/pull/32138 +[#32151]: https://github.com/home-assistant/home-assistant/pull/32151 +[#32163]: https://github.com/home-assistant/home-assistant/pull/32163 +[#32186]: https://github.com/home-assistant/home-assistant/pull/32186 +[#32189]: https://github.com/home-assistant/home-assistant/pull/32189 +[#32190]: https://github.com/home-assistant/home-assistant/pull/32190 +[#32191]: https://github.com/home-assistant/home-assistant/pull/32191 +[#32199]: https://github.com/home-assistant/home-assistant/pull/32199 +[#32205]: https://github.com/home-assistant/home-assistant/pull/32205 +[@Adminiuga]: https://github.com/Adminiuga +[@BKPepe]: https://github.com/BKPepe +[@CHAZICLE]: https://github.com/CHAZICLE +[@Cereal2nd]: https://github.com/Cereal2nd +[@Cloudenius]: https://github.com/Cloudenius +[@CoMPaTech]: https://github.com/CoMPaTech +[@Danielhiversen]: https://github.com/Danielhiversen +[@Kane610]: https://github.com/Kane610 +[@KasperLK]: https://github.com/KasperLK +[@Konsts]: https://github.com/Konsts +[@ManneW]: https://github.com/ManneW +[@Marco98]: https://github.com/Marco98 +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@MrDadoo]: https://github.com/MrDadoo +[@P-Verbrugge]: https://github.com/P-Verbrugge +[@PhilRW]: https://github.com/PhilRW +[@Poeschl]: https://github.com/Poeschl +[@Quentame]: https://github.com/Quentame +[@SoftXperience]: https://github.com/SoftXperience +[@Squixx]: https://github.com/Squixx +[@SukramJ]: https://github.com/SukramJ +[@TechnicallyJoe]: https://github.com/TechnicallyJoe +[@YarmoM]: https://github.com/YarmoM +[@abmantis]: https://github.com/abmantis +[@alandtse]: https://github.com/alandtse +[@andersonshatch]: https://github.com/andersonshatch +[@arsaboo]: https://github.com/arsaboo +[@austinmroczek]: https://github.com/austinmroczek +[@azogue]: https://github.com/azogue +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@basnijholt]: https://github.com/basnijholt +[@bbernhard]: https://github.com/bbernhard +[@bdraco]: https://github.com/bdraco +[@benleb]: https://github.com/benleb +[@bieniu]: https://github.com/bieniu +[@bjornorri]: https://github.com/bjornorri +[@bmfurtado]: https://github.com/bmfurtado +[@bramkragten]: https://github.com/bramkragten +[@caronc]: https://github.com/caronc +[@cclauss]: https://github.com/cclauss +[@cgtobi]: https://github.com/cgtobi +[@crallian]: https://github.com/crallian +[@ctalkington]: https://github.com/ctalkington +[@danielperna84]: https://github.com/danielperna84 +[@dcnielsen90]: https://github.com/dcnielsen90 +[@dgomes]: https://github.com/dgomes +[@dingusdk]: https://github.com/dingusdk +[@dmulcahey]: https://github.com/dmulcahey +[@dshokouhi]: https://github.com/dshokouhi +[@dupondje]: https://github.com/dupondje +[@eavanvalkenburg]: https://github.com/eavanvalkenburg +[@elmurato]: https://github.com/elmurato +[@emontnemery]: https://github.com/emontnemery +[@endor-force]: https://github.com/endor-force +[@engrbm87]: https://github.com/engrbm87 +[@escoand]: https://github.com/escoand +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@fierland]: https://github.com/fierland +[@frenck]: https://github.com/frenck +[@gerard33]: https://github.com/gerard33 +[@gorynychzmey]: https://github.com/gorynychzmey +[@guimaraes13]: https://github.com/guimaraes13 +[@gurbyz]: https://github.com/gurbyz +[@inverse]: https://github.com/inverse +[@jardiamj]: https://github.com/jardiamj +[@jcalbert]: https://github.com/jcalbert +[@jjlawren]: https://github.com/jjlawren +[@jkeljo]: https://github.com/jkeljo +[@kit-klein]: https://github.com/kit-klein +[@ktnrg45]: https://github.com/ktnrg45 +[@laszlojakab]: https://github.com/laszlojakab +[@marthoc]: https://github.com/marthoc +[@maxcanna]: https://github.com/maxcanna +[@melyux]: https://github.com/melyux +[@mezz64]: https://github.com/mezz64 +[@michaelarnauts]: https://github.com/michaelarnauts +[@moshekaplan]: https://github.com/moshekaplan +[@mueslo]: https://github.com/mueslo +[@ochlocracy]: https://github.com/ochlocracy +[@oischinger]: https://github.com/oischinger +[@pinkywafer]: https://github.com/pinkywafer +[@pnbruckner]: https://github.com/pnbruckner +[@raman325]: https://github.com/raman325 +[@rickvdl]: https://github.com/rickvdl +[@robbiet480]: https://github.com/robbiet480 +[@robmarkcole]: https://github.com/robmarkcole +[@sanyatuning]: https://github.com/sanyatuning +[@scarface-4711]: https://github.com/scarface-4711 +[@scop]: https://github.com/scop +[@shred86]: https://github.com/shred86 +[@springstan]: https://github.com/springstan +[@teharris1]: https://github.com/teharris1 +[@tetienne]: https://github.com/tetienne +[@tsvi]: https://github.com/tsvi +[@vanbalken]: https://github.com/vanbalken +[@vilppuvuorinen]: https://github.com/vilppuvuorinen +[@vlebourl]: https://github.com/vlebourl +[@vzahradnik]: https://github.com/vzahradnik +[@ziv1234]: https://github.com/ziv1234 +[abode docs]: /integrations/abode/ +[alarmdecoder docs]: /integrations/alarmdecoder/ +[alexa docs]: /integrations/alexa/ +[alpha_vantage docs]: /integrations/alpha_vantage/ +[ambient_station docs]: /integrations/ambient_station/ +[amcrest docs]: /integrations/amcrest/ +[apcupsd docs]: /integrations/apcupsd/ +[apple_tv docs]: /integrations/apple_tv/ +[apprise docs]: /integrations/apprise/ +[arlo docs]: /integrations/arlo/ +[asuswrt docs]: /integrations/asuswrt/ +[august docs]: /integrations/august/ +[axis docs]: /integrations/axis/ +[bitcoin docs]: /integrations/bitcoin/ +[blockchain docs]: /integrations/blockchain/ +[bme680 docs]: /integrations/bme680/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[braviatv docs]: /integrations/braviatv/ +[broadlink docs]: /integrations/broadlink/ +[brother docs]: /integrations/brother/ +[caldav docs]: /integrations/caldav/ +[config docs]: /integrations/config/ +[coolmaster docs]: /integrations/coolmaster/ +[danfoss_air docs]: /integrations/danfoss_air/ +[deconz docs]: /integrations/deconz/ +[demo docs]: /integrations/demo/ +[denonavr docs]: /integrations/denonavr/ +[device_automation docs]: /integrations/device_automation/ +[device_tracker docs]: /integrations/device_tracker/ +[directv docs]: /integrations/directv/ +[discord docs]: /integrations/discord/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[doods docs]: /integrations/doods/ +[dsmr docs]: /integrations/dsmr/ +[dynalite docs]: /integrations/dynalite/ +[ecobee docs]: /integrations/ecobee/ +[edimax docs]: /integrations/edimax/ +[eight_sleep docs]: /integrations/eight_sleep/ +[elgato docs]: /integrations/elgato/ +[esphome docs]: /integrations/esphome/ +[essent docs]: /integrations/essent/ +[evohome docs]: /integrations/evohome/ +[freebox docs]: /integrations/freebox/ +[fritz docs]: /integrations/fritz/ +[frontend docs]: /integrations/frontend/ +[frontier_silicon docs]: /integrations/frontier_silicon/ +[garmin_connect docs]: /integrations/garmin_connect/ +[gdacs docs]: /integrations/gdacs/ +[geonetnz_quakes docs]: /integrations/geonetnz_quakes/ +[glances docs]: /integrations/glances/ +[greeneye_monitor docs]: /integrations/greeneye_monitor/ +[group docs]: /integrations/group/ +[homeassistant docs]: /integrations/homeassistant/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[iaqualink docs]: /integrations/iaqualink/ +[icloud docs]: /integrations/icloud/ +[ifttt docs]: /integrations/ifttt/ +[ihc docs]: /integrations/ihc/ +[insteon docs]: /integrations/insteon/ +[ipma docs]: /integrations/ipma/ +[iqvia docs]: /integrations/iqvia/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[kef docs]: /integrations/kef/ +[konnected docs]: /integrations/konnected/ +[lastfm docs]: /integrations/lastfm/ +[lg_netcast docs]: /integrations/lg_netcast/ +[light docs]: /integrations/light/ +[linky docs]: /integrations/linky/ +[maxcube docs]: /integrations/maxcube/ +[mcp23017 docs]: /integrations/mcp23017/ +[media_extractor docs]: /integrations/media_extractor/ +[melcloud docs]: /integrations/melcloud/ +[meteo_france docs]: /integrations/meteo_france/ +[mikrotik docs]: /integrations/mikrotik/ +[minecraft_server docs]: /integrations/minecraft_server/ +[mobile_app docs]: /integrations/mobile_app/ +[modbus docs]: /integrations/modbus/ +[mqtt docs]: /integrations/mqtt/ +[mysensors docs]: /integrations/mysensors/ +[nederlandse_spoorwegen docs]: /integrations/nederlandse_spoorwegen/ +[netatmo docs]: /integrations/netatmo/ +[netgear docs]: /integrations/netgear/ +[netgear_lte docs]: /integrations/netgear_lte/ +[notion docs]: /integrations/notion/ +[nsw_rural_fire_service_feed docs]: /integrations/nsw_rural_fire_service_feed/ +[octoprint docs]: /integrations/octoprint/ +[onewire docs]: /integrations/onewire/ +[opencv docs]: /integrations/opencv/ +[ping docs]: /integrations/ping/ +[pioneer docs]: /integrations/pioneer/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[proxmoxve docs]: /integrations/proxmoxve/ +[proxy docs]: /integrations/proxy/ +[ps4 docs]: /integrations/ps4/ +[pushover docs]: /integrations/pushover/ +[qrcode docs]: /integrations/qrcode/ +[rainforest_eagle docs]: /integrations/rainforest_eagle/ +[recorder docs]: /integrations/recorder/ +[reddit docs]: /integrations/reddit/ +[remote docs]: /integrations/remote/ +[rest docs]: /integrations/rest/ +[ring docs]: /integrations/ring/ +[roku docs]: /integrations/roku/ +[rpi_gpio_pwm docs]: /integrations/rpi_gpio_pwm/ +[sabnzbd docs]: /integrations/sabnzbd/ +[salt docs]: /integrations/salt/ +[samsungtv docs]: /integrations/samsungtv/ +[scrape docs]: /integrations/scrape/ +[script docs]: /integrations/script/ +[sendgrid docs]: /integrations/sendgrid/ +[seven_segments docs]: /integrations/seven_segments/ +[signal_messenger docs]: /integrations/signal_messenger/ +[simplisafe docs]: /integrations/simplisafe/ +[smartthings docs]: /integrations/smartthings/ +[socialblade docs]: /integrations/socialblade/ +[sonos docs]: /integrations/sonos/ +[soundtouch docs]: /integrations/soundtouch/ +[spc docs]: /integrations/spc/ +[starline docs]: /integrations/starline/ +[statistics docs]: /integrations/statistics/ +[surepetcare docs]: /integrations/surepetcare/ +[system_log docs]: /integrations/system_log/ +[tado docs]: /integrations/tado/ +[tahoma docs]: /integrations/tahoma/ +[telegram_bot docs]: /integrations/telegram_bot/ +[template docs]: /integrations/template/ +[tensorflow docs]: /integrations/tensorflow/ +[tesla docs]: /integrations/tesla/ +[tibber docs]: /integrations/tibber/ +[totalconnect docs]: /integrations/totalconnect/ +[trafikverket_train docs]: /integrations/trafikverket_train/ +[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/ +[trend docs]: /integrations/trend/ +[twitch docs]: /integrations/twitch/ +[unifi docs]: /integrations/unifi/ +[updater docs]: /integrations/updater/ +[upnp docs]: /integrations/upnp/ +[vallox docs]: /integrations/vallox/ +[velbus docs]: /integrations/velbus/ +[verisure docs]: /integrations/verisure/ +[vicare docs]: /integrations/vicare/ +[vilfo docs]: /integrations/vilfo/ +[vivotek docs]: /integrations/vivotek/ +[vizio docs]: /integrations/vizio/ +[websocket_api docs]: /integrations/websocket_api/ +[wled docs]: /integrations/wled/ +[workday docs]: /integrations/workday/ +[wwlln docs]: /integrations/wwlln/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yeelight docs]: /integrations/yeelight/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ diff --git a/source/_posts/2020-02-28-community-highlights.markdown b/source/_posts/2020-02-28-community-highlights.markdown new file mode 100644 index 000000000000..2b5118626283 --- /dev/null +++ b/source/_posts/2020-02-28-community-highlights.markdown @@ -0,0 +1,100 @@ +--- +title: "Community Highlights: 4th edition" +description: "3D All the things!" +date: 2020-02-28 00:00:00 +date_formatted: "February 28, 2020" +author: Franck Nijhof +author_twitter: frenck +categories: Community +og_image: /images/blog/2020-02-28-community-highlights/social.png +--- + +For the 4th edition, I thought it fitted to devote the community highlights to 3D! + +_That is actually a lie, the [3rd edition](/blog/2020/02/19/community-highlights/) +would have been much more fitting, but was hijacked by Paulus ;) +At least it's my 3rd community highlight writeup, so that counts, right?_ + +Ready for some highly inspiring and mind-blowing 3D creations? + +## 3D home navigation and control, using Unity + +Are you sure you ready? Because Harrie de Groot created a fully navigatable +3D model of his home using Unity, accessible from within Home Assistant. + +You really **need** to watch the video below now... + +
    + +
    + +Well done, Harrie! That looks slick! + +More details on his creation can be found on the +[Home Assistant Community Forum](https://community.home-assistant.io/t/3d-home-navigation-control-unity-home-assistant/174972). + +## 3D printed interactive floorplan + +If you have been around a bit, you might have come across a screenshot of +someone with an interactive floorplan in Home Assistant. [Ryan Connolly](https://twitter.com/rynam0) +took that idea straight into the real world by 3D printing his floorplan, +wired it, and hooked it up Home Assistant. + +Talking about taking things into another dimension... + + + +### Getting started with your own 3D floorplan + +Ok, so the above two, rather impressive, listings might be a bit out of reach +for the most of us. Still, with some help, you could still achieve some pretty +nice looking 3D floorplans. [Aaron Godfrey](https://github.com/boralyl) wrote a +couple of excellent blog posts on this. + +In his [first blog post](https://aarongodfrey.dev/home%20automation/floorplan-in-home-assistant/), +Aaron shows you what his floorplan looks like + +
    + +
    + +He followed up with two blog posting on how to achieve this: + +- [Tips for creating a Floorplan in Sweet Home 3D](https://aarongodfrey.dev/home%20automation/tips_for_creating_a_3d_floorplan_using_sweethome3d/) +- [Creating an Interactive 3D Floorplan in Home Assistant](https://aarongodfrey.dev/home%20automation/creating-a-3d-floorplan-in-home-assistant/) + +### Bonus tip: HomeByMe + +I've personally got recommended a tool for creating a 3D floorplan with a tool +that is generally lesser-known, but actually pretty awesome! [HomeByMe](https://home.by.me/en/) + +Screenshot of HomeByMe. + +This is a result of a 3D floorplan created with [HomeByMe](https://home.by.me/en/). + +It works fully in the browser and I enjoyed the experience using that. +So credits where credits due: Thanks for recommending me this sweet little +gem [Andrea Donno](https://www.twitter.com/andreadonno)! + +## Got a tip for the next edition? + +Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant? + +[Click here to send us your Community Highlight suggestion](/suggest-community-highlight). + +Also, don't forget to share your creations with us via Social Media: + +- Twitter it! Be sure to mention [@home_assistant][twitter] +- Share it on our [Facebook group][facebook-group] +- Post it to our [subreddit][reddit] +- Tag [@homeasssistant][instagram] on Instagram +- Or via chat, drop us a line in the [#lounge at Discord][chat] + +See you next edition! + +[chat]: https://www.home-assistant.io/join-chat +[facebook-group]: https://www.facebook.com/groups/HomeAssistant/ +[instagram]: https://www.instagram.com/homeassistant/ +[reddit]: https://www.reddit.com/r/homeassistant +[twitter]: https://www.twitter.com/home_assistant diff --git a/source/_posts/2020-03-15-community-highlights.markdown b/source/_posts/2020-03-15-community-highlights.markdown new file mode 100644 index 000000000000..cf196fea07db --- /dev/null +++ b/source/_posts/2020-03-15-community-highlights.markdown @@ -0,0 +1,102 @@ +--- +title: "Community Highlights: 5th edition" +description: "DIY Smart key holder, Marine aquariums and Live energy consumption" +date: 2020-03-15 00:00:00 +date_formatted: "March 15, 2020" +author: Franck Nijhof +author_twitter: frenck +categories: Community +og_image: /images/blog/2020-03-15-community-highlights/social.png +--- + +Time for the fifth enactment of the Community Highlights! + +We've received quite a few recommendations, but also closely monitored +social media and found some gems to share again! + +## Controlling 7! marine aquariums with Home Assistant + +Let's start with showcasing a highly unusual, but impressive, Home Assistant setup. +It is shared on our [Facebook group][facebook-group] by Kevin McPeake. Kevin's +setup has a total of 5 Home Assistant instances, controlling 7x marine aquariums! + +

    + + Kevin's impressive setup for his 7 aquariums + + Kevin's impressive setup for his 7 aquariums. +

    + +Those are some big views Kevin! I bet you will be happy with the new Lovelace +features that are coming in Home Assistant Core 0.107. It will help +you to trim down that a bit, into multiple Lovelace Dashboards (now in +[beta, sneak peak?](https://rc.home-assistant.io/latest-release-notes/)). + +[Click here to check out Kevin's post on our Facebook group.](https://www.facebook.com/groups/HomeAssistant/permalink/2597624533842234/) + +_Thanks, Walt_H for [sending in](/suggest-community-highlight) this item! 👍_ + +## Live energy consumption screen + +Energy saving is good for the environment (and your wallet). However, to do that, +you have to become aware of your actual usage. `/u/Lau-ie` shared his energy +consumption screen on our [subreddit][reddit]. + +This gives insight into the current usage, but also in the usage & costs of the +consumed energy of the last 24 hours. + +
    New energyconsumption screen, still tweaking it. from r/homeassistant +
    + + +Do you actively monitor your energy usage? What does your dashboard look like? + +## A DIY smart magnetic key holder + +And here is one from [James Callaghan](https://twitter.com/jamescallaghan), who +created really smart and easy to replicate magnet key holder, using a Xiaomi +Aqara Door/Window sensor. Yes, this key holder works on Zigbee. + + + +## Consumer Reports: Open call for non-resident technologist fellows + +Consumer Reports is an American non-profit organization that does independent, +(product) testing and research for consumers to provide truth, transparency and +fairness. Their results are published in a monthly magazine and on their website. + +The Consumer Reports Digital Lab offers paid, non-resident fellowships to study +the effects of connected (IoT) products and services. They welcome anyone +interested in public technology research to apply for the fellowship. + +If you are interested in this, more information can be found here: + +- [Consumer Reports Digital Lab - Fellows](https://digital-lab.consumerreports.org/fellows/) +- [Blog: An open call for non-resident technologist fellows](https://medium.com/cr-digital-lab/coming-soon-an-open-call-for-non-resident-technologist-fellows-95de2f3399fe) + +## Got a tip for the next edition? + +Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant? + +[Click here to send us your Community Highlight suggestion](/suggest-community-highlight). + +Also, don't forget to share your creations with us via Social Media: + +- Twitter it! Be sure to mention [@home_assistant][twitter] +- Share it on our [Facebook group][facebook-group] +- Post it to our [subreddit][reddit] +- Tag [@homeasssistant][instagram] on Instagram +- Or via chat, drop us a line in the [#lounge at Discord][chat] + +See you next edition! + +[chat]: https://www.home-assistant.io/join-chat +[facebook-group]: https://www.facebook.com/groups/HomeAssistant/ +[instagram]: https://www.instagram.com/homeassistant/ +[reddit]: https://www.reddit.com/r/homeassistant +[twitter]: https://www.twitter.com/home_assistant diff --git a/source/_posts/2020-03-18-release-107.markdown b/source/_posts/2020-03-18-release-107.markdown new file mode 100644 index 000000000000..4ec1c6731e8b --- /dev/null +++ b/source/_posts/2020-03-18-release-107.markdown @@ -0,0 +1,1416 @@ +--- +layout: post +title: "0.107: Multiple Lovelace Dashboards, adds helpers, new media player card" +description: "7 new integrations! Tons of beautiful improvements and amazing new features for the frontend." +date: 2020-03-18 00:00:00 +date_formatted: "March 18, 2020" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: Release-Notes +og_image: /images/blog/2020-03-0.107/social.png +--- + + + +[George F. Will](https://en.wikipedia.org/wiki/George_Will) once said: +_"The future has a way of arriving unannounced."_ + +Well, George, we don't agree: +Announcing the release of Home Assistant Core 0.107! + +This release brings a crazy amount of awesome new features and beautiful +improvements to the frontend. + +## Bye old State UI + +As announced with [0.105](/blog/2020/02/05/release-105), the old States UI is +now removed from Home Assistant. If you are using Home Assistant for a year or +less, you might not have an idea what it is, since the "new" Lovelace UI has +been the default. It is the UI we used before Lovelace. + +If you are up for a flashback, maybe it is worth reading +[the release notes for Home Assistant 0.7](/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/) +were the revamped (and now removed) States UI was originally announced. +Now exactly 100 releases later, it is time to say goodbye to the states UI that +has been with us for a long, long time... + +As we announced the deprecation of the old States UI in +[0.105](/blog/2020/02/05/release-105), not everybody seemed to be that happy +about it. So we surveyed to see what one would miss from States UI and +learned that it is mostly used as an overview of all entities (besides having +a nice layout that can be made in Lovelace). + +In this release, we bring you a Lovelace solution for that and added a bit more... + +## Hello multiple Lovelace dashboards + +You are now able to create multiple Lovelace configurations, called: +Lovelace Dashboards! + +You can have a dashboard with your main layout, one that is auto-generated +(like the old State UI), one for experimenting, one for admins, +one for your wall-mounted tablet, etc. + +And, yes, you can even mix and match multiple YAML mode managed +Lovelace Dashboard, UI managed Lovelace Dashboards and auto-generated +Lovelace Dashboards at the same time. + +

    +Screenshot of the new Lovelace configuration panel +Screenshot of the new Lovelace configuration panel. +

    + +Each dashboard can be added to the menu sidebar as well, with a configurable +title and icon. Furthermore, it is possible to limit access to a dashboard to +admin users only. + +An unlimited amount of dashboards can be created right from the UI in the new +Lovelace configuration panel, and YAML dashboards can be set up in +`configuration.yaml`, see [the documentation](/lovelace/yaml-mode/). + +This awesome new feature comes with a deprecation if you use Lovelace in +manual YAML mode: You need to move the `resource` section from +your `ui-lovelace.yaml` to the `lovelace:` section in `configuration.yaml`. +It is not a breaking change yet; we still load them from the previous location +if we didn't find anything in the `lovelace:` section, however, this fallback +is being removed in a future version. + +If you manage your Lovelace via the frontend, we automatically migrate your +resources. Please note that resources are not in the raw Lovelace +configuration editor anymore, but in the Lovelace configuration panel. + +## New media player card + +[@zsarnett](https://github.com/zsarnett) is back on the frontend team and is +not planning on letting that happen unnoticed. He did a ton of work on the +frontend and created a beautiful new media control card for Lovelace. + +It is inspired by the media control widget in Android and changes color based +on the artwork of the played media. We think it looks absolutely gorgeous! + +

    +Screenshot of the new Media Control Card +Screenshot of the new Media Control Card. +

    + +## Helpers Configuration Panel + +When you create advanced automations, you often need a helper. Like a toggle, +to save a state, or another input field. Until now, you always had to define +them in YAML and are known as the `input_*` fields/integrations. + +We now have a UI to add and manage these Helper elements; this allows non-expert +users, or anybody that prefers the frontend to manage their system, +to also access this functionality. + +

    +Screenshot of a helper configuration dialog +Screenshot of a helper configuration dialog. +

    + +Thanks [@Adminiuga], for implementing the backend features that made this +frontend change possible! Not only that, if you prefer YAML, these changes +made by [@Adminiuga] also made it possible to reload the `input_*` YAML +configuration without restarting Home Assistant. + +## Improvements to Lovelace editing experience + +[@zsarnett](https://github.com/zsarnett) changed the looks of our card picker, instead of a simple button to +pick a card, you now get a live preview with your own entities. +[@thomasloven](https://github.com/thomasloven) added a UI editor for the +horizontal and vertical stack cards and the conditional card. + +

    +Screen recording of the new card picker and stack editor +Screen recording of the new card picker and stack editor. +

    + +## Other noteworthy changes + +- [@Misiu](https://github.com/Misiu) added a UI to set the visibility per user for views. +- Data tables, for example, the Entities configuration panel, are now lightning fast! Even on mobile 🚀. +- The logbook had some speed improvements, thanks [@KapJI]! +- [@bdraco] just went all-in on the August integration, making it a top-notch integration! Awesome job there! +- Initial support for HomeKit enabled televisions and support for occupancy sensors was added by [@Jc2k]. +- [@tulindo] added support for newer SamsungTV models. +- Alexa now supports starting and cancelling timers, thanks to [@Tho85]. + +## New Integrations + +- Add platform Ezviz ([@BaQs] - [#30378]) ([ezviz docs]) (new-integration) +- Add Avri waste collection sensor ([@timvancann] - [#31134]) ([avri docs]) (new-integration) +- Add Tankerkoenig integration ([@guillempages] - [#28661]) ([tankerkoenig docs]) (new-integration) +- Add QVR Pro integration ([@oblogic7] - [#31173]) ([qvr_pro docs]) (new-integration) +- Add edl21 component for SML-based smart meters ([@mtdcr] - [#27962]) ([edl21 docs]) (new-integration) +- Add IamMeter integration ([@lewei50] - [#30465]) ([iammeter docs]) (new-integration) +- Add griddy integration ([@bdraco] - [#32591]) ([griddy docs]) (new-integration) + +## New Platforms + +- Add Config flow to august ([@bdraco] - [#32133]) ([august docs]) (new-platform) +- Add Dynalite switch platform ([@ziv1234] - [#32389]) ([dynalite docs]) (new-platform) +- Add support for MELCloud Air-to-Water devices ([@vilppuvuorinen] - [#32078]) ([melcloud docs]) (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). + +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 + +- **Xfinity Gateway** *(Deprecated)* - The Xfinity Gateway integration relies on web scraping and is deprecated, to be removed in Home Assistant Core 0.109. (ADR-0004) - ([@frenck] - [#32017]) + +- **Groups** - Groups are NOT being removed, but the configuration options, services, and service options related to the (previously deprecated and now removed) States UI are now removed in this release. + This includes: + - The `view` and `control` configuration options for a group. + - The `group.set_visibility` service call + - The `control`, `visible`, `view` options on the `group.set` service call + + Please ensure your configuration and automations do not use these anymore. - ([@frenck] - [#32021]) ([group docs]) + +- **Input Number** - Adds an entity ID to input_number warning. Passing an out of range value to `input_number.set_value` will now raise a validation error. Incrementing/decrementing an `input_number` will no longer cause warnings. - ([@balloob] - [#32012]) ([input_number docs]) + +- **History Graph** - The `history_graph` integration has been deprecated in Home Assistant 0.105 and is now removed. This integration was used for the old states UI, which is no longer available. A Lovelace an equivalent is available: [The Lovelace History Graph](/lovelace/history-graph/). ([@frenck] - [#32028]) + +- **Weblink** - The `weblink` integration is was deprecated in 0.105.0 and now removed. This integration only works with the old states UI, which is no longer available. ([@frenck] - [#32024]) + + With Lovelace, the same can be achieved using: + + - [The Lovelace Markdown card](/lovelace/markdown/) + - [The Lovelace Entities card](/lovelace/entities/#weblink) + +- **Environment Canada** - This integration was previously using web scraping for weather alert details. The details attribute has been removed to make it compliant. (ADR-0004) - ([@michaeldavie] - [#32077]) ([environment_canada docs]) + +- **Units of Time** - Time units have been standardized throughout all integrations. - ([@springstan] - [#32065]) + + If you were using a non standard unit in an automation or sensor please change it to the following: + + - μs for microseconds + - ms for milliseconds + - s for seconds + - min for minutes + - h for hours + - d for days + - w for weeks + - m for months + - y for years + +- **HomematicIP Cloud** - Migrates HomematicIP Cloud services to admin services. - ([@SukramJ] - [#32107]) ([homematicip_cloud docs]) + + The user needs to be in the administrator role to execute these HomematicIP Cloud services: + + - `homematicip_cloud.dump_hap_config` + - `homematicip_cloud.reset_energy_counter` + +- **HomeKit Controller** - Support for HomeKit controller's legacy pairing data folder `.homekit` has been deprecated and in Home Assistant Core release 0.109.0 we plan to remove this code. Pairings have not been saved this way since Home Assistant 0.94, so if you are running Home Assistant 0.94 or later this does not affect you - your pairings were already migrated to configuration entries. If you are running an older release and do not upgrade soon you will not be able to automatically migrate your existing pairings at upgrade time and will have to manually re-pair them. - ([@Jc2k] - [#32158]) ([homekit_controller docs]) + +- **Automation** - The `hide_entity` configuration option on an automation was deprecated in Home Assistant 0.105 and is removed in this release. It was used for the old states UI, which is no longer available, making this option obsolete. Please ensure your configuration is not using this option. - ([@frenck] - [#32038]) ([automation docs]) + +- **IQVIA** - When configuring IQVIA via `configuration.yaml`, the `monitored_conditions` key has been deprecated and will be removed in 0.114.0. All sensors are now created by default. (ADR-0003) - ([@bachya] - [#32223]) ([iqvia docs]) + + Example YAML configuration: + + ```yaml + iqvia: + zip_code: !secret iqvia_zip_code + ``` + +- **GitHub** - The entity state has been changed to return the 'short SHA' commit hash, so automations based on `latest_commit_sha` should be adapted to that. - ([@Mariusthvdb] - [#31581]) ([github docs]) + +- **AirVisual** - AirVisual is now available to be added through the integrations UI! If you configure it in `configuration.yaml` you will need to update to the new configuration. Additionally, in order to protect the AirVisual cloud API, `scan_interval` in no longer configurable for this integration. - ([@bachya] - [#32072]) ([airvisual docs]) + + Example YAML configuration: + + ```yaml + airvisual: + api_key: !secret airvisual_api_key + ``` + +- **IFTTT** - IFTTT now checks that received webhook data is a dictionary (example `{ "value": 1 }`) to prevent Home Assistant internals from breaking. - ([@balloob] - [#32317]) ([ifttt docs]) + +- **AlarmDecoder** - AlarmDecoder integration now uses Honeywell's *Instant* mode instead of *Night-Stay* for `alarm_arm_night`. *Instant* mode is generally thought to be more secure for night-time use because it disables the entry delay since visitors aren't expected. - ([@ajschmidt8] - [#32292]) ([alarmdecoder docs]) + +- **Tibber** - Upgraded Tibber library to 0.13.0 and some attributes have names which have changed. - ([@Danielhiversen] - [#32369]) ([tibber docs]) + + - `currentPhase1` -> `currentL1` + - `currentPhase2` -> `currentL2` + - `currentPhase3` -> `currentL3` + +- **REST** - Add `application/xml` as an XML to JSON auto converted MIME types for rest sensors - ([@bdraco] - [#32289]) ([rest docs]) + +- **Certificate Expiry** - The `name` configuration option has been deprecated and is no longer used by the integration. An improved default entity & display naming scheme is provided. Name and entity_id overrides should be handled via the frontend. Configurations using name will marked broken with the 0.109 release. - ([@jjlawren] - [#32066]) ([cert_expiry docs]) + + Example YAML configuration: + + ```yaml + sensor: + - platform: cert_expiry + host: google.com + ``` + +- **Plex Media Player** - The 'show all controls' option for Plex is deprecated and will be removed in the Home Assistant Core 0.110.0 release. Also, discovery and legacy config file loading (plex.conf) has been removed. - ([@jjlawren] - [#32391] [#32510]) ([discovery docs]) ([plex docs]) + + Example YAML configuration: + + ```yaml + plex: + media_player: + show_all_controls: True <-- Deprecated + ``` + +- **Abode** - Abode retired its legacy automations and quick actions on 28 Feb. This change removes support for legacy automations and quick actions while adding support for CUE automations which will show up in Home Assistant as switches (same as previous implementation). Abode's replacement for quick actions is manually triggered CUE automations which can be called through Home Assistant service `abode.trigger_automation` (previously labeled `abode.trigger_quick_action`). - ([@shred86] - [#32296]) ([abode docs]) + +- **deCONZ** - The events on the Aqara Magic Cube have changed, so they will match with the device triggers discriptions. If you made automations for the Magic Cube on the device page, you will want to change your automation. If you configured your automations based on events from the developers tools, there is nothing breaking. This also fixes the double tap function on side 2, which didnt work if you configured it in the device page - ([@Dorzel107] - [#32108]) ([deconz docs]) + +- **Emoncms** - The way the `unit_of_measurement` is set has changed to make use of the ability for this to be set in the source feed in Emocms. - ([@borpin] - [#32042]) ([emoncms docs]) + + The unit will now be assigned as follows: + + 1. Take the unit from the API if it is available + 2. Otherwise take the unit from config, either specified or the default unit (W) + +- **Vizio SmartCast TV** - Adds app support. For TVs that support apps, 'SMARTCAST' and 'CAST' sources have been replaced with `SmartCast Home`. Any automations that rely on those sources will need to be updated. - ([@raman325] - [#32432]) + +- **Onvif** - Added more onvif PTZ move modes. The onvif camera service `camera.onvif_ptz` has been moved from the camera domain to the onvif domain. `onvif_ptz` service was also renamed to `ptz`, so service calls need to be updated to `onvif.ptz`. - ([@olijouve] - [#30152]) ([onvif docs]) + + Example YAML configuration: + + ```yaml + - type: entity-button + entity: camera.foscam + icon: mdi:arrow-left-bold-outline + show_name: false + tap_action: + action: call-service + service: onvif.ptz + service_data: + entity_id: camera.foscam + pan: LEFT + tilt: + zoom: + move_mode: ContinuousMove + continuous_duration: 0.8 + distance: 1 + ``` + +- **Facebook Messenger** - On October 29, 2019 Facebook announced a breaking change that all broadcast API will stop working on March 4th, 2020, so BROADCAST as a target option is now removed. - ([@chmielowiec] - [#32517]) ([facebook docs]) + +- **Samsung Smart TV** - Adds support for newer SamsungTV models. Specifying the port in `configuration.yaml` is no longer needed and thus the port config option has been deprecated. - ([@tulindo] - [#31537]) ([samsungtv docs]) + +- **Netatmo** - The unreliable binary sensors are removed since they don't provide much value due to their polling nature. To trigger automations it is recommended to use the event netatmo_event. - ([@cgtobi] - [#32673]) ([netatmo docs]) + + Example trigger for automations: + + ```yaml + trigger: + - event_data: + type: movement + event_type: netatmo_event + platform: event + ``` + +- **DirecTV** - DirecTV is now available to be added from the integrations UI. The concept of device has been removed and now the DirecTV receiver, and all client devices, are added. There is no longer a `port` option as the default port should work just fine. The name can be set via entity UI rather than `name` option. - ([@ctalkington] - [#32162]) ([directv docs]) ([directv docs]) + +- **iCloud** - iCloud family devices are no longer added automatically. Use the `with_family` configuration option or re-add the integration via the frontend, in case you do want to make use of the iCloud family devices. - ([@Quentame] - [#32644]) ([icloud docs]) + +- **Device Tracker** - The `hide_if_away` configuration parameter has been removed for all device trackers. This option was used to hide devices trackers from the UI if the device was not at home. This applied to the old States UI, which now has been removed. - ([@frenck] - [#32705]) ([device_tracker docs]) (breaking change) (beta fix) + +- **Sonos** - Sonos devices will now report `idle` instead of `paused` if they do not have any current artist metadata available. This can happen when you were playing Spotify on your Sonos and use the Spotify app to play on another device. - ([@balloob] - [#32712]) ([sonos docs]) (breaking change) (beta fix) + +## Beta Fixes + +- Bump pyipma dependency (fixes bug in 0.106) ([@dgomes] - [#32286]) ([ipma docs]) (beta fix) +- If device has volume disabled, the volume will be `None`. However in these ([@bazwilliams] - [#32702]) ([openhome docs]) (beta fix) +- Remove deprecated hide_if_away from device trackers ([@frenck] - [#32705]) ([device_tracker docs]) (breaking change) (beta fix) +- Broaden exception handling for IQVIA ([@bachya] - [#32708]) ([iqvia docs]) (beta fix) +- Sonos idle ([@balloob] - [#32712]) ([sonos docs]) (breaking change) (beta fix) +- Update Vizio `source` property to only return current app if i… ([@raman325] - [#32713]) ([vizio docs]) (beta fix) +- Resolve Home Assistant fails to start when Sense integration i… ([@bdraco] - [#32716]) ([sense docs]) (beta fix) +- Fix legacy Samsung TV ([@escoand] - [#32719]) ([samsungtv docs]) (beta fix) +- Set self._current_app to None when vizio device is off ([@raman325] - [#32725]) ([vizio docs]) (beta fix) +- Updated frontend to 20200312.0 ([@bramkragten] - [#32741]) ([frontend docs]) (beta fix) +- Bump py-august to 0.25.0 ([@bdraco] - [#32769]) ([august docs]) (beta fix) +- Check if panel url used and delay dashboard reg till start ([@bramkragten] - [#32771]) ([frontend docs]) ([lovelace docs]) (beta fix) +- Updated frontend to 20200313.0 ([@bramkragten] - [#32777]) ([frontend docs]) (beta fix) +- Fix homekit_controller beta connectivity issues ([@Jc2k] - [#32810]) ([homekit_controller docs]) (beta fix) +- Add brightness state to emulated hue when devices support only color temp and brightness ([@vaceslav] - [#31834]) ([emulated_hue docs]) (beta fix) +- Optimize directv client initialization ([@ctalkington] - [#32706]) ([directv docs]) ([directv docs]) (beta fix) +- Add log message on timeout and update less often for upnp devices ([@StevenLooman] - [#32740]) ([upnp docs]) (beta fix) +- Fix handling of attribute reports in ZHA sensors and binary sensors ([@dmulcahey] - [#32776]) ([zha docs]) (beta fix) +- Fix onvif error with non ptz cameras ([@timmo001] - [#32783]) ([onvif docs]) (beta fix) +- Fix brightness_pct in light device turn_on action ([@frenck] - [#32787]) ([light docs]) (beta fix) +- Bump eagle_reader API version to v0.2.4 ([@gtdiehl] - [#32789]) ([rainforest_eagle docs]) (beta fix) +- Fix directv location of unknown error string ([@ctalkington] - [#32807]) ([directv docs]) ([directv docs]) (beta fix) +- Remove extra logging from directv init. ([@ctalkington] - [#32809]) ([directv docs]) ([directv docs]) (beta fix) +- Require a hyphen in lovelace dashboard url ([@bramkragten] - [#32816]) ([lovelace docs]) (beta fix) +- Add Netatmo Home Coach as model ([@Danielhiversen] - [#32829]) ([netatmo docs]) (beta fix) +- Add SF transition to HmIP-BSL and remove obsolete code in HMIPC ([@SukramJ] - [#32833]) ([homematicip_cloud docs]) (beta fix) +- Make sure panel_custom won't crash on invalid data ([@balloob] - [#32835]) ([hassio docs]) ([panel_custom docs]) (beta fix) +- Ensure unique_ids for all evohome thermostats ([@zxdavb] - [#32604]) ([evohome docs]) (beta fix) +- Bump teslajsonpy to 0.5.1 ([@alandtse] - [#32827]) ([tesla docs]) (beta fix) +- Ignore the ignored konnected config entries ([@kit-klein] - [#32845]) (beta fix) +- Bump insteonplm to 0.16.8 ([@teharris1] - [#32847]) ([insteon docs]) (beta fix) +- Update pyozw 0.1.9 ([@pvizeli] - [#32864]) ([zwave docs]) (beta fix) +- Updated frontend to 20200316.0 ([@bramkragten] - [#32866]) ([frontend docs]) (beta fix) +- Add lovelace reload service for yaml resources ([@bramkragten] - [#32865]) ([lovelace docs]) (beta fix) +- Bump ZHA quirks to 0.0.37 ([@dmulcahey] - [#32867]) ([zha docs]) (beta fix) +- Remove group as a dependency from entity integrations ([@balloob] - [#32870]) (beta fix) +- Lovelace: storage key based on id instead of url_path ([@bramkragten] - [#32873]) ([lovelace docs]) (beta fix) +- Updated frontend to 20200316.1 ([@bramkragten] - [#32878]) ([frontend docs]) (beta fix) +- Fix iCloud init while pending ([@Quentame] - [#32750]) ([icloud docs]) (beta fix) +- Add default port to samsung tv ([@tulindo] - [#32820]) ([samsungtv docs]) (beta fix) +- Corrected minor misspellings ([@dajo] - [#32857]) ([homekit_controller docs]) ([system_log docs]) ([toon docs]) (beta fix) +- Make zone dependency of device tracker an after dep ([@balloob] - [#32880]) ([device_tracker docs]) (beta fix) +- Bump iCloud to 0.9.5 ([@Quentame] - [#32901]) ([icloud docs]) (beta fix) +- Changed Sensor icons to be more emotionally sensitive ([@brubaked] - [#32904]) ([coronavirus docs]) (beta fix) +- Bump cast to 4.2.0 ([@balloob] - [#32906]) ([cast docs]) (beta fix) +- Fix setting up options due to config data freeze ([@engrbm87] - [#32872]) ([mikrotik docs]) (beta fix) +- Fix input text reload ([@bramkragten] - [#32911]) ([input_text docs]) (beta fix) +- Introduce safe scan_interval for vicare ([@oischinger] - [#32915]) ([vicare docs]) (beta fix) +- Fix hassio panel load ([@balloob] - [#32922]) ([hassio docs]) (beta fix) +- Updated frontend to 20200318.0 ([@bramkragten] - [#32931]) ([frontend docs]) (beta fix) +- Fix flaky tests for HMIPC ([@SukramJ] - [#32806]) (beta fix) + +## Release 0.107.1 - March 18 + +- Updated frontend to 20200318.1 ([@bramkragten] - [#32957]) ([frontend docs]) +- Add device automation as frontend dependency ([@balloob] - [#32962]) ([frontend docs]) +- Fix zone config ([@balloob] - [#32963]) ([zone docs]) + +[#32957]: https://github.com/home-assistant/core/pull/32957 +[#32962]: https://github.com/home-assistant/core/pull/32962 +[#32963]: https://github.com/home-assistant/core/pull/32963 +[@balloob]: https://github.com/balloob +[@bramkragten]: https://github.com/bramkragten +[frontend docs]: /integrations/frontend/ +[zone docs]: /integrations/zone/ + +## Release 0.107.2 - March 20 + +- 0.107.2 - Bump aiohomekit to fix Insignia NS-CH1XGO8 and Lenno… ([@Jc2k] - [#33016]) ([homekit_controller docs]) +- Fix camera.options to camera.stream_options. ([@ochlocracy] - [#32767]) ([camera docs]) +- Fix velbus in the 107 release ([@Cereal2nd] - [#32936]) ([velbus docs]) +- Refactor ZHA setup ([@Adminiuga] - [#32959]) ([zha docs]) +- Fix somfy optimistic mode when missing in conf ([@tetienne] - [#32995]) ([somfy docs]) +- Axis - Fix char in stream url ([@Kane610] - [#33004]) ([axis docs]) +- Fix sighthound dependency issue ([@robmarkcole] - [#33010]) ([sighthound docs]) +- Bump simplisafe-python to 9.0.3 ([@bachya] - [#33013]) ([simplisafe docs]) +- 0.107.2 - Bump aiohomekit to fix Insignia NS-CH1XGO8 and Lenno… ([@Jc2k] - [#33016]) ([homekit_controller docs]) +- Handle zigpy clusters without ep_attribute attribute. ([@Adminiuga] - [#33028]) ([zha docs]) +- Fix zones in packages ([@balloob] - [#33027]) +- Fix RainMachine not properly storing data in the config entry ([@bachya] - [#33002]) ([rainmachine docs]) + +[#32767]: https://github.com/home-assistant/core/pull/32767 +[#32936]: https://github.com/home-assistant/core/pull/32936 +[#32959]: https://github.com/home-assistant/core/pull/32959 +[#32995]: https://github.com/home-assistant/core/pull/32995 +[#33002]: https://github.com/home-assistant/core/pull/33002 +[#33004]: https://github.com/home-assistant/core/pull/33004 +[#33010]: https://github.com/home-assistant/core/pull/33010 +[#33013]: https://github.com/home-assistant/core/pull/33013 +[#33016]: https://github.com/home-assistant/core/pull/33016 +[#33027]: https://github.com/home-assistant/core/pull/33027 +[#33028]: https://github.com/home-assistant/core/pull/33028 +[@Adminiuga]: https://github.com/Adminiuga +[@Cereal2nd]: https://github.com/Cereal2nd +[@Jc2k]: https://github.com/Jc2k +[@Kane610]: https://github.com/Kane610 +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@ochlocracy]: https://github.com/ochlocracy +[@robmarkcole]: https://github.com/robmarkcole +[@tetienne]: https://github.com/tetienne +[axis docs]: /integrations/axis/ +[camera docs]: /integrations/camera/ +[homekit_controller docs]: /integrations/homekit_controller/ +[rainmachine docs]: /integrations/rainmachine/ +[sighthound docs]: /integrations/sighthound/ +[simplisafe docs]: /integrations/simplisafe/ +[somfy docs]: /integrations/somfy/ +[velbus docs]: /integrations/velbus/ +[zha docs]: /integrations/zha/ + +## Release 0.107.3 - March 20 + +- Fix netatmo webhook registration issue ([@cgtobi] - [#32994]) ([netatmo docs]) +- Fix discovery issue with netatmo climate devices ([@cgtobi] - [#33040]) ([netatmo docs]) +- Fix packages for schemas without a default ([@frenck] - [#33045]) ([person docs]) + +[#32994]: https://github.com/home-assistant/core/pull/32994 +[#33040]: https://github.com/home-assistant/core/pull/33040 +[#33045]: https://github.com/home-assistant/core/pull/33045 +[@cgtobi]: https://github.com/cgtobi +[@frenck]: https://github.com/frenck +[netatmo docs]: /integrations/netatmo/ +[person docs]: /integrations/person/ + +## Release 0.107.4 - March 20 + +- Add negative tests for identify schema for packages ([@balloob] - [#33050]) +- Bump simplisafe-python to 9.0.4 ([@bachya] - [#33059]) ([simplisafe docs]) +- Bump aioasuswrt to 1.2.3 and fix asuswrt sensor ([@Knapoc] - [#33064]) ([asuswrt docs]) +- Fix package default extraction ([@balloob] - [#33071]) + +[#33050]: https://github.com/home-assistant/core/pull/33050 +[#33059]: https://github.com/home-assistant/core/pull/33059 +[#33064]: https://github.com/home-assistant/core/pull/33064 +[#33071]: https://github.com/home-assistant/core/pull/33071 +[@Knapoc]: https://github.com/Knapoc +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[asuswrt docs]: /integrations/asuswrt/ +[simplisafe docs]: /integrations/simplisafe/ + +## Release 0.107.5 - March 21 + +- Upgrade huawei-lte-api to 1.4.11 ([@scop] - [#32791]) ([huawei_lte docs]) +- Validate UUID for tankerkoenig ([@guillempages] - [#32805]) ([tankerkoenig docs]) +- Try all Samsung TV websocket ports ([@escoand] - [#33001]) ([samsungtv docs]) +- Split ZHA device loading and entities adding ([@Adminiuga] - [#33075]) ([zha docs]) +- Fix totalconnect AttributeError introduced in 0.107 ([@austinmroczek] - [#33079]) ([totalconnect docs]) +- Fix tankerkoenig with more than 10 stations ([@guillempages] - [#33098]) ([tankerkoenig docs]) +- Fix Extend ONVIF unique ID with profile index ([@frenck] - [#33103]) ([onvif docs]) + +[#32791]: https://github.com/home-assistant/core/pull/32791 +[#32805]: https://github.com/home-assistant/core/pull/32805 +[#33001]: https://github.com/home-assistant/core/pull/33001 +[#33075]: https://github.com/home-assistant/core/pull/33075 +[#33079]: https://github.com/home-assistant/core/pull/33079 +[#33098]: https://github.com/home-assistant/core/pull/33098 +[#33103]: https://github.com/home-assistant/core/pull/33103 +[@Adminiuga]: https://github.com/Adminiuga +[@austinmroczek]: https://github.com/austinmroczek +[@escoand]: https://github.com/escoand +[@frenck]: https://github.com/frenck +[@guillempages]: https://github.com/guillempages +[@scop]: https://github.com/scop +[huawei_lte docs]: /integrations/huawei_lte/ +[onvif docs]: /integrations/onvif/ +[samsungtv docs]: /integrations/samsungtv/ +[tankerkoenig docs]: /integrations/tankerkoenig/ +[totalconnect docs]: /integrations/totalconnect/ +[zha docs]: /integrations/zha/ + +## All changes + +- Nuki: add support for unique id ([@pvizeli] - [#31824]) ([nuki docs]) +- Update pyhomematic to 0.1.65 ([@danielperna84] - [#32006]) ([homematic docs]) +- Upgrade requests to 2.23.0 ([@frenck] - [#32013]) +- Deprecate Xfinity Gateway integration (ADR-0004) ([@frenck] - [#32017]) (breaking change) +- Remove states UI options in group integration ([@frenck] - [#32021]) ([group docs]) (breaking change) +- Add entity ID to input_number warning ([@balloob] - [#32012]) ([input_number docs]) (breaking change) +- Update vizio dependency and integration name ([@raman325] - [#31975]) ([vizio docs]) +- Add convert_to_pil_image to pil util ([@robmarkcole] - [#31825]) +- Remove weblink integration ([@frenck] - [#32024]) ([demo docs]) (breaking change) +- Remove history_graph integration ([@frenck] - [#32028]) ([demo docs]) (breaking change) +- Prevent committing to dev/master/rc directly ([@frenck] - [#32029]) +- Fix extra arguments of group integration ([@frenck] - [#32032]) ([group docs]) +- Template platform tweaks ([@balloob] - [#32037]) ([template docs]) +- Change TTS codeowner to @pvizeli ([@robbiet480] - [#32041]) ([tts docs]) +- Update file headers and outdated documentation links ([@springstan] - [#32022]) +- Significantly reduce code in august integration ([@bdraco] - [#32030]) ([august docs]) +- Add asuswrt interface and dnsmasq location configuration ([@pkishino] - [#29834]) ([asuswrt docs]) +- ZHA device channel refactoring ([@Adminiuga] - [#31971]) ([zha docs]) +- Add www to all documentation links ([@springstan] - [#32063]) ([auth docs]) ([cast docs]) ([honeywell docs]) ([kodi docs]) ([nest docs]) ([pandora docs]) ([sun docs]) +- Add unique ID to ONVIF camera entities ([@frenck] - [#32093]) ([onvif docs]) +- Change get_entity to return a extended entry, add inputs to de… ([@bramkragten] - [#32083]) ([config docs]) ([default_config docs]) +- Bump env_canada to 0.0.35 to address issue 31924 ([@michaeldavie] - [#32077]) ([environment_canada docs]) (breaking change) +- Fix Frontier Silicon player state ([@jezcooke] - [#32082]) ([frontier_silicon docs]) +- Mock setup_entry in oauth2 tests ([@balloob] - [#32102]) +- Add name option for Frontier Silicon devices ([@jezcooke] - [#32085]) ([frontier_silicon docs]) +- Fix volume control for Frontier Silicon media players ([@jezcooke] - [#32040]) ([frontier_silicon docs]) +- Add boost support for Hive TRVs ([@martinlong1978] - [#31261]) ([hive docs]) +- Add sighthound save image ([@robmarkcole] - [#32103]) ([sighthound docs]) +- UniFi - Add unit of measurement to bandwidth sensors ([@Kane610] - [#32114]) ([unifi docs]) +- Add unique_id to directv entities ([@ctalkington] - [#31838]) ([directv docs]) ([directv docs]) +- Add and use time related constants ([@springstan] - [#32065]) (breaking change) +- Use f-strings in integrations starting with "A" ([@springstan] - [#32110]) +- Deduplicate code in the august integration ([@bdraco] - [#32101]) ([august docs]) +- Remove no-longer-needed SimpliSafe websocket watchdog ([@bachya] - [#32129]) ([simplisafe docs]) +- Improve condition validation error msg ([@balloob] - [#32135]) +- Add platform Ezviz ([@BaQs] - [#30378]) ([ezviz docs]) (new-integration) +- Refactor homekit_controller to be fully asynchronous ([@Jc2k] - [#32111]) ([homekit_controller docs]) +- Add Supla gate ([@Rocik] - [#31643]) ([supla docs]) +- Use ciso8601 library to parse datetime faster ([@KapJI] - [#32128]) +- Speed up validate_entity_id ([@balloob] - [#32137]) +- Use f-strings in integrations starting with "B"-"E" ([@springstan] - [#32121]) +- Handle unhandled IQVIA data update exception ([@bachya] - [#32144]) ([iqvia docs]) +- Modernize SimpliSafe config flow ([@bachya] - [#32130]) ([simplisafe docs]) +- Modernize RainMachine config flow ([@bachya] - [#32131]) ([rainmachine docs]) +- Clean up RainMachine config entry data ([@bachya] - [#32132]) ([rainmachine docs]) +- Upgrade qnapstats to 0.3.0 ([@colinodell] - [#32148]) ([qnap docs]) +- Add support for simultaneous runs of Script helper ([@pnbruckner] - [#31937]) ([automation docs]) ([script docs]) +- Add constants file for directv ([@ctalkington] - [#32157]) ([directv docs]) ([directv docs]) +- Remove some unneeded pylint suppressions ([@scop] - [#32152]) +- Upgrade pre-commit to 2.1.1 ([@frenck] - [#32159]) +- Add and use more unit constants ([@scop] - [#32122]) +- Use f-strings in integrations starting with "F"and"G" ([@springstan] - [#32150]) +- Remove friendly_name attribute from twitch sensor ([@springstan] - [#32067]) ([twitch docs]) +- Migrate HomematicIP Cloud services to admin services ([@SukramJ] - [#32107]) ([homematicip_cloud docs]) (breaking change) +- Add shopping_list_item_added event_type ([@thegame3202] - [#28334]) ([shopping_list docs]) +- Add MQTT WS command to remove device ([@emontnemery] - [#31989]) ([mqtt docs]) +- Remove unused RainMachine config flow function ([@bachya] - [#32165]) ([rainmachine docs]) +- Remove unused SimpliSafe config flow function ([@bachya] - [#32166]) ([simplisafe docs]) +- Fix flaky coverage in UK transport test ([@balloob] - [#32053]) +- Add observed entities to bayesian sensor ([@paolog89] - [#27721]) ([bayesian docs]) +- Modernize Notion config flow ([@bachya] - [#32167]) ([notion docs]) +- Modernize Ambient PWS config flow ([@bachya] - [#32164]) ([ambient_station docs]) +- Refactor homekit_controller config flow tests ([@Jc2k] - [#32141]) ([homekit_controller docs]) +- Deprecate homekit_controller .homekit folder ([@Jc2k] - [#32158]) ([homekit_controller docs]) (breaking change) +- Do not report state when closing down ([@balloob] - [#32168]) ([alexa docs]) ([google_assistant docs]) +- Add Config flow to august ([@bdraco] - [#32133]) ([august docs]) (new-platform) +- Fix description of fan service set_direction ([@springstan] - [#32181]) +- Use orjson to parse json faster ([@KapJI] - [#32153]) ([recorder docs]) +- Improve error handling ([@emontnemery] - [#32182]) ([mqtt docs]) +- Support multiple Lovelace dashboards ([@balloob] - [#32134]) ([frontend docs]) ([lovelace docs]) +- Remove hide_entity property from automation integration ([@frenck] - [#32038]) ([automation docs]) (breaking change) +- Revert "Use orjson to parse json faster (#32153)" ([@balloob] - [#32185]) ([recorder docs]) +- Refactor away deprecated homekit_controller test helpers ([@Jc2k] - [#32177]) ([homekit_controller docs]) +- Add missing device class attributes to homekit_controller sensors ([@Jc2k] - [#32175]) ([homekit_controller docs]) +- Add homekit_controller occupancy sensor ([@Jc2k] - [#32188]) ([homekit_controller docs]) +- Add Config Flow for sense ([@bdraco] - [#32160]) ([sense docs]) +- Fix name of emby media player ([@springstan] - [#32183]) ([emby docs]) +- Add model to august device_info ([@bdraco] - [#32187]) ([august docs]) +- Make SimpliSafe entities unavailable when wifi is lost ([@bachya] - [#32154]) ([simplisafe docs]) +- Reduce August doorbell detail updates ([@bdraco] - [#32193]) ([august docs]) +- homekit_controller test cleanups ([@Jc2k] - [#32212]) ([homekit_controller docs]) +- Make homekit_controller a local push integration ([@Jc2k] - [#32213]) ([homekit_controller docs]) +- Improve debounce cooldown ([@balloob] - [#32161]) +- Lovelace resource mgmt ([@balloob] - [#32224]) ([lovelace docs]) +- Address homekit_controller feedback on #32212 and #32213 ([@Jc2k] - [#32228]) ([homekit_controller docs]) +- Centralize august activity updates ([@bdraco] - [#32197]) ([august docs]) +- Make heos and transmission config flow tests more robust ([@Ikuyadeu] - [#31783]) +- Show kernel version on linux ([@sanyatuning] - [#32276]) +- Bump pyipma dependency (fixes bug in 0.106) ([@dgomes] - [#32286]) ([ipma docs]) (beta fix) +- Remove ability to configure monitored conditions in IQVIA ([@bachya] - [#32223]) ([iqvia docs]) (breaking change) +- Coordinate all august detail and activity updates ([@bdraco] - [#32249]) ([august docs]) +- Add device actions to cover ([@emontnemery] - [#28064]) ([cover docs]) ([device_automation docs]) +- Add usage sensors for each device sense detects that show powe… ([@bdraco] - [#32206]) ([sense docs]) +- Fix unhandled exception in Ambient PWS_URL ([@bachya] - [#32238]) ([ambient_station docs]) +- Support vizio pairing through config flow ([@raman325] - [#31520]) ([vizio docs]) +- Dynalite listener for config entry update ([@ziv1234] - [#32116]) ([dynalite docs]) +- Add Avri waste collection sensor ([@timvancann] - [#31134]) ([avri docs]) (new-integration) +- Set min and max temp only if it is not None ([@Petro31] - [#32262]) ([generic_thermostat docs]) +- Pass in aiohttp session for onvif ([@frenck] - [#32045]) ([onvif docs]) +- Explicitly set unique ids for GDACS integration ([@exxamalte] - [#32203]) ([gdacs docs]) +- Change github sensor state to short commit sha ([@Mariusthvdb] - [#31581]) ([github docs]) (breaking change) +- Use f-strings in integrations starting with "H" - "L" ([@springstan] - [#32265]) +- change log level ([@exxamalte] - [#32244]) ([feedreader docs]) +- Add and use percentage constant ([@springstan] - [#32094]) +- Allow managing Lovelace storage dashboards ([@balloob] - [#32241]) ([frontend docs]) ([lovelace docs]) ([zone docs]) +- Use collection helpers for counter integration ([@Adminiuga] - [#32295]) ([counter docs]) +- Bump up ZHA depdendency ([@Adminiuga] - [#32336]) ([zha docs]) +- Updated frontend to 20200228.0 ([@bramkragten] - [#32334]) ([frontend docs]) +- Bump pyipma to 2.0.5 ([@dgomes] - [#32337]) ([ipma docs]) +- Add config entry for AirVisual ([@bachya] - [#32072]) ([airvisual docs]) (breaking change) +- Restore august lock changed_by state on restart ([@bdraco] - [#32340]) ([august docs]) +- Add brightness to light device turn_on action ([@emontnemery] - [#32219]) ([light docs]) +- Fix github sensor short SHA ([@Mariusthvdb] - [#32316]) ([github docs]) +- ZHA: Support light flashing ([@chmielowiec] - [#32234]) ([zha docs]) +- Require IFTTT to send data as dictionary ([@balloob] - [#32317]) ([ifttt docs]) (breaking change) +- Bump avri api version ([@timvancann] - [#32373]) ([avri docs]) +- Add sms support to pushbullet notification ([@doudz] - [#32347]) ([pushbullet docs]) +- Upgrade youtube_dl to version 2020.03.01 ([@BKPepe] - [#32376]) ([media_extractor docs]) +- Add optimistic mode for somfy covers that do not support position ([@ColinRobbins] - [#31407]) ([somfy docs]) +- Add Tankerkoenig integration ([@guillempages] - [#28661]) ([tankerkoenig docs]) (new-integration) +- Fix AlarmDecoder Integration to use Instant Mode for alarm_arm_night ([@ajschmidt8] - [#32292]) ([alarmdecoder docs]) (breaking change) +- Add Media Stop Support to BraviaTV Mediaplayer ([@dcnielsen90] - [#32220]) ([braviatv docs]) ([braviatv docs]) ([braviatv docs]) +- Refactor dynalite integration for multi-platform ([@ziv1234] - [#32335]) ([dynalite docs]) +- Upgrade Tibber library to 0.13.0 ([@Danielhiversen] - [#32369]) ([tibber docs]) (breaking change) +- Add application/xml as an XML to JSON auto converted mime type… ([@bdraco] - [#32289]) ([rest docs]) (breaking change) +- Move keypad battery implementation details into py-august ([@bdraco] - [#32349]) ([august docs]) +- Keeping adding in Github repositories after error ([@kuchel77] - [#32393]) ([github docs]) +- Refactor Certificate Expiry Sensor ([@jjlawren] - [#32066]) ([cert_expiry docs]) (breaking change) +- Bump ZHA Quirks to 0.0.34 ([@dmulcahey] - [#32401]) ([zha docs]) +- Add coronavirus integration ([@balloob] - [#32413]) +- Add QVR Pro integration ([@oblogic7] - [#31173]) ([qvr_pro docs]) (new-integration) +- Bump brother library ([@bieniu] - [#32436]) +- Remove SUPPORT_PLAY_MEDIA from Roku ([@JeffLIrion] - [#32378]) ([roku docs]) +- Flume Cleanups (unique id, fix missing timeout, http session,… ([@bdraco] - [#32384]) ([flume docs]) +- Fix ZHA device healthcheck pings ([@Adminiuga] - [#32425]) ([zha docs]) +- Update system log grouping ([@balloob] - [#32367]) ([system_log docs]) +- Numeric state trigger: validate that above is not above below ([@balloob] - [#32421]) +- Bump total-connect-client to 0.53 ([@austinmroczek] - [#32460]) +- Update roombapy to 1.4.3 ([@pschmitt] - [#32462]) ([roomba docs]) +- Fix device tracker TrackerEntity defaults ([@balloob] - [#32459]) ([device_tracker docs]) ([geofency docs]) ([gpslogger docs]) ([icloud docs]) ([locative docs]) ([mobile_app docs]) ([owntracks docs]) ([tesla docs]) ([traccar docs]) ([unifi docs]) +- Add energy added attribute to Tesla charging rate sensor ([@alandtse] - [#32368]) ([tesla docs]) +- Add is_volume_muted property to vizio integration ([@raman325] - [#32332]) ([vizio docs]) +- Add set_speed to smarty fan ([@z0mbieprocess] - [#32255]) ([smarty docs]) +- Update error handling in update coordinator ([@balloob] - [#32452]) +- Use a requests Session for rest sensors ([@bdraco] - [#32463]) ([rest docs]) +- Remove ZHA attribute listening channel ([@dmulcahey] - [#32468]) ([zha docs]) +- Upgrade huawei-lte-api to 1.4.10 ([@scop] - [#32472]) ([huawei_lte docs]) +- Fix filter sensor processing states that aren't numbers ([@dgomes] - [#32453]) +- Deprecate camera WS API ([@balloob] - [#32473]) ([camera docs]) +- Upgrade Tibber library to 0.13.2 ([@Danielhiversen] - [#32478]) ([tibber docs]) +- Catch an extra error for Ring ([@balloob] - [#32477]) ([ring docs]) +- add const file for roku ([@ctalkington] - [#32470]) ([roku docs]) +- Remove 'show all controls' option for Plex ([@jjlawren] - [#32391]) ([plex docs]) (breaking change) +- GeoNet NZ Quakes code improvements ([@exxamalte] - [#32338]) ([geonetnz_quakes docs]) +- Add abode support for CUE automations ([@shred86] - [#32296]) ([abode docs]) (breaking change) +- Add more Huawei LTE sensors ([@scop] - [#32123]) ([huawei_lte docs]) +- Add icons to Coronavirus ([@Quentame] - [#32480]) ([coronavirus docs]) +- Reduce log level for initial error and bump library version ([@ties] - [#32381]) ([buienradar docs]) +- ZHA: Successful pairing feedback ([@chmielowiec] - [#32456]) ([zha docs]) +- Add sighthound timestamped file ([@robmarkcole] - [#32202]) ([sighthound docs]) +- ZHA Dependencies bump ([@Adminiuga] - [#32483]) ([zha docs]) +- Use SCAN_INTERVAL instead of Throttle for google travel time ([@shidarin] - [#31420]) ([google_travel_time docs]) +- Make gen_requirements_all.py case insensitive for ignored pack… ([@belidzs] - [#30885]) +- Allow string values on zwave.set_node_value ([@matejdro] - [#31061]) ([zwave docs]) +- Add node_def_id for ISY994i wrapped X10 modules ([@rbeiter] - [#31815]) ([isy994 docs]) +- Add edl21 component for SML-based smart meters ([@mtdcr] - [#27962]) ([edl21 docs]) (new-integration) +- Add soundtouch attributes exposing multiroom zone info ([@da-anda] - [#28298]) ([soundtouch docs]) +- fix double tab and match events. ([@Dorzel107] - [#32108]) ([deconz docs]) (breaking change) +- Emoncms API now provides a Unit of Measurement ([@borpin] - [#32042]) ([emoncms docs]) (breaking change) +- Add async_setup_entry/async_unload_entry for remote platform ([@ctalkington] - [#31974]) ([remote docs]) +- Add github sensor latest tag attribute ([@Mariusthvdb] - [#32360]) ([github docs]) +- Modernize WWLLN config flow ([@bachya] - [#32194]) ([wwlln docs]) +- Mock all invocations of coronavirus.get_cases ([@balloob] - [#32487]) +- Use unique_id in Plex config entries ([@jjlawren] - [#32489]) ([plex docs]) +- UniFi - Add block network access control to config option ([@Kane610] - [#32004]) ([unifi docs]) +- Add Dynalite switch platform ([@ziv1234] - [#32389]) ([dynalite docs]) (new-platform) +- Initial support for HomeKit enabled televisions ([@Jc2k] - [#32404]) ([homekit_controller docs]) +- Add Huawei LTE operator and network related sensors ([@ilarrain] - [#32485]) ([huawei_lte docs]) +- Improve script validation ([@balloob] - [#32461]) +- Make it possible to fetch proxy media player album art ([@balloob] - [#32471]) ([media_player docs]) +- Require title, separate show sidebar option ([@balloob] - [#32479]) ([lovelace docs]) +- Allow teaching logbook about events ([@balloob] - [#32444]) ([logbook docs]) +- Remove discovery and legacy config file loading for Plex ([@jjlawren] - [#32510]) ([discovery docs]) ([plex docs]) (breaking change) +- Bugfix evohome converting non-UTC timezones ([@zxdavb] - [#32120]) ([evohome docs]) +- guard against invalid trigger and action scenarios ([@dmulcahey] - [#32512]) ([zha docs]) +- Add OwnTracks Friends via person integration ([@kirichkov] - [#27303]) ([owntracks docs]) +- Add app support for TVs to Vizio integration ([@raman325] - [#32432]) (breaking change) +- Upgrade hass-nabucasa to 0.32 ([@balloob] - [#32508]) ([cloud docs]) +- Upgrade youtube_dl to version 2020.03.06 ([@BKPepe] - [#32521]) ([media_extractor docs]) +- Add availability to roku media player entities ([@ctalkington] - [#32484]) ([roku docs]) +- Add more onvif PTZ move modes ([@olijouve] - [#30152]) ([onvif docs]) (breaking change) +- Implement source switching for homekit_controller televisions ([@Jc2k] - [#32526]) ([homekit_controller docs]) +- Updated frontend to 20200306.0 ([@bramkragten] - [#32532]) ([frontend docs]) +- Specify rtsp_transport for Onvif Camera ([@engrbm87] - [#31918]) ([camera docs]) ([onvif docs]) ([stream docs]) +- Add config_flow to shopping_list ([@vigonotion] - [#32388]) ([shopping_list docs]) +- fix step name in strings.json for vizio ([@raman325] - [#32536]) ([vizio docs]) +- Make ZHA Scene channel an eventable channel. ([@Adminiuga] - [#32546]) ([zha docs]) +- Allow multiple attribute reads in ZHA ([@dmulcahey] - [#32498]) ([zha docs]) +- Fix unnecessary method call ([@shred86] - [#32549]) ([abode docs]) +- Fix Yandex transport after API change ([@devbis] - [#32500]) ([yandex_transport docs]) +- Add guard to ZHA device triggers ([@dmulcahey] - [#32559]) ([zha docs]) +- Refactor ZHA device keep alive checker ([@Adminiuga] - [#32561]) ([zha docs]) +- Bump zeroconf to 0.24.5 ([@bdraco] - [#32573]) ([zeroconf docs]) +- Simplify logbook duplicate handling ([@amelchio] - [#32572]) ([logbook docs]) +- Add Tibber retry ([@Danielhiversen] - [#32554]) ([tibber docs]) +- Bump pyicloud to 0.9.3 ([@Quentame] - [#32582]) ([icloud docs]) +- Upgrade youtube_dl to version 2020.03.08 ([@BKPepe] - [#32581]) ([media_extractor docs]) +- Bump denonavr to 0.8.0 ([@scarface-4711] - [#32578]) ([denonavr docs]) +- Add support for Ubee Router DVW32CB ([@seanvictory] - [#32406]) ([ubee docs]) +- Bump rflink to 0.0.52 ([@jeyrb] - [#32588]) ([rflink docs]) +- Correct grammatical error in CUSTOM_WARNING ([@davet2001] - [#32569]) +- Add Steam game ID and screenshot paths as attributes ([@i00] - [#32005]) ([steam_online docs]) +- Add thinkingcleaner optional host param ([@MansM] - [#32542]) ([thinkingcleaner docs]) +- Fix Withings timezone test ([@frenck] - [#32602]) +- Remove AlexaPowerController from device_class garage covers in… ([@ochlocracy] - [#32607]) ([alexa docs]) +- Add IamMeter integration ([@lewei50] - [#30465]) ([iammeter docs]) (new-integration) +- Alexa: Support vacuums without turn_on/turn_off feature ([@Tho85] - [#32570]) ([alexa docs]) +- homekit_controller fixes from testing with an LG TV: ([@Jc2k] - [#32610]) ([homekit_controller docs]) +- Fix TypeError Exception in AlexaSpeaker ([@dcnielsen90] - [#32318]) ([alexa docs]) +- Bump up ZHA dependencies. ([@Adminiuga] - [#32609]) ([zha docs]) +- Deduplicate MQTT mixin tests ([@emontnemery] - [#32563]) ([mqtt docs]) +- Add new sensors to Brother integration ([@bieniu] - [#32466]) ([brother docs]) +- Reflect new repo name ([@marengaz] - [#32611]) +- Convert august to async ([@bdraco] - [#32586]) ([august docs]) +- Freeze config entry data ([@balloob] - [#32615]) ([axis docs]) ([heos docs]) ([homematicip_cloud docs]) ([met docs]) ([mikrotik docs]) ([mqtt docs]) ([plex docs]) ([samsungtv docs]) ([smartthings docs]) ([transmission docs]) ([upnp docs]) +- Validate WWLLN window size in config schema ([@bachya] - [#32621]) ([wwlln docs]) +- Add PollControl cluster support to ZHA ([@Adminiuga] - [#32618]) ([zha docs]) +- Upgrade hass_nabucasa to 0.32.2 ([@balloob] - [#32522]) ([cloud docs]) +- Add a commit interval setting to recorder ([@bdraco] - [#32596]) ([recorder docs]) +- Breakout tado zone code into a single place ([@bdraco] - [#32564]) ([tado docs]) +- Ensure AirVisual import config flow checks API key correctness ([@bachya] - [#32624]) +- Alexa: Add support for starting and cancelling timers ([@Tho85] - [#32616]) ([alexa docs]) +- Clear discovery topic for MQTT device triggers ([@emontnemery] - [#32617]) ([mqtt docs]) +- Sonos: Return URI as media_content_id ([@GeorgeSG] - [#32626]) ([sonos docs]) +- Remove facebook broadcast api ([@chmielowiec] - [#32517]) ([facebook docs]) (breaking change) +- Add tests for workday sensor ([@penright] - [#31832]) ([workday docs]) +- Revert "Breakout tado zone code into a single place (#32564)" ([@michaelarnauts] - [#32639]) ([tado docs]) +- Add devices check to iCloud config flow ([@Quentame] - [#31950]) ([icloud docs]) +- Add support for newer SamsungTV models ([@tulindo] - [#31537]) ([samsungtv docs]) (breaking change) +- Clean up homekit_controller entity setup ([@Jc2k] - [#32628]) ([homekit_controller docs]) +- Use callback instead of async methods in Timer ([@balloob] - [#32638]) ([timer docs]) +- UniFi - Fix block functionality ([@Kane610] - [#32625]) ([unifi docs]) +- Add support for MELCloud Air-to-Water devices ([@vilppuvuorinen] - [#32078]) ([melcloud docs]) (new-platform) +- Check against Switch attr not being None ([@balloob] - [#32647]) ([switch docs]) +- Add options flow for AirVisual ([@bachya] - [#32634]) ([airvisual docs]) +- Add griddy integration ([@bdraco] - [#32591]) ([griddy docs]) (new-integration) +- Fix bmw connected drive door_lock_state attribute error ([@gerard33] - [#32074]) ([bmw_connected_drive docs]) +- input_datetime guard for unexpected state on restore ([@bramkragten] - [#32652]) ([input_datetime docs]) +- Use f-strings in integrations starting with "M" ([@springstan] - [#32271]) +- Refactor netatmo webhooks ([@cgtobi] - [#32195]) ([netatmo docs]) +- Lock operation sensors for August ([@bdraco] - [#32593]) ([august docs]) +- Throw ConfigEntryNotReady when august servers are offline or u… ([@bdraco] - [#32635]) ([august docs]) +- Bump aiohomekit for more reconnect fixes ([@Jc2k] - [#32657]) ([homekit_controller docs]) +- Bump python-ecobee-api to 0.2.2 ([@jjlawren] - [#32667]) ([ecobee docs]) +- Use bomradarloop v0.1.4 ([@maddenp] - [#32660]) ([bom docs]) +- Add codeowner for directv. ([@ctalkington] - [#32661]) ([directv docs]) ([directv docs]) +- Add entity_service calibrate_meter to utility_meter ([@dgomes] - [#32658]) ([utility_meter docs]) +- Updated frontend to 20200311.0 ([@bramkragten] - [#32675]) ([frontend docs]) +- Clean up custom polling in ZHA device and light ([@dmulcahey] - [#32653]) ([zha docs]) +- Refactor homekit_controller entity update to work more like update coordinator ([@Jc2k] - [#32670]) ([homekit_controller docs]) +- Update homekit_controller to use CharacteristicPermissions constants ([@Jc2k] - [#32679]) ([homekit_controller docs]) +- Additional ZHA cleanup ([@dmulcahey] - [#32678]) ([zha docs]) +- Fix demos ([@bramkragten] - [#32086]) ([demo docs]) +- UniFi - Client tracker schedules update on disconnect event ([@Kane610] - [#32655]) ([unifi docs]) +- Remove Netatmo binary sensor ([@cgtobi] - [#32673]) ([netatmo docs]) (breaking change) +- Connect to more recent versions of IZone ([@Swamp-Ig] - [#32552]) ([izone docs]) +- Simplfy homekit_controller characteristic writes ([@Jc2k] - [#32683]) ([homekit_controller docs]) +- Allow sw_version update of a device registry entry. ([@Adminiuga] - [#32630]) +- Fix rate of change calculation of statistics sensor ([@flo-wer] - [#32597]) ([statistics docs]) +- Remove duplicated config from MQTT tests ([@emontnemery] - [#32689]) +- Rewrite and add Plex tests ([@jjlawren] - [#32633]) ([plex docs]) +- Add JSON benchmark ([@balloob] - [#32690]) +- Fix issue #23758 - Restore Canary sensors and ensure alarm con… ([@chiefdragon] - [#32627]) ([canary docs]) +- Updated frontend to 20200311.1 ([@bramkragten] - [#32691]) ([frontend docs]) +- Add config flow to directv ([@ctalkington] - [#32162]) ([directv docs]) ([directv docs]) (breaking change) +- Update directpy==0.7 for directv. ([@ctalkington] - [#32694]) ([directv docs]) ([directv docs]) +- Fetch iCloud family devices only when wanted ([@Quentame] - [#32644]) ([icloud docs]) (breaking change) +- Add codeowner for roku. ([@ctalkington] - [#32695]) ([roku docs]) +- If device has volume disabled, the volume will be `None`. However in these ([@bazwilliams] - [#32702]) ([openhome docs]) (beta fix) +- Remove deprecated hide_if_away from device trackers ([@frenck] - [#32705]) ([device_tracker docs]) (breaking change) (beta fix) +- Broaden exception handling for IQVIA ([@bachya] - [#32708]) ([iqvia docs]) (beta fix) +- Sonos idle ([@balloob] - [#32712]) ([sonos docs]) (breaking change) (beta fix) +- Update Vizio `source` property to only return current app if i… ([@raman325] - [#32713]) ([vizio docs]) (beta fix) +- Resolve Home Assistant fails to start when Sense integration i… ([@bdraco] - [#32716]) ([sense docs]) (beta fix) +- Fix legacy Samsung TV ([@escoand] - [#32719]) ([samsungtv docs]) (beta fix) +- Set self._current_app to None when vizio device is off ([@raman325] - [#32725]) ([vizio docs]) (beta fix) +- Updated frontend to 20200312.0 ([@bramkragten] - [#32741]) ([frontend docs]) (beta fix) +- Bump py-august to 0.25.0 ([@bdraco] - [#32769]) ([august docs]) (beta fix) +- Check if panel url used and delay dashboard reg till start ([@bramkragten] - [#32771]) ([frontend docs]) ([lovelace docs]) (beta fix) +- Updated frontend to 20200313.0 ([@bramkragten] - [#32777]) ([frontend docs]) (beta fix) +- Fix homekit_controller beta connectivity issues ([@Jc2k] - [#32810]) ([homekit_controller docs]) (beta fix) +- Add brightness state to emulated hue when devices support only color temp and brightness ([@vaceslav] - [#31834]) ([emulated_hue docs]) (beta fix) +- Optimize directv client initialization ([@ctalkington] - [#32706]) ([directv docs]) ([directv docs]) (beta fix) +- Add log message on timeout and update less often for upnp devices ([@StevenLooman] - [#32740]) ([upnp docs]) (beta fix) +- Fix handling of attribute reports in ZHA sensors and binary sensors ([@dmulcahey] - [#32776]) ([zha docs]) (beta fix) +- Fix onvif error with non ptz cameras ([@timmo001] - [#32783]) ([onvif docs]) (beta fix) +- Fix brightness_pct in light device turn_on action ([@frenck] - [#32787]) ([light docs]) (beta fix) +- Bump eagle_reader API version to v0.2.4 ([@gtdiehl] - [#32789]) ([rainforest_eagle docs]) (beta fix) +- Fix directv location of unknown error string ([@ctalkington] - [#32807]) ([directv docs]) ([directv docs]) (beta fix) +- Remove extra logging from directv init. ([@ctalkington] - [#32809]) ([directv docs]) ([directv docs]) (beta fix) +- Require a hyphen in lovelace dashboard url ([@bramkragten] - [#32816]) ([lovelace docs]) (beta fix) +- Add Netatmo Home Coach as model ([@Danielhiversen] - [#32829]) ([netatmo docs]) (beta fix) +- Add SF transition to HmIP-BSL and remove obsolete code in HMIPC ([@SukramJ] - [#32833]) ([homematicip_cloud docs]) (beta fix) +- Make sure panel_custom won't crash on invalid data ([@balloob] - [#32835]) ([hassio docs]) ([panel_custom docs]) (beta fix) +- Ensure unique_ids for all evohome thermostats ([@zxdavb] - [#32604]) ([evohome docs]) (beta fix) +- Bump teslajsonpy to 0.5.1 ([@alandtse] - [#32827]) ([tesla docs]) (beta fix) +- Ignore the ignored konnected config entries ([@kit-klein] - [#32845]) (beta fix) +- Bump insteonplm to 0.16.8 ([@teharris1] - [#32847]) ([insteon docs]) (beta fix) +- Update pyozw 0.1.9 ([@pvizeli] - [#32864]) ([zwave docs]) (beta fix) +- Updated frontend to 20200316.0 ([@bramkragten] - [#32866]) ([frontend docs]) (beta fix) +- Add lovelace reload service for yaml resources ([@bramkragten] - [#32865]) ([lovelace docs]) (beta fix) +- Bump ZHA quirks to 0.0.37 ([@dmulcahey] - [#32867]) ([zha docs]) (beta fix) +- Remove group as a dependency from entity integrations ([@balloob] - [#32870]) (beta fix) +- Lovelace: storage key based on id instead of url_path ([@bramkragten] - [#32873]) ([lovelace docs]) (beta fix) +- Updated frontend to 20200316.1 ([@bramkragten] - [#32878]) ([frontend docs]) (beta fix) +- Fix iCloud init while pending ([@Quentame] - [#32750]) ([icloud docs]) (beta fix) +- Add default port to samsung tv ([@tulindo] - [#32820]) ([samsungtv docs]) (beta fix) +- Corrected minor misspellings ([@dajo] - [#32857]) ([homekit_controller docs]) ([system_log docs]) ([toon docs]) (beta fix) +- Make zone dependency of device tracker an after dep ([@balloob] - [#32880]) ([device_tracker docs]) (beta fix) +- Bump iCloud to 0.9.5 ([@Quentame] - [#32901]) ([icloud docs]) (beta fix) +- Changed Sensor icons to be more emotionally sensitive ([@brubaked] - [#32904]) ([coronavirus docs]) (beta fix) +- Bump cast to 4.2.0 ([@balloob] - [#32906]) ([cast docs]) (beta fix) +- Fix setting up options due to config data freeze ([@engrbm87] - [#32872]) ([mikrotik docs]) (beta fix) +- Fix input text reload ([@bramkragten] - [#32911]) ([input_text docs]) (beta fix) +- Introduce safe scan_interval for vicare ([@oischinger] - [#32915]) ([vicare docs]) (beta fix) +- Fix hassio panel load ([@balloob] - [#32922]) ([hassio docs]) (beta fix) +- Updated frontend to 20200318.0 ([@bramkragten] - [#32931]) ([frontend docs]) (beta fix) +- Fix flaky tests for HMIPC ([@SukramJ] - [#32806]) (beta fix) + +[#27303]: https://github.com/home-assistant/core/pull/27303 +[#27721]: https://github.com/home-assistant/core/pull/27721 +[#27962]: https://github.com/home-assistant/core/pull/27962 +[#28064]: https://github.com/home-assistant/core/pull/28064 +[#28298]: https://github.com/home-assistant/core/pull/28298 +[#28334]: https://github.com/home-assistant/core/pull/28334 +[#28661]: https://github.com/home-assistant/core/pull/28661 +[#29834]: https://github.com/home-assistant/core/pull/29834 +[#30152]: https://github.com/home-assistant/core/pull/30152 +[#30378]: https://github.com/home-assistant/core/pull/30378 +[#30465]: https://github.com/home-assistant/core/pull/30465 +[#30885]: https://github.com/home-assistant/core/pull/30885 +[#31061]: https://github.com/home-assistant/core/pull/31061 +[#31134]: https://github.com/home-assistant/core/pull/31134 +[#31173]: https://github.com/home-assistant/core/pull/31173 +[#31261]: https://github.com/home-assistant/core/pull/31261 +[#31407]: https://github.com/home-assistant/core/pull/31407 +[#31420]: https://github.com/home-assistant/core/pull/31420 +[#31520]: https://github.com/home-assistant/core/pull/31520 +[#31537]: https://github.com/home-assistant/core/pull/31537 +[#31581]: https://github.com/home-assistant/core/pull/31581 +[#31643]: https://github.com/home-assistant/core/pull/31643 +[#31783]: https://github.com/home-assistant/core/pull/31783 +[#31815]: https://github.com/home-assistant/core/pull/31815 +[#31824]: https://github.com/home-assistant/core/pull/31824 +[#31825]: https://github.com/home-assistant/core/pull/31825 +[#31832]: https://github.com/home-assistant/core/pull/31832 +[#31834]: https://github.com/home-assistant/core/pull/31834 +[#31838]: https://github.com/home-assistant/core/pull/31838 +[#31918]: https://github.com/home-assistant/core/pull/31918 +[#31937]: https://github.com/home-assistant/core/pull/31937 +[#31950]: https://github.com/home-assistant/core/pull/31950 +[#31971]: https://github.com/home-assistant/core/pull/31971 +[#31974]: https://github.com/home-assistant/core/pull/31974 +[#31975]: https://github.com/home-assistant/core/pull/31975 +[#31989]: https://github.com/home-assistant/core/pull/31989 +[#32004]: https://github.com/home-assistant/core/pull/32004 +[#32005]: https://github.com/home-assistant/core/pull/32005 +[#32006]: https://github.com/home-assistant/core/pull/32006 +[#32012]: https://github.com/home-assistant/core/pull/32012 +[#32013]: https://github.com/home-assistant/core/pull/32013 +[#32017]: https://github.com/home-assistant/core/pull/32017 +[#32021]: https://github.com/home-assistant/core/pull/32021 +[#32022]: https://github.com/home-assistant/core/pull/32022 +[#32024]: https://github.com/home-assistant/core/pull/32024 +[#32028]: https://github.com/home-assistant/core/pull/32028 +[#32029]: https://github.com/home-assistant/core/pull/32029 +[#32030]: https://github.com/home-assistant/core/pull/32030 +[#32032]: https://github.com/home-assistant/core/pull/32032 +[#32037]: https://github.com/home-assistant/core/pull/32037 +[#32038]: https://github.com/home-assistant/core/pull/32038 +[#32040]: https://github.com/home-assistant/core/pull/32040 +[#32041]: https://github.com/home-assistant/core/pull/32041 +[#32042]: https://github.com/home-assistant/core/pull/32042 +[#32045]: https://github.com/home-assistant/core/pull/32045 +[#32053]: https://github.com/home-assistant/core/pull/32053 +[#32063]: https://github.com/home-assistant/core/pull/32063 +[#32065]: https://github.com/home-assistant/core/pull/32065 +[#32066]: https://github.com/home-assistant/core/pull/32066 +[#32067]: https://github.com/home-assistant/core/pull/32067 +[#32072]: https://github.com/home-assistant/core/pull/32072 +[#32074]: https://github.com/home-assistant/core/pull/32074 +[#32077]: https://github.com/home-assistant/core/pull/32077 +[#32078]: https://github.com/home-assistant/core/pull/32078 +[#32082]: https://github.com/home-assistant/core/pull/32082 +[#32083]: https://github.com/home-assistant/core/pull/32083 +[#32085]: https://github.com/home-assistant/core/pull/32085 +[#32086]: https://github.com/home-assistant/core/pull/32086 +[#32093]: https://github.com/home-assistant/core/pull/32093 +[#32094]: https://github.com/home-assistant/core/pull/32094 +[#32101]: https://github.com/home-assistant/core/pull/32101 +[#32102]: https://github.com/home-assistant/core/pull/32102 +[#32103]: https://github.com/home-assistant/core/pull/32103 +[#32107]: https://github.com/home-assistant/core/pull/32107 +[#32108]: https://github.com/home-assistant/core/pull/32108 +[#32110]: https://github.com/home-assistant/core/pull/32110 +[#32111]: https://github.com/home-assistant/core/pull/32111 +[#32114]: https://github.com/home-assistant/core/pull/32114 +[#32116]: https://github.com/home-assistant/core/pull/32116 +[#32120]: https://github.com/home-assistant/core/pull/32120 +[#32121]: https://github.com/home-assistant/core/pull/32121 +[#32122]: https://github.com/home-assistant/core/pull/32122 +[#32123]: https://github.com/home-assistant/core/pull/32123 +[#32128]: https://github.com/home-assistant/core/pull/32128 +[#32129]: https://github.com/home-assistant/core/pull/32129 +[#32130]: https://github.com/home-assistant/core/pull/32130 +[#32131]: https://github.com/home-assistant/core/pull/32131 +[#32132]: https://github.com/home-assistant/core/pull/32132 +[#32133]: https://github.com/home-assistant/core/pull/32133 +[#32134]: https://github.com/home-assistant/core/pull/32134 +[#32135]: https://github.com/home-assistant/core/pull/32135 +[#32137]: https://github.com/home-assistant/core/pull/32137 +[#32141]: https://github.com/home-assistant/core/pull/32141 +[#32144]: https://github.com/home-assistant/core/pull/32144 +[#32148]: https://github.com/home-assistant/core/pull/32148 +[#32150]: https://github.com/home-assistant/core/pull/32150 +[#32152]: https://github.com/home-assistant/core/pull/32152 +[#32153]: https://github.com/home-assistant/core/pull/32153 +[#32154]: https://github.com/home-assistant/core/pull/32154 +[#32157]: https://github.com/home-assistant/core/pull/32157 +[#32158]: https://github.com/home-assistant/core/pull/32158 +[#32159]: https://github.com/home-assistant/core/pull/32159 +[#32160]: https://github.com/home-assistant/core/pull/32160 +[#32161]: https://github.com/home-assistant/core/pull/32161 +[#32162]: https://github.com/home-assistant/core/pull/32162 +[#32164]: https://github.com/home-assistant/core/pull/32164 +[#32165]: https://github.com/home-assistant/core/pull/32165 +[#32166]: https://github.com/home-assistant/core/pull/32166 +[#32167]: https://github.com/home-assistant/core/pull/32167 +[#32168]: https://github.com/home-assistant/core/pull/32168 +[#32175]: https://github.com/home-assistant/core/pull/32175 +[#32177]: https://github.com/home-assistant/core/pull/32177 +[#32181]: https://github.com/home-assistant/core/pull/32181 +[#32182]: https://github.com/home-assistant/core/pull/32182 +[#32183]: https://github.com/home-assistant/core/pull/32183 +[#32185]: https://github.com/home-assistant/core/pull/32185 +[#32187]: https://github.com/home-assistant/core/pull/32187 +[#32188]: https://github.com/home-assistant/core/pull/32188 +[#32193]: https://github.com/home-assistant/core/pull/32193 +[#32194]: https://github.com/home-assistant/core/pull/32194 +[#32195]: https://github.com/home-assistant/core/pull/32195 +[#32197]: https://github.com/home-assistant/core/pull/32197 +[#32202]: https://github.com/home-assistant/core/pull/32202 +[#32203]: https://github.com/home-assistant/core/pull/32203 +[#32206]: https://github.com/home-assistant/core/pull/32206 +[#32212]: https://github.com/home-assistant/core/pull/32212 +[#32213]: https://github.com/home-assistant/core/pull/32213 +[#32219]: https://github.com/home-assistant/core/pull/32219 +[#32220]: https://github.com/home-assistant/core/pull/32220 +[#32223]: https://github.com/home-assistant/core/pull/32223 +[#32224]: https://github.com/home-assistant/core/pull/32224 +[#32228]: https://github.com/home-assistant/core/pull/32228 +[#32234]: https://github.com/home-assistant/core/pull/32234 +[#32238]: https://github.com/home-assistant/core/pull/32238 +[#32241]: https://github.com/home-assistant/core/pull/32241 +[#32244]: https://github.com/home-assistant/core/pull/32244 +[#32249]: https://github.com/home-assistant/core/pull/32249 +[#32255]: https://github.com/home-assistant/core/pull/32255 +[#32262]: https://github.com/home-assistant/core/pull/32262 +[#32265]: https://github.com/home-assistant/core/pull/32265 +[#32271]: https://github.com/home-assistant/core/pull/32271 +[#32276]: https://github.com/home-assistant/core/pull/32276 +[#32286]: https://github.com/home-assistant/core/pull/32286 +[#32289]: https://github.com/home-assistant/core/pull/32289 +[#32292]: https://github.com/home-assistant/core/pull/32292 +[#32295]: https://github.com/home-assistant/core/pull/32295 +[#32296]: https://github.com/home-assistant/core/pull/32296 +[#32316]: https://github.com/home-assistant/core/pull/32316 +[#32317]: https://github.com/home-assistant/core/pull/32317 +[#32318]: https://github.com/home-assistant/core/pull/32318 +[#32332]: https://github.com/home-assistant/core/pull/32332 +[#32334]: https://github.com/home-assistant/core/pull/32334 +[#32335]: https://github.com/home-assistant/core/pull/32335 +[#32336]: https://github.com/home-assistant/core/pull/32336 +[#32337]: https://github.com/home-assistant/core/pull/32337 +[#32338]: https://github.com/home-assistant/core/pull/32338 +[#32340]: https://github.com/home-assistant/core/pull/32340 +[#32347]: https://github.com/home-assistant/core/pull/32347 +[#32349]: https://github.com/home-assistant/core/pull/32349 +[#32360]: https://github.com/home-assistant/core/pull/32360 +[#32367]: https://github.com/home-assistant/core/pull/32367 +[#32368]: https://github.com/home-assistant/core/pull/32368 +[#32369]: https://github.com/home-assistant/core/pull/32369 +[#32373]: https://github.com/home-assistant/core/pull/32373 +[#32376]: https://github.com/home-assistant/core/pull/32376 +[#32378]: https://github.com/home-assistant/core/pull/32378 +[#32381]: https://github.com/home-assistant/core/pull/32381 +[#32384]: https://github.com/home-assistant/core/pull/32384 +[#32388]: https://github.com/home-assistant/core/pull/32388 +[#32389]: https://github.com/home-assistant/core/pull/32389 +[#32391]: https://github.com/home-assistant/core/pull/32391 +[#32393]: https://github.com/home-assistant/core/pull/32393 +[#32401]: https://github.com/home-assistant/core/pull/32401 +[#32404]: https://github.com/home-assistant/core/pull/32404 +[#32406]: https://github.com/home-assistant/core/pull/32406 +[#32413]: https://github.com/home-assistant/core/pull/32413 +[#32421]: https://github.com/home-assistant/core/pull/32421 +[#32425]: https://github.com/home-assistant/core/pull/32425 +[#32432]: https://github.com/home-assistant/core/pull/32432 +[#32436]: https://github.com/home-assistant/core/pull/32436 +[#32444]: https://github.com/home-assistant/core/pull/32444 +[#32452]: https://github.com/home-assistant/core/pull/32452 +[#32453]: https://github.com/home-assistant/core/pull/32453 +[#32456]: https://github.com/home-assistant/core/pull/32456 +[#32459]: https://github.com/home-assistant/core/pull/32459 +[#32460]: https://github.com/home-assistant/core/pull/32460 +[#32461]: https://github.com/home-assistant/core/pull/32461 +[#32462]: https://github.com/home-assistant/core/pull/32462 +[#32463]: https://github.com/home-assistant/core/pull/32463 +[#32466]: https://github.com/home-assistant/core/pull/32466 +[#32468]: https://github.com/home-assistant/core/pull/32468 +[#32470]: https://github.com/home-assistant/core/pull/32470 +[#32471]: https://github.com/home-assistant/core/pull/32471 +[#32472]: https://github.com/home-assistant/core/pull/32472 +[#32473]: https://github.com/home-assistant/core/pull/32473 +[#32477]: https://github.com/home-assistant/core/pull/32477 +[#32478]: https://github.com/home-assistant/core/pull/32478 +[#32479]: https://github.com/home-assistant/core/pull/32479 +[#32480]: https://github.com/home-assistant/core/pull/32480 +[#32483]: https://github.com/home-assistant/core/pull/32483 +[#32484]: https://github.com/home-assistant/core/pull/32484 +[#32485]: https://github.com/home-assistant/core/pull/32485 +[#32487]: https://github.com/home-assistant/core/pull/32487 +[#32489]: https://github.com/home-assistant/core/pull/32489 +[#32498]: https://github.com/home-assistant/core/pull/32498 +[#32500]: https://github.com/home-assistant/core/pull/32500 +[#32508]: https://github.com/home-assistant/core/pull/32508 +[#32510]: https://github.com/home-assistant/core/pull/32510 +[#32512]: https://github.com/home-assistant/core/pull/32512 +[#32517]: https://github.com/home-assistant/core/pull/32517 +[#32521]: https://github.com/home-assistant/core/pull/32521 +[#32522]: https://github.com/home-assistant/core/pull/32522 +[#32526]: https://github.com/home-assistant/core/pull/32526 +[#32532]: https://github.com/home-assistant/core/pull/32532 +[#32536]: https://github.com/home-assistant/core/pull/32536 +[#32542]: https://github.com/home-assistant/core/pull/32542 +[#32546]: https://github.com/home-assistant/core/pull/32546 +[#32549]: https://github.com/home-assistant/core/pull/32549 +[#32552]: https://github.com/home-assistant/core/pull/32552 +[#32554]: https://github.com/home-assistant/core/pull/32554 +[#32559]: https://github.com/home-assistant/core/pull/32559 +[#32561]: https://github.com/home-assistant/core/pull/32561 +[#32563]: https://github.com/home-assistant/core/pull/32563 +[#32564]: https://github.com/home-assistant/core/pull/32564 +[#32569]: https://github.com/home-assistant/core/pull/32569 +[#32570]: https://github.com/home-assistant/core/pull/32570 +[#32572]: https://github.com/home-assistant/core/pull/32572 +[#32573]: https://github.com/home-assistant/core/pull/32573 +[#32578]: https://github.com/home-assistant/core/pull/32578 +[#32581]: https://github.com/home-assistant/core/pull/32581 +[#32582]: https://github.com/home-assistant/core/pull/32582 +[#32586]: https://github.com/home-assistant/core/pull/32586 +[#32588]: https://github.com/home-assistant/core/pull/32588 +[#32591]: https://github.com/home-assistant/core/pull/32591 +[#32593]: https://github.com/home-assistant/core/pull/32593 +[#32596]: https://github.com/home-assistant/core/pull/32596 +[#32597]: https://github.com/home-assistant/core/pull/32597 +[#32602]: https://github.com/home-assistant/core/pull/32602 +[#32604]: https://github.com/home-assistant/core/pull/32604 +[#32607]: https://github.com/home-assistant/core/pull/32607 +[#32609]: https://github.com/home-assistant/core/pull/32609 +[#32610]: https://github.com/home-assistant/core/pull/32610 +[#32611]: https://github.com/home-assistant/core/pull/32611 +[#32615]: https://github.com/home-assistant/core/pull/32615 +[#32616]: https://github.com/home-assistant/core/pull/32616 +[#32617]: https://github.com/home-assistant/core/pull/32617 +[#32618]: https://github.com/home-assistant/core/pull/32618 +[#32621]: https://github.com/home-assistant/core/pull/32621 +[#32624]: https://github.com/home-assistant/core/pull/32624 +[#32625]: https://github.com/home-assistant/core/pull/32625 +[#32626]: https://github.com/home-assistant/core/pull/32626 +[#32627]: https://github.com/home-assistant/core/pull/32627 +[#32628]: https://github.com/home-assistant/core/pull/32628 +[#32630]: https://github.com/home-assistant/core/pull/32630 +[#32633]: https://github.com/home-assistant/core/pull/32633 +[#32634]: https://github.com/home-assistant/core/pull/32634 +[#32635]: https://github.com/home-assistant/core/pull/32635 +[#32638]: https://github.com/home-assistant/core/pull/32638 +[#32639]: https://github.com/home-assistant/core/pull/32639 +[#32644]: https://github.com/home-assistant/core/pull/32644 +[#32647]: https://github.com/home-assistant/core/pull/32647 +[#32652]: https://github.com/home-assistant/core/pull/32652 +[#32653]: https://github.com/home-assistant/core/pull/32653 +[#32655]: https://github.com/home-assistant/core/pull/32655 +[#32657]: https://github.com/home-assistant/core/pull/32657 +[#32658]: https://github.com/home-assistant/core/pull/32658 +[#32660]: https://github.com/home-assistant/core/pull/32660 +[#32661]: https://github.com/home-assistant/core/pull/32661 +[#32667]: https://github.com/home-assistant/core/pull/32667 +[#32670]: https://github.com/home-assistant/core/pull/32670 +[#32673]: https://github.com/home-assistant/core/pull/32673 +[#32675]: https://github.com/home-assistant/core/pull/32675 +[#32678]: https://github.com/home-assistant/core/pull/32678 +[#32679]: https://github.com/home-assistant/core/pull/32679 +[#32683]: https://github.com/home-assistant/core/pull/32683 +[#32689]: https://github.com/home-assistant/core/pull/32689 +[#32690]: https://github.com/home-assistant/core/pull/32690 +[#32691]: https://github.com/home-assistant/core/pull/32691 +[#32694]: https://github.com/home-assistant/core/pull/32694 +[#32695]: https://github.com/home-assistant/core/pull/32695 +[#32702]: https://github.com/home-assistant/core/pull/32702 +[#32705]: https://github.com/home-assistant/core/pull/32705 +[#32706]: https://github.com/home-assistant/core/pull/32706 +[#32708]: https://github.com/home-assistant/core/pull/32708 +[#32712]: https://github.com/home-assistant/core/pull/32712 +[#32713]: https://github.com/home-assistant/core/pull/32713 +[#32716]: https://github.com/home-assistant/core/pull/32716 +[#32719]: https://github.com/home-assistant/core/pull/32719 +[#32725]: https://github.com/home-assistant/core/pull/32725 +[#32740]: https://github.com/home-assistant/core/pull/32740 +[#32741]: https://github.com/home-assistant/core/pull/32741 +[#32750]: https://github.com/home-assistant/core/pull/32750 +[#32769]: https://github.com/home-assistant/core/pull/32769 +[#32771]: https://github.com/home-assistant/core/pull/32771 +[#32776]: https://github.com/home-assistant/core/pull/32776 +[#32777]: https://github.com/home-assistant/core/pull/32777 +[#32783]: https://github.com/home-assistant/core/pull/32783 +[#32787]: https://github.com/home-assistant/core/pull/32787 +[#32789]: https://github.com/home-assistant/core/pull/32789 +[#32806]: https://github.com/home-assistant/core/pull/32806 +[#32807]: https://github.com/home-assistant/core/pull/32807 +[#32809]: https://github.com/home-assistant/core/pull/32809 +[#32810]: https://github.com/home-assistant/core/pull/32810 +[#32816]: https://github.com/home-assistant/core/pull/32816 +[#32820]: https://github.com/home-assistant/core/pull/32820 +[#32827]: https://github.com/home-assistant/core/pull/32827 +[#32829]: https://github.com/home-assistant/core/pull/32829 +[#32833]: https://github.com/home-assistant/core/pull/32833 +[#32835]: https://github.com/home-assistant/core/pull/32835 +[#32845]: https://github.com/home-assistant/core/pull/32845 +[#32847]: https://github.com/home-assistant/core/pull/32847 +[#32857]: https://github.com/home-assistant/core/pull/32857 +[#32864]: https://github.com/home-assistant/core/pull/32864 +[#32865]: https://github.com/home-assistant/core/pull/32865 +[#32866]: https://github.com/home-assistant/core/pull/32866 +[#32867]: https://github.com/home-assistant/core/pull/32867 +[#32870]: https://github.com/home-assistant/core/pull/32870 +[#32872]: https://github.com/home-assistant/core/pull/32872 +[#32873]: https://github.com/home-assistant/core/pull/32873 +[#32878]: https://github.com/home-assistant/core/pull/32878 +[#32880]: https://github.com/home-assistant/core/pull/32880 +[#32901]: https://github.com/home-assistant/core/pull/32901 +[#32904]: https://github.com/home-assistant/core/pull/32904 +[#32906]: https://github.com/home-assistant/core/pull/32906 +[#32911]: https://github.com/home-assistant/core/pull/32911 +[#32915]: https://github.com/home-assistant/core/pull/32915 +[#32922]: https://github.com/home-assistant/core/pull/32922 +[#32931]: https://github.com/home-assistant/core/pull/32931 +[@Adminiuga]: https://github.com/Adminiuga +[@BKPepe]: https://github.com/BKPepe +[@BaQs]: https://github.com/BaQs +[@ColinRobbins]: https://github.com/ColinRobbins +[@Danielhiversen]: https://github.com/Danielhiversen +[@Dorzel107]: https://github.com/Dorzel107 +[@GeorgeSG]: https://github.com/GeorgeSG +[@Ikuyadeu]: https://github.com/Ikuyadeu +[@Jc2k]: https://github.com/Jc2k +[@JeffLIrion]: https://github.com/JeffLIrion +[@Kane610]: https://github.com/Kane610 +[@KapJI]: https://github.com/KapJI +[@MansM]: https://github.com/MansM +[@Mariusthvdb]: https://github.com/Mariusthvdb +[@Petro31]: https://github.com/Petro31 +[@Quentame]: https://github.com/Quentame +[@Rocik]: https://github.com/Rocik +[@StevenLooman]: https://github.com/StevenLooman +[@SukramJ]: https://github.com/SukramJ +[@Swamp-Ig]: https://github.com/Swamp-Ig +[@Tho85]: https://github.com/Tho85 +[@ajschmidt8]: https://github.com/ajschmidt8 +[@alandtse]: https://github.com/alandtse +[@amelchio]: https://github.com/amelchio +[@austinmroczek]: https://github.com/austinmroczek +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bazwilliams]: https://github.com/bazwilliams +[@bdraco]: https://github.com/bdraco +[@belidzs]: https://github.com/belidzs +[@bieniu]: https://github.com/bieniu +[@borpin]: https://github.com/borpin +[@bramkragten]: https://github.com/bramkragten +[@brubaked]: https://github.com/brubaked +[@cgtobi]: https://github.com/cgtobi +[@chiefdragon]: https://github.com/chiefdragon +[@chmielowiec]: https://github.com/chmielowiec +[@colinodell]: https://github.com/colinodell +[@ctalkington]: https://github.com/ctalkington +[@da-anda]: https://github.com/da-anda +[@dajo]: https://github.com/dajo +[@danielperna84]: https://github.com/danielperna84 +[@davet2001]: https://github.com/davet2001 +[@dcnielsen90]: https://github.com/dcnielsen90 +[@devbis]: https://github.com/devbis +[@dgomes]: https://github.com/dgomes +[@dmulcahey]: https://github.com/dmulcahey +[@doudz]: https://github.com/doudz +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@escoand]: https://github.com/escoand +[@exxamalte]: https://github.com/exxamalte +[@flo-wer]: https://github.com/flo-wer +[@frenck]: https://github.com/frenck +[@gerard33]: https://github.com/gerard33 +[@gtdiehl]: https://github.com/gtdiehl +[@guillempages]: https://github.com/guillempages +[@i00]: https://github.com/i00 +[@ilarrain]: https://github.com/ilarrain +[@jeyrb]: https://github.com/jeyrb +[@jezcooke]: https://github.com/jezcooke +[@jjlawren]: https://github.com/jjlawren +[@kirichkov]: https://github.com/kirichkov +[@kit-klein]: https://github.com/kit-klein +[@kuchel77]: https://github.com/kuchel77 +[@lewei50]: https://github.com/lewei50 +[@maddenp]: https://github.com/maddenp +[@marengaz]: https://github.com/marengaz +[@martinlong1978]: https://github.com/martinlong1978 +[@matejdro]: https://github.com/matejdro +[@michaelarnauts]: https://github.com/michaelarnauts +[@michaeldavie]: https://github.com/michaeldavie +[@mtdcr]: https://github.com/mtdcr +[@oblogic7]: https://github.com/oblogic7 +[@ochlocracy]: https://github.com/ochlocracy +[@oischinger]: https://github.com/oischinger +[@olijouve]: https://github.com/olijouve +[@paolog89]: https://github.com/paolog89 +[@penright]: https://github.com/penright +[@pkishino]: https://github.com/pkishino +[@pnbruckner]: https://github.com/pnbruckner +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@raman325]: https://github.com/raman325 +[@rbeiter]: https://github.com/rbeiter +[@robbiet480]: https://github.com/robbiet480 +[@robmarkcole]: https://github.com/robmarkcole +[@sanyatuning]: https://github.com/sanyatuning +[@scarface-4711]: https://github.com/scarface-4711 +[@scop]: https://github.com/scop +[@seanvictory]: https://github.com/seanvictory +[@shidarin]: https://github.com/shidarin +[@shred86]: https://github.com/shred86 +[@springstan]: https://github.com/springstan +[@teharris1]: https://github.com/teharris1 +[@thegame3202]: https://github.com/thegame3202 +[@ties]: https://github.com/ties +[@timmo001]: https://github.com/timmo001 +[@timvancann]: https://github.com/timvancann +[@tulindo]: https://github.com/tulindo +[@vaceslav]: https://github.com/vaceslav +[@vigonotion]: https://github.com/vigonotion +[@vilppuvuorinen]: https://github.com/vilppuvuorinen +[@z0mbieprocess]: https://github.com/z0mbieprocess +[@ziv1234]: https://github.com/ziv1234 +[@zxdavb]: https://github.com/zxdavb +[abode docs]: /integrations/abode/ +[airvisual docs]: /integrations/airvisual/ +[alarmdecoder docs]: /integrations/alarmdecoder/ +[alexa docs]: /integrations/alexa/ +[ambient_station docs]: /integrations/ambient_station/ +[asuswrt docs]: /integrations/asuswrt/ +[august docs]: /integrations/august/ +[auth docs]: /integrations/auth/ +[automation docs]: /integrations/automation/ +[avri docs]: /integrations/avri/ +[axis docs]: /integrations/axis/ +[bayesian docs]: /integrations/bayesian/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bom docs]: /integrations/bom/ +[braviatv docs]: /integrations/braviatv/ +[brother docs]: /integrations/brother/ +[buienradar docs]: /integrations/buienradar/ +[camera docs]: /integrations/camera/ +[canary docs]: /integrations/canary/ +[cast docs]: /integrations/cast/ +[cert_expiry docs]: /integrations/cert_expiry/ +[cloud docs]: /integrations/cloud/ +[config docs]: /integrations/config/ +[coronavirus docs]: /integrations/coronavirus/ +[counter docs]: /integrations/counter/ +[cover docs]: /integrations/cover/ +[deconz docs]: /integrations/deconz/ +[default_config docs]: /integrations/default_config/ +[demo docs]: /integrations/demo/ +[denonavr docs]: /integrations/denonavr/ +[device_automation docs]: /integrations/device_automation/ +[device_tracker docs]: /integrations/device_tracker/ +[directv docs]: /integrations/directv/ +[discovery docs]: /integrations/discovery/ +[dynalite docs]: /integrations/dynalite/ +[ecobee docs]: /integrations/ecobee/ +[edl21 docs]: /integrations/edl21/ +[emby docs]: /integrations/emby/ +[emoncms docs]: /integrations/emoncms/ +[emulated_hue docs]: /integrations/emulated_hue/ +[environment_canada docs]: /integrations/environment_canada/ +[evohome docs]: /integrations/evohome/ +[ezviz docs]: /integrations/ezviz/ +[facebook docs]: /integrations/facebook/ +[feedreader docs]: /integrations/feedreader/ +[flume docs]: /integrations/flume/ +[frontend docs]: /integrations/frontend/ +[frontier_silicon docs]: /integrations/frontier_silicon/ +[gdacs docs]: /integrations/gdacs/ +[generic_thermostat docs]: /integrations/generic_thermostat/ +[geofency docs]: /integrations/geofency/ +[geonetnz_quakes docs]: /integrations/geonetnz_quakes/ +[github docs]: /integrations/github/ +[google_assistant docs]: /integrations/google_assistant/ +[google_travel_time docs]: /integrations/google_travel_time/ +[gpslogger docs]: /integrations/gpslogger/ +[griddy docs]: /integrations/griddy/ +[group docs]: /integrations/group/ +[hassio docs]: /integrations/hassio/ +[heos docs]: /integrations/heos/ +[hive docs]: /integrations/hive/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[honeywell docs]: /integrations/honeywell/ +[huawei_lte docs]: /integrations/huawei_lte/ +[iammeter docs]: /integrations/iammeter/ +[icloud docs]: /integrations/icloud/ +[ifttt docs]: /integrations/ifttt/ +[input_datetime docs]: /integrations/input_datetime/ +[input_number docs]: /integrations/input_number/ +[input_text docs]: /integrations/input_text/ +[insteon docs]: /integrations/insteon/ +[ipma docs]: /integrations/ipma/ +[iqvia docs]: /integrations/iqvia/ +[isy994 docs]: /integrations/isy994/ +[izone docs]: /integrations/izone/ +[kodi docs]: /integrations/kodi/ +[light docs]: /integrations/light/ +[locative docs]: /integrations/locative/ +[logbook docs]: /integrations/logbook/ +[lovelace docs]: /integrations/lovelace/ +[media_extractor docs]: /integrations/media_extractor/ +[media_player docs]: /integrations/media_player/ +[melcloud docs]: /integrations/melcloud/ +[met docs]: /integrations/met/ +[mikrotik docs]: /integrations/mikrotik/ +[mobile_app docs]: /integrations/mobile_app/ +[mqtt docs]: /integrations/mqtt/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[notion docs]: /integrations/notion/ +[nuki docs]: /integrations/nuki/ +[onvif docs]: /integrations/onvif/ +[openhome docs]: /integrations/openhome/ +[owntracks docs]: /integrations/owntracks/ +[pandora docs]: /integrations/pandora/ +[panel_custom docs]: /integrations/panel_custom/ +[plex docs]: /integrations/plex/ +[pushbullet docs]: /integrations/pushbullet/ +[qnap docs]: /integrations/qnap/ +[qvr_pro docs]: /integrations/qvr_pro/ +[rainforest_eagle docs]: /integrations/rainforest_eagle/ +[rainmachine docs]: /integrations/rainmachine/ +[recorder docs]: /integrations/recorder/ +[remote docs]: /integrations/remote/ +[rest docs]: /integrations/rest/ +[rflink docs]: /integrations/rflink/ +[ring docs]: /integrations/ring/ +[roku docs]: /integrations/roku/ +[roomba docs]: /integrations/roomba/ +[samsungtv docs]: /integrations/samsungtv/ +[script docs]: /integrations/script/ +[sense docs]: /integrations/sense/ +[shopping_list docs]: /integrations/shopping_list/ +[sighthound docs]: /integrations/sighthound/ +[simplisafe docs]: /integrations/simplisafe/ +[smartthings docs]: /integrations/smartthings/ +[smarty docs]: /integrations/smarty/ +[somfy docs]: /integrations/somfy/ +[sonos docs]: /integrations/sonos/ +[soundtouch docs]: /integrations/soundtouch/ +[statistics docs]: /integrations/statistics/ +[steam_online docs]: /integrations/steam_online/ +[stream docs]: /integrations/stream/ +[sun docs]: /integrations/sun/ +[supla docs]: /integrations/supla/ +[switch docs]: /integrations/switch/ +[system_log docs]: /integrations/system_log/ +[tado docs]: /integrations/tado/ +[tankerkoenig docs]: /integrations/tankerkoenig/ +[template docs]: /integrations/template/ +[tesla docs]: /integrations/tesla/ +[thinkingcleaner docs]: /integrations/thinkingcleaner/ +[tibber docs]: /integrations/tibber/ +[timer docs]: /integrations/timer/ +[toon docs]: /integrations/toon/ +[traccar docs]: /integrations/traccar/ +[transmission docs]: /integrations/transmission/ +[tts docs]: /integrations/tts/ +[twitch docs]: /integrations/twitch/ +[ubee docs]: /integrations/ubee/ +[unifi docs]: /integrations/unifi/ +[upnp docs]: /integrations/upnp/ +[utility_meter docs]: /integrations/utility_meter/ +[vicare docs]: /integrations/vicare/ +[vizio docs]: /integrations/vizio/ +[workday docs]: /integrations/workday/ +[wwlln docs]: /integrations/wwlln/ +[yandex_transport docs]: /integrations/yandex_transport/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zone docs]: /integrations/zone/ +[zwave docs]: /integrations/zwave/ diff --git a/source/_redirects b/source/_redirects index 508361b87626..eb4f219f9c39 100644 --- a/source/_redirects +++ b/source/_redirects @@ -1,6 +1,9 @@ # These redirects are handled by Netlify # +# General use redirects +/suggest-community-highlight https://docs.google.com/forms/d/e/1FAIpQLSd9VWPeVM0xg0swWL6kT3wkQUKt8vWsTL5WtPO95LAy-0cYZw/viewform + # Older development pages /developers https://developers.home-assistant.io /developers/add_new_platform https://developers.home-assistant.io/docs/en/creating_platform_index.html @@ -80,7 +83,6 @@ /components/air_quality.opensensemap /integrations/opensensemap /components/alarm_control_panel.abode /integrations/abode /components/alarm_control_panel.alarmdecoder /integrations/alarmdecoder#alarm-control-panel -/components/alarm_control_panel.alarmdotcom /integrations/alarmdotcom /components/alarm_control_panel.arlo /integrations/arlo /components/alarm_control_panel.blink /integrations/blink /components/alarm_control_panel.canary /integrations/canary @@ -180,7 +182,6 @@ /components/binary_sensor.sleepiq /integrations/sleepiq /components/binary_sensor.smartthings /integrations/smartthings#binary-sensor /components/binary_sensor.spc /integrations/spc#binary-sensor -/components/binary_sensor.tahoma /integrations/tahoma /components/binary_sensor.tapsaff /integrations/tapsaff /components/binary_sensor.tcp /integrations/tcp#binary-sensor /components/binary_sensor.tellduslive /integrations/tellduslive @@ -307,7 +308,6 @@ /components/cover.scsgate /integrations/scsgate#cover /components/cover.smartthings /integrations/smartthings#cover /components/cover.supla /integrations/supla -/components/cover.tahoma /integrations/tahoma /components/cover.tellduslive /integrations/tellduslive /components/cover.tellstick /integrations/tellstick#cover /components/cover.tuya /integrations/tuya @@ -348,7 +348,6 @@ /components/device_tracker.mqtt_json /integrations/mqtt_json /components/device_tracker.netgear /integrations/netgear /components/device_tracker.nmap_tracker /integrations/nmap_tracker -/components/device_tracker.openwrt /integrations/openwrt /components/device_tracker.owntracks /integrations/owntracks /components/device_tracker.owntracks_http /integrations/owntracks /components/device_tracker.ping /integrations/ping @@ -372,7 +371,6 @@ /components/device_tracker.unifi_direct /integrations/unifi_direct /components/device_tracker.upc_connect /integrations/upc_connect /components/device_tracker.volvooncall /integrations/volvooncall -/components/device_tracker.xfinity /integrations/xfinity /components/device_tracker.xiaomi_miio /integrations/xiaomi_miio /components/fan.comfoconnect /integrations/comfoconnect /components/fan.dyson /integrations/dyson#fan @@ -520,7 +518,6 @@ /components/media_player.kodi /integrations/kodi /components/media_player.lg_netcast /integrations/lg_netcast /components/media_player.lg_soundbar /integrations/lg_soundbar -/components/media_player.liveboxplaytv /integrations/liveboxplaytv /components/media_player.mediaroom /integrations/mediaroom /components/media_player.monoprice /integrations/monoprice /components/media_player.mpchc /integrations/mpchc @@ -625,7 +622,6 @@ /components/scene.lutron /integrations/lutron#scene /components/scene.lutron_caseta /integrations/lutron_caseta#scene /components/scene.smartthings /integrations/smartthings#scene -/components/scene.tahoma /integrations/tahoma /components/scene.tuya /integrations/tuya /components/scene.velux /integrations/velux /components/scene.vera /integrations/vera @@ -685,7 +681,6 @@ /components/sensor.dsmr /integrations/dsmr /components/sensor.dte_energy_bridge /integrations/dte_energy_bridge /components/sensor.dublin_bus_transport /integrations/dublin_bus_transport -/components/sensor.duke_energy /integrations/duke_energy /components/sensor.dwd_weather_warnings /integrations/dwd_weather_warnings /components/sensor.dweet /integrations/dweet#sensor /components/sensor.dyson /integrations/dyson#sensor @@ -787,7 +782,6 @@ /components/sensor.modem_callerid /integrations/modem_callerid /components/sensor.mold_indicator /integrations/mold_indicator /components/sensor.moon /integrations/moon -/components/sensor.mopar /integrations/mopar /components/sensor.mqtt_room /integrations/mqtt_room /components/sensor.mvglive /integrations/mvglive /components/sensor.mychevy /integrations/mychevy @@ -821,7 +815,6 @@ /components/sensor.pocketcasts /integrations/pocketcasts /components/sensor.point /integrations/point#sensor /components/sensor.pollen /integrations/iqvia -/components/sensor.postnl /integrations/postnl /components/sensor.prezzibenzina /integrations/prezzibenzina /components/sensor.pushbullet /integrations/pushbullet#sensor /components/sensor.pvoutput /integrations/pvoutput @@ -883,7 +876,6 @@ /components/sensor.systemmonitor /integrations/systemmonitor /components/sensor.sytadin /integrations/sytadin /components/sensor.tado /integrations/tado -/components/sensor.tahoma /integrations/tahoma /components/sensor.tank_utility /integrations/tank_utility /components/sensor.tautulli /integrations/tautulli /components/sensor.tcp /integrations/tcp#sensor @@ -980,7 +972,6 @@ /components/switch.fibaro /integrations/fibaro /components/switch.flux /integrations/flux /components/switch.fritzbox /integrations/fritzbox -/components/switch.fritzdect /integrations/fritzdect /components/switch.gc100 /integrations/gc100#switch /components/switch.hdmi_cec /integrations/hdmi_cec /components/switch.hikvisioncam /integrations/hikvisioncam @@ -989,7 +980,6 @@ /components/switch.homekit_controller /integrations/homekit_controller /components/switch.homematic /integrations/homematic /components/switch.homematicip_cloud /integrations/homematicip_cloud -/components/switch.hook /integrations/hook /components/switch.hydrawise /integrations/hydrawise#switch /components/switch.ihc /integrations/ihc#switch /components/switch.insteon /integrations/insteon @@ -1034,7 +1024,6 @@ /components/switch.switchbot /integrations/switchbot /components/switch.switcher_kis /integrations/switcher_kis /components/switch.switchmate /integrations/switchmate -/components/switch.tahoma /integrations/tahoma /components/switch.tellduslive /integrations/tellduslive /components/switch.tellstick /integrations/tellstick#switch /components/switch.telnet /integrations/telnet @@ -1108,7 +1097,6 @@ /components/alarm_control_panel.ifttt /integrations/alarm_control_panel.ifttt /components/alarm_control_panel.mqtt /integrations/alarm_control_panel.mqtt /components/alarmdecoder /integrations/alarmdecoder -/components/alarmdotcom /integrations/alarmdotcom /components/alert /integrations/alert /components/alexa /integrations/alexa /components/alexa.flash_briefings /integrations/alexa.flash_briefings @@ -1291,7 +1279,6 @@ /components/dte_energy_bridge /integrations/dte_energy_bridge /components/dublin_bus_transport /integrations/dublin_bus_transport /components/duckdns /integrations/duckdns -/components/duke_energy /integrations/duke_energy /components/dunehd /integrations/dunehd /components/dwd_weather_warnings /integrations/dwd_weather_warnings /components/dweet /integrations/dweet @@ -1375,7 +1362,6 @@ /components/fritzbox /integrations/fritzbox /components/fritzbox_callmonitor /integrations/fritzbox_callmonitor /components/fritzbox_netmonitor /integrations/fritzbox_netmonitor -/components/fritzdect /integrations/fritzdect /components/fronius /integrations/fronius /components/frontend /integrations/frontend /components/frontier_silicon /integrations/frontier_silicon @@ -1429,7 +1415,6 @@ /components/hikvision /integrations/hikvision /components/hikvisioncam /integrations/hikvisioncam /components/history /integrations/history -/components/history_graph /integrations/history_graph /components/history_stats /integrations/history_stats /components/hitron_coda /integrations/hitron_coda /components/hive /integrations/hive @@ -1441,7 +1426,6 @@ /components/homematicip_cloud /integrations/homematicip_cloud /components/homeworks /integrations/homeworks /components/honeywell /integrations/honeywell -/components/hook /integrations/hook /components/horizon /integrations/horizon /components/hp_ilo /integrations/hp_ilo /components/html5 /integrations/html5 @@ -1530,7 +1514,6 @@ /components/linux_battery /integrations/linux_battery /components/lirc /integrations/lirc /components/litejet /integrations/litejet -/components/liveboxplaytv /integrations/liveboxplaytv /components/llamalab_automate /integrations/llamalab_automate /components/local_file /integrations/local_file /components/locative /integrations/locative @@ -1594,7 +1577,6 @@ /components/mold_indicator /integrations/mold_indicator /components/monoprice /integrations/monoprice /components/moon /integrations/moon -/components/mopar /integrations/mopar /components/mpchc /integrations/mpchc /components/mpd /integrations/mpd /components/mqtt /integrations/mqtt @@ -1672,13 +1654,11 @@ /components/opentherm_gw /integrations/opentherm_gw /components/openuv /integrations/openuv /components/openweathermap /integrations/openweathermap -/components/openwrt /integrations/openwrt /components/opple /integrations/opple /components/orangepi_gpio /integrations/orangepi_gpio /components/orvibo /integrations/orvibo /components/osramlightify /integrations/osramlightify /components/otp /integrations/otp -/components/owlet /integrations/owlet /components/owntracks /integrations/owntracks /components/panasonic_bluray /integrations/panasonic_bluray /components/panasonic_viera /integrations/panasonic_viera @@ -1704,7 +1684,6 @@ /components/pocketcasts /integrations/pocketcasts /components/point /integrations/point /components/polling /integrations/telegram_polling -/components/postnl /integrations/postnl /components/prezzibenzina /integrations/prezzibenzina /components/proliphix /integrations/proliphix /components/prometheus /integrations/prometheus @@ -1893,7 +1872,6 @@ /components/systemmonitor /integrations/systemmonitor /components/sytadin /integrations/sytadin /components/tado /integrations/tado -/components/tahoma /integrations/tahoma /components/tank_utility /integrations/tank_utility /components/tapsaff /integrations/tapsaff /components/tautulli /integrations/tautulli @@ -1901,7 +1879,7 @@ /components/ted5000 /integrations/ted5000 /components/teksavvy /integrations/teksavvy /components/telegram /integrations/telegram -/components/telegram_bot /integrations/telegram_chatbot +/components/telegram_bot /integrations/telegram_bot /components/tellduslive /integrations/tellduslive /components/tellstick /integrations/tellstick /components/telnet /integrations/telnet @@ -2003,7 +1981,6 @@ /components/weather.darksky /integrations/weather.darksky /components/webhook /integrations/webhook /components/webhooks /integrations/telegram_webhooks -/components/weblink /integrations/weblink /components/webostv /integrations/webostv /components/websocket_api /integrations/websocket_api /components/wemo /integrations/wemo @@ -2022,7 +1999,6 @@ /components/x10 /integrations/x10 /components/xbox_live /integrations/xbox_live /components/xeoma /integrations/xeoma -/components/xfinity /integrations/xfinity /components/xiaomi /integrations/xiaomi /components/xiaomi_aqara /integrations/xiaomi_aqara /components/xiaomi_miio /integrations/xiaomi_miio @@ -2054,3 +2030,57 @@ # Breaking changes /integrations/switch.pca /integrations/elv +/integrations/telegram_chatbot /integrations/telegram_bot + +# Moved documentation +/docs/ecosystem/ios/ https://companion.home-assistant.io/ +/docs/ecosystem/ios/devices_file https://companion.home-assistant.io/ +/docs/ecosystem/ios/integration https://companion.home-assistant.io/docs/integrations/integrations +/docs/ecosystem/ios/location https://companion.home-assistant.io/docs/core/location +/docs/ecosystem/ios/notifications https://companion.home-assistant.io/docs/notifications/notifications-basic +/docs/ecosystem/ios/notifications/actions https://companion.home-assistant.io/docs/notifications/actionable-notifications +/docs/ecosystem/ios/notifications/architecture https://companion.home-assistant.io/docs/notifications/notification-details +/docs/ecosystem/ios/notifications/attachments https://companion.home-assistant.io/docs/notifications/notification-attachments +/docs/ecosystem/ios/notifications/basic https://companion.home-assistant.io/docs/notifications/notifications-basic +/docs/ecosystem/ios/notifications/content_extensions https://companion.home-assistant.io/docs/notifications/dynamic-content +/docs/ecosystem/ios/notifications/privacy_security_rate_limits https://companion.home-assistant.io/docs/notifications/notifications-basic +/docs/ecosystem/ios/notifications/requesting_location_updates https://companion.home-assistant.io/docs/notifications/notifications-basic +/docs/ecosystem/ios/notifications/sounds https://companion.home-assistant.io/docs/notifications/notification-sounds +/docs/ecosystem/notebooks https://data.home-assistant.io +/docs/ecosystem/notebooks/api https://data.home-assistant.io +/docs/ecosystem/notebooks/database https://data.home-assistant.io +/docs/ecosystem/notebooks/graph https://data.home-assistant.io +/docs/ecosystem/notebooks/installation https://data.home-assistant.io +/docs/ecosystem/notebooks/stats https://data.home-assistant.io +/docs/frontend/mobile https://companion.home-assistant.io +/ecosystem/ios/notifications https://companion.home-assistant.io/docs/notifications/notifications-basic +/ecosystem/notebooks https://data.home-assistant.io +/ecosystem/notebooks/api https://data.home-assistant.io +/ecosystem/notebooks/database https://data.home-assistant.io +/ecosystem/notebooks/graph https://data.home-assistant.io +/ecosystem/notebooks/installation https://data.home-assistant.io +/ecosystem/notebooks/stats https://data.home-assistant.io +/ios/whats-new https://companion.home-assistant.io/docs/getting_started/getting-started + +# Add-ons +/addons/cec_scan https://github.com/home-assistant/hassio-addons/blob/master/cec_scan/README.md +/addons/check_config https://github.com/home-assistant/hassio-addons/blob/master/check_config/README.md +/addons/configurator https://github.com/home-assistant/hassio-addons/blob/master/configurator/README.md +/addons/dhcp_server https://github.com/home-assistant/hassio-addons/blob/master/dhcp_server/README.md +/addons/dnsmasq https://github.com/home-assistant/hassio-addons/blob/master/dnsmasq/README.md +/addons/duckdns https://github.com/home-assistant/hassio-addons/blob/master/duckdns/README.md +/addons/git_pull https://github.com/home-assistant/hassio-addons/blob/master/git_pull/README.md +/addons/google_assistant https://github.com/home-assistant/hassio-addons/blob/master/google_assistant/README.md +/addons/homematic https://github.com/home-assistant/hassio-addons/blob/master/homematic/README.md +/addons/lets_encrypt https://github.com/home-assistant/hassio-addons/blob/master/letsencrypt/README.md +/addons/mariadb https://github.com/home-assistant/hassio-addons/blob/master/mariadb/README.md +/addons/mosquitto https://github.com/home-assistant/hassio-addons/blob/master/mosquitto/README.md +/addons/nginx_proxy https://github.com/home-assistant/hassio-addons/blob/master/nginx_proxy/README.md +/addons/rpc_shutdown https://github.com/home-assistant/hassio-addons/blob/master/rpc_shutdown/README.md +/addons/samba https://github.com/home-assistant/hassio-addons/blob/master/samba/README.md +/addons/snips https://github.com/home-assistant/hassio-addons/blob/master/snips/README.md +/addons/ssh https://github.com/home-assistant/hassio-addons/blob/master/ssh/README.md +/addons/tellstick https://github.com/home-assistant/hassio-addons/blob/master/tellstick/README.md + +# Lovelace documentation +/lovelace/entity-button /lovelace/button diff --git a/source/addons/index.html b/source/addons/index.html index c0114b2bf91b..2cfbc5099a8a 100644 --- a/source/addons/index.html +++ b/source/addons/index.html @@ -1,39 +1,38 @@ --- -title: "Hass.io Add-ons" -description: "List of the built-in add-ons of Hass.io." +title: "Home Assistant Add-ons" +description: "Find add-ons to install with Home Assistant." regenerate: false --- -

    Add-ons for Hass.io allow the user to extend the functionality around Home Assistant. This can be running an application that Home Assistant can integrate with (like an MQTT broker) or to share the configuration via Samba for easy editing from other computers. Add-ons can be configured via the Hass.io panel in Home Assistant.

    -

    - Check the Hass.io forums for add-on repositories managed by the community. + Add-ons allow the user to extend the functionality around Home + Assistant by installing additional applications.

    - -

    -Add-ons are only available if you've used the Hass.io installer. If you installed Home Assistant using any other method then you cannot use add-ons (but you can achieve the same result manually). +

    + This can be running an application that Home Assistant can integrate with + (like an MQTT broker) or to share the configuration via Samba for easy editing + from other computers. Add-ons can be configured via the Supervisor panel in Home + Assistant.

    -{% assign addons = site.addons | sort: 'title' %} - -

    Featured add-ons

    +

    + + Add-ons for Hass.io are freely available in the add-on store. +

    -
      -{% for addon in addons %}{% if addon.featured %} -
    • - {{ addon.title }}
      - {{ addon.description }} -
    • -{% endif %}{% endfor %} -
    +

    + To install add-ons, navigate to the Supervisor panel in your Home Assistant + frontend, and click on the "ADD-ON STORE" tab. All add-ons, including their documentation, are available right from the store. + Click on a add-on you are interested in, to read the documentation or to install the add-on. +

    -

    Other add-ons

    +

    + Add-ons are only available if you've used the Home Assistant installer. If you + installed Home Assistant using any other method then you cannot use add-ons + (but you can achieve the same result manually). +

    -
      -{% for addon in addons %}{% if addon.featured != true %} -
    • - {{ addon.title }}
      - {{ addon.description }} -
    • -{% endif %}{% endfor %} -
    +

    + Check the Home Assistant forums for + add-on repositories managed by the community. +

    diff --git a/source/android/index.markdown b/source/android/index.markdown index cce4541db9a3..2e437db0c0f3 100644 --- a/source/android/index.markdown +++ b/source/android/index.markdown @@ -5,6 +5,4 @@ description: "Landing page for Home Assistant Android app." -Nothing to see yet :) - - + diff --git a/source/cloud/index.markdown b/source/cloud/index.markdown index a16af21ad7c9..b172af08f5a5 100644 --- a/source/cloud/index.markdown +++ b/source/cloud/index.markdown @@ -2,10 +2,10 @@ title: "Home Assistant Cloud" description: "Enable the Home Assistant Cloud integration." sidebar: false -logo: home-assistant.png ha_release: "0.60" ha_category: Voice ha_iot_class: Cloud Push +ha_domain: cloud --- Home Assistant Cloud is a subscription service provided by our partner Nabu Casa, Inc. Check out [their website](https://www.nabucasa.com) for more information on features, pricing and [how to configure Home Assistant](https://www.nabucasa.com/config/). diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index 4769d6ad038e..24c8b831c0be 100644 --- a/source/developers/credits.markdown +++ b/source/developers/credits.markdown @@ -1,40 +1,52 @@ --- title: "Credits" description: "Credits for the developers who contributed to Home Assistant." +date: 2019-11-17, 13:17:30 +0000 --- This page contains a list of people who have contributed in one way or another to Home Assistant. Hover over a username to see their contributions. ### Author -- [Paulus Schoutsen (@balloob)](https://github.com/balloob "9373 total commits to the Home Assistant orga: -5041 commits to home-assistant -1886 commits to home-assistant.io -1597 commits to home-assistant-polymer +- [Paulus Schoutsen (@balloob)](https://github.com/balloob "10899 total commits to the Home Assistant orga: +5707 commits to home-assistant +2135 commits to home-assistant.io +2016 commits to home-assistant-polymer 237 commits to home-assistant-js -174 commits to developers.home-assistant -135 commits to netdisco -126 commits to home-assistant-js-websocket -45 commits to hass-release -23 commits to LabelBot +235 commits to developers.home-assistant +151 commits to home-assistant-js-websocket +136 commits to netdisco +50 commits to hass-release +31 commits to probot-home-assistant +26 commits to LabelBot +26 commits to alerts.home-assistant.io 20 commits to data.home-assistant -15 commits to home-assistant-assets -11 commits to example-custom-config +18 commits to hassio-wheels +16 commits to home-assistant-assets 11 commits to hassio +11 commits to example-custom-config 9 commits to hbmqtt-auth-home-assistant 7 commits to micropython-home-assistant +7 commits to hassio-homeassistant 7 commits to custom-panel-starter-kit-react -5 commits to home-assistant-notebooks -5 commits to ui-schema +6 commits to home-assistant-notebooks +6 commits to ui-schema 4 commits to hassio-addons +3 commits to architecture 3 commits to hassio-build -2 commits to lambda-home-assistant-github +3 commits to hassio-cli 2 commits to home-assistant-iOS +2 commits to lambda-home-assistant-github 2 commits to issue-bot 2 commits to hassio-addons-example +2 commits to issue-maker 1 commit to warrant -1 commit to architecture 1 commit to feedparser +1 commit to ci-azure +1 commit to hassio-opencv +1 commit to custom-components-wheels +1 commit to codeowners-mention +1 commit to ada 1 commit to open-zwave ") @@ -45,17 +57,26 @@ This page contains a list of people who have contributed in one way or another t - [15goudreau (@15goudreau)](https://github.com/15goudreau "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [1DontEx1st (@1DontEx1st)](https://github.com/1DontEx1st "8 total commits to the Home Assistant orga: +7 commits to home-assistant.io +1 commit to developers.home-assistant +") - [333ryan18 (@333ryan18)](https://github.com/333ryan18 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [4lloyd (@4lloyd)](https://github.com/4lloyd "1 total commits to the Home Assistant orga: +- [4lloyd (@4lloyd)](https://github.com/4lloyd "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") +- [5mauggy (@5mauggy)](https://github.com/5mauggy "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [7even (@hwikene)](https://github.com/hwikene "1 total commits to the Home Assistant orga: +- [7even (@hwikene)](https://github.com/hwikene "2 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer +1 commit to home-assistant.io ") -- [9R (@9R)](https://github.com/9R "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [9R (@9R)](https://github.com/9R "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io ") - [A Gomes (@ambgomes)](https://github.com/ambgomes "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -66,8 +87,8 @@ This page contains a list of people who have contributed in one way or another t - [a\-andre (@a-andre)](https://github.com/a-andre "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") -- [a\-r\-j\-a\-n (@a-r-j-a-n)](https://github.com/a-r-j-a-n "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [a\-r\-j\-a\-n (@a-r-j-a-n)](https://github.com/a-r-j-a-n "6 total commits to the Home Assistant orga: +6 commits to home-assistant.io ") - [aaamoeder (@aaamoeder)](https://github.com/aaamoeder "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -78,12 +99,17 @@ This page contains a list of people who have contributed in one way or another t - [aapjeisbaas (@aapjeisbaas)](https://github.com/aapjeisbaas "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Aaron (@xeanhort)](https://github.com/xeanhort "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [Aaron (@mcd1992)](https://github.com/mcd1992 "5 total commits to the Home Assistant orga: 5 commits to open-zwave ") -- [Aaron Bach (@bachya)](https://github.com/bachya "182 total commits to the Home Assistant orga: -141 commits to home-assistant -40 commits to home-assistant.io +- [Aaron Bach (@bachya)](https://github.com/bachya "294 total commits to the Home Assistant orga: +237 commits to home-assistant +53 commits to home-assistant.io +2 commits to alerts.home-assistant.io +1 commit to architecture 1 commit to people ") - [Aaron Godfrey (@boralyl)](https://github.com/boralyl "2 total commits to the Home Assistant orga: @@ -102,9 +128,6 @@ This page contains a list of people who have contributed in one way or another t - [Aaron Parecki (@aaronpk)](https://github.com/aaronpk "2 total commits to the Home Assistant orga: 2 commits to 1password-teams-open-source ") -- [Aaron Pica (@xeanhort)](https://github.com/xeanhort "1 total commits to the Home Assistant orga: -1 commit to developers.home-assistant -") - [Aaron Polley (@xarnze)](https://github.com/xarnze "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -113,6 +136,9 @@ This page contains a list of people who have contributed in one way or another t 3 commits to open-zwave 1 commit to home-assistant.io ") +- [AaronDavidSchneider (@AaronDavidSchneider)](https://github.com/AaronDavidSchneider "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [aaronpace (@aaronpace)](https://github.com/aaronpace "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -126,18 +152,22 @@ This page contains a list of people who have contributed in one way or another t - [ABOTlegacy (@ABOTlegacy)](https://github.com/ABOTlegacy "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Abílio Costa (@abmantis)](https://github.com/abmantis "42 total commits to the Home Assistant orga: -26 commits to home-assistant -12 commits to home-assistant.io +- [Abílio Costa (@abmantis)](https://github.com/abmantis "47 total commits to the Home Assistant orga: +29 commits to home-assistant +14 commits to home-assistant.io 2 commits to home-assistant-polymer -1 commit to home-assistant-js-websocket 1 commit to netdisco +1 commit to home-assistant-js-websocket ") - [Achilleas Pipinellis (@axilleas)](https://github.com/axilleas "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "19 total commits to the Home Assistant orga: -17 commits to home-assistant.io +- [ActuallyRuben (@ActuallyRuben)](https://github.com/ActuallyRuben "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "28 total commits to the Home Assistant orga: +26 commits to home-assistant.io 2 commits to home-assistant ") - [Adam Allport (@AAllport)](https://github.com/AAllport "1 total commits to the Home Assistant orga: @@ -182,8 +212,8 @@ This page contains a list of people who have contributed in one way or another t 3 commits to developers.home-assistant 2 commits to python-openzwave 1 commit to homebridge-homeassistant -1 commit to open-zwave 1 commit to people +1 commit to open-zwave ") - [Adam Reznechek (@adreznec)](https://github.com/adreznec "1 total commits to the Home Assistant orga: 1 commit to open-zwave @@ -194,6 +224,9 @@ This page contains a list of people who have contributed in one way or another t - [Adam Stone (@astone123)](https://github.com/astone123 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [adamgreg (@adamgreg)](https://github.com/adamgreg "1 total commits to the Home Assistant orga: +1 commit to hassio-addons +") - [adamomg (@adamomg)](https://github.com/adamomg "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -206,14 +239,21 @@ This page contains a list of people who have contributed in one way or another t - [Addo Solutions (@AddoSolutions)](https://github.com/AddoSolutions "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Adduq (@Adduq)](https://github.com/Adduq "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [adebeun (@adebeun)](https://github.com/adebeun "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [ADeeds (@ADeeds)](https://github.com/ADeeds "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [adipose (@adipose)](https://github.com/adipose "2 total commits to the Home Assistant orga: -1 commit to appdaemon +- [AdighaLogic (@AdighaLogic)](https://github.com/AdighaLogic "7 total commits to the Home Assistant orga: +6 commits to hassio-addons +1 commit to home-assistant.io +") +- [adipose (@adipose)](https://github.com/adipose "3 total commits to the Home Assistant orga: +2 commits to appdaemon 1 commit to hassio-addons ") - [AdithyanI (@AdithyanI)](https://github.com/AdithyanI "1 total commits to the Home Assistant orga: @@ -222,8 +262,9 @@ This page contains a list of people who have contributed in one way or another t - [Aditya Shevade (@adibis)](https://github.com/adibis "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Adriaan Peeters (@apeeters)](https://github.com/apeeters "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Adriaan Peeters (@apeeters)](https://github.com/apeeters "5 total commits to the Home Assistant orga: +4 commits to home-assistant.io +1 commit to home-assistant ") - [Adrian Campos (@adriancampos)](https://github.com/adriancampos "2 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer @@ -237,6 +278,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant-polymer 1 commit to home-assistant.io ") +- [Adrian Schröter (@adrianschroeter)](https://github.com/adrianschroeter "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Adrian Scillato (@ascillato)](https://github.com/ascillato "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -249,6 +293,9 @@ This page contains a list of people who have contributed in one way or another t - [Adrien Brault (@adrienbrault)](https://github.com/adrienbrault "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") +- [Adrien Foulon (@Tofandel)](https://github.com/Tofandel "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Adrián López (@adrianlzt)](https://github.com/adrianlzt "8 total commits to the Home Assistant orga: 6 commits to home-assistant.io 2 commits to home-assistant @@ -271,22 +318,38 @@ This page contains a list of people who have contributed in one way or another t - [aguedob (@aguedob)](https://github.com/aguedob "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [ahertz (@ahertz)](https://github.com/ahertz "3 total commits to the Home Assistant orga: +2 commits to open-zwave +1 commit to home-assistant +") - [ahobsonsayers (@ahobsonsayers)](https://github.com/ahobsonsayers "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") +- [aidbish (@aidbish)](https://github.com/aidbish "13 total commits to the Home Assistant orga: +11 commits to home-assistant.io +2 commits to home-assistant +") - [aisbergde (@aisbergde)](https://github.com/aisbergde "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [ajayjohn (@ajayjohn)](https://github.com/ajayjohn "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [ajobbins (@ajobbins)](https://github.com/ajobbins "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [akasma74 (@akasma74)](https://github.com/akasma74 "5 total commits to the Home Assistant orga: -5 commits to home-assistant.io +- [akargl (@akargl)](https://github.com/akargl "2 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +1 commit to developers.home-assistant ") -- [akloeckner (@akloeckner)](https://github.com/akloeckner "13 total commits to the Home Assistant orga: -7 commits to home-assistant.io -6 commits to home-assistant +- [akasma74 (@akasma74)](https://github.com/akasma74 "20 total commits to the Home Assistant orga: +18 commits to home-assistant.io +2 commits to home-assistant +") +- [akloeckner (@akloeckner)](https://github.com/akloeckner "15 total commits to the Home Assistant orga: +8 commits to home-assistant.io +7 commits to home-assistant ") - [Akriti Chadda (@akriticg)](https://github.com/akriticg "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -294,6 +357,12 @@ This page contains a list of people who have contributed in one way or another t - [Akın Ömeroğlu (@akinomeroglu)](https://github.com/akinomeroglu "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Alain Tavan (@alain57)](https://github.com/alain57 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Alain Turbide (@Dilbert66)](https://github.com/Dilbert66 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Alan Bowman (@alanbowman)](https://github.com/alanbowman "5 total commits to the Home Assistant orga: 4 commits to home-assistant 1 commit to home-assistant.io @@ -302,23 +371,31 @@ This page contains a list of people who have contributed in one way or another t 17 commits to home-assistant 4 commits to home-assistant.io ") -- [Alan Tse (@alandtse)](https://github.com/alandtse "7 total commits to the Home Assistant orga: -4 commits to home-assistant +- [Alan Tse (@alandtse)](https://github.com/alandtse "10 total commits to the Home Assistant orga: +6 commits to home-assistant 2 commits to home-assistant.io 1 commit to developers.home-assistant +1 commit to custom-components-wheels ") - [Alasdair Nicol (@alasdairnicol)](https://github.com/alasdairnicol "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") - [Alastair D'Silva (@deece)](https://github.com/deece "5 total commits to the Home Assistant orga: 2 commits to hassos -1 commit to hassio-build -1 commit to hassio-homeassistant 1 commit to hassio +1 commit to hassio-homeassistant +1 commit to hassio-build +") +- [Alba Mendez (@jmendeth)](https://github.com/jmendeth "1 total commits to the Home Assistant orga: +1 commit to home-assistant-cli ") - [Albatross (@DyingAlbatross)](https://github.com/DyingAlbatross "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Albert Gouws (@KiLLeRRaT)](https://github.com/KiLLeRRaT "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Albert Lee (@trisk)](https://github.com/trisk "20 total commits to the Home Assistant orga: 12 commits to home-assistant 8 commits to home-assistant.io @@ -329,11 +406,17 @@ This page contains a list of people who have contributed in one way or another t - [AlCalzone (@AlCalzone)](https://github.com/AlCalzone "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [Alec Rust (@AlecRust)](https://github.com/AlecRust "11 total commits to the Home Assistant orga: -8 commits to home-assistant.io +- [Alec Rust (@AlecRust)](https://github.com/AlecRust "21 total commits to the Home Assistant orga: +15 commits to home-assistant.io +2 commits to companion.home-assistant 1 commit to home-assistant-polymer 1 commit to hassio-addons 1 commit to developers.home-assistant +1 commit to alerts.home-assistant.io +") +- [Aleix Murtra (@alemuro)](https://github.com/alemuro "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io ") - [Aleksandar Todorović \(r3bl\) (@aleksandar-todorovic)](https://github.com/aleksandar-todorovic "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -357,29 +440,42 @@ This page contains a list of people who have contributed in one way or another t - [Alessandro Staniscia (@Odyno)](https://github.com/Odyno "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") +- [Alessio Margelli (@alex9446)](https://github.com/alex9446 "2 total commits to the Home Assistant orga: +1 commit to home-assistant.io +1 commit to home-assistant +") +- [Alex (@shr00mie)](https://github.com/shr00mie "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [Alex (@asbach)](https://github.com/asbach "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant ") -- [Alex (@alexrockt)](https://github.com/alexrockt "1 total commits to the Home Assistant orga: +- [Alex (@MungoRae)](https://github.com/MungoRae "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Alex (@MungoRae)](https://github.com/MungoRae "1 total commits to the Home Assistant orga: +- [Alex (@alexrockt)](https://github.com/alexrockt "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Alex (@nnmalex)](https://github.com/nnmalex "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Alex (@alexanderVonBergner)](https://github.com/alexanderVonBergner "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Alex Bahm (@techfreek)](https://github.com/techfreek "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Alex Bahm (@techfreek)](https://github.com/techfreek "2 total commits to the Home Assistant orga: +2 commits to home-assistant ") - [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "8 total commits to the Home Assistant orga: 4 commits to home-assistant.io 3 commits to hassio-addons 1 commit to home-assistant ") -- [Alex Calderon (@AlexCalderon02)](https://github.com/AlexCalderon02 "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Alex Calderon (@AlexCalderon02)](https://github.com/AlexCalderon02 "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [Alex Fung (@paraselene)](https://github.com/paraselene "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [Alex Harvey (@infamy)](https://github.com/infamy "29 total commits to the Home Assistant orga: 14 commits to home-assistant @@ -389,9 +485,6 @@ This page contains a list of people who have contributed in one way or another t - [Alex Lauerman (@alexlauerman)](https://github.com/alexlauerman "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Alex Macleod (@Alexendoo)](https://github.com/Alexendoo "2 total commits to the Home Assistant orga: -2 commits to dehydrated -") - [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant @@ -399,8 +492,8 @@ This page contains a list of people who have contributed in one way or another t - [Alex MF (@adsmf)](https://github.com/adsmf "1 total commits to the Home Assistant orga: 1 commit to hassio-addons ") -- [Alex Molodoj (@Molodax)](https://github.com/Molodax "7 total commits to the Home Assistant orga: -7 commits to home-assistant.io +- [Alex Molodoj (@Molodax)](https://github.com/Molodax "9 total commits to the Home Assistant orga: +9 commits to home-assistant.io ") - [Alex Muller (@alexmuller)](https://github.com/alexmuller "1 total commits to the Home Assistant orga: 1 commit to gu-who @@ -408,20 +501,30 @@ This page contains a list of people who have contributed in one way or another t - [Alex Osadchyy (@aosadchyy)](https://github.com/aosadchyy "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") +- [Alex Popoutsis (@apop880)](https://github.com/apop880 "4 total commits to the Home Assistant orga: +2 commits to developers.home-assistant +2 commits to home-assistant.io +") +- [Alex S (@asleeis)](https://github.com/asleeis "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Alex S\. Glomsaas (@xlexi)](https://github.com/xlexi "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") - [Alex Tzonkov (@attzonko)](https://github.com/attzonko "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Alex1234 (@Alex1234)](https://github.com/Alex1234 "1 total commits to the Home Assistant orga: +- [Alex X (@AlexxIT)](https://github.com/AlexxIT "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [alex9446 (@alex9446)](https://github.com/alex9446 "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Alex1234 (@Alex1234)](https://github.com/Alex1234 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") -- [Alexander (@ualex73)](https://github.com/ualex73 "162 total commits to the Home Assistant orga: +- [Alexander (@ualex73)](https://github.com/ualex73 "164 total commits to the Home Assistant orga: 162 commits to open-zwave +1 commit to home-assistant +1 commit to home-assistant.io ") - [Alexander (@vtochq)](https://github.com/vtochq "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -460,11 +563,17 @@ This page contains a list of people who have contributed in one way or another t - [Alexandre Prates Dias (@pratesbh)](https://github.com/pratesbh "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Alexei Chetroi (@Adminiuga)](https://github.com/Adminiuga "36 total commits to the Home Assistant orga: -34 commits to home-assistant +- [Alexei Chetroi (@Adminiuga)](https://github.com/Adminiuga "72 total commits to the Home Assistant orga: +70 commits to home-assistant 1 commit to home-assistant-polymer 1 commit to people ") +- [Alexey Pristavkin (@Pristavkin)](https://github.com/Pristavkin "1 total commits to the Home Assistant orga: +1 commit to hassos +") +- [Alexey Savin (@savin-alexey)](https://github.com/savin-alexey "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Alexis Iglauer (@ax42)](https://github.com/ax42 "4 total commits to the Home Assistant orga: 4 commits to home-assistant.io ") @@ -493,11 +602,8 @@ This page contains a list of people who have contributed in one way or another t - [Allan Klein (@allanak)](https://github.com/allanak "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Allan Persson \| Marathon Pepe (@allanpersson)](https://github.com/allanpersson "3 total commits to the Home Assistant orga: -3 commits to home-assistant.io -") -- [allixx (@allixx)](https://github.com/allixx "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [Allan Persson (@allanpersson)](https://github.com/allanpersson "9 total commits to the Home Assistant orga: +9 commits to home-assistant.io ") - [allserv (@allserv)](https://github.com/allserv "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -505,9 +611,12 @@ This page contains a list of people who have contributed in one way or another t - [Almost Engineer (@almostengr)](https://github.com/almostengr "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "176 total commits to the Home Assistant orga: -99 commits to home-assistant.io -63 commits to home-assistant +- [almostserious (@almostserious)](https://github.com/almostserious "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") +- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "185 total commits to the Home Assistant orga: +101 commits to home-assistant.io +70 commits to home-assistant 7 commits to home-assistant-polymer 3 commits to developers.home-assistant 1 commit to hassbian-scripts @@ -515,9 +624,16 @@ This page contains a list of people who have contributed in one way or another t 1 commit to hassio-addons 1 commit to people ") +- [Alpha Tango (@alphatangoalpha)](https://github.com/alphatangoalpha "2 total commits to the Home Assistant orga: +1 commit to hassio-addons +1 commit to home-assistant.io +") - [Alvi Mahadi (@alvi2496)](https://github.com/alvi2496 "1 total commits to the Home Assistant orga: 1 commit to developers.home-assistant ") +- [ambarkhuizen (@ambarkhuizen)](https://github.com/ambarkhuizen "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [amigian74 (@amigian74)](https://github.com/amigian74 "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") @@ -541,8 +657,8 @@ This page contains a list of people who have contributed in one way or another t - [Anders Einar Hilden (@Kagee)](https://github.com/Kagee "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Anders Fogh Eriksen (@Fogh)](https://github.com/Fogh "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Anders Fogh Eriksen (@Fogh)](https://github.com/Fogh "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io ") - [Anders Gjendem (@agjendem)](https://github.com/agjendem "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -550,13 +666,14 @@ This page contains a list of people who have contributed in one way or another t - [Anders Ljusberg (@andlju)](https://github.com/andlju "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "342 total commits to the Home Assistant orga: -279 commits to home-assistant -51 commits to home-assistant.io +- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "410 total commits to the Home Assistant orga: +331 commits to home-assistant +65 commits to home-assistant.io 6 commits to pyharmony 3 commits to home-assistant-polymer 2 commits to home-assistant-iOS -1 commit to developers.home-assistant +2 commits to developers.home-assistant +1 commit to people ") - [Anders Norås (@anoras)](https://github.com/anoras "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -564,9 +681,13 @@ This page contains a list of people who have contributed in one way or another t - [andig (@andig)](https://github.com/andig "2 total commits to the Home Assistant orga: 2 commits to pi-gen ") -- [Andre Lengwenus (@alengwenus)](https://github.com/alengwenus "16 total commits to the Home Assistant orga: -10 commits to home-assistant -6 commits to home-assistant.io +- [Andre Lengwenus (@alengwenus)](https://github.com/alengwenus "33 total commits to the Home Assistant orga: +20 commits to home-assistant +13 commits to home-assistant.io +") +- [Andre Richter (@andre-richter)](https://github.com/andre-richter "6 total commits to the Home Assistant orga: +5 commits to home-assistant +1 commit to home-assistant.io ") - [Andrea (@BubiDevs)](https://github.com/BubiDevs "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -578,6 +699,13 @@ This page contains a list of people who have contributed in one way or another t - [Andrea Cioccarelli (@AndreaCioccarelli)](https://github.com/AndreaCioccarelli "2 total commits to the Home Assistant orga: 2 commits to 1password-teams-open-source ") +- [Andrea Donno (@adonno)](https://github.com/adonno "6 total commits to the Home Assistant orga: +5 commits to home-assistant.io +1 commit to hassio-addons +") +- [Andrea G (@Muffo)](https://github.com/Muffo "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Andrea Tosatto (@andtos90)](https://github.com/andtos90 "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -655,20 +783,24 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") -- [Andrew (@a005)](https://github.com/a005 "1 total commits to the Home Assistant orga: -1 commit to home-assistant -") - [Andrew (@adpriebe)](https://github.com/adpriebe "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Andrew Chatham (@achatham)](https://github.com/achatham "1 total commits to the Home Assistant orga: +- [Andrew (@a005)](https://github.com/a005 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "1276 total commits to the Home Assistant orga: -1138 commits to appdaemon +- [Andrew Beveridge (@beveradb)](https://github.com/beveradb "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") +- [Andrew Chatham (@achatham)](https://github.com/achatham "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") +- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "1533 total commits to the Home Assistant orga: +1394 commits to appdaemon 88 commits to hadashboard -28 commits to scenegen +29 commits to scenegen 22 commits to home-assistant.io ") - [Andrew Fahrenholtz (@PlasmaEye)](https://github.com/PlasmaEye "1 total commits to the Home Assistant orga: @@ -689,23 +821,35 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Andrew Loe (@loe)](https://github.com/loe "2 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Andrew Loe (@loe)](https://github.com/loe "3 total commits to the Home Assistant orga: +2 commits to home-assistant 1 commit to home-assistant.io ") +- [Andrew Onyshchuk (@oandrew)](https://github.com/oandrew "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Andrew Patton (@acusti)](https://github.com/acusti "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Andrew Riley (@andrewcr7)](https://github.com/andrewcr7 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Andrew Sayre (@andrewsayre)](https://github.com/andrewsayre "75 total commits to the Home Assistant orga: -47 commits to home-assistant -24 commits to home-assistant.io -2 commits to developers.home-assistant +- [Andrew Rowson (@growse)](https://github.com/growse "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") +- [Andrew Sayre (@andrewsayre)](https://github.com/andrewsayre "127 total commits to the Home Assistant orga: +91 commits to home-assistant +31 commits to home-assistant.io +3 commits to developers.home-assistant 1 commit to netdisco 1 commit to people ") +- [Andrew Scheller (@lurch)](https://github.com/lurch "1 total commits to the Home Assistant orga: +1 commit to pi-gen +") +- [Andrew Simmons (@agsimmons)](https://github.com/agsimmons "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Andrew Smith (@andrewmichaelsmith)](https://github.com/andrewmichaelsmith "2 total commits to the Home Assistant orga: 2 commits to pi-gen ") @@ -722,9 +866,13 @@ This page contains a list of people who have contributed in one way or another t - [Andrew Wedgbury (@sconemad)](https://github.com/sconemad "1 total commits to the Home Assistant orga: 1 commit to pi-gen ") -- [Andrew Williams (@nikdoof)](https://github.com/nikdoof "1 total commits to the Home Assistant orga: +- [Andrew Williams (@nikdoof)](https://github.com/nikdoof "5 total commits to the Home Assistant orga: +4 commits to scenegen 1 commit to home-assistant ") +- [Andrew Wong (@featherbear)](https://github.com/featherbear "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Andrew Ying (@andrewying)](https://github.com/andrewying "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") @@ -745,14 +893,12 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant-js-websocket 1 commit to people ") -- [Andrey "Limych" Khrolenok (@Limych)](https://github.com/Limych "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io -") -- [Andrey Jr\. Melnikov (@LynxChaus)](https://github.com/LynxChaus "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [Andrey "Limych" Khrolenok (@Limych)](https://github.com/Limych "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to home-assistant ") -- [Andrey Kupreychik (@foxel)](https://github.com/foxel "20 total commits to the Home Assistant orga: -13 commits to home-assistant +- [Andrey Kupreychik (@foxel)](https://github.com/foxel "24 total commits to the Home Assistant orga: +17 commits to home-assistant 7 commits to home-assistant.io ") - [Andrey Mikhaylov \(lolmaus\) (@lolmaus)](https://github.com/lolmaus "1 total commits to the Home Assistant orga: @@ -769,15 +915,25 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant.io 1 commit to home-assistant ") +- [András Rutkai (@rutkai)](https://github.com/rutkai "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") - [André Hahn (@ahahn94)](https://github.com/ahahn94 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Andréas Lundgren (@adevade)](https://github.com/adevade "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Andy Castille (@Klikini)](https://github.com/Klikini "20 total commits to the Home Assistant orga: -12 commits to home-assistant -8 commits to home-assistant.io +- [Andy Castille (@Klikini)](https://github.com/Klikini "22 total commits to the Home Assistant orga: +13 commits to home-assistant +9 commits to home-assistant.io +") +- [Andy Cordill (@acordill)](https://github.com/acordill "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Andy Kittner (@andkit)](https://github.com/andkit "2 total commits to the Home Assistant orga: +2 commits to home-assistant ") - [Andy Lindeman (@alindeman)](https://github.com/alindeman "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -802,6 +958,12 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Angie1313 (@Angie1313)](https://github.com/Angie1313 "2 total commits to the Home Assistant orga: +2 commits to developers.home-assistant +") +- [Anglac (@Anglac)](https://github.com/Anglac "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Anna Prosvetova (@aprosvetova)](https://github.com/aprosvetova "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -811,6 +973,9 @@ This page contains a list of people who have contributed in one way or another t - [anotherthomas (@anotherthomas)](https://github.com/anotherthomas "1 total commits to the Home Assistant orga: 1 commit to hassio-addons ") +- [anrudolph (@anrudolph)](https://github.com/anrudolph "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Anthony Arnaud (@aarnaud)](https://github.com/aarnaud "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") @@ -826,10 +991,11 @@ This page contains a list of people who have contributed in one way or another t - [antihate8 (@antihate8)](https://github.com/antihate8 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Antoine Bertin (@Diaoul)](https://github.com/Diaoul "5 total commits to the Home Assistant orga: +- [Antoine Bertin (@Diaoul)](https://github.com/Diaoul "7 total commits to the Home Assistant orga: +3 commits to home-assistant.io 2 commits to home-assistant -2 commits to home-assistant.io 1 commit to home-assistant-polymer +1 commit to hassio-addons ") - [Antoine GRÉA (@grea09)](https://github.com/grea09 "4 total commits to the Home Assistant orga: 3 commits to home-assistant @@ -838,6 +1004,9 @@ This page contains a list of people who have contributed in one way or another t - [Antoine Meillet (@inetAnt)](https://github.com/inetAnt "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Antoine Rahier (@Twanislas)](https://github.com/Twanislas "3 total commits to the Home Assistant orga: +3 commits to home-assistant-polymer +") - [Anton Babenko (@antonbabenko)](https://github.com/antonbabenko "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") @@ -862,13 +1031,19 @@ This page contains a list of people who have contributed in one way or another t - [Anton\-Juul\-Naber (@antonjuulnaber)](https://github.com/antonjuulnaber "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Antoni K (@antoni-k)](https://github.com/antoni-k "11 total commits to the Home Assistant orga: -10 commits to home-assistant.io +- [Antoni K (@antoni-k)](https://github.com/antoni-k "14 total commits to the Home Assistant orga: +13 commits to home-assistant.io 1 commit to hassbian-scripts ") +- [Antonio Larrosa (@antlarr)](https://github.com/antlarr "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Antonio Párraga Navarro (@aparraga)](https://github.com/aparraga "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Antonio Pérez (@skarcha)](https://github.com/skarcha "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Antony Messerli (@antonym)](https://github.com/antonym "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -890,19 +1065,13 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant-polymer 1 commit to home-assistant.io ") -- [apop880 (@apop880)](https://github.com/apop880 "1 total commits to the Home Assistant orga: -1 commit to developers.home-assistant -") -- [aquarium (@theaquarium)](https://github.com/theaquarium "4 total commits to the Home Assistant orga: +- [aquarium (@theaquarium)](https://github.com/theaquarium "6 total commits to the Home Assistant orga: +3 commits to home-assistant-polymer 3 commits to home-assistant.io -1 commit to home-assistant-polymer ") - [AR (@aleiphoenix)](https://github.com/aleiphoenix "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Aral Balkan (@aral)](https://github.com/aral "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [arcsur (@arcsur)](https://github.com/arcsur "4 total commits to the Home Assistant orga: 3 commits to home-assistant 1 commit to home-assistant.io @@ -918,6 +1087,9 @@ This page contains a list of people who have contributed in one way or another t - [arg0nik (@arg0nik)](https://github.com/arg0nik "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Ari (@arigit)](https://github.com/arigit "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Ari Lotter (@arilotter)](https://github.com/arilotter "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant @@ -925,9 +1097,9 @@ This page contains a list of people who have contributed in one way or another t - [aribarreto (@aribarreto)](https://github.com/aribarreto "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [arigilder (@arigilder)](https://github.com/arigilder "6 total commits to the Home Assistant orga: -5 commits to home-assistant -1 commit to home-assistant.io +- [arigilder (@arigilder)](https://github.com/arigilder "8 total commits to the Home Assistant orga: +6 commits to home-assistant +2 commits to home-assistant.io ") - [arjenfvellinga (@arjenfvellinga)](https://github.com/arjenfvellinga "6 total commits to the Home Assistant orga: 5 commits to home-assistant.io @@ -939,7 +1111,10 @@ This page contains a list of people who have contributed in one way or another t - [ArnoGit (@ArnoGit)](https://github.com/ArnoGit "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [arraylabs (@arraylabs)](https://github.com/arraylabs "8 total commits to the Home Assistant orga: +- [Aron Hafner (@alonalon)](https://github.com/alonalon "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [ArrayLabs (@arraylabs)](https://github.com/arraylabs "8 total commits to the Home Assistant orga: 6 commits to home-assistant 2 commits to home-assistant.io ") @@ -949,8 +1124,9 @@ This page contains a list of people who have contributed in one way or another t - [arteck (@arteck)](https://github.com/arteck "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [Artem (@ArtHome12)](https://github.com/ArtHome12 "2 total commits to the Home Assistant orga: +- [Artem (@ArtHome12)](https://github.com/ArtHome12 "3 total commits to the Home Assistant orga: 2 commits to developers.home-assistant +1 commit to home-assistant.io ") - [Artem Sydorenko (@Art3mS1d)](https://github.com/Art3mS1d "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -967,15 +1143,16 @@ This page contains a list of people who have contributed in one way or another t - [Arttu mahlakaarto (@amahlaka)](https://github.com/amahlaka "6 total commits to the Home Assistant orga: 6 commits to home-assistant.io ") -- [Arturo R\. (@jaquer)](https://github.com/jaquer "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [Artuto (@Artuto)](https://github.com/Artuto "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") - [Arvind Prasanna (@aprasanna)](https://github.com/aprasanna "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [aschamberger (@aschamberger)](https://github.com/aschamberger "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [ash7777 (@ash7777)](https://github.com/ash7777 "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") @@ -985,6 +1162,10 @@ This page contains a list of people who have contributed in one way or another t - [Ashton Campbell (@AshtonCampbell)](https://github.com/AshtonCampbell "5 total commits to the Home Assistant orga: 5 commits to home-assistant.io ") +- [Askarov Rishat (@rishatik92)](https://github.com/rishatik92 "6 total commits to the Home Assistant orga: +3 commits to home-assistant +3 commits to home-assistant.io +") - [Assaf Inbal (@shmuelzon)](https://github.com/shmuelzon "12 total commits to the Home Assistant orga: 9 commits to homebridge-homeassistant 3 commits to home-assistant @@ -1018,18 +1199,19 @@ This page contains a list of people who have contributed in one way or another t - [Austin (@trainman419)](https://github.com/trainman419 "9 total commits to the Home Assistant orga: 9 commits to home-assistant ") -- [Austin Drummond (@adrum)](https://github.com/adrum "11 total commits to the Home Assistant orga: -6 commits to home-assistant.io -5 commits to home-assistant +- [Austin Drummond (@adrum)](https://github.com/adrum "20 total commits to the Home Assistant orga: +10 commits to home-assistant.io +10 commits to home-assistant +") +- [Austin Mroczek (@austinmroczek)](https://github.com/austinmroczek "11 total commits to the Home Assistant orga: +5 commits to home-assistant.io +4 commits to home-assistant +2 commits to open-zwave ") - [austinlg96 (@austinlg96)](https://github.com/austinlg96 "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") -- [austinmroczek (@austinmroczek)](https://github.com/austinmroczek "5 total commits to the Home Assistant orga: -3 commits to home-assistant.io -2 commits to open-zwave -") - [Avi Schwab (@froboy)](https://github.com/froboy "2 total commits to the Home Assistant orga: 2 commits to 1password-teams-open-source ") @@ -1045,9 +1227,6 @@ This page contains a list of people who have contributed in one way or another t - [Axel (@axel8viii)](https://github.com/axel8viii "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") -- [Axel Burri (@digint)](https://github.com/digint "3 total commits to the Home Assistant orga: -3 commits to dehydrated -") - [ayatoy (@ayatoy)](https://github.com/ayatoy "1 total commits to the Home Assistant orga: 1 commit to feedparser ") @@ -1068,6 +1247,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to python-openzwave 1 commit to home-assistant ") +- [BackSlasher (@BackSlasher)](https://github.com/BackSlasher "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [badele (@badele)](https://github.com/badele "24 total commits to the Home Assistant orga: 22 commits to home-assistant 2 commits to home-assistant.io @@ -1078,12 +1260,19 @@ This page contains a list of people who have contributed in one way or another t - [Bakkoda (@Bakkoda)](https://github.com/Bakkoda "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Balazs Keresztury (@belidzs)](https://github.com/belidzs "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Balazs Keresztury (@belidzs)](https://github.com/belidzs "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [Balazs Sandor (@sanyatuning)](https://github.com/sanyatuning "2 total commits to the Home Assistant orga: +2 commits to home-assistant ") - [Balázs Suhajda (@suhajdab)](https://github.com/suhajdab "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Baptiste Candellier (@outadoc)](https://github.com/outadoc "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Baptiste Lecocq (@tiste)](https://github.com/tiste "4 total commits to the Home Assistant orga: 2 commits to home-assistant 2 commits to home-assistant.io @@ -1100,6 +1289,9 @@ This page contains a list of people who have contributed in one way or another t 3 commits to netdisco 2 commits to home-assistant.io ") +- [Barrysv (@Barrysv)](https://github.com/Barrysv "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Bart S (@zBart)](https://github.com/zBart "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -1111,10 +1303,21 @@ This page contains a list of people who have contributed in one way or another t - [Bartek Celary (@bcelary)](https://github.com/bcelary "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Bartosz Fenski (@fenio)](https://github.com/fenio "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Baruch Rothkoff (@baruchiro)](https://github.com/baruchiro "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Bas (@basbl)](https://github.com/basbl "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Bas Nijholt (@basnijholt)](https://github.com/basnijholt "4 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to developers.home-assistant +1 commit to home-assistant +") - [Bas Schipper (@basschipper)](https://github.com/basschipper "10 total commits to the Home Assistant orga: 8 commits to home-assistant 2 commits to home-assistant.io @@ -1128,14 +1331,14 @@ This page contains a list of people who have contributed in one way or another t - [basst22778 (@basst22778)](https://github.com/basst22778 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [bastshoes (@bastshoes)](https://github.com/bastshoes "5 total commits to the Home Assistant orga: -2 commits to home-assistant +- [bastien (@cbastienbaron)](https://github.com/cbastienbaron "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [bastshoes (@bastshoes)](https://github.com/bastshoes "6 total commits to the Home Assistant orga: +3 commits to home-assistant 2 commits to home-assistant.io 1 commit to home-assistant-polymer ") -- [battistaar (@battistaar)](https://github.com/battistaar "1 total commits to the Home Assistant orga: -1 commit to homebridge-homeassistant -") - [Batári Balázs László (@bayi)](https://github.com/bayi "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -1143,9 +1346,9 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant.io 1 commit to home-assistant ") -- [Beat (@bdurrer)](https://github.com/bdurrer "16 total commits to the Home Assistant orga: -11 commits to home-assistant.io -4 commits to home-assistant +- [Beat (@bdurrer)](https://github.com/bdurrer "18 total commits to the Home Assistant orga: +12 commits to home-assistant.io +5 commits to home-assistant 1 commit to home-assistant-polymer ") - [Beau Breeden (@BeauBreeden)](https://github.com/BeauBreeden "1 total commits to the Home Assistant orga: @@ -1172,9 +1375,10 @@ This page contains a list of people who have contributed in one way or another t - [Ben (@unixben)](https://github.com/unixben "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Ben Bangert (@bbangert)](https://github.com/bbangert "6 total commits to the Home Assistant orga: +- [Ben Bangert (@bbangert)](https://github.com/bbangert "7 total commits to the Home Assistant orga: 4 commits to home-assistant 2 commits to home-assistant.io +1 commit to people ") - [Ben Bennett (@knobunc)](https://github.com/knobunc "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -1182,21 +1386,22 @@ This page contains a list of people who have contributed in one way or another t - [Ben Carlsson (@glacials)](https://github.com/glacials "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [Ben Dews (@bendews)](https://github.com/bendews "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Ben Dews (@bendews)](https://github.com/bendews "5 total commits to the Home Assistant orga: +4 commits to home-assistant +1 commit to home-assistant.io ") - [Ben Doerr (@bendoerr)](https://github.com/bendoerr "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Ben Krajancic (@Fantasmos)](https://github.com/Fantasmos "1 total commits to the Home Assistant orga: +- [Ben Krajancic (@fantasmos)](https://github.com/fantasmos "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Ben Lebherz (@benleb)](https://github.com/benleb "14 total commits to the Home Assistant orga: +- [Ben Lebherz (@benleb)](https://github.com/benleb "23 total commits to the Home Assistant orga: +11 commits to appdaemon +5 commits to home-assistant 4 commits to home-assistant.io -4 commits to home-assistant -3 commits to appdaemon -1 commit to home-assistant-notebooks 1 commit to home-assistant-cli +1 commit to home-assistant-notebooks 1 commit to developers.home-assistant ") - [Ben Menchaca (@bmenchaca)](https://github.com/bmenchaca "5 total commits to the Home Assistant orga: @@ -1221,6 +1426,9 @@ This page contains a list of people who have contributed in one way or another t - [Ben Schattinger (@lights0123)](https://github.com/lights0123 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Ben Spoon (@spoonben)](https://github.com/spoonben "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Ben Thomas (@wazoo)](https://github.com/wazoo "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") @@ -1231,6 +1439,10 @@ This page contains a list of people who have contributed in one way or another t - [ben423423n32j14e (@ben423423n32j14e)](https://github.com/ben423423n32j14e "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") +- [Bendik Brenne (@bendikrb)](https://github.com/bendikrb "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Benedict Aas (@Shou)](https://github.com/Shou "5 total commits to the Home Assistant orga: 3 commits to home-assistant.io 2 commits to home-assistant @@ -1238,20 +1450,20 @@ This page contains a list of people who have contributed in one way or another t - [Benedikt Böhm (@hollow)](https://github.com/hollow "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [Benjamin Albrecht (@beelbrecht)](https://github.com/beelbrecht "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [Benjamin Bryan (@ahnooie)](https://github.com/ahnooie "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Benjamin Dos Santos (@bdossantos)](https://github.com/bdossantos "2 total commits to the Home Assistant orga: -2 commits to dehydrated -") - [Benjamin Parzella (@bparzella)](https://github.com/bparzella "1 total commits to the Home Assistant orga: 1 commit to pi-gen ") -- [Benji (@bbbenji)](https://github.com/bbbenji "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Benjamin Richter (@kilrogg)](https://github.com/kilrogg "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Benjamin Staffin (@benley)](https://github.com/benley "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Benji (@bbbenji)](https://github.com/bbbenji "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io ") - [Bennett Kanuka (@bkanuka)](https://github.com/bkanuka "8 total commits to the Home Assistant orga: 8 commits to pyharmony @@ -1270,22 +1482,25 @@ This page contains a list of people who have contributed in one way or another t - [bergemalm (@bergemalm)](https://github.com/bergemalm "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Bernardus Jansen (@bajansen)](https://github.com/bajansen "1 total commits to the Home Assistant orga: +- [berightback\-dev (@berightback-dev)](https://github.com/berightback-dev "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Bernd Zeimetz (@bzed)](https://github.com/bzed "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [Bernardus Jansen (@bajansen)](https://github.com/bajansen "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Bertbert (@bertbert72)](https://github.com/bertbert72 "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant ") +- [Bertie Blackman (@covertbert)](https://github.com/covertbert "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [bestlibre (@bestlibre)](https://github.com/bestlibre "16 total commits to the Home Assistant orga: 8 commits to home-assistant 5 commits to home-assistant.io -1 commit to home-assistant-polymer -1 commit to hassio-build 1 commit to hassio +1 commit to hassio-build +1 commit to home-assistant-polymer ") - [bforbird (@bforbird)](https://github.com/bforbird "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -1303,8 +1518,8 @@ This page contains a list of people who have contributed in one way or another t - [BigMoby (@bigmoby)](https://github.com/bigmoby "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [bigwoof (@bigwoof)](https://github.com/bigwoof "3 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [bigwoof (@bigwoof)](https://github.com/bigwoof "4 total commits to the Home Assistant orga: +3 commits to home-assistant.io 1 commit to home-assistant ") - [Bike Dude (@hackacad)](https://github.com/hackacad "1 total commits to the Home Assistant orga: @@ -1340,9 +1555,6 @@ This page contains a list of people who have contributed in one way or another t - [Björn Orri (@bjornorri)](https://github.com/bjornorri "1 total commits to the Home Assistant orga: 1 commit to home-assistant-iOS ") -- [Björn Ramberg (@bjorne)](https://github.com/bjorne "1 total commits to the Home Assistant orga: -1 commit to hassio-build -") - [bkcberry (@bkcberry)](https://github.com/bkcberry "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -1378,6 +1590,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [bluestripe (@bluestripe)](https://github.com/bluestripe "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Bo (@bohmandan)](https://github.com/bohmandan "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -1391,8 +1606,8 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to appdaemon ") -- [Bob Igo (@Human)](https://github.com/Human "4 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [Bob Igo (@Human)](https://github.com/Human "5 total commits to the Home Assistant orga: +4 commits to home-assistant.io 1 commit to home-assistant ") - [Bob van Oijen (@bobvanoijen)](https://github.com/bobvanoijen "2 total commits to the Home Assistant orga: @@ -1404,6 +1619,14 @@ This page contains a list of people who have contributed in one way or another t - [Boced66 (@boced66)](https://github.com/boced66 "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") +- [Bogdan Alexe (@bogdanalexe90)](https://github.com/bogdanalexe90 "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [Bogdan Vlaicu (@bvlaicu)](https://github.com/bvlaicu "3 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +1 commit to home-assistant +1 commit to home-assistant.io +") - [boltgolt (@boltgolt)](https://github.com/boltgolt "4 total commits to the Home Assistant orga: 2 commits to home-assistant 2 commits to home-assistant.io @@ -1411,10 +1634,13 @@ This page contains a list of people who have contributed in one way or another t - [bonterra (@bonterra)](https://github.com/bonterra "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [boojew (@boojew)](https://github.com/boojew "9 total commits to the Home Assistant orga: -7 commits to home-assistant.io +- [boojew (@boojew)](https://github.com/boojew "10 total commits to the Home Assistant orga: +8 commits to home-assistant.io 2 commits to home-assistant ") +- [boolangery (@boolangery)](https://github.com/boolangery "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [Boris K (@bokub)](https://github.com/bokub "12 total commits to the Home Assistant orga: 6 commits to home-assistant.io 6 commits to home-assistant @@ -1423,7 +1649,11 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant.io 1 commit to home-assistant ") -- [bouni (@Bouni)](https://github.com/Bouni "2 total commits to the Home Assistant orga: +- [bouni (@Bouni)](https://github.com/Bouni "86 total commits to the Home Assistant orga: +81 commits to home-assistant +5 commits to home-assistant.io +") +- [Bouwe Westerdijk (@bouwew)](https://github.com/bouwew "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") @@ -1432,6 +1662,9 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant 2 commits to home-assistant.io ") +- [br0nd (@br0nd)](https://github.com/br0nd "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Br4veSt4rr (@Br4veSt4rr)](https://github.com/Br4veSt4rr "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -1457,8 +1690,8 @@ This page contains a list of people who have contributed in one way or another t - [Brad Johnson (@bradsk88)](https://github.com/bradsk88 "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Brad Sanders (@thebradleysanders)](https://github.com/thebradleysanders "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Brad Sanders (@thebradleysanders)](https://github.com/thebradleysanders "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io ") - [bradarndt (@digdugg)](https://github.com/digdugg "2 total commits to the Home Assistant orga: 2 commits to python-openzwave @@ -1466,6 +1699,12 @@ This page contains a list of people who have contributed in one way or another t - [braddparker (@braddparker)](https://github.com/braddparker "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Bradley Nelson (@BCNelson)](https://github.com/BCNelson "1 total commits to the Home Assistant orga: +1 commit to home-assistant-android +") +- [Bradley Wehmeier (@bradleywehmeier)](https://github.com/bradleywehmeier "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [BradleyDHobbs (@BradleyDHobbs)](https://github.com/BradleyDHobbs "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -1475,17 +1714,32 @@ This page contains a list of people who have contributed in one way or another t - [Brahma Fear (@brahmafear)](https://github.com/brahmafear "8 total commits to the Home Assistant orga: 8 commits to home-assistant.io ") -- [Bram Kragten (@bramkragten)](https://github.com/bramkragten "120 total commits to the Home Assistant orga: -83 commits to home-assistant-polymer -26 commits to home-assistant -9 commits to home-assistant.io +- [Bram Goolaerts (@bollewolle)](https://github.com/bollewolle "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Bram Kragten (@bramkragten)](https://github.com/bramkragten "353 total commits to the Home Assistant orga: +262 commits to home-assistant-polymer +68 commits to home-assistant +14 commits to home-assistant.io +4 commits to custom-components-wheels 1 commit to home-assistant-notebooks 1 commit to people +1 commit to developers.home-assistant +1 commit to probot-home-assistant +1 commit to alerts.home-assistant.io ") - [Bram Mittendorff (@brammittendorff)](https://github.com/brammittendorff "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Brandon Davidson (@brandond)](https://github.com/brandond "1 total commits to the Home Assistant orga: +- [Brandon Chothia (@chothia)](https://github.com/chothia "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Brandon Corry (@brandoncorry)](https://github.com/brandoncorry "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Brandon Davidson (@brandond)](https://github.com/brandond "4 total commits to the Home Assistant orga: +3 commits to home-assistant 1 commit to netdisco ") - [Brandon Mathis (@imathis)](https://github.com/imathis "484 total commits to the Home Assistant orga: @@ -1507,8 +1761,14 @@ This page contains a list of people who have contributed in one way or another t - [Brendan Berg (@captainnapalm)](https://github.com/captainnapalm "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Brendon Baumgartner (@bbrendon)](https://github.com/bbrendon "11 total commits to the Home Assistant orga: -11 commits to home-assistant.io +- [Brendan Tobolaski (@btobolaski)](https://github.com/btobolaski "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Brendon Baumgartner (@bbrendon)](https://github.com/bbrendon "23 total commits to the Home Assistant orga: +15 commits to home-assistant.io +4 commits to home-assistant +3 commits to appdaemon +1 commit to data.home-assistant ") - [Brent Hughes (@bah2830)](https://github.com/bah2830 "28 total commits to the Home Assistant orga: 18 commits to home-assistant @@ -1521,12 +1781,15 @@ This page contains a list of people who have contributed in one way or another t - [Brent Saltzman (@brent20)](https://github.com/brent20 "9 total commits to the Home Assistant orga: 9 commits to home-assistant.io ") +- [Brenton (@rbrenton)](https://github.com/rbrenton "1 total commits to the Home Assistant orga: +1 commit to hassos +") - [Brenton Zillins (@bzillins)](https://github.com/bzillins "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Brian Bennett (@bahamat)](https://github.com/bahamat "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [Brett T\. Warden (@bwarden)](https://github.com/bwarden "3 total commits to the Home Assistant orga: +3 commits to home-assistant ") - [Brian Cribbs (@cribbstechnologies)](https://github.com/cribbstechnologies "44 total commits to the Home Assistant orga: 27 commits to home-assistant @@ -1574,8 +1837,8 @@ This page contains a list of people who have contributed in one way or another t - [Brian Towles (@wonderslug)](https://github.com/wonderslug "4 total commits to the Home Assistant orga: 4 commits to home-assistant ") -- [Brig Lamoreaux (@briglx)](https://github.com/briglx "2 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Brig Lamoreaux (@briglx)](https://github.com/briglx "7 total commits to the Home Assistant orga: +6 commits to home-assistant 1 commit to home-assistant.io ") - [Brigham Brown (@brigham)](https://github.com/brigham "1 total commits to the Home Assistant orga: @@ -1609,14 +1872,17 @@ This page contains a list of people who have contributed in one way or another t - [Bruno Binet (@bbinet)](https://github.com/bbinet "1 total commits to the Home Assistant orga: 1 commit to hassio-build ") +- [bruxy70 (@bruxy70)](https://github.com/bruxy70 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Bryan Berg (@berg)](https://github.com/berg "1 total commits to the Home Assistant orga: 1 commit to hassos ") - [Bryan Van de Ven (@bryevdv)](https://github.com/bryevdv "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [Bryan York (@bryanyork)](https://github.com/bryanyork "4 total commits to the Home Assistant orga: -4 commits to home-assistant +- [Bryan York (@bryanyork)](https://github.com/bryanyork "5 total commits to the Home Assistant orga: +5 commits to home-assistant ") - [BryanJacobs (@BryanJacobs)](https://github.com/BryanJacobs "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -1626,17 +1892,11 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to python-openzwave ") -- [BtbN (@BtbN)](https://github.com/BtbN "2 total commits to the Home Assistant orga: -2 commits to dehydrated -") -- [bufferUnderrun (@bufferUnderrun)](https://github.com/bufferUnderrun "12 total commits to the Home Assistant orga: -12 commits to open-zwave -") - [BUUT\! (@buut-vrij)](https://github.com/buut-vrij "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [bvansambeek (@bvansambeek)](https://github.com/bvansambeek "4 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [bvansambeek (@bvansambeek)](https://github.com/bvansambeek "5 total commits to the Home Assistant orga: +4 commits to home-assistant.io 1 commit to hassio-build ") - [bw3 (@bw3)](https://github.com/bw3 "1 total commits to the Home Assistant orga: @@ -1656,9 +1916,9 @@ This page contains a list of people who have contributed in one way or another t 9 commits to home-assistant 3 commits to hassio ") -- [c\-soft (@c-soft)](https://github.com/c-soft "5 total commits to the Home Assistant orga: -3 commits to home-assistant -2 commits to home-assistant.io +- [c\-soft (@c-soft)](https://github.com/c-soft "7 total commits to the Home Assistant orga: +4 commits to home-assistant +3 commits to home-assistant.io ") - [cadwal (@cadwal)](https://github.com/cadwal "1 total commits to the Home Assistant orga: 1 commit to hassio @@ -1670,6 +1930,9 @@ This page contains a list of people who have contributed in one way or another t 8 commits to home-assistant 1 commit to home-assistant.io ") +- [Caleb Mah (@calebmah)](https://github.com/calebmah "5 total commits to the Home Assistant orga: +5 commits to home-assistant.io +") - [callifo (@callifo)](https://github.com/callifo "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") @@ -1682,6 +1945,13 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Cameron Morris (@cameronrmorris)](https://github.com/cameronrmorris "3 total commits to the Home Assistant orga: +3 commits to home-assistant +") +- [capstan1 (@capstan1)](https://github.com/capstan1 "3 total commits to the Home Assistant orga: +2 commits to hassos +1 commit to home-assistant.io +") - [Carl Chan (@carlchan)](https://github.com/carlchan "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -1689,28 +1959,39 @@ This page contains a list of people who have contributed in one way or another t - [Carl Johnson (@carlivar)](https://github.com/carlivar "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "101 total commits to the Home Assistant orga: -93 commits to home-assistant.io +- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "102 total commits to the Home Assistant orga: +94 commits to home-assistant.io 5 commits to home-assistant +1 commit to fabric-home-assistant 1 commit to hassbian-scripts 1 commit to homebridge-homeassistant -1 commit to fabric-home-assistant +") +- [Carlos Duarte Do Nascimento \(Chester\) (@chesterbr)](https://github.com/chesterbr "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Carlos Gustavo Sarmiento (@carlos-sarmiento)](https://github.com/carlos-sarmiento "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Carlos Rodríguez (@crguez)](https://github.com/crguez "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [carlosmgr (@carlosmgr)](https://github.com/carlosmgr "6 total commits to the Home Assistant orga: 6 commits to home-assistant ") -- [carstenschroeder (@carstenschroeder)](https://github.com/carstenschroeder "14 total commits to the Home Assistant orga: -13 commits to home-assistant +- [carstenschroeder (@carstenschroeder)](https://github.com/carstenschroeder "17 total commits to the Home Assistant orga: +14 commits to home-assistant +1 commit to hassio 1 commit to developers.home-assistant +1 commit to home-assistant.io ") - [Carter (@BluGeni)](https://github.com/BluGeni "4 total commits to the Home Assistant orga: 3 commits to home-assistant.io 1 commit to home-assistant ") +- [casey (@csjo)](https://github.com/csjo "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Casper (@casperklein)](https://github.com/casperklein "2 total commits to the Home Assistant orga: 1 commit to hassio 1 commit to home-assistant.io @@ -1731,12 +2012,8 @@ This page contains a list of people who have contributed in one way or another t 1 commit to open-zwave 1 commit to home-assistant.io ") -- [cclauss (@cclauss)](https://github.com/cclauss "2 total commits to the Home Assistant orga: -1 commit to appdaemon -1 commit to python-openzwave -") -- [cdce8p (@cdce8p)](https://github.com/cdce8p "209 total commits to the Home Assistant orga: -132 commits to home-assistant +- [cdce8p (@cdce8p)](https://github.com/cdce8p "213 total commits to the Home Assistant orga: +136 commits to home-assistant 51 commits to home-assistant.io 14 commits to home-assistant-polymer 6 commits to developers.home-assistant @@ -1756,6 +2033,9 @@ This page contains a list of people who have contributed in one way or another t - [Cedric Van Goethem (@Zepheus)](https://github.com/Zepheus "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") +- [Cedrick Flocon (@CedrickFlocon)](https://github.com/CedrickFlocon "7 total commits to the Home Assistant orga: +7 commits to home-assistant-android +") - [ceejii (@ceejii)](https://github.com/ceejii "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -1777,9 +2057,15 @@ This page contains a list of people who have contributed in one way or another t - [ChadCurvin (@Curvin777)](https://github.com/Curvin777 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Chandan Rai (@bhageena)](https://github.com/bhageena "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [chanders (@chanders)](https://github.com/chanders "2 total commits to the Home Assistant orga: 2 commits to hadashboard ") +- [Chao (@chaoranxie)](https://github.com/chaoranxie "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [CHAPELLE Quentin (@quentinchap)](https://github.com/quentinchap "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -1787,22 +2073,19 @@ This page contains a list of people who have contributed in one way or another t 12 commits to home-assistant 7 commits to home-assistant.io ") -- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "58 total commits to the Home Assistant orga: -26 commits to home-assistant -19 commits to home-assistant.io -12 commits to home-assistant-polymer +- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "73 total commits to the Home Assistant orga: +32 commits to home-assistant +21 commits to home-assistant.io +19 commits to home-assistant-polymer 1 commit to people ") - [Charles Spirakis (@srcLurker)](https://github.com/srcLurker "8 total commits to the Home Assistant orga: 5 commits to home-assistant 3 commits to home-assistant.io ") -- [Chayoung You (@yous)](https://github.com/yous "3 total commits to the Home Assistant orga: +- [ChaYoung You (@yous)](https://github.com/yous "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Check your git settings\! (@invalid-email-address)](https://github.com/invalid-email-address "1 total commits to the Home Assistant orga: -1 commit to libcoap -") - [Chema García (@sch3m4)](https://github.com/sch3m4 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -1815,18 +2098,19 @@ This page contains a list of people who have contributed in one way or another t - [chierichetto (@chierichetto)](https://github.com/chierichetto "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [chkhanu (@chkhanu)](https://github.com/chkhanu "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [chknetsc (@chknetsc)](https://github.com/chknetsc "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [chmielowiec (@chmielowiec)](https://github.com/chmielowiec "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") - [chocomega (@chocomega)](https://github.com/chocomega "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [choss (@choss)](https://github.com/choss "4 total commits to the Home Assistant orga: +- [choss (@choss)](https://github.com/choss "5 total commits to the Home Assistant orga: 3 commits to home-assistant.io -1 commit to home-assistant +2 commits to home-assistant ") - [Chris (@chennin)](https://github.com/chennin "15 total commits to the Home Assistant orga: 11 commits to home-assistant.io @@ -1847,6 +2131,15 @@ This page contains a list of people who have contributed in one way or another t - [Chris Baumgartner (@mchrisb03)](https://github.com/mchrisb03 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Chris Caron (@caronc)](https://github.com/caronc "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Chris Colohan (@colohan)](https://github.com/colohan "3 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +1 commit to home-assistant +1 commit to home-assistant.io +") - [Chris Cowart (@cpcowart)](https://github.com/cpcowart "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -1860,13 +2153,17 @@ This page contains a list of people who have contributed in one way or another t - [Chris Heath (@Nedlinin)](https://github.com/Nedlinin "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [Chris Helming (@cwhits)](https://github.com/cwhits "8 total commits to the Home Assistant orga: +- [Chris Helming (@cwhits)](https://github.com/cwhits "12 total commits to the Home Assistant orga: +8 commits to home-assistant 4 commits to home-assistant.io -4 commits to home-assistant ") - [Chris Huegle (@chuegle)](https://github.com/chuegle "1 total commits to the Home Assistant orga: 1 commit to netdisco ") +- [Chris Johnston (@Chris-Johnston)](https://github.com/Chris-Johnston "4 total commits to the Home Assistant orga: +3 commits to home-assistant.io +1 commit to home-assistant +") - [Chris Jones (@fezfox)](https://github.com/fezfox "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant @@ -1904,12 +2201,29 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant.io 4 commits to appdaemon ") +- [Chris Soyars (@ctso)](https://github.com/ctso "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Chris Thorn (@chris-thorn)](https://github.com/chris-thorn "7 total commits to the Home Assistant orga: 7 commits to home-assistant.io ") +- [Chris Thornton (@cj-thornton)](https://github.com/cj-thornton "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Chris Van Humbeeck (@humbeecc)](https://github.com/humbeecc "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Chris Vanclercq (@Vanclec)](https://github.com/Vanclec "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Chris Vick (@cvick)](https://github.com/cvick "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [chriscla (@chriscla)](https://github.com/chriscla "11 total commits to the Home Assistant orga: +6 commits to home-assistant +5 commits to home-assistant.io +") - [chrismcneil (@chrismcneil)](https://github.com/chrismcneil "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -1929,9 +2243,6 @@ This page contains a list of people who have contributed in one way or another t - [Christian (@cschroeter)](https://github.com/cschroeter "2 total commits to the Home Assistant orga: 2 commits to hassio ") -- [Christian Baer (@chrisb86)](https://github.com/chrisb86 "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [Christian Biamont (@chrillux)](https://github.com/chrillux "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io @@ -1940,6 +2251,13 @@ This page contains a list of people who have contributed in one way or another t 8 commits to home-assistant 1 commit to home-assistant.io ") +- [Christian Clauss (@cclauss)](https://github.com/cclauss "2 total commits to the Home Assistant orga: +1 commit to appdaemon +1 commit to python-openzwave +") +- [Christian Kuhn (@lolli42)](https://github.com/lolli42 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Christian Lahme (@krys1976)](https://github.com/krys1976 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -1963,12 +2281,10 @@ This page contains a list of people who have contributed in one way or another t 7 commits to home-assistant.io 3 commits to developers.home-assistant ") -- [Christian Tacke (@ChristianTacke)](https://github.com/ChristianTacke "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") -- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "39 total commits to the Home Assistant orga: -23 commits to home-assistant +- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "42 total commits to the Home Assistant orga: +25 commits to home-assistant 16 commits to home-assistant.io +1 commit to open-zwave ") - [Christofer Hellqvist (@hellqvist)](https://github.com/hellqvist "2 total commits to the Home Assistant orga: 2 commits to open-zwave @@ -1999,14 +2315,15 @@ This page contains a list of people who have contributed in one way or another t - [christopheBfr (@christopheBfr)](https://github.com/christopheBfr "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Christopher Cavey (@cicavey)](https://github.com/cicavey "3 total commits to the Home Assistant orga: +- [Christopher Cavey (@cicavey)](https://github.com/cicavey "4 total commits to the Home Assistant orga: 3 commits to open-zwave +1 commit to home-assistant.io ") - [Christopher Vella (@chrisvella)](https://github.com/chrisvella "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Christopher Viel (@Chris-V)](https://github.com/Chris-V "6 total commits to the Home Assistant orga: -3 commits to home-assistant +- [Christopher Viel (@Chris-V)](https://github.com/Chris-V "7 total commits to the Home Assistant orga: +4 commits to home-assistant 2 commits to home-assistant.io 1 commit to open-zwave ") @@ -2017,9 +2334,15 @@ This page contains a list of people who have contributed in one way or another t - [chrysn (@chrysn)](https://github.com/chrysn "65 total commits to the Home Assistant orga: 65 commits to libcoap ") +- [Chuang Zheng (@frogkind)](https://github.com/frogkind "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [Chun\-wei Kuo (@Domon)](https://github.com/Domon "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [cHunter789 (@cHunter789)](https://github.com/cHunter789 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [chz^3 (@chzchzchz)](https://github.com/chzchzchz "1 total commits to the Home Assistant orga: 1 commit to pi-gen ") @@ -2039,9 +2362,18 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Claudio Barca (@clabnet)](https://github.com/clabnet "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Claudio Heckler (@heckler)](https://github.com/heckler "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +") - [Claudiu Farcas (@farcasclaudiu)](https://github.com/farcasclaudiu "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [claughinghouse (@claughinghouse)](https://github.com/claughinghouse "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io +") - [Claus F\. Strasburger (@cfstras)](https://github.com/cfstras "5 total commits to the Home Assistant orga: 5 commits to pi-gen ") @@ -2059,10 +2391,10 @@ This page contains a list of people who have contributed in one way or another t 2 commits to open-zwave 1 commit to home-assistant ") -- [Clifford W\. Hansen (@cliffordwhansen)](https://github.com/cliffordwhansen "7 total commits to the Home Assistant orga: +- [Clifford W\. Hansen (@cliffordwhansen)](https://github.com/cliffordwhansen "10 total commits to the Home Assistant orga: +4 commits to home-assistant +3 commits to home-assistant.io 2 commits to appdaemon -2 commits to home-assistant -2 commits to home-assistant.io 1 commit to developers.home-assistant ") - [clyra (@clyra)](https://github.com/clyra "3 total commits to the Home Assistant orga: @@ -2080,11 +2412,12 @@ This page contains a list of people who have contributed in one way or another t - [Codepadawan (@Codepadawan)](https://github.com/Codepadawan "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [cogneato (@cogneato)](https://github.com/cogneato "34 total commits to the Home Assistant orga: -26 commits to home-assistant.io +- [cogneato (@cogneato)](https://github.com/cogneato "56 total commits to the Home Assistant orga: +47 commits to home-assistant.io 4 commits to developers.home-assistant 3 commits to hassos 1 commit to people +1 commit to hassio-installer ") - [Colby Rome (@cisasteelersfan)](https://github.com/cisasteelersfan "7 total commits to the Home Assistant orga: 4 commits to home-assistant @@ -2096,9 +2429,11 @@ This page contains a list of people who have contributed in one way or another t - [Colin Dunn (@colindunn)](https://github.com/colindunn "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Colin Frei (@colinfrei)](https://github.com/colinfrei "5 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [Colin Frei (@colinfrei)](https://github.com/colinfrei "8 total commits to the Home Assistant orga: +4 commits to home-assistant.io 2 commits to home-assistant +1 commit to hassio-addons +1 commit to developers.home-assistant ") - [Colin Harrington (@ColinHarrington)](https://github.com/ColinHarrington "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -2113,18 +2448,12 @@ This page contains a list of people who have contributed in one way or another t 3 commits to open-zwave 3 commits to home-assistant.io ") -- [Collin Allen (@command-tab)](https://github.com/command-tab "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io -") - [Comic Chang (@comicchang)](https://github.com/comicchang "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [ComputerCandy (@ComputerCandy)](https://github.com/ComputerCandy "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io -") -- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "17 total commits to the Home Assistant orga: -9 commits to home-assistant -5 commits to home-assistant.io +- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "19 total commits to the Home Assistant orga: +10 commits to home-assistant +6 commits to home-assistant.io 2 commits to home-assistant-polymer 1 commit to developers.home-assistant ") @@ -2134,6 +2463,9 @@ This page contains a list of people who have contributed in one way or another t - [Constantine Poltyrev (@shprota)](https://github.com/shprota "1 total commits to the Home Assistant orga: 1 commit to appdaemon ") +- [coolguymatt (@coolguymatt)](https://github.com/coolguymatt "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Cooper Dale (@Cooper-Dale)](https://github.com/Cooper-Dale "7 total commits to the Home Assistant orga: 7 commits to home-assistant.io ") @@ -2155,6 +2487,12 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant.io 2 commits to home-assistant ") +- [corneels (@corneels)](https://github.com/corneels "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Cornelius Mund (@cornim)](https://github.com/cornim "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [corneyl (@corneyl)](https://github.com/corneyl "5 total commits to the Home Assistant orga: 4 commits to home-assistant 1 commit to home-assistant.io @@ -2162,8 +2500,12 @@ This page contains a list of people who have contributed in one way or another t - [CornierKhan1 (@caution3)](https://github.com/caution3 "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [Courtenay (@hdsheena)](https://github.com/hdsheena "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Costas (@costastf)](https://github.com/costastf "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Courtenay (@hdsheena)](https://github.com/hdsheena "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io ") - [Courtney Strachan (@cstrachan88)](https://github.com/cstrachan88 "1 total commits to the Home Assistant orga: 1 commit to open-zwave @@ -2171,13 +2513,16 @@ This page contains a list of people who have contributed in one way or another t - [cpgifford (@cpgifford)](https://github.com/cpgifford "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [cpopp (@cpopp)](https://github.com/cpopp "2 total commits to the Home Assistant orga: -1 commit to home-assistant -1 commit to home-assistant.io +- [cpopp (@cpopp)](https://github.com/cpopp "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io ") - [cpw (@cpw)](https://github.com/cpw "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [CQoute (@CQoute)](https://github.com/CQoute "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [Craig Hills (@chills42)](https://github.com/chills42 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -2192,6 +2537,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") +- [croghostrider (@croghostrider)](https://github.com/croghostrider "3 total commits to the Home Assistant orga: +3 commits to home-assistant +") - [cryptelli (@cryptelli)](https://github.com/cryptelli "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -2212,8 +2560,8 @@ This page contains a list of people who have contributed in one way or another t - [Curtis Gibby (@curtisgibby)](https://github.com/curtisgibby "1 total commits to the Home Assistant orga: 1 commit to hassio ") -- [CV (@dagobert)](https://github.com/dagobert "16 total commits to the Home Assistant orga: -12 commits to home-assistant.io +- [CV (@dagobert)](https://github.com/dagobert "17 total commits to the Home Assistant orga: +13 commits to home-assistant.io 4 commits to home-assistant ") - [cvwillegen (@cvwillegen)](https://github.com/cvwillegen "5 total commits to the Home Assistant orga: @@ -2224,8 +2572,11 @@ This page contains a list of people who have contributed in one way or another t 2 commits to open-zwave ") - [cxlwill (@cxlwill)](https://github.com/cxlwill "4 total commits to the Home Assistant orga: -2 commits to hassbian-scripts 2 commits to home-assistant-polymer +2 commits to hassbian-scripts +") +- [Cyro (@cyrosy)](https://github.com/cyrosy "4 total commits to the Home Assistant orga: +4 commits to home-assistant ") - [DaCoD (@dacod)](https://github.com/dacod "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source @@ -2233,14 +2584,14 @@ This page contains a list of people who have contributed in one way or another t - [Dale Higgs (@dale3h)](https://github.com/dale3h "45 total commits to the Home Assistant orga: 32 commits to home-assistant.io 11 commits to home-assistant -1 commit to homebridge-homeassistant 1 commit to hassbot +1 commit to homebridge-homeassistant ") - [Dallas Opelt (@DallasO)](https://github.com/DallasO "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [damarco (@damarco)](https://github.com/damarco "19 total commits to the Home Assistant orga: -19 commits to home-assistant +- [damarco (@damarco)](https://github.com/damarco "26 total commits to the Home Assistant orga: +26 commits to home-assistant ") - [Damian Nowak (@Nowaker)](https://github.com/Nowaker "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -2258,8 +2609,8 @@ This page contains a list of people who have contributed in one way or another t - [Dan Chen (@djchen)](https://github.com/djchen "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "24 total commits to the Home Assistant orga: -19 commits to home-assistant +- [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "25 total commits to the Home Assistant orga: +20 commits to home-assistant 5 commits to home-assistant.io ") - [Dan Faulknor (@danielfaulknor)](https://github.com/danielfaulknor "3 total commits to the Home Assistant orga: @@ -2289,6 +2640,9 @@ This page contains a list of people who have contributed in one way or another t - [Dan Olson (@danielolson13)](https://github.com/danielolson13 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Dan Ponte (@amigan)](https://github.com/amigan "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Dan Ports (@drkp)](https://github.com/drkp "15 total commits to the Home Assistant orga: 10 commits to open-zwave 4 commits to home-assistant @@ -2331,8 +2685,8 @@ This page contains a list of people who have contributed in one way or another t - [Daniel (@danimtb)](https://github.com/danimtb "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Daniel Beyer (@ymc-dabe)](https://github.com/ymc-dabe "5 total commits to the Home Assistant orga: -5 commits to dehydrated +- [Daniel Anner (@danner26)](https://github.com/danner26 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Daniel Bowman (@vrih)](https://github.com/vrih "5 total commits to the Home Assistant orga: 4 commits to home-assistant @@ -2348,9 +2702,9 @@ This page contains a list of people who have contributed in one way or another t - [Daniel Escoz (@Darkhogg)](https://github.com/Darkhogg "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "441 total commits to the Home Assistant orga: -307 commits to home-assistant -130 commits to home-assistant.io +- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "480 total commits to the Home Assistant orga: +345 commits to home-assistant +131 commits to home-assistant.io 3 commits to home-assistant-polymer 1 commit to people ") @@ -2358,10 +2712,15 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Daniel Lando (@robertsLando)](https://github.com/robertsLando "14 total commits to the Home Assistant orga: +- [Daniel Kucera (@danielkucera)](https://github.com/danielkucera "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Daniel Lando (@robertsLando)](https://github.com/robertsLando "15 total commits to the Home Assistant orga: 14 commits to open-zwave +1 commit to home-assistant.io ") -- [Daniel Lashua (@dlashua)](https://github.com/dlashua "3 total commits to the Home Assistant orga: +- [Daniel Lashua (@dlashua)](https://github.com/dlashua "125 total commits to the Home Assistant orga: +122 commits to appdaemon 2 commits to home-assistant.io 1 commit to home-assistant ") @@ -2369,10 +2728,10 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "128 total commits to the Home Assistant orga: -68 commits to home-assistant +- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "135 total commits to the Home Assistant orga: +74 commits to home-assistant 48 commits to home-assistant.io -11 commits to hassio-addons +12 commits to hassio-addons 1 commit to people ") - [Daniel Peukert (@dpeukert)](https://github.com/dpeukert "3 total commits to the Home Assistant orga: @@ -2385,9 +2744,12 @@ This page contains a list of people who have contributed in one way or another t - [Daniel Schaal (@schaal)](https://github.com/schaal "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Daniel Shokouhi (@dshokouhi)](https://github.com/dshokouhi "61 total commits to the Home Assistant orga: -33 commits to home-assistant -28 commits to home-assistant.io +- [Daniel Shokouhi (@dshokouhi)](https://github.com/dshokouhi "81 total commits to the Home Assistant orga: +42 commits to home-assistant +39 commits to home-assistant.io +") +- [Daniel Stockhausen (@daniel-stockhausen)](https://github.com/daniel-stockhausen "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Daniel Stone (@daniel-stoneuk)](https://github.com/daniel-stoneuk "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -2418,10 +2780,10 @@ This page contains a list of people who have contributed in one way or another t - [Danijel Stojnic (@danijelst)](https://github.com/danijelst "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Daniyar Yeralin (@yeralin)](https://github.com/yeralin "4 total commits to the Home Assistant orga: +- [Daniyar Yeralin (@yeralin)](https://github.com/yeralin "6 total commits to the Home Assistant orga: +3 commits to home-assistant 2 commits to home-assistant.io 1 commit to homebridge-homeassistant -1 commit to home-assistant ") - [Daniël van de Giessen (@DvdGiessen)](https://github.com/DvdGiessen "2 total commits to the Home Assistant orga: 2 commits to open-zwave @@ -2435,6 +2797,9 @@ This page contains a list of people who have contributed in one way or another t - [DannyHg (@DannyHg)](https://github.com/DannyHg "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") +- [danu5 (@danu5)](https://github.com/danu5 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [daphatty (@daphatty)](https://github.com/daphatty "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -2464,6 +2829,12 @@ This page contains a list of people who have contributed in one way or another t - [Darío Hereñú (@kant)](https://github.com/kant "1 total commits to the Home Assistant orga: 1 commit to gu-who ") +- [dasadi (@dasadi)](https://github.com/dasadi "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [Dash Winterson (@dashdanw)](https://github.com/dashdanw "1 total commits to the Home Assistant orga: +1 commit to hassbian-scripts +") - [dasos (@dasos)](https://github.com/dasos "11 total commits to the Home Assistant orga: 7 commits to home-assistant 3 commits to home-assistant.io @@ -2502,6 +2873,10 @@ This page contains a list of people who have contributed in one way or another t - [Dave J (@kxtcd950)](https://github.com/kxtcd950 "3 total commits to the Home Assistant orga: 3 commits to hassbian-scripts ") +- [Dave T (@davet2001)](https://github.com/davet2001 "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") - [DAVe3283 (@DAVe3283)](https://github.com/DAVe3283 "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") @@ -2517,27 +2892,33 @@ This page contains a list of people who have contributed in one way or another t - [David (@dschoorisse)](https://github.com/dschoorisse "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [David (@DaveCo1701)](https://github.com/DaveCo1701 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [David Barnett (@dbarnett)](https://github.com/dbarnett "50 total commits to the Home Assistant orga: 50 commits to open-zwave ") -- [David Barrera (@davidbb)](https://github.com/davidbb "2 total commits to the Home Assistant orga: -1 commit to home-assistant +- [David Barrera (@davidbb)](https://github.com/davidbb "3 total commits to the Home Assistant orga: +2 commits to home-assistant 1 commit to home-assistant.io ") - [David Baumann (@daBONDi)](https://github.com/daBONDi "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") -- [David Beitey (@davidjb)](https://github.com/davidjb "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [David Beitey (@davidjb)](https://github.com/davidjb "10 total commits to the Home Assistant orga: +6 commits to home-assistant.io +2 commits to developers.home-assistant +1 commit to example-custom-config +1 commit to .github ") - [David Bilay (@dYalib)](https://github.com/dYalib "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") -- [David Bonnes (@zxdavb)](https://github.com/zxdavb "15 total commits to the Home Assistant orga: -12 commits to home-assistant.io -3 commits to home-assistant +- [David Bonnes (@zxdavb)](https://github.com/zxdavb "96 total commits to the Home Assistant orga: +71 commits to home-assistant +25 commits to home-assistant.io ") - [David Broadfoot (@dlbroadfoot)](https://github.com/dlbroadfoot "6 total commits to the Home Assistant orga: 5 commits to home-assistant @@ -2554,15 +2935,16 @@ This page contains a list of people who have contributed in one way or another t 1 commit to developers.home-assistant 1 commit to home-assistant ") -- [David Earl (@davidearl)](https://github.com/davidearl "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [David Edmondson (@dme)](https://github.com/dme "1 total commits to the Home Assistant orga: 1 commit to feedparser ") -- [David F\. Mulcahey (@dmulcahey)](https://github.com/dmulcahey "92 total commits to the Home Assistant orga: -75 commits to home-assistant -15 commits to home-assistant-polymer +- [David Edmundson (@davidedmundson)](https://github.com/davidedmundson "7 total commits to the Home Assistant orga: +4 commits to home-assistant +3 commits to home-assistant.io +") +- [David F\. Mulcahey (@dmulcahey)](https://github.com/dmulcahey "172 total commits to the Home Assistant orga: +150 commits to home-assistant +20 commits to home-assistant-polymer 1 commit to people 1 commit to home-assistant.io ") @@ -2580,8 +2962,8 @@ This page contains a list of people who have contributed in one way or another t - [David Jackson (@David-Jackson)](https://github.com/David-Jackson "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [David K (@neffs)](https://github.com/neffs "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [David K (@neffs)](https://github.com/neffs "2 total commits to the Home Assistant orga: +2 commits to home-assistant ") - [David Lie (@davidlie)](https://github.com/davidlie "3 total commits to the Home Assistant orga: 3 commits to home-assistant @@ -2590,8 +2972,8 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [David McNett (@nugget)](https://github.com/nugget "13 total commits to the Home Assistant orga: -7 commits to home-assistant +- [David McNett (@nugget)](https://github.com/nugget "14 total commits to the Home Assistant orga: +8 commits to home-assistant 5 commits to home-assistant.io 1 commit to hassio ") @@ -2602,6 +2984,14 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [David Radcliffe (@dwradcliffe)](https://github.com/dwradcliffe "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to home-assistant +") +- [David Roberts (@drobtravels)](https://github.com/drobtravels "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [David Ryan (@ptcryan)](https://github.com/ptcryan "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -2632,6 +3022,9 @@ This page contains a list of people who have contributed in one way or another t - [David Wang (@dcwangmit01)](https://github.com/dcwangmit01 "2 total commits to the Home Assistant orga: 2 commits to pi-gen ") +- [David Winn (@qypea)](https://github.com/qypea "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [David Woodhouse (@dwmw2)](https://github.com/dwmw2 "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") @@ -2639,6 +3032,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to hassio-build 1 commit to home-assistant ") +- [david81 (@david81)](https://github.com/david81 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [David\-Leon Pohl (@DavidLP)](https://github.com/DavidLP "15 total commits to the Home Assistant orga: 13 commits to home-assistant 2 commits to home-assistant.io @@ -2646,9 +3042,8 @@ This page contains a list of people who have contributed in one way or another t - [Davide Setti (@vad)](https://github.com/vad "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [davidedmundson (@davidedmundson)](https://github.com/davidedmundson "7 total commits to the Home Assistant orga: -4 commits to home-assistant -3 commits to home-assistant.io +- [Davide Varricchio (@bannhead)](https://github.com/bannhead "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [DavidFW1960 (@DavidFW1960)](https://github.com/DavidFW1960 "5 total commits to the Home Assistant orga: 5 commits to home-assistant.io @@ -2663,8 +3058,11 @@ This page contains a list of people who have contributed in one way or another t - [dayofdoom (@dayofdoom)](https://github.com/dayofdoom "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [dbrowndan (@dbrowndan)](https://github.com/dbrowndan "3 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [DBCL (@DB-CL)](https://github.com/DB-CL "2 total commits to the Home Assistant orga: +2 commits to home-assistant-polymer +") +- [dbrowndan (@dbrowndan)](https://github.com/dbrowndan "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [Dean (@FreekingDean)](https://github.com/FreekingDean "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -2673,12 +3071,8 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 2 commits to home-assistant.io ") -- [definitio (@definitio)](https://github.com/definitio "4 total commits to the Home Assistant orga: -2 commits to home-assistant -2 commits to home-assistant.io -") -- [deftdawg (@deftdawg)](https://github.com/deftdawg "18 total commits to the Home Assistant orga: -14 commits to home-assistant +- [definitio (@definitio)](https://github.com/definitio "9 total commits to the Home Assistant orga: +5 commits to home-assistant 4 commits to home-assistant.io ") - [deisi (@deisi)](https://github.com/deisi "12 total commits to the Home Assistant orga: @@ -2719,6 +3113,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to netdisco ") +- [Dennis Keitzel (@cybe)](https://github.com/cybe "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Dennis Modig (@techdude200)](https://github.com/techdude200 "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") @@ -2731,9 +3128,21 @@ This page contains a list of people who have contributed in one way or another t - [Denver P (@DrTexx)](https://github.com/DrTexx "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [denverpilot (@denverpilot)](https://github.com/denverpilot "1 total commits to the Home Assistant orga: +1 commit to hassio-addons +") - [Department G33k (@department-g33k)](https://github.com/department-g33k "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [dependabot\-preview\[bot\] (@dependabot-preview[bot])](https://github.com/dependabot-preview[bot] "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io +") +- [dependabot\[bot\] (@dependabot[bot])](https://github.com/dependabot[bot] "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [derandiunddasbo (@derandiunddasbo)](https://github.com/derandiunddasbo "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Derek (@itchaboy)](https://github.com/itchaboy "6 total commits to the Home Assistant orga: 5 commits to home-assistant.io 1 commit to home-assistant @@ -2750,8 +3159,8 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant 1 commit to home-assistant-polymer ") -- [Destix (@Destix)](https://github.com/Destix "3 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [Destix (@Destix)](https://github.com/Destix "6 total commits to the Home Assistant orga: +6 commits to home-assistant.io ") - [DetroitEE (@DetroitEE)](https://github.com/DetroitEE "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io @@ -2761,15 +3170,24 @@ This page contains a list of people who have contributed in one way or another t 5 commits to home-assistant 4 commits to homebridge-homeassistant ") +- [Developer Jaimyn (@jabelone)](https://github.com/jabelone "1 total commits to the Home Assistant orga: +1 commit to hassbian-scripts +") - [DeviantEng (@DeviantEng)](https://github.com/DeviantEng "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") +- [DeviousPenguin (@DeviousPenguin)](https://github.com/DeviousPenguin "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [devnill (@devnill)](https://github.com/devnill "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Devon Peet (@dpeet)](https://github.com/dpeet "5 total commits to the Home Assistant orga: 5 commits to home-assistant.io ") +- [dewi\-ny\-je (@dewi-ny-je)](https://github.com/dewi-ny-je "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [dfournie (@dfournie)](https://github.com/dfournie "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -2782,6 +3200,12 @@ This page contains a list of people who have contributed in one way or another t - [dickesW (@dickesW)](https://github.com/dickesW "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Diefferson Koderer Môro (@djpremier)](https://github.com/djpremier "79 total commits to the Home Assistant orga: +79 commits to home-assistant +") +- [dieselrabbit (@dieselrabbit)](https://github.com/dieselrabbit "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [digiblur (@digiblur)](https://github.com/digiblur "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -2793,6 +3217,10 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant.io 2 commits to home-assistant ") +- [Dima Zavin (@thecynic)](https://github.com/thecynic "7 total commits to the Home Assistant orga: +6 commits to home-assistant +1 commit to home-assistant.io +") - [Dimitri Pribysh (@dmand)](https://github.com/dmand "1 total commits to the Home Assistant orga: 1 commit to hassos ") @@ -2805,8 +3233,8 @@ This page contains a list of people who have contributed in one way or another t - [Diogo Alves (@killercode)](https://github.com/killercode "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") -- [Diogo Gomes (@dgomes)](https://github.com/dgomes "122 total commits to the Home Assistant orga: -85 commits to home-assistant +- [Diogo Gomes (@dgomes)](https://github.com/dgomes "126 total commits to the Home Assistant orga: +89 commits to home-assistant 33 commits to home-assistant.io 2 commits to developers.home-assistant 1 commit to home-assistant-polymer @@ -2830,6 +3258,9 @@ This page contains a list of people who have contributed in one way or another t - [DK (@poldim)](https://github.com/poldim "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [DKAutomater (@DKAutomater)](https://github.com/DKAutomater "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Dmitriy (@marcellus00)](https://github.com/marcellus00 "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -2849,8 +3280,9 @@ This page contains a list of people who have contributed in one way or another t - [dnaphreak (@dnaphreak)](https://github.com/dnaphreak "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [dnguyen800 (@dnguyen800)](https://github.com/dnguyen800 "7 total commits to the Home Assistant orga: -7 commits to home-assistant.io +- [dnguyen800 (@dnguyen800)](https://github.com/dnguyen800 "12 total commits to the Home Assistant orga: +10 commits to home-assistant.io +2 commits to hassio-addons ") - [DoctorIOT (@DoctorIOT)](https://github.com/DoctorIOT "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -2866,14 +3298,11 @@ This page contains a list of people who have contributed in one way or another t - [Domantas Mauruča (@Dohxis)](https://github.com/Dohxis "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") -- [Domen Puncer Kugler (@domenpk)](https://github.com/domenpk "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") -- [Dominik Heidler (@asdil12)](https://github.com/asdil12 "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [domier (@domier)](https://github.com/domier "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") -- [Dominik Palo (@DominikPalo)](https://github.com/DominikPalo "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Dominik Palo (@DominikPalo)](https://github.com/DominikPalo "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io ") - [Donal Phipps (@Phippsy)](https://github.com/Phippsy "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -2881,68 +3310,83 @@ This page contains a list of people who have contributed in one way or another t - [DonHugo (@DonHugo)](https://github.com/DonHugo "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [doudz (@doudz)](https://github.com/doudz "6 total commits to the Home Assistant orga: -5 commits to home-assistant -1 commit to home-assistant.io +- [doogstar (@doogstar)](https://github.com/doogstar "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant ") - [Doug (@douglasbeck)](https://github.com/douglasbeck "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") -- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "9 total commits to the Home Assistant orga: +- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "10 total commits to the Home Assistant orga: 5 commits to home-assistant -2 commits to home-assistant.io +3 commits to home-assistant.io 1 commit to appdaemon 1 commit to hassio-addons ") +- [Douglas Paz (@douglasppaz)](https://github.com/douglasppaz "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [dpressle (@dpressle)](https://github.com/dpressle "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") - [dpryor (@dpryor)](https://github.com/dpryor "3 total commits to the Home Assistant orga: 3 commits to open-zwave ") +- [Drake Loud (@drakeloud)](https://github.com/drakeloud "2 total commits to the Home Assistant orga: +2 commits to home-assistant-polymer +") - [dramamoose (@dramamoose)](https://github.com/dramamoose "7 total commits to the Home Assistant orga: 4 commits to home-assistant 3 commits to home-assistant.io ") +- [dreed47 (@dreed47)](https://github.com/dreed47 "9 total commits to the Home Assistant orga: +8 commits to home-assistant +1 commit to developers.home-assistant +") - [dreizehnelf (@dreizehnelf)](https://github.com/dreizehnelf "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [Drew Budwin (@dbudwin)](https://github.com/dbudwin "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Drew Skwiers\-Koballa (@dzsquared)](https://github.com/dzsquared "8 total commits to the Home Assistant orga: +8 commits to home-assistant.io +") - [Drew Wells (@drewwells)](https://github.com/drewwells "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [DrewSK (@dzsquared)](https://github.com/dzsquared "8 total commits to the Home Assistant orga: -8 commits to home-assistant.io -") -- [Dries De Peuter (@NoUseFreak)](https://github.com/NoUseFreak "1 total commits to the Home Assistant orga: +- [Dries De Peuter (@NoUseFreak)](https://github.com/NoUseFreak "4 total commits to the Home Assistant orga: +3 commits to home-assistant 1 commit to home-assistant.io ") -- [drjared88 (@drjared88)](https://github.com/drjared88 "3 total commits to the Home Assistant orga: -2 commits to home-assistant +- [drjared88 (@drjared88)](https://github.com/drjared88 "5 total commits to the Home Assistant orga: +4 commits to home-assistant 1 commit to home-assistant.io ") -- [DrJeff (@DrJeff)](https://github.com/DrJeff "1 total commits to the Home Assistant orga: -1 commit to home-assistant-cli +- [DrJeff (@DrJeff)](https://github.com/DrJeff "2 total commits to the Home Assistant orga: +2 commits to home-assistant-cli ") - [drogfild (@drogfild)](https://github.com/drogfild "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [droopanu (@droopanu)](https://github.com/droopanu "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [drop table USERS; \-\- (@hudashot)](https://github.com/hudashot "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [DrZzs (@Snipercaine)](https://github.com/Snipercaine "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [dtorner (@dtorner)](https://github.com/dtorner "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [dtorner (@dtorner)](https://github.com/dtorner "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") -- [DubhAd (@DubhAd)](https://github.com/DubhAd "569 total commits to the Home Assistant orga: -562 commits to home-assistant.io +- [DubhAd (@DubhAd)](https://github.com/DubhAd "630 total commits to the Home Assistant orga: +621 commits to home-assistant.io 3 commits to developers.home-assistant 2 commits to hassos 1 commit to appdaemon +1 commit to people +1 commit to alerts.home-assistant.io 1 commit to home-assistant ") - [Duncan Leo (@duncanleo)](https://github.com/duncanleo "1 total commits to the Home Assistant orga: @@ -2955,7 +3399,12 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant.io 5 commits to home-assistant ") -- [Dustin Rue (@dustinrue)](https://github.com/dustinrue "1 total commits to the Home Assistant orga: +- [Dustin Essington (@aetaric)](https://github.com/aetaric "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") +- [Dustin Rue (@dustinrue)](https://github.com/dustinrue "2 total commits to the Home Assistant orga: +1 commit to developers.home-assistant 1 commit to home-assistant.io ") - [Dustin S (@texnofobix)](https://github.com/texnofobix "1 total commits to the Home Assistant orga: @@ -2968,6 +3417,12 @@ This page contains a list of people who have contributed in one way or another t - [Dwight Holman (@anonfunc)](https://github.com/anonfunc "6 total commits to the Home Assistant orga: 6 commits to pyharmony ") +- [dwinnnspeaks (@dwinnnspeaks)](https://github.com/dwinnnspeaks "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Dylan (@DSAutomations)](https://github.com/DSAutomations "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Dylan Barlett (@dbarlett)](https://github.com/dbarlett "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -2977,6 +3432,9 @@ This page contains a list of people who have contributed in one way or another t - [earaya (@earaya)](https://github.com/earaya "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [eBoon123 (@eBoon123)](https://github.com/eBoon123 "6 total commits to the Home Assistant orga: +6 commits to appdaemon +") - [ebpetway (@ebpetway)](https://github.com/ebpetway "55 total commits to the Home Assistant orga: 55 commits to warrant ") @@ -2991,15 +3449,21 @@ This page contains a list of people who have contributed in one way or another t 1 commit to open-zwave 1 commit to home-assistant ") +- [Edgardo Ramírez (@SoldierCorp)](https://github.com/SoldierCorp "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [edgimar (@edgimar)](https://github.com/edgimar "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [edif30 (@edif30)](https://github.com/edif30 "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") -- [Eduard van Valkenburg (@eavanvalkenburg)](https://github.com/eavanvalkenburg "8 total commits to the Home Assistant orga: -4 commits to home-assistant -3 commits to home-assistant.io +- [Edu\_Coder (@jptrsn)](https://github.com/jptrsn "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Eduard van Valkenburg (@eavanvalkenburg)](https://github.com/eavanvalkenburg "11 total commits to the Home Assistant orga: +5 commits to home-assistant +5 commits to home-assistant.io 1 commit to developers.home-assistant ") - [Eduardo Fonseca (@ebfio)](https://github.com/ebfio "1 total commits to the Home Assistant orga: @@ -3021,18 +3485,18 @@ This page contains a list of people who have contributed in one way or another t - [efp1 (@efp1)](https://github.com/efp1 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [EgonMarmol (@EgonMarmol)](https://github.com/EgonMarmol "6 total commits to the Home Assistant orga: +6 commits to home-assistant.io +") - [Egor Tsinko (@etsinko)](https://github.com/etsinko "12 total commits to the Home Assistant orga: 9 commits to home-assistant 3 commits to home-assistant.io ") -- [ehendrix23 (@ehendrix23)](https://github.com/ehendrix23 "41 total commits to the Home Assistant orga: -34 commits to home-assistant +- [ehendrix23 (@ehendrix23)](https://github.com/ehendrix23 "46 total commits to the Home Assistant orga: +39 commits to home-assistant 5 commits to home-assistant.io -1 commit to home-assistant-polymer 1 commit to pyharmony -") -- [eiaro (@eiaro)](https://github.com/eiaro "4 total commits to the Home Assistant orga: -4 commits to home-assistant +1 commit to home-assistant-polymer ") - [eieste (@eieste)](https://github.com/eieste "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -3040,6 +3504,12 @@ This page contains a list of people who have contributed in one way or another t - [Eirik H (@eithe)](https://github.com/eithe "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Eirik Z (@atxbyea)](https://github.com/atxbyea "11 total commits to the Home Assistant orga: +11 commits to home-assistant.io +") +- [Eiríkur Haraldsson (@eiki25)](https://github.com/eiki25 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Eitan Mosenkis (@emosenkis)](https://github.com/emosenkis "6 total commits to the Home Assistant orga: 3 commits to home-assistant 2 commits to home-assistant.io @@ -3048,15 +3518,15 @@ This page contains a list of people who have contributed in one way or another t - [ejars (@ejars)](https://github.com/ejars "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Elan Ruusamäe (@glensc)](https://github.com/glensc "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [ejaviga (@ejaviga)](https://github.com/ejaviga "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [eldanb (@eldanb)](https://github.com/eldanb "1 total commits to the Home Assistant orga: 1 commit to homebridge-homeassistant ") - [Eleftherios Chamakiotis (@lexam79)](https://github.com/lexam79 "4 total commits to the Home Assistant orga: -2 commits to home-assistant.io 2 commits to home-assistant +2 commits to home-assistant.io ") - [Elelabs\-maintainer (@Elelabs-maintainer)](https://github.com/Elelabs-maintainer "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -3068,15 +3538,15 @@ This page contains a list of people who have contributed in one way or another t 5 commits to home-assistant 2 commits to home-assistant.io ") -- [Eliseo Martelli (@eliseomartelli)](https://github.com/eliseomartelli "26 total commits to the Home Assistant orga: -19 commits to home-assistant -7 commits to home-assistant.io +- [Eliseo Martelli (@eliseomartelli)](https://github.com/eliseomartelli "30 total commits to the Home Assistant orga: +22 commits to home-assistant +8 commits to home-assistant.io ") - [Ellis Percival (@flyte)](https://github.com/flyte "31 total commits to the Home Assistant orga: 25 commits to home-assistant 6 commits to home-assistant.io ") -- [mvjt (@mvjt)](https://github.com/mvjt "1 total commits to the Home Assistant orga: +- [eltoro81 (@mvjt)](https://github.com/mvjt "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Elvis (@mu3)](https://github.com/mu3 "1 total commits to the Home Assistant orga: @@ -3085,8 +3555,11 @@ This page contains a list of people who have contributed in one way or another t - [elyesa (@ssl)](https://github.com/ssl "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [Emacee (@Emacee)](https://github.com/Emacee "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Em (@esciara)](https://github.com/esciara "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") +- [Emacee (@Emacee)](https://github.com/Emacee "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io ") - [Emanuele (@ema987)](https://github.com/ema987 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -3104,6 +3577,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") +- [Emil Nilsson (@voxic)](https://github.com/voxic "6 total commits to the Home Assistant orga: +6 commits to home-assistant.io +") - [Emil Stjerneman (@bratanon)](https://github.com/bratanon "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant-polymer @@ -3111,6 +3587,13 @@ This page contains a list of people who have contributed in one way or another t - [emil\-e (@emil-e)](https://github.com/emil-e "1 total commits to the Home Assistant orga: 1 commit to python-openzwave ") +- [emilgil (@emilgil)](https://github.com/emilgil "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Emilv2 (@Emilv2)](https://github.com/Emilv2 "4 total commits to the Home Assistant orga: +3 commits to home-assistant +1 commit to home-assistant.io +") - [Emily Cassandra Meeker (@ecmeeker)](https://github.com/ecmeeker "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -3136,16 +3619,14 @@ This page contains a list of people who have contributed in one way or another t - [Emre Saglam (@emresaglam)](https://github.com/emresaglam "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [endor (@endor-force)](https://github.com/endor-force "17 total commits to the Home Assistant orga: -8 commits to home-assistant.io +- [endor (@endor-force)](https://github.com/endor-force "19 total commits to the Home Assistant orga: +9 commits to home-assistant.io 5 commits to hassio-addons -3 commits to home-assistant +4 commits to home-assistant 1 commit to hassio-build ") -- [engrbm87 (@engrbm87)](https://github.com/engrbm87 "7 total commits to the Home Assistant orga: -3 commits to appdaemon -3 commits to home-assistant -1 commit to home-assistant.io +- [Enrico Battistella (@battistaar)](https://github.com/battistaar "1 total commits to the Home Assistant orga: +1 commit to homebridge-homeassistant ") - [Enrico Berndt (@treehoof)](https://github.com/treehoof "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -3160,9 +3641,6 @@ This page contains a list of people who have contributed in one way or another t - [eracknaphobia (@eracknaphobia)](https://github.com/eracknaphobia "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [erdgeist (@erdgeist)](https://github.com/erdgeist "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [eresonance (@eresonance)](https://github.com/eresonance "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -3177,6 +3655,9 @@ This page contains a list of people who have contributed in one way or another t - [Eric Harris (@ericmharris)](https://github.com/ericmharris "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Eric Hiller (@erichiller)](https://github.com/erichiller "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Eric Hosford (@HosfordDotMe)](https://github.com/HosfordDotMe "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -3186,6 +3667,9 @@ This page contains a list of people who have contributed in one way or another t - [Eric Jansen (@ej81)](https://github.com/ej81 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Eric Miller (@ericmiller777)](https://github.com/ericmiller777 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Eric Nagley (@marchingphoenix)](https://github.com/marchingphoenix "18 total commits to the Home Assistant orga: 15 commits to home-assistant 3 commits to home-assistant.io @@ -3209,22 +3693,23 @@ This page contains a list of people who have contributed in one way or another t - [Erik Bent (@erikbent)](https://github.com/erikbent "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "125 total commits to the Home Assistant orga: -108 commits to home-assistant +- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "126 total commits to the Home Assistant orga: +109 commits to home-assistant 14 commits to home-assistant.io 3 commits to netdisco ") - [Erik Gustavsson (@cyr123)](https://github.com/cyr123 "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") -- [Erik Montnemery (@emontnemery)](https://github.com/emontnemery "188 total commits to the Home Assistant orga: -147 commits to home-assistant -39 commits to home-assistant.io -1 commit to developers.home-assistant +- [Erik Montnemery (@emontnemery)](https://github.com/emontnemery "312 total commits to the Home Assistant orga: +243 commits to home-assistant +55 commits to home-assistant.io +12 commits to home-assistant-polymer 1 commit to people +1 commit to developers.home-assistant ") -- [Erik\-jan Riemers (@riemers)](https://github.com/riemers "16 total commits to the Home Assistant orga: -15 commits to home-assistant.io +- [Erik\-jan Riemers (@riemers)](https://github.com/riemers "17 total commits to the Home Assistant orga: +16 commits to home-assistant.io 1 commit to hassbian-scripts ") - [ErikS (@dmonizer)](https://github.com/dmonizer "1 total commits to the Home Assistant orga: @@ -3233,25 +3718,37 @@ This page contains a list of people who have contributed in one way or another t - [erizhang (@erizhang)](https://github.com/erizhang "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [erlendmoland (@erlendmoland)](https://github.com/erlendmoland "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io +") +- [Ermanno Baschiera (@ebaschiera)](https://github.com/ebaschiera "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Ernest W\. Durbin III (@ewdurbin)](https://github.com/ewdurbin "2 total commits to the Home Assistant orga: 2 commits to 1password-teams-open-source ") -- [Ernst79 (@Ernst79)](https://github.com/Ernst79 "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Ernst Klamer (@Ernst79)](https://github.com/Ernst79 "5 total commits to the Home Assistant orga: +3 commits to home-assistant.io +1 commit to developers.home-assistant +1 commit to home-assistant ") - [ErnstEeldert (@ErnstEeldert)](https://github.com/ErnstEeldert "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [escoand (@escoand)](https://github.com/escoand "15 total commits to the Home Assistant orga: -9 commits to home-assistant +- [Esben Damgaard (@Ebbe)](https://github.com/Ebbe "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") +- [escoand (@escoand)](https://github.com/escoand "23 total commits to the Home Assistant orga: +16 commits to home-assistant +4 commits to home-assistant.io 3 commits to netdisco -3 commits to home-assistant.io ") - [EspenT (@EspenT)](https://github.com/EspenT "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [etheralm (@etheralm)](https://github.com/etheralm "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [etheralm (@etheralm)](https://github.com/etheralm "5 total commits to the Home Assistant orga: +3 commits to home-assistant +2 commits to home-assistant.io ") - [Ettienne Gous (@ettiennegous)](https://github.com/ettiennegous "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -3276,16 +3773,16 @@ This page contains a list of people who have contributed in one way or another t - [Eugenio Panadero (@azogue)](https://github.com/azogue "78 total commits to the Home Assistant orga: 46 commits to home-assistant 25 commits to home-assistant.io -3 commits to homebridge-homeassistant 3 commits to home-assistant-polymer +3 commits to homebridge-homeassistant 1 commit to people ") -- [Evan Bruhn (@evanjd)](https://github.com/evanjd "4 total commits to the Home Assistant orga: -3 commits to home-assistant -1 commit to home-assistant.io +- [Evan Bruhn (@evanjd)](https://github.com/evanjd "11 total commits to the Home Assistant orga: +8 commits to home-assistant +3 commits to home-assistant.io ") -- [Evan Morse (@RowdyDog12)](https://github.com/RowdyDog12 "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Evan Morse (@RowdyDog12)](https://github.com/RowdyDog12 "5 total commits to the Home Assistant orga: +5 commits to home-assistant.io ") - [everix1992 (@everix1992)](https://github.com/everix1992 "4 total commits to the Home Assistant orga: 2 commits to pyharmony @@ -3308,32 +3805,36 @@ This page contains a list of people who have contributed in one way or another t - [eXtgmA (@eXtgmA)](https://github.com/eXtgmA "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [eyager1 (@eyager1)](https://github.com/eyager1 "1 total commits to the Home Assistant orga: +- [eyager1 (@eyager1)](https://github.com/eyager1 "7 total commits to the Home Assistant orga: +3 commits to home-assistant +3 commits to home-assistant.io 1 commit to home-assistant-polymer ") - [Ezra Bowden (@bn0)](https://github.com/bn0 "2 total commits to the Home Assistant orga: 2 commits to warrant ") -- [Fabian Affolter (@fabaff)](https://github.com/fabaff "5487 total commits to the Home Assistant orga: -3301 commits to home-assistant.io -1897 commits to home-assistant -91 commits to home-assistant-cli -43 commits to developers.home-assistant -36 commits to home-assistant-notebooks +- [Fabian Affolter (@fabaff)](https://github.com/fabaff "5728 total commits to the Home Assistant orga: +3340 commits to home-assistant.io +2003 commits to home-assistant +163 commits to home-assistant-cli +53 commits to developers.home-assistant +39 commits to home-assistant-notebooks 33 commits to home-assistant-assets 18 commits to organization-internal 12 commits to hassio-build +12 commits to data.home-assistant 11 commits to home-assistant-polymer 11 commits to netdisco +7 commits to hass-release 7 commits to hassos -6 commits to hassio-addons 6 commits to hassio -6 commits to hass-release -4 commits to data.home-assistant +6 commits to hassio-addons 2 commits to home-assistant-iOS 1 commit to home-assistant-js-websocket -1 commit to example-custom-config +1 commit to appdaemon 1 commit to ui-schema +1 commit to example-custom-config +1 commit to home-assistant-android ") - [Fabian Fischer (@nodomain)](https://github.com/nodomain "1 total commits to the Home Assistant orga: 1 commit to hassio-addons @@ -3341,13 +3842,19 @@ This page contains a list of people who have contributed in one way or another t - [Fabian Heredia Montiel (@fabianhjr)](https://github.com/fabianhjr "4 total commits to the Home Assistant orga: 4 commits to home-assistant ") +- [Fabian Hirschmann (@fhirschmann)](https://github.com/fhirschmann "1 total commits to the Home Assistant orga: +1 commit to appdaemon +") +- [Fabian Rodriguez (@MagicFab)](https://github.com/MagicFab "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [Fabien Piuzzi (@reefab)](https://github.com/reefab "13 total commits to the Home Assistant orga: 8 commits to home-assistant 4 commits to home-assistant.io 1 commit to home-assistant-polymer ") -- [Fabrice Fontaine (@ffontaine)](https://github.com/ffontaine "7 total commits to the Home Assistant orga: -7 commits to open-zwave +- [Fabio Fantoni (@Fantu)](https://github.com/Fantu "1 total commits to the Home Assistant orga: +1 commit to hassos ") - [Fabrizio Furnari (@fabfurnari)](https://github.com/fabfurnari "5 total commits to the Home Assistant orga: 3 commits to home-assistant.io @@ -3364,28 +3871,39 @@ This page contains a list of people who have contributed in one way or another t - [Fares Rihani (@anchepiece)](https://github.com/anchepiece "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [farmio (@farmio)](https://github.com/farmio "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Farid (@ooii)](https://github.com/ooii "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io ") - [Farzad Noorian (@fnoorian)](https://github.com/fnoorian "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Federico Ariel Castagnini (@facastagnini)](https://github.com/facastagnini "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Federico Leoni (@effelle)](https://github.com/effelle "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Federico Zivolo (@FezVrasta)](https://github.com/FezVrasta "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant ") -- [augustdipierro (@augustdipierro)](https://github.com/augustdipierro "3 total commits to the Home Assistant orga: +- [fedor1210 (@augustdipierro)](https://github.com/augustdipierro "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") - [Felipe Cypriano (@fcy)](https://github.com/fcy "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Felix (@xifle)](https://github.com/xifle "2 total commits to the Home Assistant orga: -2 commits to home-assistant +- [Felipe Martins Diel (@felipediel)](https://github.com/felipediel "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [Felix Breidenstein (@fleaz)](https://github.com/fleaz "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Felix Eckhofer (@tribut)](https://github.com/tribut "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Felix Fischer (@felixfischer)](https://github.com/felixfischer "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -3398,6 +3916,9 @@ This page contains a list of people who have contributed in one way or another t - [fenner (@fenner)](https://github.com/fenner "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [ferdinand (@ferdinand)](https://github.com/ferdinand "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [ferdydek (@ferdydek)](https://github.com/ferdydek "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -3414,10 +3935,6 @@ This page contains a list of people who have contributed in one way or another t 4 commits to home-assistant.io 2 commits to home-assistant ") -- [FieldofClay (@FieldofClay)](https://github.com/FieldofClay "2 total commits to the Home Assistant orga: -1 commit to home-assistant -1 commit to home-assistant.io -") - [fignew (@fignew)](https://github.com/fignew "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -3425,14 +3942,17 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant 2 commits to home-assistant.io ") -- [Finbarr Brady (@fbradyirl)](https://github.com/fbradyirl "40 total commits to the Home Assistant orga: -24 commits to home-assistant +- [Filip van Hoeckel (@filip-van-hoeckel)](https://github.com/filip-van-hoeckel "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Finbarr Brady (@fbradyirl)](https://github.com/fbradyirl "46 total commits to the Home Assistant orga: +30 commits to home-assistant 12 commits to home-assistant.io 3 commits to netdisco 1 commit to people ") -- [finity69x2 (@finity69x2)](https://github.com/finity69x2 "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [finity69x2 (@finity69x2)](https://github.com/finity69x2 "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [firstmentoring (@firstmentoring)](https://github.com/firstmentoring "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -3454,6 +3974,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") +- [flebourse (@flebourse)](https://github.com/flebourse "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [FletcherAU (@FletcherAU)](https://github.com/FletcherAU "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -3470,14 +3993,19 @@ This page contains a list of people who have contributed in one way or another t - [flopp999 (@flopp999)](https://github.com/flopp999 "7 total commits to the Home Assistant orga: 7 commits to open-zwave ") -- [Florian Bachmann (@baflo)](https://github.com/baflo "1 total commits to the Home Assistant orga: -1 commit to home-assistant-polymer +- [Florent Thoumie (@flz)](https://github.com/flz "15 total commits to the Home Assistant orga: +11 commits to home-assistant +4 commits to home-assistant.io +") +- [Florian Bachmann (@baflo)](https://github.com/baflo "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer ") - [Florian Bernd (@flobernd)](https://github.com/flobernd "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [Florian Gareis (@TheZoker)](https://github.com/TheZoker "2 total commits to the Home Assistant orga: +- [Florian Gareis (@TheZoker)](https://github.com/TheZoker "3 total commits to the Home Assistant orga: 1 commit to developers.home-assistant +1 commit to home-assistant-android 1 commit to home-assistant.io ") - [Florian Harr (@caffeineflo)](https://github.com/caffeineflo "1 total commits to the Home Assistant orga: @@ -3491,9 +4019,9 @@ This page contains a list of people who have contributed in one way or another t 4 commits to home-assistant 3 commits to netdisco ") -- [Florian Klien (@flowolf)](https://github.com/flowolf "28 total commits to the Home Assistant orga: -19 commits to home-assistant.io -7 commits to home-assistant +- [Florian Klien (@flowolf)](https://github.com/flowolf "34 total commits to the Home Assistant orga: +20 commits to home-assistant.io +12 commits to home-assistant 2 commits to home-assistant-assets ") - [Florian Ludwig (@FlorianLudwig)](https://github.com/FlorianLudwig "2 total commits to the Home Assistant orga: @@ -3509,17 +4037,31 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant.io ") - [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the Home Assistant orga: -3 commits to home-assistant.io 3 commits to home-assistant +3 commits to home-assistant.io +") +- [Floris Van der krieken (@florisvdk)](https://github.com/florisvdk "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io ") - [Floyd Pink (@floydpink)](https://github.com/floydpink "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Fonta (@f0nt4)](https://github.com/f0nt4 "4 total commits to the Home Assistant orga: +- [Flsab (@flsabourin)](https://github.com/flsabourin "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [fmartens (@fmartens)](https://github.com/fmartens "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Fonta (@Fonta)](https://github.com/Fonta "4 total commits to the Home Assistant orga: 4 commits to home-assistant.io ") -- [fortepc (@fortepc)](https://github.com/fortepc "3 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [foreign\-sub (@foreign-sub)](https://github.com/foreign-sub "4 total commits to the Home Assistant orga: +4 commits to home-assistant +") +- [Forte (@fortepc)](https://github.com/fortepc "5 total commits to the Home Assistant orga: +5 commits to home-assistant.io ") - [fotoetienne (@fotoetienne)](https://github.com/fotoetienne "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -3528,34 +4070,46 @@ This page contains a list of people who have contributed in one way or another t - [fotvoren (@fotvoren)](https://github.com/fotvoren "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [foxy82 (@foxy82)](https://github.com/foxy82 "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Fran (@franfos)](https://github.com/franfos "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [fran1987 (@fran1987)](https://github.com/fran1987 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Frances Coronel (@fvcproductions)](https://github.com/fvcproductions "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [Franck Nijhof (@frenck)](https://github.com/frenck "159 total commits to the Home Assistant orga: -83 commits to home-assistant.io -23 commits to hassio-cli -16 commits to home-assistant -12 commits to hassio -11 commits to developers.home-assistant -6 commits to hassio-addons -3 commits to home-assistant-polymer +- [Franck Nijhof (@frenck)](https://github.com/frenck "473 total commits to the Home Assistant orga: +244 commits to home-assistant.io +97 commits to home-assistant +38 commits to hassio-cli +31 commits to hassio-addons +22 commits to hassio +14 commits to developers.home-assistant +5 commits to home-assistant-polymer +4 commits to hass-release +3 commits to hassos +3 commits to hassos-cli +2 commits to hassio-base +2 commits to data.home-assistant +2 commits to alerts.home-assistant.io +1 commit to home-assistant-assets 1 commit to appdaemon -1 commit to hassio-build -1 commit to hassos +1 commit to hassio-homeassistant 1 commit to hassio-addons-development -1 commit to data.home-assistant +1 commit to architecture +1 commit to hassio-build ") - [Frank (@syphernl)](https://github.com/syphernl "3 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Frank Niesten (@Frankniesten)](https://github.com/Frankniesten "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io -") - [Frank Wickström (@frwickst)](https://github.com/frwickst "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -3577,22 +4131,34 @@ This page contains a list of people who have contributed in one way or another t - [Frederic Hemberger (@fhemberger)](https://github.com/fhemberger "93 total commits to the Home Assistant orga: 93 commits to home-assistant.io ") -- [Frederik Bolding (@FrederikBolding)](https://github.com/FrederikBolding "6 total commits to the Home Assistant orga: -4 commits to home-assistant +- [fredericvl (@fredericvl)](https://github.com/fredericvl "9 total commits to the Home Assistant orga: +6 commits to home-assistant +3 commits to home-assistant.io +") +- [Frederik Bolding (@FrederikBolding)](https://github.com/FrederikBolding "7 total commits to the Home Assistant orga: +5 commits to home-assistant 2 commits to home-assistant.io ") +- [Frederik Gladhorn (@gladhorn)](https://github.com/gladhorn "2 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +1 commit to developers.home-assistant +") - [fredespi (@fredespi)](https://github.com/fredespi "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Fredrik Baberg (@fredrikbaberg)](https://github.com/fredrikbaberg "7 total commits to the Home Assistant orga: +- [Fredrik (@fohlsso2)](https://github.com/fohlsso2 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Fredrik Baberg (@fredrikbaberg)](https://github.com/fredrikbaberg "8 total commits to the Home Assistant orga: 5 commits to home-assistant.io -1 commit to developers.home-assistant +2 commits to developers.home-assistant 1 commit to home-assistant ") -- [Fredrik Erlandsson (@fredrike)](https://github.com/fredrike "58 total commits to the Home Assistant orga: -44 commits to home-assistant -12 commits to home-assistant.io +- [Fredrik Erlandsson (@fredrike)](https://github.com/fredrike "92 total commits to the Home Assistant orga: +70 commits to home-assistant +19 commits to home-assistant.io 2 commits to developers.home-assistant +1 commit to hassio ") - [Fredrik Fjeld (@fredrikfjeld)](https://github.com/fredrikfjeld "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -3600,10 +4166,10 @@ This page contains a list of people who have contributed in one way or another t - [Fredrik Haglund (@PetitCircuitLab)](https://github.com/PetitCircuitLab "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "282 total commits to the Home Assistant orga: -160 commits to hassbian-scripts -73 commits to home-assistant.io -44 commits to pi-gen +- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "327 total commits to the Home Assistant orga: +199 commits to hassbian-scripts +75 commits to home-assistant.io +48 commits to pi-gen 4 commits to home-assistant 1 commit to home-assistant-polymer ") @@ -3633,6 +4199,10 @@ This page contains a list of people who have contributed in one way or another t - [fuga2136 (@fuga2136)](https://github.com/fuga2136 "13 total commits to the Home Assistant orga: 13 commits to home-assistant.io ") +- [fwestenberg (@fwestenberg)](https://github.com/fwestenberg "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [G\. Hussain Chinoy (@ghchinoy)](https://github.com/ghchinoy "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") @@ -3646,8 +4216,8 @@ This page contains a list of people who have contributed in one way or another t ") - [Gabriel Oliveira (@gabrielboliveira)](https://github.com/gabrielboliveira "4 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer -1 commit to hassio-addons 1 commit to hassos +1 commit to hassio-addons 1 commit to home-assistant.io ") - [GadgetReactor (@GadgetReactor)](https://github.com/GadgetReactor "2 total commits to the Home Assistant orga: @@ -3656,6 +4226,9 @@ This page contains a list of people who have contributed in one way or another t - [Gaetan Semet (@gsemet)](https://github.com/gsemet "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [galsom (@galsom)](https://github.com/galsom "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [Galtwise (@Galtwise)](https://github.com/Galtwise "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") @@ -3671,7 +4244,8 @@ This page contains a list of people who have contributed in one way or another t - [Gary Barclay (@Bodge-IT)](https://github.com/Bodge-IT "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [GaryOkie (@GaryOkie)](https://github.com/GaryOkie "1 total commits to the Home Assistant orga: +- [GaryOkie (@GaryOkie)](https://github.com/GaryOkie "2 total commits to the Home Assistant orga: +1 commit to home-assistant 1 commit to home-assistant.io ") - [Gaston Dombiak (@gdombiak)](https://github.com/gdombiak "4 total commits to the Home Assistant orga: @@ -3690,13 +4264,20 @@ This page contains a list of people who have contributed in one way or another t - [gazoscalvertos (@gazoscalvertos)](https://github.com/gazoscalvertos "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") +- [Gedde (@raygoat)](https://github.com/raygoat "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io +") - [geekman2 (@geekman2)](https://github.com/geekman2 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [geekofweek (@geekofweek)](https://github.com/geekofweek "3 total commits to the Home Assistant orga: -3 commits to home-assistant +- [geekofweek (@geekofweek)](https://github.com/geekofweek "5 total commits to the Home Assistant orga: +5 commits to home-assistant ") -- [Geert van Horrik (@GeertvanHorrik)](https://github.com/GeertvanHorrik "1 total commits to the Home Assistant orga: +- [Geert (@ge2rt)](https://github.com/ge2rt "1 total commits to the Home Assistant orga: +1 commit to alerts.home-assistant.io +") +- [Geert van Horrik (@GeertvanHorrik)](https://github.com/GeertvanHorrik "2 total commits to the Home Assistant orga: +1 commit to home-assistant 1 commit to home-assistant.io ") - [geirra (@geirra)](https://github.com/geirra "2 total commits to the Home Assistant orga: @@ -3706,9 +4287,9 @@ This page contains a list of people who have contributed in one way or another t - [Geoff Norton (@kangaroo)](https://github.com/kangaroo "14 total commits to the Home Assistant orga: 14 commits to home-assistant ") -- [GeoffAtHome (@GeoffAtHome)](https://github.com/GeoffAtHome "3 total commits to the Home Assistant orga: -2 commits to home-assistant.io -1 commit to home-assistant +- [GeoffAtHome (@GeoffAtHome)](https://github.com/GeoffAtHome "6 total commits to the Home Assistant orga: +4 commits to home-assistant.io +2 commits to home-assistant ") - [Geoffrey Westhoff (@GeoffreyWesthoff)](https://github.com/GeoffreyWesthoff "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -3725,8 +4306,8 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant.io 2 commits to home-assistant ") -- [Georgi Kirichkov (@kirichkov)](https://github.com/kirichkov "23 total commits to the Home Assistant orga: -13 commits to home-assistant.io +- [Georgi Kirichkov (@kirichkov)](https://github.com/kirichkov "24 total commits to the Home Assistant orga: +14 commits to home-assistant.io 7 commits to home-assistant 1 commit to appdaemon 1 commit to developers.home-assistant @@ -3745,12 +4326,10 @@ This page contains a list of people who have contributed in one way or another t - [georgroehl (@georgroehl)](https://github.com/georgroehl "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Gerard (@erorus)](https://github.com/erorus "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") -- [Gerard (@gerard33)](https://github.com/gerard33 "27 total commits to the Home Assistant orga: -18 commits to home-assistant.io -9 commits to home-assistant +- [Gerard (@gerard33)](https://github.com/gerard33 "38 total commits to the Home Assistant orga: +23 commits to home-assistant.io +13 commits to home-assistant +2 commits to hassio-addons ") - [Gerardo Castillo (@altersis)](https://github.com/altersis "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -3769,9 +4348,6 @@ This page contains a list of people who have contributed in one way or another t - [gerliczky (@gerliczky)](https://github.com/gerliczky "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [germeier (@germeier)](https://github.com/germeier "17 total commits to the Home Assistant orga: -17 commits to dehydrated -") - [Gert (@Gerto)](https://github.com/Gerto "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -3801,12 +4377,15 @@ This page contains a list of people who have contributed in one way or another t - [Gianpaolo Macario (@gmacario)](https://github.com/gmacario "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [gibman (@gibman)](https://github.com/gibman "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [Gido (@GidoHakvoort)](https://github.com/GidoHakvoort "9 total commits to the Home Assistant orga: 5 commits to home-assistant.io 4 commits to home-assistant ") -- [giefca (@giefca)](https://github.com/giefca "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [giefca (@giefca)](https://github.com/giefca "4 total commits to the Home Assistant orga: +4 commits to home-assistant ") - [Giel Janssens (@gieljnssns)](https://github.com/gieljnssns "7 total commits to the Home Assistant orga: 5 commits to home-assistant @@ -3815,12 +4394,16 @@ This page contains a list of people who have contributed in one way or another t - [Gijs Reichert (@GGeezes)](https://github.com/GGeezes "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") +- [Gil Peeters (@grillp)](https://github.com/grillp "17 total commits to the Home Assistant orga: +9 commits to home-assistant.io +8 commits to home-assistant +") +- [Gilad Peleg (@pgilad)](https://github.com/pgilad "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [Gilles Margerie (@Gilles95)](https://github.com/Gilles95 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [gillkyle (@gillkyle)](https://github.com/gillkyle "1 total commits to the Home Assistant orga: -1 commit to developers.home-assistant -") - [Giorgos Logiotatidis (@glogiotatidis)](https://github.com/glogiotatidis "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant @@ -3842,12 +4425,16 @@ This page contains a list of people who have contributed in one way or another t - [gizmocuz (@gizmocuz)](https://github.com/gizmocuz "21 total commits to the Home Assistant orga: 21 commits to open-zwave ") +- [gjbadros (@gjbadros)](https://github.com/gjbadros "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to home-assistant +") - [Glen Takahashi (@glentakahashi)](https://github.com/glentakahashi "4 total commits to the Home Assistant orga: 3 commits to home-assistant 1 commit to home-assistant.io ") -- [Glenn Morrison (@atomicpapa)](https://github.com/atomicpapa "8 total commits to the Home Assistant orga: -8 commits to home-assistant.io +- [Glenn Morrison (@atomicpapa)](https://github.com/atomicpapa "10 total commits to the Home Assistant orga: +10 commits to home-assistant.io ") - [Glenn Waters (@gwww)](https://github.com/gwww "19 total commits to the Home Assistant orga: 11 commits to home-assistant @@ -3871,6 +4458,10 @@ This page contains a list of people who have contributed in one way or another t - [GMFalka (@GMFalka)](https://github.com/GMFalka "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") +- [gngj (@gngj)](https://github.com/gngj "7 total commits to the Home Assistant orga: +5 commits to home-assistant +2 commits to home-assistant.io +") - [Goir (@goir)](https://github.com/goir "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -3878,12 +4469,16 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [GoNzCiD (@GoNzCiD)](https://github.com/GoNzCiD "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") - [Gopal Kildoliya (@gopalkildoliya)](https://github.com/gopalkildoliya "6 total commits to the Home Assistant orga: 4 commits to home-assistant 2 commits to home-assistant.io ") -- [GoSpursGoNL (@GoSpursGoNL)](https://github.com/GoSpursGoNL "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [GoSpursGoNL (@GoSpursGoNL)](https://github.com/GoSpursGoNL "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [goto100 (@goto100)](https://github.com/goto100 "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -3912,11 +4507,15 @@ This page contains a list of people who have contributed in one way or another t 75 commits to home-assistant.io 8 commits to home-assistant ") +- [Greg (@gtdiehl)](https://github.com/gtdiehl "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to home-assistant +") - [Greg (@theCMack)](https://github.com/theCMack "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Greg Dowling (@pavoni)](https://github.com/pavoni "212 total commits to the Home Assistant orga: -185 commits to home-assistant +- [Greg Dowling (@pavoni)](https://github.com/pavoni "213 total commits to the Home Assistant orga: +186 commits to home-assistant 25 commits to home-assistant.io 1 commit to netdisco 1 commit to people @@ -3924,14 +4523,21 @@ This page contains a list of people who have contributed in one way or another t - [Greg Johnson (@notgwj)](https://github.com/notgwj "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "29 total commits to the Home Assistant orga: -23 commits to home-assistant +- [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "33 total commits to the Home Assistant orga: +27 commits to home-assistant 5 commits to home-assistant.io 1 commit to people ") - [Greg MacLellan (@gregmac)](https://github.com/gregmac "1 total commits to the Home Assistant orga: 1 commit to pi-gen ") +- [Greg Rapp (@gdrapp)](https://github.com/gdrapp "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Greg Schwartz (@gregschwartz)](https://github.com/gregschwartz "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Greg Stevenson (@gstevenson)](https://github.com/gstevenson "6 total commits to the Home Assistant orga: 6 commits to home-assistant.io ") @@ -3939,6 +4545,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") +- [gregod (@gregod)](https://github.com/gregod "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +") - [Gregor Gruener (@ggruner)](https://github.com/ggruner "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -3952,15 +4561,25 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Gregory Knox (@Knoxie)](https://github.com/Knoxie "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [gregwis (@gregwis)](https://github.com/gregwis "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [gremblin (@e2m32)](https://github.com/e2m32 "5 total commits to the Home Assistant orga: 5 commits to home-assistant.io ") +- [Grodesh (@Grodesh)](https://github.com/Grodesh "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [groth\-its (@groth-its)](https://github.com/groth-its "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") +- [Grégoire M\. (@M-Gregoire)](https://github.com/M-Gregoire "1 total commits to the Home Assistant orga: +1 commit to hassio-installer +") - [gstorer (@gstorer)](https://github.com/gstorer "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") @@ -3969,15 +4588,15 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 2 commits to home-assistant.io ") +- [gth (@gth)](https://github.com/gth "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [gudata (@gudata)](https://github.com/gudata "1 total commits to the Home Assistant orga: 1 commit to pi-gen ") - [Guilherme Conti Teixeira (@guiconti)](https://github.com/guiconti "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Guillaume Boudrias (@gboudrias)](https://github.com/gboudrias "2 total commits to the Home Assistant orga: -2 commits to dehydrated -") - [Guillaume Rischard (@grischard)](https://github.com/grischard "3 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer 1 commit to home-assistant @@ -3993,15 +4612,18 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 2 commits to home-assistant.io ") +- [guillempages (@guillempages)](https://github.com/guillempages "3 total commits to the Home Assistant orga: +3 commits to home-assistant +") - [Gummientchen (@Gummientchen)](https://github.com/Gummientchen "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Gustav Ahlberg (@Gyran)](https://github.com/Gyran "20 total commits to the Home Assistant orga: 20 commits to home-assistant ") -- [Guy Khmelnitsky (@GuyKh)](https://github.com/GuyKh "6 total commits to the Home Assistant orga: -5 commits to home-assistant.io -1 commit to home-assistant +- [Guy Khmelnitsky (@GuyKh)](https://github.com/GuyKh "9 total commits to the Home Assistant orga: +7 commits to home-assistant.io +2 commits to home-assistant ") - [Guy Parisi (@Guyanthalas)](https://github.com/Guyanthalas "7 total commits to the Home Assistant orga: 7 commits to home-assistant.io @@ -4020,9 +4642,23 @@ This page contains a list of people who have contributed in one way or another t - [gwmullin (@gwmullin)](https://github.com/gwmullin "24 total commits to the Home Assistant orga: 24 commits to open-zwave ") +- [h3ndrik (@h3ndrik)](https://github.com/h3ndrik "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [h4ckNinja (@h4ckninja)](https://github.com/h4ckninja "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io +") +- [haakon storm heen (@haakonstorm)](https://github.com/haakonstorm "2 total commits to the Home Assistant orga: +1 commit to home-assistant-cli +1 commit to home-assistant.io +") - [Hackashaq666 (@Hackashaq666)](https://github.com/Hackashaq666 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Hadi Victorya (@hadipsy27)](https://github.com/hadipsy27 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Haim Gelfenbeyn (@haimgel)](https://github.com/haimgel "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -4036,6 +4672,10 @@ This page contains a list of people who have contributed in one way or another t - [Hans Knöchel (@hansemannn)](https://github.com/hansemannn "2 total commits to the Home Assistant orga: 2 commits to 1password-teams-open-source ") +- [Hans Oischinger (@oischinger)](https://github.com/oischinger "5 total commits to the Home Assistant orga: +4 commits to home-assistant +1 commit to home-assistant.io +") - [Hans Svedåker (@svedaker)](https://github.com/svedaker "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") @@ -4049,8 +4689,8 @@ This page contains a list of people who have contributed in one way or another t - [happyleavesaoc (@happyleavesaoc)](https://github.com/happyleavesaoc "115 total commits to the Home Assistant orga: 90 commits to home-assistant 23 commits to home-assistant.io -1 commit to home-assistant-polymer 1 commit to people +1 commit to home-assistant-polymer ") - [Harald Klein (@haklein)](https://github.com/haklein "98 total commits to the Home Assistant orga: 98 commits to open-zwave @@ -4062,16 +4702,25 @@ This page contains a list of people who have contributed in one way or another t - [Harm\-Jan Roskam (@harmjanr)](https://github.com/harmjanr "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Haroen Viaene (@Haroenv)](https://github.com/Haroenv "3 total commits to the Home Assistant orga: +3 commits to Iconic +") - [Harris Borawski (@hborawski)](https://github.com/hborawski "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io ") +- [Harrison Pace (@thehaxxa)](https://github.com/thehaxxa "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Harry Kantas (@harrykantas)](https://github.com/harrykantas "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [Harvtronix (@Harvtronix)](https://github.com/Harvtronix "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [hasscasts (@hasscasts)](https://github.com/hasscasts "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Hate\-Usernames (@Hate-Usernames)](https://github.com/Hate-Usernames "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") @@ -4084,6 +4733,10 @@ This page contains a list of people who have contributed in one way or another t - [haXs (@haXs)](https://github.com/haXs "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Hayley McIldoon (@shmooey)](https://github.com/shmooey "4 total commits to the Home Assistant orga: +2 commits to home-assistant-polymer +2 commits to home-assistant +") - [HBDK (@HBDK)](https://github.com/HBDK "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -4099,12 +4752,9 @@ This page contains a list of people who have contributed in one way or another t - [Heath Paddock (@heathbar)](https://github.com/heathbar "6 total commits to the Home Assistant orga: 6 commits to home-assistant ") -- [heckler (@heckler)](https://github.com/heckler "1 total commits to the Home Assistant orga: -1 commit to home-assistant-polymer -") -- [Hedda (@Hedda)](https://github.com/Hedda "2 total commits to the Home Assistant orga: +- [Hedda (@Hedda)](https://github.com/Hedda "4 total commits to the Home Assistant orga: +3 commits to home-assistant.io 1 commit to home-assistant -1 commit to home-assistant.io ") - [Heiko Rothe (@mKeRix)](https://github.com/mKeRix "21 total commits to the Home Assistant orga: 15 commits to home-assistant @@ -4114,9 +4764,10 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant 5 commits to home-assistant.io ") -- [Heine Furubotten (@hfurubotten)](https://github.com/hfurubotten "10 total commits to the Home Assistant orga: -5 commits to home-assistant.io -5 commits to home-assistant +- [Heine Furubotten (@hfurubotten)](https://github.com/hfurubotten "14 total commits to the Home Assistant orga: +7 commits to home-assistant +6 commits to home-assistant.io +1 commit to developers.home-assistant ") - [Heinrich Dahms (@htdahms)](https://github.com/htdahms "1 total commits to the Home Assistant orga: 1 commit to home-assistant-iOS @@ -4143,6 +4794,9 @@ This page contains a list of people who have contributed in one way or another t 8 commits to home-assistant 2 commits to home-assistant.io ") +- [Henry Ou (@henryouly)](https://github.com/henryouly "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [henryk (@henryk)](https://github.com/henryk "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -4162,8 +4816,9 @@ This page contains a list of people who have contributed in one way or another t - [heymoe (@heymoe)](https://github.com/heymoe "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [heytcass (@heytcass)](https://github.com/heytcass "6 total commits to the Home Assistant orga: -5 commits to home-assistant.io +- [heytcass (@heytcass)](https://github.com/heytcass "11 total commits to the Home Assistant orga: +9 commits to home-assistant.io +1 commit to developers.home-assistant 1 commit to home-assistant ") - [HFeenstra (@HFeenstra)](https://github.com/HFeenstra "1 total commits to the Home Assistant orga: @@ -4175,9 +4830,9 @@ This page contains a list of people who have contributed in one way or another t - [hitokiri8x (@hitokiri8x)](https://github.com/hitokiri8x "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Hmmbob (@hmmbob)](https://github.com/hmmbob "18 total commits to the Home Assistant orga: -11 commits to home-assistant.io -6 commits to home-assistant +- [Hmmbob (@hmmbob)](https://github.com/hmmbob "35 total commits to the Home Assistant orga: +27 commits to home-assistant.io +7 commits to home-assistant 1 commit to home-assistant-polymer ") - [hokagegano (@hokagegano)](https://github.com/hokagegano "2 total commits to the Home Assistant orga: @@ -4189,10 +4844,18 @@ This page contains a list of people who have contributed in one way or another t - [holelattanuttin (@holelattanuttin)](https://github.com/holelattanuttin "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Home Assistant Bot (@homeassistant)](https://github.com/homeassistant "65 total commits to the Home Assistant orga: +63 commits to home-assistant +1 commit to developers.home-assistant +1 commit to companion.home-assistant +") - [honcheng (@honcheng)](https://github.com/honcheng "3 total commits to the Home Assistant orga: 2 commits to homebridge-homeassistant 1 commit to home-assistant.io ") +- [Honza Slesinger (@slesinger)](https://github.com/slesinger "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Hoobie7 (@Hoobie7)](https://github.com/Hoobie7 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -4213,6 +4876,9 @@ This page contains a list of people who have contributed in one way or another t - [Hu Hao (@howiehu)](https://github.com/howiehu "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [HUANG da (@huangda1982)](https://github.com/huangda1982 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [huangyupeng (@huangyupeng)](https://github.com/huangyupeng "15 total commits to the Home Assistant orga: 8 commits to home-assistant 7 commits to home-assistant.io @@ -4220,6 +4886,10 @@ This page contains a list of people who have contributed in one way or another t - [hubertbanas (@hubertbanas)](https://github.com/hubertbanas "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") +- [Hugh Eaves (@hugheaves)](https://github.com/hugheaves "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Hugo Dupras (@jabesq)](https://github.com/jabesq "29 total commits to the Home Assistant orga: 21 commits to home-assistant 8 commits to home-assistant.io @@ -4230,13 +4900,16 @@ This page contains a list of people who have contributed in one way or another t - [Hugo Herter (@hoh)](https://github.com/hoh "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Hugo Hromic (@hhromic)](https://github.com/hhromic "7 total commits to the Home Assistant orga: -7 commits to pi-gen +- [Hugo Hromic (@hhromic)](https://github.com/hhromic "9 total commits to the Home Assistant orga: +9 commits to pi-gen ") - [hulkhaugen (@hulkhaugen)](https://github.com/hulkhaugen "2 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer 1 commit to home-assistant.io ") +- [Humberto Rodríguez A\. (@rhumbertgz)](https://github.com/rhumbertgz "203 total commits to the Home Assistant orga: +203 commits to appdaemon +") - [Hung Le (@hungle)](https://github.com/hungle "1 total commits to the Home Assistant orga: 1 commit to libcoap ") @@ -4282,9 +4955,13 @@ This page contains a list of people who have contributed in one way or another t - [iainsmacleod (@iainsmacleod)](https://github.com/iainsmacleod "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Ian (@Apocrathia)](https://github.com/Apocrathia "1 total commits to the Home Assistant orga: +- [Ian (@ViViDboarder)](https://github.com/ViViDboarder "4 total commits to the Home Assistant orga: +3 commits to home-assistant 1 commit to home-assistant.io ") +- [Ian (@Apocrathia)](https://github.com/Apocrathia "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [Ian Copp (@icopp)](https://github.com/icopp "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") @@ -4294,10 +4971,10 @@ This page contains a list of people who have contributed in one way or another t - [Ian Day (@iandday)](https://github.com/iandday "16 total commits to the Home Assistant orga: 16 commits to pyharmony ") -- [Ian Richardson (@iantrich)](https://github.com/iantrich "208 total commits to the Home Assistant orga: -160 commits to home-assistant-polymer -37 commits to home-assistant.io -6 commits to home-assistant +- [Ian Richardson (@iantrich)](https://github.com/iantrich "313 total commits to the Home Assistant orga: +234 commits to home-assistant-polymer +67 commits to home-assistant.io +7 commits to home-assistant 2 commits to ui-schema 2 commits to developers.home-assistant 1 commit to people @@ -4315,8 +4992,8 @@ This page contains a list of people who have contributed in one way or another t 1 commit to hassio-addons ") - [icovada (@icovada)](https://github.com/icovada "6 total commits to the Home Assistant orga: -3 commits to home-assistant.io 3 commits to home-assistant +3 commits to home-assistant.io ") - [idfxken (@idfxken)](https://github.com/idfxken "5 total commits to the Home Assistant orga: 4 commits to open-zwave @@ -4333,8 +5010,8 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") -- [IIIdefconIII (@IIIdefconIII)](https://github.com/IIIdefconIII "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [IIIdefconIII (@IIIdefconIII)](https://github.com/IIIdefconIII "5 total commits to the Home Assistant orga: +5 commits to home-assistant.io ") - [ikifar2012 (@ikifar2012)](https://github.com/ikifar2012 "4 total commits to the Home Assistant orga: 4 commits to home-assistant.io @@ -4355,12 +5032,19 @@ This page contains a list of people who have contributed in one way or another t - [Illia Grybkov (@igrybkov)](https://github.com/igrybkov "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [indykoning (@indykoning)](https://github.com/indykoning "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Ing\. Jaroslav Šafka (@jedi7)](https://github.com/jedi7 "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") - [Ingmar Stein (@IngmarStein)](https://github.com/IngmarStein "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") +- [Ingo Theiss (@itn3rd77)](https://github.com/itn3rd77 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [InovelliUSA (@InovelliUSA)](https://github.com/InovelliUSA "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") @@ -4389,9 +5073,12 @@ This page contains a list of people who have contributed in one way or another t - [irvingwa (@irvingwa)](https://github.com/irvingwa "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Isabella Gross Alström (@isabellaalstrom)](https://github.com/isabellaalstrom "10 total commits to the Home Assistant orga: -8 commits to home-assistant.io -2 commits to home-assistant +- [Isabella Gross Alström (@isabellaalstrom)](https://github.com/isabellaalstrom "12 total commits to the Home Assistant orga: +9 commits to home-assistant.io +3 commits to home-assistant +") +- [Issac (@issacg)](https://github.com/issacg "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant ") - [Issac Kelly (@issackelly)](https://github.com/issackelly "3 total commits to the Home Assistant orga: 3 commits to home-assistant @@ -4402,12 +5089,18 @@ This page contains a list of people who have contributed in one way or another t - [itineric (@itineric)](https://github.com/itineric "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Ivo (@ivotje50)](https://github.com/ivotje50 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Ivo Wever (@Confusion)](https://github.com/Confusion "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [j james (@wakeuplaughing)](https://github.com/wakeuplaughing "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [J3n50m4t (@J3n50m4t)](https://github.com/J3n50m4t "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [J4nsen (@J4nsen)](https://github.com/J4nsen "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -4420,10 +5113,15 @@ This page contains a list of people who have contributed in one way or another t - [J\.A\.P\. Klessens (@JKlessens)](https://github.com/JKlessens "40 total commits to the Home Assistant orga: 40 commits to open-zwave ") +- [J\.P\. Hutchins (@JPHutchins)](https://github.com/JPHutchins "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Jaak Laineste (@jaakla)](https://github.com/jaakla "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") -- [jaburges (@jaburges)](https://github.com/jaburges "1 total commits to the Home Assistant orga: +- [jaburges (@jaburges)](https://github.com/jaburges "2 total commits to the Home Assistant orga: +1 commit to home-assistant 1 commit to home-assistant.io ") - [Jacen (@jacen92)](https://github.com/jacen92 "2 total commits to the Home Assistant orga: @@ -4454,9 +5152,18 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant-polymer 1 commit to home-assistant.io ") -- [Jacob Mansfield (@cyberjacob)](https://github.com/cyberjacob "6 total commits to the Home Assistant orga: -3 commits to home-assistant -3 commits to home-assistant.io +- [Jack Yin (@jkyin)](https://github.com/jkyin "6 total commits to the Home Assistant orga: +6 commits to Iconic +") +- [jack1142 (@jack1142)](https://github.com/jack1142 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Jackie Yang (@valkjsaaa)](https://github.com/valkjsaaa "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Jacob Mansfield (@cyberjacob)](https://github.com/cyberjacob "9 total commits to the Home Assistant orga: +5 commits to home-assistant +4 commits to home-assistant.io ") - [Jacob Minnis (@jminn)](https://github.com/jminn "2 total commits to the Home Assistant orga: 2 commits to home-assistant @@ -4477,9 +5184,6 @@ This page contains a list of people who have contributed in one way or another t - [jagjordi (@jagjordi)](https://github.com/jagjordi "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Jaimyn Mayer (@jabelone)](https://github.com/jabelone "1 total commits to the Home Assistant orga: -1 commit to hassbian-scripts -") - [Jake McCrary (@jakemcc)](https://github.com/jakemcc "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -4489,6 +5193,9 @@ This page contains a list of people who have contributed in one way or another t - [Jakob Reiter (@jakommo)](https://github.com/jakommo "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Jakub (@lenisko)](https://github.com/lenisko "1 total commits to the Home Assistant orga: +1 commit to hassio +") - [Jakub Bittner (@rexcze)](https://github.com/rexcze "2 total commits to the Home Assistant orga: 2 commits to home-assistant-polymer ") @@ -4498,8 +5205,8 @@ This page contains a list of people who have contributed in one way or another t - [jakubradziwon (@jakubradziwon)](https://github.com/jakubradziwon "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [James (@jimbob1001)](https://github.com/jimbob1001 "4 total commits to the Home Assistant orga: -4 commits to home-assistant.io +- [James (@jimbob1001)](https://github.com/jimbob1001 "5 total commits to the Home Assistant orga: +5 commits to home-assistant.io ") - [James Clancey (@Clancey)](https://github.com/Clancey "2 total commits to the Home Assistant orga: 2 commits to open-zwave @@ -4511,6 +5218,9 @@ This page contains a list of people who have contributed in one way or another t - [James Crook (@cooljimy84)](https://github.com/cooljimy84 "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [James Goodhouse (@jamesgoodhouse)](https://github.com/jamesgoodhouse "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [James Hilliard (@jameshilliard)](https://github.com/jameshilliard "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io @@ -4528,21 +5238,26 @@ This page contains a list of people who have contributed in one way or another t - [james\-fry (@james-fry)](https://github.com/james-fry "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [JamesMcClelland (@JamesMcClelland)](https://github.com/JamesMcClelland "6 total commits to the Home Assistant orga: +6 commits to home-assistant.io +") - [jamesthomas128 (@jamesthomas128)](https://github.com/jamesthomas128 "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") - [Jamie Shaw (@jamieshaw)](https://github.com/jamieshaw "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Jamie van Dyke (@fearoffish)](https://github.com/fearoffish "3 total commits to the Home Assistant orga: +- [Jamie van Dyke (@fearoffish)](https://github.com/fearoffish "4 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant-iOS +1 commit to people ") -- [jaminh (@jaminh)](https://github.com/jaminh "1 total commits to the Home Assistant orga: +- [jaminh (@jaminh)](https://github.com/jaminh "2 total commits to the Home Assistant orga: 1 commit to open-zwave +1 commit to home-assistant ") -- [JamesMcClelland (@JamesMcClelland)](https://github.com/JamesMcClelland "6 total commits to the Home Assistant orga: -6 commits to home-assistant.io +- [Jan (@jevermeister)](https://github.com/jevermeister "1 total commits to the Home Assistant orga: +1 commit to hassos ") - [Jan Almeroth (@jalmeroth)](https://github.com/jalmeroth "8 total commits to the Home Assistant orga: 5 commits to home-assistant @@ -4566,8 +5281,9 @@ This page contains a list of people who have contributed in one way or another t 16 commits to home-assistant 6 commits to home-assistant.io ") -- [Jan Olbrecht (@olbjan)](https://github.com/olbjan "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Jan Olbrecht (@olbjan)](https://github.com/olbjan "7 total commits to the Home Assistant orga: +4 commits to companion.home-assistant +3 commits to home-assistant.io ") - [Jan Peer Stöcklmair (@JPeer264)](https://github.com/JPeer264 "3 total commits to the Home Assistant orga: 3 commits to 1password-teams-open-source @@ -4578,9 +5294,6 @@ This page contains a list of people who have contributed in one way or another t - [Jan Sepke (@jansepke)](https://github.com/jansepke "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Jan Tore Morken (@jantore)](https://github.com/jantore "2 total commits to the Home Assistant orga: -2 commits to dehydrated -") - [Jan van Helvoort (@janvanhelvoort)](https://github.com/janvanhelvoort "4 total commits to the Home Assistant orga: 2 commits to home-assistant 2 commits to home-assistant.io @@ -4598,6 +5311,10 @@ This page contains a list of people who have contributed in one way or another t - [Janos Racz (@rczjns)](https://github.com/rczjns "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Jardi Martinez (@jardiamj)](https://github.com/jardiamj "9 total commits to the Home Assistant orga: +7 commits to home-assistant.io +2 commits to home-assistant +") - [Jared Beckham (@jtbeckha)](https://github.com/jtbeckha "4 total commits to the Home Assistant orga: 2 commits to home-assistant 2 commits to home-assistant.io @@ -4636,23 +5353,24 @@ This page contains a list of people who have contributed in one way or another t - [Jason Hite (@jasonmhite)](https://github.com/jasonmhite "6 total commits to the Home Assistant orga: 6 commits to appdaemon ") -- [Jason Hu (@awarecan)](https://github.com/awarecan "256 total commits to the Home Assistant orga: -174 commits to home-assistant -34 commits to home-assistant.io -32 commits to home-assistant-polymer +- [Jason Hu (@awarecan)](https://github.com/awarecan "291 total commits to the Home Assistant orga: +200 commits to home-assistant +41 commits to home-assistant.io +34 commits to home-assistant-polymer 10 commits to developers.home-assistant -2 commits to home-assistant-Android -1 commit to home-assistant-js-websocket +2 commits to home-assistant-android 1 commit to LabelBot 1 commit to netdisco +1 commit to home-assistant-js-websocket 1 commit to people ") -- [Jason Hunter (@hunterjm)](https://github.com/hunterjm "38 total commits to the Home Assistant orga: -24 commits to home-assistant -10 commits to home-assistant.io -2 commits to home-assistant-polymer -1 commit to actions -1 commit to people +- [Jason Hunter (@hunterjm)](https://github.com/hunterjm "51 total commits to the Home Assistant orga: +33 commits to home-assistant +12 commits to home-assistant.io +3 commits to home-assistant-polymer +1 commit to people +1 commit to developers.home-assistant +1 commit to actions ") - [Jason Kingsbury (@relvacode)](https://github.com/relvacode "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -4662,11 +5380,14 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Jason Lawrence (@jjlawren)](https://github.com/jjlawren "15 total commits to the Home Assistant orga: -7 commits to home-assistant-iOS -7 commits to home-assistant +- [Jason Lachowsky (@dajo)](https://github.com/dajo "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Jason Lawrence (@jjlawren)](https://github.com/jjlawren "88 total commits to the Home Assistant orga: +55 commits to home-assistant +26 commits to home-assistant.io +7 commits to home-assistant-iOS +") - [Jason Schollenberger (@jschollenberger)](https://github.com/jschollenberger "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -4685,25 +5406,39 @@ This page contains a list of people who have contributed in one way or another t - [Jason Woodward (@woodwardjd)](https://github.com/woodwardjd "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Jasper van der Neut \- Stulen (@jvanderneutstulen)](https://github.com/jvanderneutstulen "10 total commits to the Home Assistant orga: +- [jasonbuechler (@jasonbuechler)](https://github.com/jasonbuechler "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Jasper van der Neut \- Stulen (@jvanderneutstulen)](https://github.com/jvanderneutstulen "12 total commits to the Home Assistant orga: 8 commits to hassos -2 commits to home-assistant +3 commits to home-assistant +1 commit to people ") -- [javicalle (@javicalle)](https://github.com/javicalle "18 total commits to the Home Assistant orga: +- [javicalle (@javicalle)](https://github.com/javicalle "25 total commits to the Home Assistant orga: 13 commits to home-assistant.io -5 commits to home-assistant +12 commits to home-assistant ") - [Javier Gonel (@graffic)](https://github.com/graffic "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Javier González Calleja (@gonzalezcalleja)](https://github.com/gonzalezcalleja "3 total commits to the Home Assistant orga: -2 commits to home-assistant -1 commit to home-assistant.io +- [Javier González Calleja (@gonzalezcalleja)](https://github.com/gonzalezcalleja "6 total commits to the Home Assistant orga: +4 commits to home-assistant +2 commits to home-assistant.io +") +- [Javier Martínez (@JavierMartinz)](https://github.com/JavierMartinz "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [Jaxom Nutt (@JaxomCS)](https://github.com/JaxomCS "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io ") +- [Jay (@Tediore)](https://github.com/Tediore "13 total commits to the Home Assistant orga: +13 commits to home-assistant.io +") +- [Jay (@jshridha)](https://github.com/jshridha "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Jay Love (@jslove)](https://github.com/jslove "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -4728,13 +5463,17 @@ This page contains a list of people who have contributed in one way or another t - [JBelinchon (@JBelinchon)](https://github.com/JBelinchon "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [jbrody17 (@jbrody17)](https://github.com/jbrody17 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [JC Connell (@jcconnell)](https://github.com/jcconnell "13 total commits to the Home Assistant orga: 7 commits to home-assistant.io 6 commits to home-assistant ") -- [Jc2k (@Jc2k)](https://github.com/Jc2k "31 total commits to the Home Assistant orga: -30 commits to home-assistant -1 commit to home-assistant.io +- [Jc2k (@Jc2k)](https://github.com/Jc2k "67 total commits to the Home Assistant orga: +64 commits to home-assistant +2 commits to home-assistant.io +1 commit to home-assistant-polymer ") - [jchasey (@jchasey)](https://github.com/jchasey "1 total commits to the Home Assistant orga: 1 commit to developers.home-assistant @@ -4742,6 +5481,9 @@ This page contains a list of people who have contributed in one way or another t - [jcrowegitHu8 (@jcrowegitHu8)](https://github.com/jcrowegitHu8 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [jcullen86 (@jcullen86)](https://github.com/jcullen86 "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [jdegraef (@jdegraef)](https://github.com/jdegraef "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -4782,19 +5524,23 @@ This page contains a list of people who have contributed in one way or another t - [Jeena Paradies (@jeena)](https://github.com/jeena "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Jef D (@danielsjf)](https://github.com/danielsjf "3 total commits to the Home Assistant orga: -2 commits to home-assistant -1 commit to home-assistant.io +- [Jef D (@danielsjf)](https://github.com/danielsjf "5 total commits to the Home Assistant orga: +3 commits to home-assistant +2 commits to home-assistant.io ") - [Jeff Boothe (@jboothe)](https://github.com/jboothe "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Jeff Cutsinger (@jeffcutsinger)](https://github.com/jeffcutsinger "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Jeff Grieger (@jgrieger1)](https://github.com/jgrieger1 "2 total commits to the Home Assistant orga: 2 commits to appdaemon ") -- [Jeff Irion (@JeffLIrion)](https://github.com/JeffLIrion "26 total commits to the Home Assistant orga: -19 commits to home-assistant -7 commits to home-assistant.io +- [Jeff Irion (@JeffLIrion)](https://github.com/JeffLIrion "74 total commits to the Home Assistant orga: +49 commits to home-assistant +24 commits to home-assistant.io +1 commit to developers.home-assistant ") - [Jeff Lewis (@Jeff-Lewis)](https://github.com/Jeff-Lewis "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -4818,6 +5564,9 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant.io 2 commits to pyharmony ") +- [jeff\-h (@jeff-h)](https://github.com/jeff-h "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [jeffh0821 (@jeffh0821)](https://github.com/jeffh0821 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -4828,9 +5577,10 @@ This page contains a list of people who have contributed in one way or another t - [Jelmer Tiete (@JelmerT)](https://github.com/JelmerT "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Jens (@jensihnow)](https://github.com/jensihnow "6 total commits to the Home Assistant orga: -3 commits to home-assistant -3 commits to home-assistant.io +- [Jens (@jensihnow)](https://github.com/jensihnow "10 total commits to the Home Assistant orga: +5 commits to home-assistant.io +4 commits to home-assistant +1 commit to hassio-addons ") - [Jens (@jhoepken)](https://github.com/jhoepken "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io @@ -4841,9 +5591,12 @@ This page contains a list of people who have contributed in one way or another t - [Jens Nistler (@lociii)](https://github.com/lociii "1 total commits to the Home Assistant orga: 1 commit to netdisco ") +- [Jens Vanhooydonck (@JensVanhooydonck)](https://github.com/JensVanhooydonck "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +") - [Jens Østergaard Nielsen (@dingusdk)](https://github.com/dingusdk "8 total commits to the Home Assistant orga: -4 commits to home-assistant.io 4 commits to home-assistant +4 commits to home-assistant.io ") - [jensjakob (@jensjakob)](https://github.com/jensjakob "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -4872,6 +5625,12 @@ This page contains a list of people who have contributed in one way or another t - [Jeremy Bunting (@qbunt)](https://github.com/qbunt "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Jeremy Cook (@jeremycook61)](https://github.com/jeremycook61 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Jeremy Hettenhouser (@borland502)](https://github.com/borland502 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Jeremy Klein (@jeremydk)](https://github.com/jeremydk "5 total commits to the Home Assistant orga: 3 commits to home-assistant.io 2 commits to home-assistant @@ -4879,7 +5638,11 @@ This page contains a list of people who have contributed in one way or another t - [Jeremy Roe (@jeremyroe)](https://github.com/jeremyroe "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Jeremy Volkman (@jvolkman)](https://github.com/jvolkman "1 total commits to the Home Assistant orga: +- [Jeremy Schlatter (@jeremyschlatter)](https://github.com/jeremyschlatter "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Jeremy Volkman (@jvolkman)](https://github.com/jvolkman "2 total commits to the Home Assistant orga: +1 commit to open-zwave 1 commit to home-assistant ") - [Jeremy Williams (@jwillaz)](https://github.com/jwillaz "6 total commits to the Home Assistant orga: @@ -4905,12 +5668,20 @@ This page contains a list of people who have contributed in one way or another t - [Jerrod Lankford (@Jerrkawz)](https://github.com/Jerrkawz "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Jerry Chong (@zanglang)](https://github.com/zanglang "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Jerry Workman (@JerryWorkman)](https://github.com/JerryWorkman "9 total commits to the Home Assistant orga: 9 commits to home-assistant.io ") -- [Jesse Hills (@jesserockz)](https://github.com/jesserockz "13 total commits to the Home Assistant orga: -10 commits to home-assistant -3 commits to home-assistant.io +- [Jess (@castaway)](https://github.com/castaway "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Jesse Hills (@jesserockz)](https://github.com/jesserockz "15 total commits to the Home Assistant orga: +11 commits to home-assistant +4 commits to home-assistant.io ") - [Jesse Newland (@jnewland)](https://github.com/jnewland "17 total commits to the Home Assistant orga: 13 commits to home-assistant @@ -4923,9 +5694,9 @@ This page contains a list of people who have contributed in one way or another t - [Jesse Osiecki (@stratosmacker)](https://github.com/stratosmacker "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Jesse Rizzo (@jesserizzo)](https://github.com/jesserizzo "4 total commits to the Home Assistant orga: -2 commits to home-assistant -2 commits to home-assistant.io +- [Jesse Rizzo (@jesserizzo)](https://github.com/jesserizzo "11 total commits to the Home Assistant orga: +7 commits to home-assistant +4 commits to home-assistant.io ") - [Jesse Ruiter (@jesseruiter)](https://github.com/jesseruiter "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -4934,15 +5705,15 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant ") - [JesseWebDotCom (@JesseWebDotCom)](https://github.com/JesseWebDotCom "16 total commits to the Home Assistant orga: -8 commits to home-assistant.io 8 commits to home-assistant +8 commits to home-assistant.io ") - [jessyjones (@jessyjones)](https://github.com/jessyjones "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [jgriff2 (@jgriff2)](https://github.com/jgriff2 "3 total commits to the Home Assistant orga: -2 commits to home-assistant -1 commit to home-assistant.io +- [jgriff2 (@jgriff2)](https://github.com/jgriff2 "10 total commits to the Home Assistant orga: +7 commits to home-assistant.io +3 commits to home-assistant ") - [jhemzal (@jhemzal)](https://github.com/jhemzal "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -4963,6 +5734,9 @@ This page contains a list of people who have contributed in one way or another t - [Jiri Cincura ↹ (@cincuranet)](https://github.com/cincuranet "13 total commits to the Home Assistant orga: 13 commits to open-zwave ") +- [jlrgraham (@jlrgraham)](https://github.com/jlrgraham "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [jma89 (@jma89)](https://github.com/jma89 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -4984,8 +5758,8 @@ This page contains a list of people who have contributed in one way or another t - [Jo Liss (@joliss)](https://github.com/joliss "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Joachim Bauch (@fancycode)](https://github.com/fancycode "2 total commits to the Home Assistant orga: -2 commits to dehydrated +- [jo89lin (@jo89lin)](https://github.com/jo89lin "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Joakim af Sandeberg (@jotunacorn)](https://github.com/jotunacorn "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -4994,16 +5768,23 @@ This page contains a list of people who have contributed in one way or another t - [Joakim Lindbom (@JoakimLindbom)](https://github.com/JoakimLindbom "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Joakim Plate (@elupus)](https://github.com/elupus "13 total commits to the Home Assistant orga: -10 commits to home-assistant -3 commits to home-assistant.io +- [Joakim Plate (@elupus)](https://github.com/elupus "61 total commits to the Home Assistant orga: +40 commits to home-assistant +9 commits to home-assistant-polymer +9 commits to home-assistant.io +2 commits to developers.home-assistant +1 commit to people ") -- [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "243 total commits to the Home Assistant orga: -159 commits to hassbian-scripts -43 commits to home-assistant.io -39 commits to home-assistant -1 commit to developers.home-assistant +- [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "384 total commits to the Home Assistant orga: +262 commits to hassbian-scripts +55 commits to home-assistant +48 commits to home-assistant.io +8 commits to home-assistant-polymer +3 commits to developers.home-assistant +3 commits to custom-components-wheels +3 commits to alerts.home-assistant.io 1 commit to people +1 commit to hassio-installer ") - [Joaquín (@joaqtor)](https://github.com/joaqtor "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -5042,12 +5823,12 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Joe Trabulsy (@webdjoe)](https://github.com/webdjoe "2 total commits to the Home Assistant orga: -1 commit to home-assistant -1 commit to home-assistant.io +- [Joe Trabulsy (@webdjoe)](https://github.com/webdjoe "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io ") -- [joe248 (@joe248)](https://github.com/joe248 "4 total commits to the Home Assistant orga: -3 commits to home-assistant +- [joe248 (@joe248)](https://github.com/joe248 "5 total commits to the Home Assistant orga: +4 commits to home-assistant 1 commit to home-assistant.io ") - [Joeboyc2 (@Joeboyc2)](https://github.com/Joeboyc2 "17 total commits to the Home Assistant orga: @@ -5058,11 +5839,20 @@ This page contains a list of people who have contributed in one way or another t - [Joel Asher Friedman (@joelash)](https://github.com/joelash "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Joel Brun (@jobr97)](https://github.com/jobr97 "1 total commits to the Home Assistant orga: +1 commit to hassbian-scripts +") - [Joel Clermont (@joelclermont)](https://github.com/joelclermont "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Johan Bloemberg (@aequitas)](https://github.com/aequitas "45 total commits to the Home Assistant orga: -36 commits to home-assistant +- [Joel Fischer (@joeljfischer)](https://github.com/joeljfischer "1 total commits to the Home Assistant orga: +1 commit to Iconic +") +- [Joel Spiers (@joelspiers15)](https://github.com/joelspiers15 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Johan Bloemberg (@aequitas)](https://github.com/aequitas "46 total commits to the Home Assistant orga: +37 commits to home-assistant 8 commits to home-assistant.io 1 commit to netdisco ") @@ -5085,6 +5875,10 @@ This page contains a list of people who have contributed in one way or another t - [Johan Lindström (@bhaap)](https://github.com/bhaap "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Johan Nenzén (@JohNan)](https://github.com/JohNan "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") - [Johan Ström (@stromnet)](https://github.com/stromnet "13 total commits to the Home Assistant orga: 13 commits to open-zwave ") @@ -5098,11 +5892,11 @@ This page contains a list of people who have contributed in one way or another t - [Johann Bauer (@bauerj)](https://github.com/bauerj "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Johann Kellerman (@kellerza)](https://github.com/kellerza "201 total commits to the Home Assistant orga: -163 commits to home-assistant -36 commits to home-assistant.io -1 commit to developers.home-assistant +- [Johann Kellerman (@kellerza)](https://github.com/kellerza "213 total commits to the Home Assistant orga: +173 commits to home-assistant +38 commits to home-assistant.io 1 commit to people +1 commit to developers.home-assistant ") - [Johann Schmitz (@ercpe)](https://github.com/ercpe "1 total commits to the Home Assistant orga: 1 commit to appdaemon @@ -5136,8 +5930,12 @@ This page contains a list of people who have contributed in one way or another t - [John Coggeshall (@coogle)](https://github.com/coogle "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [John Evans (@GrandadEvans)](https://github.com/GrandadEvans "2 total commits to the Home Assistant orga: +- [John Dyer (@johntdyer)](https://github.com/johntdyer "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") +- [John Evans (@GrandadEvans)](https://github.com/GrandadEvans "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io +1 commit to developers.home-assistant ") - [John K\. Luebs (@jkl1337)](https://github.com/jkl1337 "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -5148,15 +5946,23 @@ This page contains a list of people who have contributed in one way or another t - [John Lindley (@jwl17330536)](https://github.com/jwl17330536 "1 total commits to the Home Assistant orga: 1 commit to appdaemon ") +- [John Luetke (@johnluetke)](https://github.com/johnluetke "10 total commits to the Home Assistant orga: +5 commits to home-assistant.io +5 commits to home-assistant +") - [John McLaughlin (@loghound)](https://github.com/loghound "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [John Mihalic (@mezz64)](https://github.com/mezz64 "57 total commits to the Home Assistant orga: -43 commits to home-assistant +- [John Mihalic (@mezz64)](https://github.com/mezz64 "61 total commits to the Home Assistant orga: +47 commits to home-assistant 12 commits to home-assistant.io 1 commit to hadashboard 1 commit to home-assistant-polymer ") +- [John Raahauge (@AZDane)](https://github.com/AZDane "4 total commits to the Home Assistant orga: +3 commits to home-assistant +1 commit to home-assistant.io +") - [John Shahawy (@JohnShahawy)](https://github.com/JohnShahawy "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -5166,22 +5972,31 @@ This page contains a list of people who have contributed in one way or another t - [John Williams (@Jaidan)](https://github.com/Jaidan "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [johnappletree (@johnappletree)](https://github.com/johnappletree "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io -") - [JohnClay (@JohnClay)](https://github.com/JohnClay "2 total commits to the Home Assistant orga: 2 commits to 1password-teams-open-source ") +- [Johnny Bretz (@FindingJohnny)](https://github.com/FindingJohnny "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [Johnny Chadda (@joch)](https://github.com/joch "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant-polymer ") +- [Johnny Moore (@xt16johnny)](https://github.com/xt16johnny "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [JohnnyCAPSLOCK (@JohnnyCAPSLOCK)](https://github.com/JohnnyCAPSLOCK "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [johnnychicago (@johnnychicago)](https://github.com/johnnychicago "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Jon (@JonMurphy)](https://github.com/JonMurphy "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") +- [Jon (@VdkaShaker)](https://github.com/VdkaShaker "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [Jon Banafato (@jonafato)](https://github.com/jonafato "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") @@ -5195,14 +6010,21 @@ This page contains a list of people who have contributed in one way or another t - [Jon Evans (@craftyjon)](https://github.com/craftyjon "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Jon Evans (@evansj)](https://github.com/evansj "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Jon Gerdes (@gerdesj)](https://github.com/gerdesj "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") +- [Jon Gilmore (@JonGilmore)](https://github.com/JonGilmore "7 total commits to the Home Assistant orga: +4 commits to home-assistant +3 commits to home-assistant.io +") - [Jon Gilmore (@jon102034050)](https://github.com/jon102034050 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Jon Griffith (@arretx)](https://github.com/arretx "16 total commits to the Home Assistant orga: -15 commits to home-assistant.io +- [Jon Griffith (@arretx)](https://github.com/arretx "17 total commits to the Home Assistant orga: +16 commits to home-assistant.io 1 commit to appdaemon ") - [Jon Maddox (@maddox)](https://github.com/maddox "108 total commits to the Home Assistant orga: @@ -5214,12 +6036,17 @@ This page contains a list of people who have contributed in one way or another t - [Jon Shier (@jshier)](https://github.com/jshier "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [Jonas Janz (@PixelJonas)](https://github.com/PixelJonas "1 total commits to the Home Assistant orga: +- [Jon Travis (@trav)](https://github.com/trav "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Jonas Janz (@PixelJonas)](https://github.com/PixelJonas "4 total commits to the Home Assistant orga: +2 commits to home-assistant 1 commit to hassio-build +1 commit to home-assistant.io ") -- [Jonas Pedersen (@JonasPed)](https://github.com/JonasPed "8 total commits to the Home Assistant orga: -3 commits to home-assistant.io -3 commits to home-assistant +- [Jonas Pedersen (@JonasPed)](https://github.com/JonasPed "10 total commits to the Home Assistant orga: +4 commits to home-assistant +4 commits to home-assistant.io 1 commit to appdaemon 1 commit to developers.home-assistant ") @@ -5230,9 +6057,17 @@ This page contains a list of people who have contributed in one way or another t - [Jonatan Castro (@jcastro)](https://github.com/jcastro "7 total commits to the Home Assistant orga: 7 commits to home-assistant.io ") +- [Jonathan (@jmw6773)](https://github.com/jmw6773 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Jonathan (@jlauwers)](https://github.com/jlauwers "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Jonathan Adams (@jonathanadams)](https://github.com/jonathanadams "3 total commits to the Home Assistant orga: +1 commit to hassio-addons +1 commit to developers.home-assistant +1 commit to home-assistant.io +") - [Jonathan Batchelor (@jmb)](https://github.com/jmb "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -5242,9 +6077,12 @@ This page contains a list of people who have contributed in one way or another t - [Jonathan Herlin (@Jonher937)](https://github.com/Jonher937 "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Jonathan Keljo (@jkeljo)](https://github.com/jkeljo "9 total commits to the Home Assistant orga: -5 commits to home-assistant.io -4 commits to home-assistant +- [Jonathan Jefferies (@jjok)](https://github.com/jjok "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Jonathan Keljo (@jkeljo)](https://github.com/jkeljo "17 total commits to the Home Assistant orga: +11 commits to home-assistant +6 commits to home-assistant.io ") - [Jonathan Martens (@jmartens)](https://github.com/jmartens "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -5253,8 +6091,8 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 2 commits to home-assistant.io ") -- [Jonathan Weinberg (@jonathanweinberg)](https://github.com/jonathanweinberg "4 total commits to the Home Assistant orga: -4 commits to home-assistant.io +- [Jonathan Weinberg (@jonathanweinberg)](https://github.com/jonathanweinberg "5 total commits to the Home Assistant orga: +5 commits to home-assistant.io ") - [Jonathan Wukitsch (@insleep)](https://github.com/insleep "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -5268,12 +6106,15 @@ This page contains a list of people who have contributed in one way or another t - [jonudewux (@jonudewux)](https://github.com/jonudewux "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") +- [jonwaland (@jonwaland)](https://github.com/jonwaland "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [joopster (@joopert)](https://github.com/joopert "7 total commits to the Home Assistant orga: 6 commits to home-assistant 1 commit to home-assistant.io ") -- [Joost Boomkamp (@increddibelly)](https://github.com/increddibelly "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Joost Boomkamp (@increddibelly)](https://github.com/increddibelly "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [Joost D (@jmjdamen)](https://github.com/jmjdamen "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -5285,20 +6126,28 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Jordi (@hokus15)](https://github.com/hokus15 "4 total commits to the Home Assistant orga: +- [Jordan Speicher (@uSpike)](https://github.com/uSpike "4 total commits to the Home Assistant orga: +3 commits to home-assistant +1 commit to home-assistant.io +") +- [Jordi (@hokus15)](https://github.com/hokus15 "5 total commits to the Home Assistant orga: 4 commits to home-assistant.io +1 commit to alerts.home-assistant.io ") - [Jordy (@jbarrancos)](https://github.com/jbarrancos "43 total commits to the Home Assistant orga: 40 commits to home-assistant 3 commits to home-assistant.io ") -- [Jorim Tielemans (@tjorim)](https://github.com/tjorim "96 total commits to the Home Assistant orga: +- [Jorge Martínez López (@jorgeml)](https://github.com/jorgeml "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Jorim Tielemans (@tjorim)](https://github.com/tjorim "97 total commits to the Home Assistant orga: 81 commits to home-assistant.io 6 commits to home-assistant +3 commits to developers.home-assistant +2 commits to hassio 2 commits to hassio-addons 2 commits to hassio-cli -2 commits to hassio -2 commits to developers.home-assistant 1 commit to hassio-build ") - [jorisc90 (@jorisc90)](https://github.com/jorisc90 "1 total commits to the Home Assistant orga: @@ -5307,9 +6156,6 @@ This page contains a list of people who have contributed in one way or another t - [Josa Gesell (@josa42)](https://github.com/josa42 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Jose A\. Jiménez (@jcampoy)](https://github.com/jcampoy "1 total commits to the Home Assistant orga: -1 commit to developers.home-assistant -") - [Jose Juan Montes (@jjmontesl)](https://github.com/jjmontesl "9 total commits to the Home Assistant orga: 6 commits to home-assistant 3 commits to home-assistant.io @@ -5318,9 +6164,15 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Josef Schlehofer (@BKPepe)](https://github.com/BKPepe "15 total commits to the Home Assistant orga: +15 commits to home-assistant +") - [Josep del Rio (@joseprio)](https://github.com/joseprio "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Joseph Amalfitano (@CanDoAnything)](https://github.com/CanDoAnything "1 total commits to the Home Assistant orga: +1 commit to hassio-addons +") - [Joseph Carter (@iKarith)](https://github.com/iKarith "9 total commits to the Home Assistant orga: 9 commits to pi-gen ") @@ -5337,21 +6189,29 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") +- [Josh (@space-pope)](https://github.com/space-pope "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Josh (@Joshfindit)](https://github.com/Joshfindit "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "11 total commits to the Home Assistant orga: -7 commits to home-assistant +- [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "17 total commits to the Home Assistant orga: +12 commits to home-assistant 3 commits to homebridge-homeassistant +1 commit to developers.home-assistant +1 commit to home-assistant.io +") +- [Josh Bendavid (@bendavid)](https://github.com/bendavid "2 total commits to the Home Assistant orga: +1 commit to home-assistant 1 commit to home-assistant.io ") - [Josh Cooper (@cooperj)](https://github.com/cooperj "6 total commits to the Home Assistant orga: 5 commits to home-assistant.io 1 commit to hassos ") -- [Josh McCarty (@joshmcrty)](https://github.com/joshmcrty "3 total commits to the Home Assistant orga: +- [Josh McCarty (@joshmcrty)](https://github.com/joshmcrty "9 total commits to the Home Assistant orga: +7 commits to home-assistant-polymer 2 commits to home-assistant.io -1 commit to home-assistant-polymer ") - [Josh Nichols (@technicalpickles)](https://github.com/technicalpickles "28 total commits to the Home Assistant orga: 15 commits to home-assistant @@ -5381,6 +6241,9 @@ This page contains a list of people who have contributed in one way or another t - [joshua stein (@jcs)](https://github.com/jcs "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [José A\. Jiménez (@jcampoy)](https://github.com/jcampoy "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [jowieweb (@jowieweb)](https://github.com/jowieweb "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -5409,6 +6272,12 @@ This page contains a list of people who have contributed in one way or another t - [jtscott (@jtscott)](https://github.com/jtscott "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [ju (@delphiki)](https://github.com/delphiki "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Juan (@JuanMTech)](https://github.com/JuanMTech "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Juan Manuel Combetto (@omniwired)](https://github.com/omniwired "1 total commits to the Home Assistant orga: 1 commit to appdaemon ") @@ -5448,11 +6317,11 @@ This page contains a list of people who have contributed in one way or another t - [Julian Knauer (@jaypikay)](https://github.com/jaypikay "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Julian Schiavo (@justJS)](https://github.com/justJS "1 total commits to the Home Assistant orga: +- [Julian Schiavo (@julianschiavo)](https://github.com/julianschiavo "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [Julien Brochet (@aerialls)](https://github.com/aerialls "5 total commits to the Home Assistant orga: -3 commits to home-assistant +- [Julien Brochet (@aerialls)](https://github.com/aerialls "10 total commits to the Home Assistant orga: +8 commits to home-assistant 2 commits to home-assistant.io ") - [Julien Danjou (@jd)](https://github.com/jd "1 total commits to the Home Assistant orga: @@ -5467,18 +6336,31 @@ This page contains a list of people who have contributed in one way or another t - [Julien Wajsberg (@julienw)](https://github.com/julienw "8 total commits to the Home Assistant orga: 8 commits to open-zwave ") -- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "39 total commits to the Home Assistant orga: -31 commits to home-assistant +- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "40 total commits to the Home Assistant orga: +32 commits to home-assistant 8 commits to home-assistant.io ") +- [jumpkick (@deftdawg)](https://github.com/deftdawg "18 total commits to the Home Assistant orga: +14 commits to home-assistant +4 commits to home-assistant.io +") - [Junian Triajianto (@junian)](https://github.com/junian "1 total commits to the Home Assistant orga: 1 commit to pi-gen ") - [jurafxp (@jurafxp)](https://github.com/jurafxp "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Justin Bassett (@JBassett)](https://github.com/JBassett "3 total commits to the Home Assistant orga: +- [Jurriaan Pruis (@jurriaan)](https://github.com/jurriaan "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Jussi Vatjus\-Anttila (@jupe)](https://github.com/jupe "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Justin Bassett (@JBassett)](https://github.com/JBassett "6 total commits to the Home Assistant orga: 2 commits to home-assistant.io +1 commit to home-assistant-polymer +1 commit to developers.home-assistant +1 commit to home-assistant-android 1 commit to home-assistant ") - [Justin Dray (@justin8)](https://github.com/justin8 "9 total commits to the Home Assistant orga: @@ -5507,6 +6389,9 @@ This page contains a list of people who have contributed in one way or another t - [Justin Otherguy (@justinotherguy)](https://github.com/justinotherguy "1 total commits to the Home Assistant orga: 1 commit to hassos ") +- [Justin Vanderhooft (@vanstinator)](https://github.com/vanstinator "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [Justin Weberg (@justweb1)](https://github.com/justweb1 "28 total commits to the Home Assistant orga: 13 commits to home-assistant-polymer 7 commits to hassbot @@ -5525,21 +6410,32 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant 1 commit to home-assistant.io ") +- [jvannoyx4 (@jvannoyx4)](https://github.com/jvannoyx4 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [jvimont (@jvimont)](https://github.com/jvimont "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [jwater7 (@jwater7)](https://github.com/jwater7 "2 total commits to the Home Assistant orga: +- [JW (@jw-00000)](https://github.com/jw-00000 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [jwater7 (@jwater7)](https://github.com/jwater7 "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io +1 commit to home-assistant ") - [jxwolstenholme (@jxwolstenholme)](https://github.com/jxwolstenholme "4 total commits to the Home Assistant orga: 3 commits to home-assistant 1 commit to home-assistant.io ") +- [jyrki69 (@jyrki69)](https://github.com/jyrki69 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Jérémie Klein (@grm)](https://github.com/grm "1 total commits to the Home Assistant orga: 1 commit to appdaemon ") -- [Jérôme W (@RomRider)](https://github.com/RomRider "3 total commits to the Home Assistant orga: +- [Jérôme W (@RomRider)](https://github.com/RomRider "4 total commits to the Home Assistant orga: 2 commits to home-assistant +1 commit to home-assistant-polymer 1 commit to home-assistant.io ") - [Jürgen Haas (@jurgenhaas)](https://github.com/jurgenhaas "1 total commits to the Home Assistant orga: @@ -5562,8 +6458,8 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") -- [KaiboshOz (@KaiboshOz)](https://github.com/KaiboshOz "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [KaiboshOz (@KaiboshOz)](https://github.com/KaiboshOz "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io ") - [kaiomatico (@kaiomatico)](https://github.com/kaiomatico "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -5583,7 +6479,14 @@ This page contains a list of people who have contributed in one way or another t - [Kame (@tobiasgraf)](https://github.com/tobiasgraf "14 total commits to the Home Assistant orga: 14 commits to open-zwave ") -- [Kamil Warguła (@quamilek)](https://github.com/quamilek "1 total commits to the Home Assistant orga: +- [Kamil Warguła (@quamilek)](https://github.com/quamilek "25 total commits to the Home Assistant orga: +24 commits to home-assistant-cli +1 commit to home-assistant +") +- [Kanga\-Who (@Kanga-Who)](https://github.com/Kanga-Who "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Kareem Straker (@KptnKMan)](https://github.com/KptnKMan "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [Kareem Sultan (@kareem613)](https://github.com/kareem613 "1 total commits to the Home Assistant orga: @@ -5593,9 +6496,9 @@ This page contains a list of people who have contributed in one way or another t 4 commits to home-assistant 1 commit to home-assistant.io ") -- [Karim Geiger (@KarimGeiger)](https://github.com/KarimGeiger "2 total commits to the Home Assistant orga: +- [Karim Geiger (@KarimGeiger)](https://github.com/KarimGeiger "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io 1 commit to home-assistant -1 commit to home-assistant.io ") - [Karim Roukoz (@kkr16)](https://github.com/kkr16 "2 total commits to the Home Assistant orga: 2 commits to home-assistant @@ -5604,8 +6507,8 @@ This page contains a list of people who have contributed in one way or another t 4 commits to home-assistant-polymer 2 commits to home-assistant.io ") -- [karlkar (@karlkar)](https://github.com/karlkar "16 total commits to the Home Assistant orga: -11 commits to home-assistant +- [karlkar (@karlkar)](https://github.com/karlkar "18 total commits to the Home Assistant orga: +13 commits to home-assistant 5 commits to home-assistant.io ") - [Karsten Nerdinger (@Piratonym)](https://github.com/Piratonym "2 total commits to the Home Assistant orga: @@ -5615,22 +6518,26 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") -- [kbickar (@kbickar)](https://github.com/kbickar "11 total commits to the Home Assistant orga: -9 commits to home-assistant +- [kbickar (@kbickar)](https://github.com/kbickar "17 total commits to the Home Assistant orga: +12 commits to home-assistant +5 commits to home-assistant.io +") +- [KD4SIR (@scotthibbs)](https://github.com/scotthibbs "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [KD4SIR (@scotthibbs)](https://github.com/scotthibbs "1 total commits to the Home Assistant orga: +- [Kdemontf (@Kdemontf)](https://github.com/Kdemontf "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [kdvlr (@kdvlr)](https://github.com/kdvlr "1 total commits to the Home Assistant orga: +- [kdvlr (@kdvlr)](https://github.com/kdvlr "2 total commits to the Home Assistant orga: 1 commit to home-assistant +1 commit to home-assistant.io ") - [Keaton Taylor (@keatontaylor)](https://github.com/keatontaylor "7 total commits to the Home Assistant orga: 4 commits to home-assistant 3 commits to home-assistant.io ") -- [Kees Schollaart (@keesschollaart81)](https://github.com/keesschollaart81 "2 total commits to the Home Assistant orga: -2 commits to home-assistant +- [Kees Schollaart (@keesschollaart81)](https://github.com/keesschollaart81 "3 total commits to the Home Assistant orga: +3 commits to home-assistant ") - [keesak (@cdkonecny)](https://github.com/cdkonecny "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -5649,9 +6556,11 @@ This page contains a list of people who have contributed in one way or another t - [Keith Lamprecht (@Nixon506E)](https://github.com/Nixon506E "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Keith Pine (@kpine)](https://github.com/kpine "2 total commits to the Home Assistant orga: +- [Keith Pine (@kpine)](https://github.com/kpine "8 total commits to the Home Assistant orga: +5 commits to home-assistant.io +1 commit to developers.home-assistant 1 commit to open-zwave -1 commit to home-assistant.io +1 commit to home-assistant ") - [Kelly Burke (@klyburke)](https://github.com/klyburke "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source @@ -5666,10 +6575,13 @@ This page contains a list of people who have contributed in one way or another t 13 commits to home-assistant.io 2 commits to appdaemon ") -- [kennedyshead (@kennedyshead)](https://github.com/kennedyshead "50 total commits to the Home Assistant orga: -45 commits to home-assistant +- [kennedyshead (@kennedyshead)](https://github.com/kennedyshead "54 total commits to the Home Assistant orga: +49 commits to home-assistant 5 commits to home-assistant.io ") +- [Kenneth Lavrsen (@KennethLavrsen)](https://github.com/KennethLavrsen "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Kenny Millington (@kmdm)](https://github.com/kmdm "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") @@ -5687,6 +6599,12 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") +- [Ketil Moland Olsen (@ketilmo)](https://github.com/ketilmo "11 total commits to the Home Assistant orga: +11 commits to home-assistant.io +") +- [kevank (@kevank)](https://github.com/kevank "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Kevin (@Mister-Espria)](https://github.com/Mister-Espria "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") @@ -5696,25 +6614,24 @@ This page contains a list of people who have contributed in one way or another t - [Kevin Christensen (@nivekmai)](https://github.com/nivekmai "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Kevin Cooper (@JumpMaster)](https://github.com/JumpMaster "1 total commits to the Home Assistant orga: -1 commit to home-assistant -") - [Kevin Delaney (@kevindelaney)](https://github.com/kevindelaney "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") - [Kevin Duong (@kevinduong)](https://github.com/kevinduong "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Kevin Eifinger (@eifinger)](https://github.com/eifinger "2 total commits to the Home Assistant orga: +- [Kevin Eifinger (@eifinger)](https://github.com/eifinger "10 total commits to the Home Assistant orga: +6 commits to home-assistant +2 commits to home-assistant.io 1 commit to appdaemon -1 commit to home-assistant.io +1 commit to custom-components-wheels ") - [Kevin Fowlks (@kfowlks)](https://github.com/kfowlks "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "41 total commits to the Home Assistant orga: -27 commits to home-assistant -14 commits to home-assistant.io +- [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "47 total commits to the Home Assistant orga: +31 commits to home-assistant +16 commits to home-assistant.io ") - [Kevin Gisi (@gisikw)](https://github.com/gisikw "5 total commits to the Home Assistant orga: 5 commits to home-assistant.io @@ -5726,6 +6643,17 @@ This page contains a list of people who have contributed in one way or another t 8 commits to home-assistant.io 1 commit to home-assistant ") +- [Kevin Köck (@kevinkk525)](https://github.com/kevinkk525 "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Kevin Lee (@kevineriklee)](https://github.com/kevineriklee "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Kevin McCormack (@HarlemSquirrel)](https://github.com/HarlemSquirrel "6 total commits to the Home Assistant orga: +4 commits to home-assistant +2 commits to home-assistant.io +") - [Kevin Raddatz (@kraddatz)](https://github.com/kraddatz "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") @@ -5763,13 +6691,17 @@ This page contains a list of people who have contributed in one way or another t 4 commits to home-assistant 1 commit to home-assistant.io ") -- [Khole (@KJonline)](https://github.com/KJonline "4 total commits to the Home Assistant orga: -2 commits to home-assistant -2 commits to home-assistant.io +- [Khole (@KJonline)](https://github.com/KJonline "13 total commits to the Home Assistant orga: +8 commits to home-assistant +5 commits to home-assistant.io ") -- [kimvonmullen (@kimvonmullen)](https://github.com/kimvonmullen "1 total commits to the Home Assistant orga: +- [Kim Frellsen (@kimfrellsen)](https://github.com/kimfrellsen "2 total commits to the Home Assistant orga: +1 commit to home-assistant 1 commit to home-assistant.io ") +- [kimvonmullen (@kimvonmullen)](https://github.com/kimvonmullen "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [KingJ (@KingJ)](https://github.com/KingJ "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -5779,6 +6711,9 @@ This page contains a list of people who have contributed in one way or another t - [kireyeu (@kireyeu)](https://github.com/kireyeu "4 total commits to the Home Assistant orga: 4 commits to home-assistant-notebooks ") +- [Kit Klein (@kit-klein)](https://github.com/kit-klein "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [kitcorey (@kitcorey)](https://github.com/kitcorey "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -5789,13 +6724,18 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant.io ") - [Klaas Hoekema (@KlaasH)](https://github.com/KlaasH "12 total commits to the Home Assistant orga: -5 commits to home-assistant.io 5 commits to home-assistant +5 commits to home-assistant.io 2 commits to home-assistant-polymer ") -- [Klaas Schoute (@klaasnicolaas)](https://github.com/klaasnicolaas "473 total commits to the Home Assistant orga: -472 commits to home-assistant.io +- [Klaas Schoute (@klaasnicolaas)](https://github.com/klaasnicolaas "553 total commits to the Home Assistant orga: +543 commits to home-assistant.io +3 commits to developers.home-assistant +2 commits to hassio-addons +2 commits to home-assistant 1 commit to people +1 commit to probot-home-assistant +1 commit to alerts.home-assistant.io ") - [Klaudiusz Staniek (@kstaniek)](https://github.com/kstaniek "7 total commits to the Home Assistant orga: 5 commits to home-assistant @@ -5807,14 +6747,15 @@ This page contains a list of people who have contributed in one way or another t - [kllngtme (@kllngtme)](https://github.com/kllngtme "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [kloggy (@kloggy)](https://github.com/kloggy "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [kloggy (@kloggy)](https://github.com/kloggy "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io ") - [knottyau75 (@knottyau75)](https://github.com/knottyau75 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Koen Ekelschot (@peckham)](https://github.com/peckham "1 total commits to the Home Assistant orga: +- [Koen Ekelschot (@peckham)](https://github.com/peckham "2 total commits to the Home Assistant orga: 1 commit to home-assistant +1 commit to home-assistant.io ") - [Koen Kanters (@Koenkk)](https://github.com/Koenkk "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -5852,6 +6793,10 @@ This page contains a list of people who have contributed in one way or another t 1 commit to netdisco 1 commit to home-assistant.io ") +- [kreegahbundolo (@kreegahbundolo)](https://github.com/kreegahbundolo "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Kris Molendyke (@krismolendyke)](https://github.com/krismolendyke "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -5876,9 +6821,11 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [ktnrg45 (@ktnrg45)](https://github.com/ktnrg45 "10 total commits to the Home Assistant orga: -7 commits to home-assistant -3 commits to home-assistant.io +- [ktnrg45 (@ktnrg45)](https://github.com/ktnrg45 "28 total commits to the Home Assistant orga: +22 commits to home-assistant +4 commits to home-assistant.io +1 commit to home-assistant-polymer +1 commit to developers.home-assistant ") - [Kumar Gaurav Pandey (@gaurav1911)](https://github.com/gaurav1911 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -5889,8 +6836,11 @@ This page contains a list of people who have contributed in one way or another t - [Kurt McKee (@kurtmckee)](https://github.com/kurtmckee "260 total commits to the Home Assistant orga: 260 commits to feedparser ") -- [Kyle Decot (@kyledecot)](https://github.com/kyledecot "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [kvanhoorn (@kvanhoorn)](https://github.com/kvanhoorn "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Kyle Gill (@gillkyle)](https://github.com/gillkyle "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant ") - [Kyle Gordon (@kylegordon)](https://github.com/kylegordon "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -5900,9 +6850,12 @@ This page contains a list of people who have contributed in one way or another t 1 commit to open-zwave 1 commit to home-assistant.io ") -- [Kyle Niewiada (@aav7fl)](https://github.com/aav7fl "5 total commits to the Home Assistant orga: +- [Kyle Niewiada (@aav7fl)](https://github.com/aav7fl "6 total commits to the Home Assistant orga: 4 commits to home-assistant -1 commit to home-assistant.io +2 commits to home-assistant.io +") +- [Kyle Pinette (@sowelie)](https://github.com/sowelie "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [Kyle R (@qcryptic)](https://github.com/qcryptic "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -5913,9 +6866,16 @@ This page contains a list of people who have contributed in one way or another t - [kylerw (@kylerw)](https://github.com/kylerw "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [L (@lance36)](https://github.com/lance36 "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [labrunning (@labrunning)](https://github.com/labrunning "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Lado Kumsiashvili (@herrlado)](https://github.com/herrlado "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [lamiskin (@lamiskin)](https://github.com/lamiskin "6 total commits to the Home Assistant orga: 4 commits to home-assistant.io 2 commits to home-assistant @@ -5926,9 +6886,6 @@ This page contains a list of people who have contributed in one way or another t - [Lance Moss (@mossyhub)](https://github.com/mossyhub "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [lance36 (@lance36)](https://github.com/lance36 "1 total commits to the Home Assistant orga: -1 commit to home-assistant -") - [lapy (@lapy)](https://github.com/lapy "5 total commits to the Home Assistant orga: 3 commits to home-assistant 2 commits to home-assistant.io @@ -5973,18 +6930,26 @@ This page contains a list of people who have contributed in one way or another t - [Lazar Obradovic (@lobradov)](https://github.com/lobradov "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [lbouriez (@lbouriez)](https://github.com/lbouriez "1 total commits to the Home Assistant orga: +- [lbouriez (@lbouriez)](https://github.com/lbouriez "2 total commits to the Home Assistant orga: +1 commit to hassio-addons 1 commit to home-assistant.io ") - [lcersly (@lcersly)](https://github.com/lcersly "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [lclc98 (@lclc98)](https://github.com/lclc98 "1 total commits to the Home Assistant orga: +1 commit to hassio-addons +") - [leaen (@leaen)](https://github.com/leaen "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Leandro (@leofuscaldi)](https://github.com/leofuscaldi "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Leandro Loureiro (@lealoureiro)](https://github.com/lealoureiro "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Lechu (@ShadeByLesio)](https://github.com/ShadeByLesio "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -5997,6 +6962,9 @@ This page contains a list of people who have contributed in one way or another t - [lee\-js (@lee-js)](https://github.com/lee-js "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") +- [legacycode (@legacycode)](https://github.com/legacycode "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [lekobob (@lekobob)](https://github.com/lekobob "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -6009,12 +6977,12 @@ This page contains a list of people who have contributed in one way or another t - [lennartk (@lennart-k)](https://github.com/lennart-k "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [LeoCal (@LeoCal)](https://github.com/LeoCal "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [LeoDJ (@LeoDJ)](https://github.com/LeoDJ "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Leon Schuermann (@lschuermann)](https://github.com/lschuermann "3 total commits to the Home Assistant orga: -3 commits to dehydrated -") - [Leon99 (@Leon99)](https://github.com/Leon99 "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to appdaemon @@ -6026,8 +6994,8 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant 1 commit to home-assistant.io ") -- [Leonardo Merza (@ljmerza)](https://github.com/ljmerza "13 total commits to the Home Assistant orga: -6 commits to home-assistant +- [Leonardo Merza (@ljmerza)](https://github.com/ljmerza "14 total commits to the Home Assistant orga: +7 commits to home-assistant 4 commits to home-assistant.io 2 commits to developers.home-assistant 1 commit to home-assistant-polymer @@ -6035,9 +7003,6 @@ This page contains a list of people who have contributed in one way or another t - [Leonardo Saraiva (@vyper)](https://github.com/vyper "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [leonklingele (@leonklingele)](https://github.com/leonklingele "4 total commits to the Home Assistant orga: -4 commits to dehydrated -") - [Leothlon (@leothlon)](https://github.com/leothlon "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io @@ -6058,6 +7023,12 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant-polymer 1 commit to people ") +- [Lewys Martin (@CountParadox)](https://github.com/CountParadox "7 total commits to the Home Assistant orga: +7 commits to home-assistant.io +") +- [leytpapas (@leytpapas)](https://github.com/leytpapas "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Li\-Wen Yip (@liwenyip)](https://github.com/liwenyip "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -6067,10 +7038,17 @@ This page contains a list of people who have contributed in one way or another t - [Liang Sun (@leonsim)](https://github.com/leonsim "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [libots (@libots)](https://github.com/libots "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [lich (@mu4yu3)](https://github.com/mu4yu3 "4 total commits to the Home Assistant orga: 2 commits to home-assistant 2 commits to home-assistant.io ") +- [lifeisafractal (@lifeisafractal)](https://github.com/lifeisafractal "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [lightbullet (@lightbullet)](https://github.com/lightbullet "10 total commits to the Home Assistant orga: 10 commits to open-zwave ") @@ -6095,15 +7073,24 @@ This page contains a list of people who have contributed in one way or another t - [linvinus (@linvinus)](https://github.com/linvinus "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") +- [Liran BG (@liranbg)](https://github.com/liranbg "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [lizaoreo (@lizaoreo)](https://github.com/lizaoreo "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [LJU (@LEJOUI)](https://github.com/LEJOUI "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [lolouk44 (@lolouk44)](https://github.com/lolouk44 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [longman391 (@longman391)](https://github.com/longman391 "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Lopton (@Lopton)](https://github.com/Lopton "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [lordneon (@lordneon)](https://github.com/lordneon "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -6111,6 +7098,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Lorenzo Milesi (@maxxer)](https://github.com/maxxer "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [lorenzofattori (@lorenzofattori)](https://github.com/lorenzofattori "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -6143,6 +7133,9 @@ This page contains a list of people who have contributed in one way or another t 4 commits to home-assistant.io 2 commits to home-assistant ") +- [LuBeDa (@lubeda)](https://github.com/lubeda "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Luc Touraille (@stilllman)](https://github.com/stilllman "5 total commits to the Home Assistant orga: 3 commits to home-assistant 1 commit to netdisco @@ -6151,20 +7144,26 @@ This page contains a list of people who have contributed in one way or another t - [Luca Adrian Lindhorst (@lal12)](https://github.com/lal12 "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Luca Angemi (@luca-angemi)](https://github.com/luca-angemi "8 total commits to the Home Assistant orga: -4 commits to home-assistant -3 commits to home-assistant.io +- [Luca Angemi (@luca-angemi)](https://github.com/luca-angemi "12 total commits to the Home Assistant orga: +6 commits to home-assistant.io +5 commits to home-assistant 1 commit to home-assistant-polymer ") - [Luca Simonetti @Nohup (@luca-simonetti)](https://github.com/luca-simonetti "1 total commits to the Home Assistant orga: 1 commit to hassio ") +- [Luca Soldi (@LucaSoldi)](https://github.com/LucaSoldi "7 total commits to the Home Assistant orga: +6 commits to home-assistant +1 commit to home-assistant.io +") +- [Luca Zimmermann (@soundstorm)](https://github.com/soundstorm "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Lucas Nussbaum (@lnussbaum)](https://github.com/lnussbaum "26 total commits to the Home Assistant orga: 26 commits to open-zwave ") -- [LucaSoldi (@LucaSoldi)](https://github.com/LucaSoldi "7 total commits to the Home Assistant orga: -6 commits to home-assistant -1 commit to home-assistant.io +- [Luciano Colosio (@unlucio)](https://github.com/unlucio "1 total commits to the Home Assistant orga: +1 commit to hassio-installer ") - [Lucien Guimier (@guimier)](https://github.com/guimier "1 total commits to the Home Assistant orga: 1 commit to libcoap @@ -6185,6 +7184,9 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant.io 2 commits to home-assistant ") +- [luismonge1192 (@luismonge1192)](https://github.com/luismonge1192 "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [Lukas Bachschwell (@s00500)](https://github.com/s00500 "1 total commits to the Home Assistant orga: 1 commit to hassio-addons ") @@ -6193,16 +7195,17 @@ This page contains a list of people who have contributed in one way or another t 12 commits to home-assistant.io 2 commits to home-assistant-polymer ") -- [Lukas Hetzenecker (@lukas-hetzenecker)](https://github.com/lukas-hetzenecker "15 total commits to the Home Assistant orga: -10 commits to home-assistant +- [Lukas Ecklmayr (@outrun0506)](https://github.com/outrun0506 "6 total commits to the Home Assistant orga: +5 commits to home-assistant.io +1 commit to home-assistant-polymer +") +- [Lukas Hetzenecker (@lukas-hetzenecker)](https://github.com/lukas-hetzenecker "16 total commits to the Home Assistant orga: +11 commits to home-assistant 5 commits to home-assistant.io ") - [Lukas Porubcan (@Luc3as)](https://github.com/Luc3as "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") -- [Lukas Schauer (@lukas2511)](https://github.com/lukas2511 "256 total commits to the Home Assistant orga: -256 commits to dehydrated -") - [Luke Armstrong (@lukearmstrong)](https://github.com/lukearmstrong "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") @@ -6213,12 +7216,18 @@ This page contains a list of people who have contributed in one way or another t - [Luke Karrys (@lukekarrys)](https://github.com/lukekarrys "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Luke Pomfrey (@lpomfrey)](https://github.com/lpomfrey "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [lukie80 (@lukie80)](https://github.com/lukie80 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [lunar\-consultancy (@lunar-consultancy)](https://github.com/lunar-consultancy "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [lundan (@lundan)](https://github.com/lundan "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [LuPa (@lupa18)](https://github.com/lupa18 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -6226,9 +7235,9 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant.io 2 commits to home-assistant ") -- [Luuk (@luukd)](https://github.com/luukd "4 total commits to the Home Assistant orga: -3 commits to home-assistant.io -1 commit to home-assistant +- [Luuk (@luukd)](https://github.com/luukd "6 total commits to the Home Assistant orga: +4 commits to home-assistant.io +2 commits to home-assistant ") - [Luuk (@Maharball1)](https://github.com/Maharball1 "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -6241,21 +7250,31 @@ This page contains a list of people who have contributed in one way or another t - [lwad (@lwad)](https://github.com/lwad "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [lyghtnox (@lyghtnox)](https://github.com/lyghtnox "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to home-assistant +") - [m4dmin (@m4dmin)](https://github.com/m4dmin "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [m4tek (@m4tek)](https://github.com/m4tek "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Maarten (@mvandek)](https://github.com/mvandek "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Maarten Damen (@maartendamen)](https://github.com/maartendamen "6 total commits to the Home Assistant orga: 6 commits to open-zwave ") - [Maarten Groeneweg (@lazytesting)](https://github.com/lazytesting "1 total commits to the Home Assistant orga: 1 commit to hassio-addons ") -- [Maciej Bieniek (@bieniu)](https://github.com/bieniu "12 total commits to the Home Assistant orga: -8 commits to home-assistant -3 commits to home-assistant.io +- [Maarten Lakerveld (@mlakerveld)](https://github.com/mlakerveld "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Maciej Bieniek (@bieniu)](https://github.com/bieniu "26 total commits to the Home Assistant orga: +19 commits to home-assistant +6 commits to home-assistant.io 1 commit to home-assistant-polymer ") - [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "5 total commits to the Home Assistant orga: @@ -6280,12 +7299,19 @@ This page contains a list of people who have contributed in one way or another t - [Maggi Trymbill (@trymbill)](https://github.com/trymbill "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [MagicalTrev89 (@MagicalTrev89)](https://github.com/MagicalTrev89 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [MagieMalone (@MagieMalone)](https://github.com/MagieMalone "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [magnjo (@magnjo)](https://github.com/magnjo "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") +- [Magnus Brange (@brange)](https://github.com/brange "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") - [Magnus Ihse Bursie (@magicus)](https://github.com/magicus "17 total commits to the Home Assistant orga: 9 commits to home-assistant 4 commits to netdisco @@ -6298,8 +7324,8 @@ This page contains a list of people who have contributed in one way or another t - [Magnus Månsson (@magma1447)](https://github.com/magma1447 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Magnus Øverli (@magnusoverli)](https://github.com/magnusoverli "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Magnus Øverli (@magnusoverli)](https://github.com/magnusoverli "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io ") - [MagnusKnutas (@MagnusKnutas)](https://github.com/MagnusKnutas "29 total commits to the Home Assistant orga: 29 commits to home-assistant @@ -6307,30 +7333,36 @@ This page contains a list of people who have contributed in one way or another t - [magreen24 (@magreen24)](https://github.com/magreen24 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "35 total commits to the Home Assistant orga: -32 commits to home-assistant.io +- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "36 total commits to the Home Assistant orga: +33 commits to home-assistant.io 2 commits to home-assistant 1 commit to people ") - [Mahesh Subramaniya (@msubra)](https://github.com/msubra "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [maheus (@maheus)](https://github.com/maheus "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Maido Käära (@v3rm0n)](https://github.com/v3rm0n "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Maikel Punie (@Cereal2nd)](https://github.com/Cereal2nd "9 total commits to the Home Assistant orga: -5 commits to home-assistant -4 commits to home-assistant.io +- [Maikel Punie (@Cereal2nd)](https://github.com/Cereal2nd "24 total commits to the Home Assistant orga: +16 commits to home-assistant +8 commits to home-assistant.io ") - [Maikel Wever (@maikelwever)](https://github.com/maikelwever "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") +- [MajestyIV (@MajestyIV)](https://github.com/MajestyIV "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [majstermod (@majstermod)](https://github.com/majstermod "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [majuss (@majuss)](https://github.com/majuss "4 total commits to the Home Assistant orga: -3 commits to home-assistant -1 commit to home-assistant.io +- [majuss (@majuss)](https://github.com/majuss "9 total commits to the Home Assistant orga: +5 commits to home-assistant +4 commits to home-assistant.io ") - [MaKin211 (@MaKin211)](https://github.com/MaKin211 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -6342,27 +7374,40 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant 2 commits to home-assistant.io ") -- [Malachi Soord (@inverse)](https://github.com/inverse "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Malachi Soord (@inverse)](https://github.com/inverse "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io ") -- [Malte Franken (@exxamalte)](https://github.com/exxamalte "50 total commits to the Home Assistant orga: -30 commits to home-assistant -14 commits to home-assistant.io -5 commits to home-assistant-polymer +- [Malte Franken (@exxamalte)](https://github.com/exxamalte "81 total commits to the Home Assistant orga: +55 commits to home-assistant +19 commits to home-assistant.io +6 commits to home-assistant-polymer 1 commit to developers.home-assistant ") - [Manoj (@vmulpuru)](https://github.com/vmulpuru "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Manolis Chalkiadakis (@mxalk)](https://github.com/mxalk "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [manonstreet (@manonstreet)](https://github.com/manonstreet "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Mans Matulewicz (@MansM)](https://github.com/MansM "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Manuel de la Rosa (@manuel-jrs)](https://github.com/manuel-jrs "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") +- [Manuel Díez (@manutenfruits)](https://github.com/manutenfruits "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Manuel Zubieta (@iautom8things)](https://github.com/iautom8things "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [mar005 (@mar005)](https://github.com/mar005 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Marat Levit (@mlevit)](https://github.com/mlevit "4 total commits to the Home Assistant orga: 4 commits to home-assistant.io ") @@ -6382,6 +7427,10 @@ This page contains a list of people who have contributed in one way or another t - [Marc Goodner (@robotdad)](https://github.com/robotdad "1 total commits to the Home Assistant orga: 1 commit to scenegen ") +- [Marc Hörsken (@mback2k)](https://github.com/mback2k "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Marc Pabst (@marcpabst)](https://github.com/marcpabst "2 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer 1 commit to home-assistant @@ -6390,9 +7439,19 @@ This page contains a list of people who have contributed in one way or another t 10 commits to home-assistant.io 2 commits to home-assistant ") +- [Marc Randolph (@mrand)](https://github.com/mrand "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Marcel (@MTRNord)](https://github.com/MTRNord "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Marcel Brückner (@marcelbrueckner)](https://github.com/marcelbrueckner "2 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +1 commit to home-assistant.io +") +- [Marcel Herd (@marcelherd)](https://github.com/marcelherd "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Marcel Holle (@multiholle)](https://github.com/multiholle "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -6470,6 +7529,9 @@ This page contains a list of people who have contributed in one way or another t - [Marcus (@dgraye)](https://github.com/dgraye "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Marcus Fredlund (@mr-awk)](https://github.com/mr-awk "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +") - [Marcus Schmidt (@mar-schmidt)](https://github.com/mar-schmidt "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io @@ -6480,14 +7542,23 @@ This page contains a list of people who have contributed in one way or another t - [Marek Lewandowski (@mlewand)](https://github.com/mlewand "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Marianne Hval (@mahval)](https://github.com/mahval "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +") - [Marijn Giesen (@marijngiesen)](https://github.com/marijngiesen "7 total commits to the Home Assistant orga: 5 commits to hadashboard 2 commits to home-assistant.io ") -- [Mario Di Raimondo (@diraimondo)](https://github.com/diraimondo "2 total commits to the Home Assistant orga: +- [Marijn Pool (@IcyPalm)](https://github.com/IcyPalm "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +") +- [Mario Di Raimondo (@mario-tux)](https://github.com/mario-tux "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Mario Limonciello (@superm1)](https://github.com/superm1 "1 total commits to the Home Assistant orga: +1 commit to hassio-installer +") - [Mario Villavecchia (@lichtteil)](https://github.com/lichtteil "6 total commits to the Home Assistant orga: 4 commits to home-assistant.io 2 commits to home-assistant @@ -6495,12 +7566,23 @@ This page contains a list of people who have contributed in one way or another t - [Mario Wenzel (@maweki)](https://github.com/maweki "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Marius (@ciotlosm)](https://github.com/ciotlosm "39 total commits to the Home Assistant orga: +- [Marius (@ciotlosm)](https://github.com/ciotlosm "40 total commits to the Home Assistant orga: 14 commits to home-assistant-polymer 12 commits to home-assistant.io 8 commits to home-assistant 3 commits to developers.home-assistant 2 commits to ui-schema +1 commit to people +") +- [Marius (@Mariusthvdb)](https://github.com/Mariusthvdb "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to home-assistant +") +- [Marius Balčytis (@mariusbalcytis)](https://github.com/mariusbalcytis "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Marius Flage (@mflage)](https://github.com/mflage "2 total commits to the Home Assistant orga: +2 commits to home-assistant ") - [Marius Kotlarz (@kotlarz)](https://github.com/kotlarz "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -6520,12 +7602,6 @@ This page contains a list of people who have contributed in one way or another t - [Mark (@scmmmh)](https://github.com/scmmmh "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Mark Coombes (@marthoc)](https://github.com/marthoc "17 total commits to the Home Assistant orga: -8 commits to home-assistant -4 commits to open-zwave -4 commits to home-assistant.io -1 commit to people -") - [Mark Grimes (@mvgrimes)](https://github.com/mvgrimes "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -6555,6 +7631,9 @@ This page contains a list of people who have contributed in one way or another t - [Mark Leenaerts (@mleenaerts)](https://github.com/mleenaerts "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Mark LUCAS (@marco10024)](https://github.com/marco10024 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Mark Nichols (@zanshin)](https://github.com/zanshin "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -6576,6 +7655,9 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant 1 commit to home-assistant.io ") +- [markharleman (@markharleman)](https://github.com/markharleman "5 total commits to the Home Assistant orga: +5 commits to home-assistant.io +") - [Marko Korhonen (@ReekyMarko)](https://github.com/ReekyMarko "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -6593,22 +7675,26 @@ This page contains a list of people who have contributed in one way or another t - [Markus Ijäs (@mtijas)](https://github.com/mtijas "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Markus Jankowski (@SukramJ)](https://github.com/SukramJ "25 total commits to the Home Assistant orga: -15 commits to home-assistant -6 commits to home-assistant.io +- [Markus Jankowski (@SukramJ)](https://github.com/SukramJ "105 total commits to the Home Assistant orga: +76 commits to home-assistant +24 commits to home-assistant.io +3 commits to developers.home-assistant 2 commits to home-assistant-polymer -2 commits to developers.home-assistant ") -- [Markus Nigbur (@mnigbur)](https://github.com/mnigbur "6 total commits to the Home Assistant orga: +- [Markus Nigbur (@mnigbur)](https://github.com/mnigbur "10 total commits to the Home Assistant orga: +6 commits to home-assistant 3 commits to home-assistant.io -3 commits to home-assistant +1 commit to home-assistant-polymer ") - [Markus Peter (@bimbar)](https://github.com/bimbar "5 total commits to the Home Assistant orga: 3 commits to home-assistant 2 commits to home-assistant.io ") -- [Markus Ressel (@markusressel)](https://github.com/markusressel "6 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [Markus Pöschl (@Poeschl)](https://github.com/Poeschl "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Markus Ressel (@markusressel)](https://github.com/markusressel "7 total commits to the Home Assistant orga: +4 commits to home-assistant.io 3 commits to home-assistant ") - [Markus Stenberg (@fingon)](https://github.com/fingon "6 total commits to the Home Assistant orga: @@ -6617,6 +7703,19 @@ This page contains a list of people who have contributed in one way or another t - [Markus Thiel (@mackelito)](https://github.com/mackelito "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [marthoc (@marthoc)](https://github.com/marthoc "34 total commits to the Home Assistant orga: +23 commits to home-assistant +6 commits to home-assistant.io +4 commits to open-zwave +1 commit to people +") +- [Martijn van Zal (@Martijn02)](https://github.com/Martijn02 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Martin (@crazyfx1)](https://github.com/crazyfx1 "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") - [Martin (@mrvanes)](https://github.com/mrvanes "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -6626,38 +7725,42 @@ This page contains a list of people who have contributed in one way or another t - [Martin Ayotte (@martinayotte)](https://github.com/martinayotte "3 total commits to the Home Assistant orga: 3 commits to python-openzwave ") +- [Martin Banas (@bnsm)](https://github.com/bnsm "2 total commits to the Home Assistant orga: +2 commits to Iconic +") - [Martin Berg (@mbrrg)](https://github.com/mbrrg "12 total commits to the Home Assistant orga: 9 commits to home-assistant 3 commits to home-assistant.io ") -- [Martin Donlon (@wickerwaka)](https://github.com/wickerwaka "4 total commits to the Home Assistant orga: -2 commits to home-assistant +- [Martin Brooksbank (@shutupflanders)](https://github.com/shutupflanders "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Martin Donlon (@wickerwaka)](https://github.com/wickerwaka "5 total commits to the Home Assistant orga: +3 commits to home-assistant 2 commits to home-assistant.io ") -- [Martin Eberhardt (@DarkFox)](https://github.com/DarkFox "7 total commits to the Home Assistant orga: -6 commits to home-assistant.io -1 commit to home-assistant +- [Martin Eberhardt (@DarkFox)](https://github.com/DarkFox "11 total commits to the Home Assistant orga: +7 commits to home-assistant.io +4 commits to home-assistant ") - [Martin Elwin (@melwin)](https://github.com/melwin "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Martin Fuchs (@fucm)](https://github.com/fucm "6 total commits to the Home Assistant orga: -5 commits to home-assistant -1 commit to home-assistant.io +- [Martin Fuchs (@fucm)](https://github.com/fucm "8 total commits to the Home Assistant orga: +6 commits to home-assistant +2 commits to home-assistant.io ") - [Martin Gafner (@mgafner)](https://github.com/mgafner "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Martin Geiseler (@tralafiti)](https://github.com/tralafiti "3 total commits to the Home Assistant orga: -3 commits to dehydrated -") - [Martin Gross (@pc-coholic)](https://github.com/pc-coholic "4 total commits to the Home Assistant orga: 4 commits to home-assistant ") -- [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "201 total commits to the Home Assistant orga: -162 commits to home-assistant -33 commits to home-assistant.io +- [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "224 total commits to the Home Assistant orga: +180 commits to home-assistant +36 commits to home-assistant.io 5 commits to developers.home-assistant +2 commits to example-custom-config 1 commit to people ") - [Martin J\. Laubach (@mjl)](https://github.com/mjl "1 total commits to the Home Assistant orga: @@ -6671,11 +7774,8 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant ") - [Martin Rowan (@shortbloke)](https://github.com/shortbloke "6 total commits to the Home Assistant orga: -3 commits to home-assistant.io 3 commits to home-assistant -") -- [Martin Schut (@schutm)](https://github.com/schutm "1 total commits to the Home Assistant orga: -1 commit to dehydrated +3 commits to home-assistant.io ") - [Martin Tremblay (@MartyTremblay)](https://github.com/MartyTremblay "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -6728,6 +7828,9 @@ This page contains a list of people who have contributed in one way or another t - [masukomi (@masukomi)](https://github.com/masukomi "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Matej Drobnič (@matejdro)](https://github.com/matejdro "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Mateusz Drab (@mateuszdrab)](https://github.com/mateuszdrab "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io @@ -6741,18 +7844,24 @@ This page contains a list of people who have contributed in one way or another t 1 commit to homebridge-homeassistant 1 commit to home-assistant ") -- [Mathieu Maret (@mmaret-geny)](https://github.com/mmaret-geny "1 total commits to the Home Assistant orga: +- [Mathieu Maret (@mmaret)](https://github.com/mmaret "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Mathieu Maret (@mmaret)](https://github.com/mmaret "1 total commits to the Home Assistant orga: +- [Mathieu Maret (@mmaret-geny)](https://github.com/mmaret-geny "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Mathieu Velten (@MatMaul)](https://github.com/MatMaul "6 total commits to the Home Assistant orga: 5 commits to home-assistant 1 commit to home-assistant.io ") -- [Matouš Bečvář (@MattXcz)](https://github.com/MattXcz "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Matouš Bečvář (@MattXcz)](https://github.com/MattXcz "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [MatsNl (@MatsNl)](https://github.com/MatsNl "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Matt Black (@mafrosis)](https://github.com/mafrosis "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [Matt Cahill (@matt-cahill)](https://github.com/matt-cahill "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -6769,8 +7878,8 @@ This page contains a list of people who have contributed in one way or another t - [Matt Enright (@wickedshimmy)](https://github.com/wickedshimmy "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Matt F (@flamingm0e)](https://github.com/flamingm0e "3 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Matt F (@flamingm0e)](https://github.com/flamingm0e "4 total commits to the Home Assistant orga: +3 commits to home-assistant.io 1 commit to developers.home-assistant ") - [Matt Farmer (@m14t)](https://github.com/m14t "1 total commits to the Home Assistant orga: @@ -6785,13 +7894,17 @@ This page contains a list of people who have contributed in one way or another t - [Matt Hamrick (@diminishedprime)](https://github.com/diminishedprime "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Matt LeBrun (@mlebrun)](https://github.com/mlebrun "2 total commits to the Home Assistant orga: +- [Matt Kasa (@mattkasa)](https://github.com/mattkasa "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Matt N\. (@mnoorenberghe)](https://github.com/mnoorenberghe "64 total commits to the Home Assistant orga: -32 commits to home-assistant-iOS -18 commits to home-assistant.io +- [Matt LeBrun (@mlebrun)](https://github.com/mlebrun "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Matt N\. (@mnoorenberghe)](https://github.com/mnoorenberghe "65 total commits to the Home Assistant orga: +32 commits to home-assistant-iOS +19 commits to home-assistant.io 11 commits to home-assistant 2 commits to home-assistant-polymer 1 commit to homebridge-homeassistant @@ -6802,16 +7915,19 @@ This page contains a list of people who have contributed in one way or another t - [Matt Rogers (@rogersmj)](https://github.com/rogersmj "20 total commits to the Home Assistant orga: 20 commits to hadashboard ") -- [Matt Schmitt (@schmittx)](https://github.com/schmittx "95 total commits to the Home Assistant orga: +- [Matt Schmitt (@schmittx)](https://github.com/schmittx "97 total commits to the Home Assistant orga: 52 commits to homebridge-homeassistant -25 commits to home-assistant +27 commits to home-assistant 13 commits to home-assistant.io 3 commits to home-assistant-polymer 2 commits to developers.home-assistant ") -- [Matt Snyder (@oblogic7)](https://github.com/oblogic7 "20 total commits to the Home Assistant orga: -11 commits to home-assistant -9 commits to home-assistant.io +- [Matt Snyder (@oblogic7)](https://github.com/oblogic7 "23 total commits to the Home Assistant orga: +13 commits to home-assistant +10 commits to home-assistant.io +") +- [Matt Swan (@surlymatt)](https://github.com/surlymatt "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Matt White (@matt-FFFFFF)](https://github.com/matt-FFFFFF "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -6821,8 +7937,8 @@ This page contains a list of people who have contributed in one way or another t 7 commits to home-assistant 5 commits to home-assistant.io ") -- [matt2005 (@matt2005)](https://github.com/matt2005 "5 total commits to the Home Assistant orga: -3 commits to home-assistant +- [Matte23 (@Matte23)](https://github.com/Matte23 "4 total commits to the Home Assistant orga: +2 commits to home-assistant 2 commits to home-assistant.io ") - [MatteGary (@MatteGary)](https://github.com/MatteGary "6 total commits to the Home Assistant orga: @@ -6836,18 +7952,27 @@ This page contains a list of people who have contributed in one way or another t - [Matthew Breedlove (@sirmalloc)](https://github.com/sirmalloc "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Matthew Donoughe (@mdonoughe)](https://github.com/mdonoughe "5 total commits to the Home Assistant orga: -4 commits to home-assistant.io -1 commit to home-assistant +- [Matthew Donoughe (@mdonoughe)](https://github.com/mdonoughe "8 total commits to the Home Assistant orga: +5 commits to home-assistant.io +2 commits to home-assistant +1 commit to home-assistant-polymer +") +- [Matthew Dornquast (@dornquast)](https://github.com/dornquast "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") -- [Matthew Garrett (@mjg59)](https://github.com/mjg59 "39 total commits to the Home Assistant orga: +- [Matthew Garrett (@mjg59)](https://github.com/mjg59 "40 total commits to the Home Assistant orga: 29 commits to home-assistant 8 commits to home-assistant.io 2 commits to netdisco +1 commit to people ") - [Matthew Grimes (@cybergrimes)](https://github.com/cybergrimes "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") +- [Matthew Hilton (@matt2005)](https://github.com/matt2005 "5 total commits to the Home Assistant orga: +3 commits to home-assistant +2 commits to home-assistant.io +") - [Matthew Miller (@MasterKale)](https://github.com/MasterKale "6 total commits to the Home Assistant orga: 6 commits to open-zwave ") @@ -6871,6 +7996,10 @@ This page contains a list of people who have contributed in one way or another t 16 commits to home-assistant 9 commits to home-assistant.io ") +- [Matthew Turney (@pho3nixf1re)](https://github.com/pho3nixf1re "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Matthew Vincent (@neshmi)](https://github.com/neshmi "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") @@ -6885,9 +8014,15 @@ This page contains a list of people who have contributed in one way or another t 15 commits to open-zwave 1 commit to home-assistant ") -- [MatthewFlamm (@MatthewFlamm)](https://github.com/MatthewFlamm "2 total commits to the Home Assistant orga: -1 commit to home-assistant-polymer -1 commit to home-assistant +- [MatthewFlamm (@MatthewFlamm)](https://github.com/MatthewFlamm "9 total commits to the Home Assistant orga: +4 commits to home-assistant +3 commits to home-assistant-polymer +1 commit to developers.home-assistant +1 commit to home-assistant.io +") +- [Matthias Alphart (@farmio)](https://github.com/farmio "10 total commits to the Home Assistant orga: +5 commits to home-assistant +5 commits to home-assistant.io ") - [Matthias Dötsch (@brainexe)](https://github.com/brainexe "3 total commits to the Home Assistant orga: 2 commits to home-assistant-polymer @@ -6930,14 +8065,16 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Mauricio Bonani (@bonanitech)](https://github.com/bonanitech "16 total commits to the Home Assistant orga: -16 commits to home-assistant.io +- [Mauricio Bonani (@bonanitech)](https://github.com/bonanitech "10 total commits to the Home Assistant orga: +8 commits to home-assistant.io +2 commits to home-assistant-polymer ") - [Mauricio Vidal (@MrMauro)](https://github.com/MrMauro "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Max (@max-te)](https://github.com/max-te "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Max (@max-te)](https://github.com/max-te "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io ") - [Max Laverse (@maxlaverse)](https://github.com/maxlaverse "9 total commits to the Home Assistant orga: 6 commits to home-assistant @@ -6955,19 +8092,26 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Max Rosin (@ekeih)](https://github.com/ekeih "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Max Rosin (@ekeih)](https://github.com/ekeih "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io ") -- [Max Rumpf (@Maxr1998)](https://github.com/Maxr1998 "15 total commits to the Home Assistant orga: -15 commits to home-assistant.io +- [Max Rumpf (@Maxr1998)](https://github.com/Maxr1998 "17 total commits to the Home Assistant orga: +17 commits to home-assistant.io ") -- [Max Rydahl Andersen (@maxandersen)](https://github.com/maxandersen "111 total commits to the Home Assistant orga: -98 commits to home-assistant-cli +- [Max Rydahl Andersen (@maxandersen)](https://github.com/maxandersen "145 total commits to the Home Assistant orga: +131 commits to home-assistant-cli 8 commits to home-assistant.io 3 commits to developers.home-assistant 1 commit to people +1 commit to hassio-cli 1 commit to home-assistant ") +- [Max Savard (@TravelinMax)](https://github.com/TravelinMax "3 total commits to the Home Assistant orga: +3 commits to hassio-addons +") +- [Max Thirouin (@MoOx)](https://github.com/MoOx "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Max von Webel (@343max)](https://github.com/343max "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -6988,20 +8132,24 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Maximilian Mitchell (@maxisme)](https://github.com/maxisme "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [Maximilien Cuony (@the-glu)](https://github.com/the-glu "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [mbo18 (@mbo18)](https://github.com/mbo18 "3 total commits to the Home Assistant orga: +- [Maël Kimmerlin (@maelk)](https://github.com/maelk "1 total commits to the Home Assistant orga: 1 commit to hassos +") +- [mbo18 (@mbo18)](https://github.com/mbo18 "7 total commits to the Home Assistant orga: +2 commits to hassos +2 commits to home-assistant +2 commits to home-assistant.io 1 commit to hassio -1 commit to home-assistant.io ") - [mboeru (@mboeru)](https://github.com/mboeru "1 total commits to the Home Assistant orga: 1 commit to home-assistant-iOS ") +- [mcc05 (@mcc05)](https://github.com/mcc05 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [mcfrojd (@mcfrojd)](https://github.com/mcfrojd "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") @@ -7025,8 +8173,8 @@ This page contains a list of people who have contributed in one way or another t - [Megachip (@Megachip)](https://github.com/Megachip "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [MeIchthys (@meichthys)](https://github.com/meichthys "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [MeIchthys (@meichthys)](https://github.com/meichthys "8 total commits to the Home Assistant orga: +8 commits to home-assistant.io ") - [meijerwynand (@meijerwynand)](https://github.com/meijerwynand "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -7034,6 +8182,9 @@ This page contains a list of people who have contributed in one way or another t - [Mel Riffe (@melriffe)](https://github.com/melriffe "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Melvin (@MBlokhuijzen)](https://github.com/MBlokhuijzen "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [Menno Blom (@b10m)](https://github.com/b10m "6 total commits to the Home Assistant orga: 3 commits to home-assistant.io 2 commits to home-assistant @@ -7048,12 +8199,19 @@ This page contains a list of people who have contributed in one way or another t - [mertenats (@mertenats)](https://github.com/mertenats "4 total commits to the Home Assistant orga: 4 commits to home-assistant.io ") +- [mgiako (@mgiako)](https://github.com/mgiako "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [MGWGIT (@MGWGIT)](https://github.com/MGWGIT "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [mh\-daedalus (@mh-daedalus)](https://github.com/mh-daedalus "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Micah Neal (@noxlux)](https://github.com/noxlux "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Micha LaQua (@milaq)](https://github.com/milaq "4 total commits to the Home Assistant orga: 3 commits to home-assistant 1 commit to home-assistant.io @@ -7084,11 +8242,11 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant ") - [Michael Dubno (@dubnom)](https://github.com/dubnom "6 total commits to the Home Assistant orga: -3 commits to home-assistant.io 3 commits to home-assistant +3 commits to home-assistant.io ") -- [Michael Fester (@michaelfester)](https://github.com/michaelfester "6 total commits to the Home Assistant orga: -4 commits to home-assistant.io +- [Michael Fester (@michaelfester)](https://github.com/michaelfester "7 total commits to the Home Assistant orga: +5 commits to home-assistant.io 2 commits to home-assistant ") - [Michael Friis (@friism)](https://github.com/friism "1 total commits to the Home Assistant orga: @@ -7103,10 +8261,6 @@ This page contains a list of people who have contributed in one way or another t - [Michael Gilbert (@Zyell)](https://github.com/Zyell "8 total commits to the Home Assistant orga: 8 commits to home-assistant ") -- [Michael Heinemann (@heinemml)](https://github.com/heinemml "6 total commits to the Home Assistant orga: -4 commits to home-assistant -2 commits to home-assistant.io -") - [Michael Hertig (@hertg)](https://github.com/hertg "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -7114,6 +8268,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Michael Kane (@thisIsMikeKane)](https://github.com/thisIsMikeKane "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Michael Kowalchuk (@mkowalchuk)](https://github.com/mkowalchuk "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") @@ -7126,9 +8283,16 @@ This page contains a list of people who have contributed in one way or another t - [Michael Luggen (@l00mi)](https://github.com/l00mi "5 total commits to the Home Assistant orga: 5 commits to home-assistant.io ") +- [Michael Lunzer (@michaellunzer)](https://github.com/michaellunzer "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Michael Meinel (@led02)](https://github.com/led02 "1 total commits to the Home Assistant orga: 1 commit to pyharmony ") +- [Michael Nosthoff (@heinemml)](https://github.com/heinemml "6 total commits to the Home Assistant orga: +4 commits to home-assistant +2 commits to home-assistant.io +") - [Michael Pereira (@MichaelPereira)](https://github.com/MichaelPereira "2 total commits to the Home Assistant orga: 2 commits to gu-who ") @@ -7150,8 +8314,12 @@ This page contains a list of people who have contributed in one way or another t - [Michael Requeny (@requenym)](https://github.com/requenym "17 total commits to the Home Assistant orga: 17 commits to home-assistant.io ") -- [Michael Scherer (@schmic)](https://github.com/schmic "3 total commits to the Home Assistant orga: +- [Michael Scherer (@schmic)](https://github.com/schmic "5 total commits to the Home Assistant orga: 3 commits to home-assistant-polymer +2 commits to home-assistant +") +- [Michael Schoonmaker (@Schoonology)](https://github.com/Schoonology "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [Michael Schulze (@michsch)](https://github.com/michsch "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -7162,6 +8330,9 @@ This page contains a list of people who have contributed in one way or another t - [Michael Stovenour (@mstovenour)](https://github.com/mstovenour "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Michael Varrieur (@mvarrieur)](https://github.com/mvarrieur "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Michael Wei (@no2chem)](https://github.com/no2chem "5 total commits to the Home Assistant orga: 3 commits to home-assistant 2 commits to home-assistant.io @@ -7172,33 +8343,48 @@ This page contains a list of people who have contributed in one way or another t - [Michael Woods (@michaelwoods)](https://github.com/michaelwoods "1 total commits to the Home Assistant orga: 1 commit to home-assistant-cli ") -- [michaeldavie (@michaeldavie)](https://github.com/michaeldavie "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [michaeldavie (@michaeldavie)](https://github.com/michaeldavie "22 total commits to the Home Assistant orga: +12 commits to home-assistant +10 commits to home-assistant.io ") - [MichaelSprague (@MichaelSprague)](https://github.com/MichaelSprague "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Michal (@Dinth)](https://github.com/Dinth "2 total commits to the Home Assistant orga: +- [Michal (@Dinth)](https://github.com/Dinth "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io 1 commit to open-zwave -1 commit to home-assistant.io ") -- [Michaël Arnauts (@michaelarnauts)](https://github.com/michaelarnauts "70 total commits to the Home Assistant orga: -37 commits to home-assistant +- [Michaël Arnauts (@michaelarnauts)](https://github.com/michaelarnauts "71 total commits to the Home Assistant orga: +38 commits to home-assistant 28 commits to home-assistant.io 3 commits to home-assistant-polymer 1 commit to netdisco 1 commit to people ") +- [Michał Mrozek (@Michsior14)](https://github.com/Michsior14 "30 total commits to the Home Assistant orga: +29 commits to home-assistant +1 commit to home-assistant.io +") +- [Michał Węgrzynek (@mwegrzynek)](https://github.com/mwegrzynek "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to home-assistant +") - [Michel Settembrino (@Michel-Settembrino)](https://github.com/Michel-Settembrino "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") - [Michi Lehenauer (@michiil)](https://github.com/michiil "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") +- [Mick Dekkers (@mickdekkers)](https://github.com/mickdekkers "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Mick Vleeshouwer (@iMicknl)](https://github.com/iMicknl "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io ") +- [Mickaël Cornière (@bnounours)](https://github.com/bnounours "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Mickaël Schoentgen (@BoboTiG)](https://github.com/BoboTiG "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -7209,6 +8395,9 @@ This page contains a list of people who have contributed in one way or another t - [migromao (@migromao)](https://github.com/migromao "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Miguel (@mdps)](https://github.com/mdps "3 total commits to the Home Assistant orga: +3 commits to appdaemon +") - [Miguel Gil Martínez (@miguelgilmartinez)](https://github.com/miguelgilmartinez "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -7219,10 +8408,13 @@ This page contains a list of people who have contributed in one way or another t - [mihalski (@mihalski)](https://github.com/mihalski "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Mikael Svensson (@Nossnevs)](https://github.com/Nossnevs "2 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Mika Hiltunen (@saaste)](https://github.com/saaste "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Mikael Svensson (@Nossnevs)](https://github.com/Nossnevs "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to home-assistant +") - [Mikayla Hutchinson (@mhutch)](https://github.com/mhutch "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to open-zwave @@ -7234,6 +8426,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") +- [Mike (@mike391)](https://github.com/mike391 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Mike (@mikenolet)](https://github.com/mikenolet "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -7255,12 +8450,13 @@ This page contains a list of people who have contributed in one way or another t - [Mike Kormendy (@mkormendy)](https://github.com/mkormendy "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Mike Megally (@cmsimike)](https://github.com/cmsimike "17 total commits to the Home Assistant orga: -11 commits to home-assistant +- [Mike Megally (@cmsimike)](https://github.com/cmsimike "18 total commits to the Home Assistant orga: +12 commits to home-assistant 6 commits to home-assistant.io ") -- [Mike Miller (@mikeage)](https://github.com/mikeage "3 total commits to the Home Assistant orga: -3 commits to home-assistant +- [Mike Miller (@mikeage)](https://github.com/mikeage "5 total commits to the Home Assistant orga: +4 commits to home-assistant +1 commit to home-assistant.io ") - [Mike Nicholson (@mikenicholson)](https://github.com/mikenicholson "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -7295,6 +8491,9 @@ This page contains a list of people who have contributed in one way or another t - [Milas Bowman (@milas)](https://github.com/milas "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [milothomas (@milothomas)](https://github.com/milothomas "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Miloš Bunčić (@psyhomb)](https://github.com/psyhomb "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -7309,6 +8508,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") +- [ming\.z (@zvving)](https://github.com/zvving "3 total commits to the Home Assistant orga: +3 commits to Iconic +") - [miniconfig (@miniconfig)](https://github.com/miniconfig "27 total commits to the Home Assistant orga: 20 commits to home-assistant 7 commits to home-assistant.io @@ -7319,9 +8521,12 @@ This page contains a list of people who have contributed in one way or another t - [Minims (@Minims)](https://github.com/Minims "3 total commits to the Home Assistant orga: 3 commits to homebridge-homeassistant ") -- [Miroslav Ždrale (@mzdrale)](https://github.com/mzdrale "2 total commits to the Home Assistant orga: +- [Miroslav Ždrale (@mzdrale)](https://github.com/mzdrale "8 total commits to the Home Assistant orga: +4 commits to home-assistant.io +4 commits to home-assistant +") +- [miroslawkrol (@miroslawkrol)](https://github.com/miroslawkrol "1 total commits to the Home Assistant orga: 1 commit to home-assistant -1 commit to home-assistant.io ") - [Mischa Gruber (@GruberMischa)](https://github.com/GruberMischa "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -7329,8 +8534,8 @@ This page contains a list of people who have contributed in one way or another t - [MissingDLL (@MissingDLL)](https://github.com/MissingDLL "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Mister Wil (@MisterWil)](https://github.com/MisterWil "21 total commits to the Home Assistant orga: -15 commits to home-assistant +- [Mister Wil (@MisterWil)](https://github.com/MisterWil "23 total commits to the Home Assistant orga: +17 commits to home-assistant 6 commits to home-assistant.io ") - [misterbenj34 (@misterbenj34)](https://github.com/misterbenj34 "2 total commits to the Home Assistant orga: @@ -7365,9 +8570,9 @@ This page contains a list of people who have contributed in one way or another t - [mje\-nz (@mje-nz)](https://github.com/mje-nz "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [mjj4791 (@mjj4791)](https://github.com/mjj4791 "23 total commits to the Home Assistant orga: -15 commits to home-assistant.io -8 commits to home-assistant +- [MJJ (@mjj4791)](https://github.com/mjj4791 "25 total commits to the Home Assistant orga: +16 commits to home-assistant.io +9 commits to home-assistant ") - [mkfink (@mkfink)](https://github.com/mkfink "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -7400,15 +8605,16 @@ This page contains a list of people who have contributed in one way or another t - [mojotaker (@mojotaker)](https://github.com/mojotaker "1 total commits to the Home Assistant orga: 1 commit to developers.home-assistant ") -- [Mokilok (@Jake-Mok-Nelson)](https://github.com/Jake-Mok-Nelson "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io -") - [Moksh Mridul (@mokshmridul)](https://github.com/mokshmridul "4 total commits to the Home Assistant orga: 4 commits to home-assistant.io ") - [Momotica (@Momotica)](https://github.com/Momotica "5 total commits to the Home Assistant orga: 5 commits to open-zwave ") +- [monte\-monte (@monte-monte)](https://github.com/monte-monte "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [mooninite (@mooninite)](https://github.com/mooninite "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") @@ -7425,8 +8631,9 @@ This page contains a list of people who have contributed in one way or another t - [MORITA Hajime (@omo)](https://github.com/omo "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Moritz Fey (@Mofeywalker)](https://github.com/Mofeywalker "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Moritz Fey (@Mofeywalker)](https://github.com/Mofeywalker "6 total commits to the Home Assistant orga: +5 commits to home-assistant +1 commit to hassio-addons ") - [Moritz Sternemann (@moritzsternemann)](https://github.com/moritzsternemann "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source @@ -7439,12 +8646,19 @@ This page contains a list of people who have contributed in one way or another t 4 commits to home-assistant 2 commits to home-assistant.io ") +- [Morten Trab (@MTrab)](https://github.com/MTrab "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") - [mortenmathiasen (@mortenmathiasen)](https://github.com/mortenmathiasen "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") - [Morvan LEPANNETIER (@armaesiea)](https://github.com/armaesiea "4 total commits to the Home Assistant orga: 4 commits to open-zwave ") +- [Moshe Levi (@moshe010)](https://github.com/moshe010 "1 total commits to the Home Assistant orga: +1 commit to hassos +") - [moskovskiy82 (@moskovskiy82)](https://github.com/moskovskiy82 "6 total commits to the Home Assistant orga: 6 commits to home-assistant.io ") @@ -7455,9 +8669,12 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant.io 3 commits to home-assistant ") -- [Mr\. Snyds (@mrsnyds)](https://github.com/mrsnyds "1 total commits to the Home Assistant orga: +- [MPopti0n (@MPopti0n)](https://github.com/MPopti0n "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Mr\. Snyds (@mrsnyds)](https://github.com/mrsnyds "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [mreiling (@mreiling)](https://github.com/mreiling "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -7502,19 +8719,15 @@ This page contains a list of people who have contributed in one way or another t - [mvillarejo (@mvillarejo)](https://github.com/mvillarejo "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [mvn23 (@mvn23)](https://github.com/mvn23 "34 total commits to the Home Assistant orga: -23 commits to home-assistant -10 commits to home-assistant.io +- [mvn23 (@mvn23)](https://github.com/mvn23 "46 total commits to the Home Assistant orga: +31 commits to home-assistant +14 commits to home-assistant.io 1 commit to appdaemon ") - [mweimerskirch (@mweimerskirch)](https://github.com/mweimerskirch "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant ") -- [mwsluis (@mwsluis)](https://github.com/mwsluis "2 total commits to the Home Assistant orga: -1 commit to home-assistant -1 commit to home-assistant.io -") - [Myles (@MylesIsCool)](https://github.com/MylesIsCool "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") @@ -7522,8 +8735,7 @@ This page contains a list of people who have contributed in one way or another t 1 commit to appdaemon 1 commit to home-assistant ") -- [Myrddyn (@Myrddyn1)](https://github.com/Myrddyn1 "2 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Mårten Seiplax (@seiplax)](https://github.com/seiplax "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Mārtiņš Grunskis (@grunskis)](https://github.com/grunskis "1 total commits to the Home Assistant orga: @@ -7555,8 +8767,8 @@ This page contains a list of people who have contributed in one way or another t - [narfight (@narfight)](https://github.com/narfight "8 total commits to the Home Assistant orga: 8 commits to open-zwave ") -- [Nash Kaminski (@nkaminski)](https://github.com/nkaminski "5 total commits to the Home Assistant orga: -2 commits to home-assistant +- [Nash Kaminski (@nkaminski)](https://github.com/nkaminski "6 total commits to the Home Assistant orga: +3 commits to home-assistant 2 commits to home-assistant.io 1 commit to home-assistant-polymer ") @@ -7564,8 +8776,8 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") -- [Nate Clark (@heythisisnate)](https://github.com/heythisisnate "25 total commits to the Home Assistant orga: -17 commits to home-assistant +- [Nate Clark (@heythisisnate)](https://github.com/heythisisnate "26 total commits to the Home Assistant orga: +18 commits to home-assistant 8 commits to home-assistant.io ") - [Nate Kleven (@nkleven)](https://github.com/nkleven "1 total commits to the Home Assistant orga: @@ -7600,10 +8812,8 @@ This page contains a list of people who have contributed in one way or another t - [Nathan Long (@nathanl)](https://github.com/nathanl "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Nathan Neulinger (@nneul)](https://github.com/nneul "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") -- [Nathan W (@itsamenathan)](https://github.com/itsamenathan "1 total commits to the Home Assistant orga: +- [Nathan W (@itsamenathan)](https://github.com/itsamenathan "3 total commits to the Home Assistant orga: +2 commits to hassio-addons 1 commit to home-assistant.io ") - [nau\-mll (@nau-mll)](https://github.com/nau-mll "1 total commits to the Home Assistant orga: @@ -7637,8 +8847,14 @@ This page contains a list of people who have contributed in one way or another t - [neonbunny (@neonbunny)](https://github.com/neonbunny "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Ness (@Xx-Ness-xX)](https://github.com/Xx-Ness-xX "3 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [Nephiel (@Nephiel)](https://github.com/Nephiel "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Ness (@Xx-Ness-xX)](https://github.com/Xx-Ness-xX "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io +") +- [newbee112 (@newbee112)](https://github.com/newbee112 "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [nhendin (@nhendin)](https://github.com/nhendin "1 total commits to the Home Assistant orga: 1 commit to open-zwave @@ -7659,9 +8875,6 @@ This page contains a list of people who have contributed in one way or another t - [Nicholas Hawkes (@hawkesnc)](https://github.com/hawkesnc "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Nicholas Sideras (@nsideras)](https://github.com/nsideras "1 total commits to the Home Assistant orga: -1 commit to home-assistant -") - [Nicholas Sielicki (@sielicki)](https://github.com/sielicki "4 total commits to the Home Assistant orga: 2 commits to home-assistant 2 commits to home-assistant.io @@ -7672,6 +8885,9 @@ This page contains a list of people who have contributed in one way or another t - [Nick Chamberlin (@NickChamberlin)](https://github.com/NickChamberlin "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Nick Daria (@nickdaria)](https://github.com/nickdaria "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [Nick Hammond (@nickhammond)](https://github.com/nickhammond "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -7686,9 +8902,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 2 commits to home-assistant.io ") -- [Nick Touran (@partofthething)](https://github.com/partofthething "41 total commits to the Home Assistant orga: +- [Nick Touran (@partofthething)](https://github.com/partofthething "42 total commits to the Home Assistant orga: 27 commits to home-assistant -14 commits to home-assistant.io +15 commits to home-assistant.io ") - [Nick Waring (@nickwaring)](https://github.com/nickwaring "5 total commits to the Home Assistant orga: 3 commits to home-assistant.io @@ -7701,12 +8917,15 @@ This page contains a list of people who have contributed in one way or another t - [Nick Zelei (@nickzelei)](https://github.com/nickzelei "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [nickidw (@nickidw)](https://github.com/nickidw "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Nicko van Someren (@nickovs)](https://github.com/nickovs "9 total commits to the Home Assistant orga: 7 commits to home-assistant 2 commits to home-assistant.io ") -- [nickrout (@nickrout)](https://github.com/nickrout "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [nickrout (@nickrout)](https://github.com/nickrout "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [Niclas (@nicmar)](https://github.com/nicmar "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -7746,13 +8965,13 @@ This page contains a list of people who have contributed in one way or another t - [Niels Keurentjes (@curry684)](https://github.com/curry684 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Niels Laukens (@nielslaukens)](https://github.com/nielslaukens "3 total commits to the Home Assistant orga: -3 commits to dehydrated -") -- [nielstron (@nielstron)](https://github.com/nielstron "23 total commits to the Home Assistant orga: -17 commits to home-assistant +- [Niels Mündler (@nielstron)](https://github.com/nielstron "33 total commits to the Home Assistant orga: +23 commits to home-assistant +7 commits to home-assistant.io 3 commits to netdisco -3 commits to home-assistant.io +") +- [nierob (@nierob)](https://github.com/nierob "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [Nigel Rook (@NigelRook)](https://github.com/NigelRook "2 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer @@ -7761,6 +8980,9 @@ This page contains a list of people who have contributed in one way or another t - [Nik Klever (@nklever)](https://github.com/nklever "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Nikita Chernozipunnikov (@thatguynikita)](https://github.com/thatguynikita "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Niklas (@niklaswa)](https://github.com/niklaswa "6 total commits to the Home Assistant orga: 5 commits to home-assistant.io 1 commit to home-assistant @@ -7782,8 +9004,8 @@ This page contains a list of people who have contributed in one way or another t 9 commits to home-assistant.io 1 commit to home-assistant ") -- [Nikola (@niksy111)](https://github.com/niksy111 "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Nikola (@niksy111)](https://github.com/niksy111 "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io ") - [nikolas (@nikolas)](https://github.com/nikolas "1 total commits to the Home Assistant orga: 1 commit to feedparser @@ -7796,9 +9018,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Nikolay Vasilchuk (@Anonym-tsk)](https://github.com/Anonym-tsk "13 total commits to the Home Assistant orga: -9 commits to home-assistant -2 commits to home-assistant-polymer +- [Nikolay Vasilchuk (@Anonym-tsk)](https://github.com/Anonym-tsk "20 total commits to the Home Assistant orga: +15 commits to home-assistant +3 commits to home-assistant-polymer 2 commits to home-assistant.io ") - [Nils Kristian Brekke (@Brekkjern)](https://github.com/Brekkjern "1 total commits to the Home Assistant orga: @@ -7828,6 +9050,9 @@ This page contains a list of people who have contributed in one way or another t - [nollbit (@nollbit)](https://github.com/nollbit "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [noodlemctwoodle (@noodlemctwoodle)](https://github.com/noodlemctwoodle "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [nordeep (@nordeep)](https://github.com/nordeep "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -7852,8 +9077,8 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant-assets 1 commit to home-assistant.io ") -- [noxhirsch (@noxhirsch)](https://github.com/noxhirsch "6 total commits to the Home Assistant orga: -5 commits to home-assistant.io +- [noxhirsch (@noxhirsch)](https://github.com/noxhirsch "12 total commits to the Home Assistant orga: +11 commits to home-assistant.io 1 commit to home-assistant ") - [nragon (@nragon)](https://github.com/nragon "1 total commits to the Home Assistant orga: @@ -7879,17 +9104,17 @@ This page contains a list of people who have contributed in one way or another t - [NWiBGRsK (@NWiBGRsK)](https://github.com/NWiBGRsK "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [o1oo11oo (@o1oo11oo)](https://github.com/o1oo11oo "2 total commits to the Home Assistant orga: -2 commits to dehydrated -") - [oa\- (@oa-)](https://github.com/oa- "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [obgm (@obgm)](https://github.com/obgm "480 total commits to the Home Assistant orga: 480 commits to libcoap ") -- [Odianosen Ejale (@Odianosen25)](https://github.com/Odianosen25 "96 total commits to the Home Assistant orga: -96 commits to appdaemon +- [ochlocracy (@ochlocracy)](https://github.com/ochlocracy "13 total commits to the Home Assistant orga: +13 commits to home-assistant +") +- [Odianosen Ejale (@Odianosen25)](https://github.com/Odianosen25 "395 total commits to the Home Assistant orga: +395 commits to appdaemon ") - [Odin Hørthe Omdal (@odinho)](https://github.com/odinho "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer @@ -7898,6 +9123,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Ofek Ashery (@ofekashery)](https://github.com/ofekashery "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +") - [officiallybob (@officiallybob)](https://github.com/officiallybob "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -7914,11 +9142,11 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Olaf Conradi (@oohlaf)](https://github.com/oohlaf "1 total commits to the Home Assistant orga: +- [Okke Garling (@ogarling)](https://github.com/ogarling "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Olaf Peters (@olf)](https://github.com/olf "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [Olaf Conradi (@oohlaf)](https://github.com/oohlaf "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Olaf van Zandwijk (@olafz)](https://github.com/olafz "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -7934,6 +9162,13 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Oleg Kurapov (@2sheds)](https://github.com/2sheds "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") +- [Oleksandr Omelchuk (@sashao)](https://github.com/sashao "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [OleksandrBerchenko (@OleksandrBerchenko)](https://github.com/OleksandrBerchenko "7 total commits to the Home Assistant orga: 6 commits to home-assistant 1 commit to home-assistant.io @@ -7952,14 +9187,17 @@ This page contains a list of people who have contributed in one way or another t - [Oliv3rDog (@Oliv3rDog)](https://github.com/Oliv3rDog "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "32 total commits to the Home Assistant orga: -22 commits to home-assistant +- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "34 total commits to the Home Assistant orga: +24 commits to home-assistant 9 commits to home-assistant.io 1 commit to netdisco ") - [Oliver Dunk (@oliverdunk)](https://github.com/oliverdunk "77 total commits to the Home Assistant orga: 77 commits to 1password-teams-open-source ") +- [Oliver Großkloß (@Progaros)](https://github.com/Progaros "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Oliver van Porten (@mcdeck)](https://github.com/mcdeck "10 total commits to the Home Assistant orga: 10 commits to home-assistant ") @@ -7970,6 +9208,9 @@ This page contains a list of people who have contributed in one way or another t - [oliverhg1 (@oliverhg1)](https://github.com/oliverhg1 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [OliverRepo (@OliverRepo)](https://github.com/OliverRepo "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [oliverscu (@oliverscu)](https://github.com/oliverscu "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -7979,8 +9220,8 @@ This page contains a list of people who have contributed in one way or another t - [Olivier Guerriat (@olivierguerriat)](https://github.com/olivierguerriat "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Olivér Falvai (@ofalvai)](https://github.com/ofalvai "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Olivér Falvai (@ofalvai)](https://github.com/ofalvai "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [Omar Usman (@omarusman)](https://github.com/omarusman "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -7992,20 +9233,22 @@ This page contains a list of people who have contributed in one way or another t - [Omer Efrat (@efratomer)](https://github.com/efratomer "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [On Freund (@OnFreund)](https://github.com/OnFreund "3 total commits to the Home Assistant orga: -2 commits to home-assistant -1 commit to home-assistant.io -") -- [Oncleben31 (@oncleben31)](https://github.com/oncleben31 "9 total commits to the Home Assistant orga: -9 commits to home-assistant.io +- [On Freund (@OnFreund)](https://github.com/OnFreund "13 total commits to the Home Assistant orga: +8 commits to home-assistant +4 commits to home-assistant.io +1 commit to home-assistant-polymer ") -- [Ondřej Nový (@onovy)](https://github.com/onovy "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [Oncleben31 (@oncleben31)](https://github.com/oncleben31 "21 total commits to the Home Assistant orga: +12 commits to home-assistant.io +9 commits to home-assistant ") - [Ong Vairoj (@ejel)](https://github.com/ejel "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io ") +- [onlymejosh (@onlymejosh)](https://github.com/onlymejosh "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [onsmam (@onsmam)](https://github.com/onsmam "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -8018,19 +9261,33 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Oscar Tin Lai (@soraxas)](https://github.com/soraxas "5 total commits to the Home Assistant orga: +- [orb9 (@orb9)](https://github.com/orb9 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [orrpan (@orrpan)](https://github.com/orrpan "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Orson (@orson1282)](https://github.com/orson1282 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Oscar Calvo (@ocalvo)](https://github.com/ocalvo "1 total commits to the Home Assistant orga: +1 commit to hassos +") +- [Oscar Tin Lai (@soraxas)](https://github.com/soraxas "6 total commits to the Home Assistant orga: +3 commits to home-assistant 3 commits to home-assistant.io -2 commits to home-assistant ") - [osirisinferi (@osirisinferi)](https://github.com/osirisinferi "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [ottersen (@ottersen)](https://github.com/ottersen "11 total commits to the Home Assistant orga: +- [ottersen (@ottersen)](https://github.com/ottersen "14 total commits to the Home Assistant orga: 11 commits to home-assistant.io +2 commits to home-assistant-polymer +1 commit to home-assistant ") -- [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "155 total commits to the Home Assistant orga: -117 commits to home-assistant -26 commits to home-assistant.io +- [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "189 total commits to the Home Assistant orga: +149 commits to home-assistant +28 commits to home-assistant.io 5 commits to home-assistant-polymer 3 commits to hass-release 2 commits to developers.home-assistant @@ -8046,6 +9303,10 @@ This page contains a list of people who have contributed in one way or another t - [oznu (@oznu)](https://github.com/oznu "1 total commits to the Home Assistant orga: 1 commit to homebridge-homeassistant ") +- [P0L0 (@p0l0)](https://github.com/p0l0 "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Pablo Mellado (@mellado)](https://github.com/mellado "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -8056,25 +9317,26 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [panosmz (@panosmz)](https://github.com/panosmz "2 total commits to the Home Assistant orga: -1 commit to home-assistant +- [pander8828 (@pander8828)](https://github.com/pander8828 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [panosmz (@panosmz)](https://github.com/panosmz "3 total commits to the Home Assistant orga: +2 commits to home-assistant 1 commit to home-assistant.io ") - [Paolo Bonzini (@bonzini)](https://github.com/bonzini "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Paolo Tuninetto (@tulindo)](https://github.com/tulindo "5 total commits to the Home Assistant orga: +5 commits to home-assistant +") - [Parker Moore (@parkr)](https://github.com/parkr "62 total commits to the Home Assistant orga: 62 commits to home-assistant.io ") - [partytimeexcellent (@partytimeexcellent)](https://github.com/partytimeexcellent "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [pascal (@passie)](https://github.com/passie "6 total commits to the Home Assistant orga: -3 commits to home-assistant -2 commits to home-assistant.io -1 commit to home-assistant-polymer -") - [Pascal (@p4sI)](https://github.com/p4sI "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -8089,36 +9351,49 @@ This page contains a list of people who have contributed in one way or another t - [Pascal Hahn (@pascalhahn)](https://github.com/pascalhahn "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Pascal Jungblut (@pascalj)](https://github.com/pascalj "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") -- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "4372 total commits to the Home Assistant orga: -1537 commits to hassio -747 commits to hassos -554 commits to home-assistant -492 commits to hassio-build -415 commits to hassio-addons -352 commits to home-assistant.io -76 commits to hassio-homeassistant -32 commits to hassio-base -32 commits to developers.home-assistant -29 commits to hassio-version -23 commits to hassio-cli +- [Pascal Roeleven (@pascallj)](https://github.com/pascallj "7 total commits to the Home Assistant orga: +4 commits to home-assistant +3 commits to home-assistant.io +") +- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "5923 total commits to the Home Assistant orga: +1777 commits to hassio +883 commits to home-assistant +843 commits to hassos +499 commits to hassio-build +490 commits to hassio-addons +378 commits to home-assistant.io +272 commits to hassio-version +181 commits to hassio-homeassistant +89 commits to hassio-wheels +87 commits to hassio-base +49 commits to hassio-builder +48 commits to ci-azure +44 commits to developers.home-assistant +38 commits to custom-components-wheels +35 commits to ada +31 commits to hassio-opencv +27 commits to hassio-cli 22 commits to hassio-auth +20 commits to hassio-installer +18 commits to hassio-addons-development +18 commits to python-openzwave 17 commits to hassio-addons-example -17 commits to python-openzwave +13 commits to hassio-tensorflow 11 commits to actions -7 commits to hassio-addons-development -3 commits to home-assistant-polymer +8 commits to home-assistant-polymer +8 commits to hassio-dns +6 commits to hassos-cli +3 commits to architecture 3 commits to open-zwave -1 commit to home-assistant-js-websocket +2 commits to hassos-pki 1 commit to netdisco +1 commit to home-assistant-js-websocket 1 commit to people ") - [pascalsaul (@pascalsaul)](https://github.com/pascalsaul "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Pat (@patfreeman)](https://github.com/patfreeman "2 total commits to the Home Assistant orga: +- [Pat Freeman (@patfreeman)](https://github.com/patfreeman "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") - [Pat Thoyts (@patthoyts)](https://github.com/patthoyts "2 total commits to the Home Assistant orga: @@ -8136,8 +9411,11 @@ This page contains a list of people who have contributed in one way or another t - [Patrick Aikens (@duckpuppy)](https://github.com/duckpuppy "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") -- [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "6 total commits to the Home Assistant orga: -5 commits to home-assistant.io +- [Patrick Clery (@patrickclery)](https://github.com/patrickclery "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "7 total commits to the Home Assistant orga: +6 commits to home-assistant.io 1 commit to home-assistant ") - [Patrick Georgi (@pgeorgi)](https://github.com/pgeorgi "1 total commits to the Home Assistant orga: @@ -8150,6 +9428,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") +- [Patrick Kishino (@pkishino)](https://github.com/pkishino "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Patrick T\.C (@ptc)](https://github.com/ptc "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io @@ -8157,9 +9438,11 @@ This page contains a list of people who have contributed in one way or another t - [Patrick White (@pw)](https://github.com/pw "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Patrik (@ggravlingen)](https://github.com/ggravlingen "2 total commits to the Home Assistant orga: -1 commit to home-assistant -1 commit to home-assistant.io +- [Patrik (@ggravlingen)](https://github.com/ggravlingen "14 total commits to the Home Assistant orga: +10 commits to home-assistant +2 commits to home-assistant.io +1 commit to developers.home-assistant +1 commit to alerts.home-assistant.io ") - [Patrik Ekström (@patrik3k)](https://github.com/patrik3k "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -8170,11 +9453,8 @@ This page contains a list of people who have contributed in one way or another t - [Patryk Gałczyński (@evemorgen)](https://github.com/evemorgen "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [pattyland (@pattyland)](https://github.com/pattyland "7 total commits to the Home Assistant orga: -7 commits to home-assistant.io -") -- [Paul Annekov (@PaulAnnekov)](https://github.com/PaulAnnekov "11 total commits to the Home Assistant orga: -8 commits to home-assistant +- [Paul Annekov (@PaulAnnekov)](https://github.com/PaulAnnekov "17 total commits to the Home Assistant orga: +14 commits to home-assistant 3 commits to home-assistant.io ") - [Paul Archer (@geek65535)](https://github.com/geek65535 "1 total commits to the Home Assistant orga: @@ -8187,8 +9467,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Paul Bottein (@piitaya)](https://github.com/piitaya "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Paul Bottein (@piitaya)](https://github.com/piitaya "5 total commits to the Home Assistant orga: +4 commits to home-assistant +1 commit to home-assistant.io ") - [Paul Davis (@paulbdavis)](https://github.com/paulbdavis "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer @@ -8196,6 +9477,9 @@ This page contains a list of people who have contributed in one way or another t - [Paul Hendry (@pshendry)](https://github.com/pshendry "1 total commits to the Home Assistant orga: 1 commit to warrant ") +- [Paul Hobbs (@SolidElectronics)](https://github.com/SolidElectronics "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [Paul Jimenez (@pjz)](https://github.com/pjz "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") @@ -8215,6 +9499,10 @@ This page contains a list of people who have contributed in one way or another t - [Paul Krischer (@SqyD)](https://github.com/SqyD "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Paul Madden (@maddenp)](https://github.com/maddenp "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") - [Paul Nicholls (@pauln)](https://github.com/pauln "2 total commits to the Home Assistant orga: 2 commits to netdisco ") @@ -8224,6 +9512,12 @@ This page contains a list of people who have contributed in one way or another t - [Paul Rabahy (@PRabahy)](https://github.com/PRabahy "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Paul Romkes (@Romkabouter)](https://github.com/Romkabouter "1 total commits to the Home Assistant orga: +1 commit to hassio-addons +") +- [Paul Sinclair (@sinclairpaul)](https://github.com/sinclairpaul "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io +") - [Paul Sokolovsky (@pfalcon)](https://github.com/pfalcon "6 total commits to the Home Assistant orga: 3 commits to netdisco 3 commits to home-assistant @@ -8234,8 +9528,9 @@ This page contains a list of people who have contributed in one way or another t - [Paul Swartz (@paulswartz)](https://github.com/paulswartz "2 total commits to the Home Assistant orga: 2 commits to feedparser ") -- [Paul Tarjan (@ptarjan)](https://github.com/ptarjan "2 total commits to the Home Assistant orga: +- [Paul Tarjan (@ptarjan)](https://github.com/ptarjan "4 total commits to the Home Assistant orga: 2 commits to home-assistant +2 commits to home-assistant.io ") - [pavanagrawal123 (@pavanagrawal123)](https://github.com/pavanagrawal123 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -8250,29 +9545,44 @@ This page contains a list of people who have contributed in one way or another t - [Pavol Babinčák (@scrool)](https://github.com/scrool "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Pawel (@pszafer)](https://github.com/pszafer "12 total commits to the Home Assistant orga: -7 commits to home-assistant -5 commits to home-assistant.io +- [Pavol Holes (@pavolholes)](https://github.com/pavolholes "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") +- [Pawel (@pszafer)](https://github.com/pszafer "21 total commits to the Home Assistant orga: +12 commits to home-assistant +9 commits to home-assistant.io ") - [Pawel Winogrodzki (@PawelWMS)](https://github.com/PawelWMS "12 total commits to the Home Assistant orga: 12 commits to libcoap ") +- [Paweł Kobylak (@noose)](https://github.com/noose "1 total commits to the Home Assistant orga: +1 commit to open-zwave +") - [Paweł Krupa (@paulfantom)](https://github.com/paulfantom "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Paxy (@Paxy)](https://github.com/Paxy "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [pbalogh77 (@pbalogh77)](https://github.com/pbalogh77 "17 total commits to the Home Assistant orga: -14 commits to home-assistant +- [pbalogh77 (@pbalogh77)](https://github.com/pbalogh77 "19 total commits to the Home Assistant orga: +16 commits to home-assistant 3 commits to home-assistant.io ") +- [pcragone (@pcragone)](https://github.com/pcragone "1 total commits to the Home Assistant orga: +1 commit to open-zwave +") - [pdanilew (@pdanilew)](https://github.com/pdanilew "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [PDarkTemplar (@PDarkTemplar)](https://github.com/PDarkTemplar "9 total commits to the Home Assistant orga: 9 commits to open-zwave ") +- [pdeelen (@pdeelen)](https://github.com/pdeelen "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [PDekker (@PDekker)](https://github.com/PDekker "2 total commits to the Home Assistant orga: +2 commits to home-assistant-polymer +") - [Pedro Navarro (@pedronavf)](https://github.com/pedronavf "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") @@ -8282,30 +9592,32 @@ This page contains a list of people who have contributed in one way or another t - [PeeJay (@pejotigrek)](https://github.com/pejotigrek "1 total commits to the Home Assistant orga: 1 commit to home-assistant-assets ") -- [Penny Wood (@Swamp-Ig)](https://github.com/Swamp-Ig "16 total commits to the Home Assistant orga: -13 commits to home-assistant -2 commits to home-assistant.io -1 commit to people -") - [pepeEL (@pepeEL)](https://github.com/pepeEL "18 total commits to the Home Assistant orga: 16 commits to open-zwave 2 commits to home-assistant ") -- [Per Osbäck (@perosb)](https://github.com/perosb "24 total commits to the Home Assistant orga: -22 commits to home-assistant -2 commits to home-assistant.io +- [Per Osbäck (@perosb)](https://github.com/perosb "26 total commits to the Home Assistant orga: +23 commits to home-assistant +3 commits to home-assistant.io ") -- [Per Sandström (@persandstrom)](https://github.com/persandstrom "133 total commits to the Home Assistant orga: -103 commits to home-assistant -18 commits to home-assistant.io +- [Per Sandström (@persandstrom)](https://github.com/persandstrom "135 total commits to the Home Assistant orga: +104 commits to home-assistant +19 commits to home-assistant.io 12 commits to home-assistant-polymer ") +- [Per\-Øyvind Bruun (@peroyvind)](https://github.com/peroyvind "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [pereiraru (@pereiraru)](https://github.com/pereiraru "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [perfalk (@perfalk)](https://github.com/perfalk "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Pertti Roitto (@roitto)](https://github.com/roitto "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Petar Petrov (@MindFreeze)](https://github.com/MindFreeze "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -8327,8 +9639,11 @@ This page contains a list of people who have contributed in one way or another t - [Peter (@AnderssonPeter)](https://github.com/AnderssonPeter "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Peter Dave Hello (@PeterDaveHello)](https://github.com/PeterDaveHello "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [Peter Armstrong (@peteretep)](https://github.com/peteretep "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") +- [Peter Clarke (@peteclarkez)](https://github.com/peteclarkez "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Peter Epley (@epleypa)](https://github.com/epleypa "9 total commits to the Home Assistant orga: 7 commits to home-assistant.io @@ -8340,12 +9655,9 @@ This page contains a list of people who have contributed in one way or another t - [Peter Kyrkos (@KmanOz)](https://github.com/KmanOz "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Peter Nijssen (@peternijssen)](https://github.com/peternijssen "10 total commits to the Home Assistant orga: -5 commits to home-assistant.io -5 commits to home-assistant -") -- [Peter Ragone (@pcragone)](https://github.com/pcragone "1 total commits to the Home Assistant orga: -1 commit to open-zwave +- [Peter Nijssen (@peternijssen)](https://github.com/peternijssen "14 total commits to the Home Assistant orga: +8 commits to home-assistant.io +6 commits to home-assistant ") - [Peter Tisovčík (@mienkofax)](https://github.com/mienkofax "1 total commits to the Home Assistant orga: 1 commit to open-zwave @@ -8356,23 +9668,23 @@ This page contains a list of people who have contributed in one way or another t - [Peter Zsak (@wroadd)](https://github.com/wroadd "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [petewill (@petewill)](https://github.com/petewill "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [petkov (@petkov)](https://github.com/petkov "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Petr (@petrkle)](https://github.com/petrkle "2 total commits to the Home Assistant orga: -2 commits to dehydrated -") - [Petr Kotek (@petrkotek)](https://github.com/petrkotek "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Petr Vraník (@konikvranik)](https://github.com/konikvranik "11 total commits to the Home Assistant orga: -6 commits to home-assistant -5 commits to home-assistant.io +- [Petr Vraník (@konikvranik)](https://github.com/konikvranik "14 total commits to the Home Assistant orga: +8 commits to home-assistant +6 commits to home-assistant.io ") -- [Petro31 (@Petro31)](https://github.com/Petro31 "6 total commits to the Home Assistant orga: -3 commits to home-assistant +- [Petro31 (@Petro31)](https://github.com/Petro31 "11 total commits to the Home Assistant orga: +5 commits to home-assistant.io +4 commits to home-assistant 2 commits to home-assistant-polymer -1 commit to home-assistant.io ") - [pezinek (@pezinek)](https://github.com/pezinek "9 total commits to the Home Assistant orga: 8 commits to home-assistant @@ -8387,35 +9699,38 @@ This page contains a list of people who have contributed in one way or another t - [phfix (@phfix)](https://github.com/phfix "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Phi Dong (@pdong)](https://github.com/pdong "3 total commits to the Home Assistant orga: +- [Phi Dong (@pdong)](https://github.com/pdong "12 total commits to the Home Assistant orga: +8 commits to home-assistant-polymer 3 commits to home-assistant.io +1 commit to developers.home-assistant +") +- [Phil (@pnbruckner)](https://github.com/pnbruckner "49 total commits to the Home Assistant orga: +35 commits to home-assistant +14 commits to home-assistant.io ") - [Phil (@godloth)](https://github.com/godloth "10 total commits to the Home Assistant orga: 10 commits to home-assistant.io ") -- [Phil (@pnbruckner)](https://github.com/pnbruckner "10 total commits to the Home Assistant orga: -9 commits to home-assistant -1 commit to home-assistant.io -") -- [Phil Cole (@filcole)](https://github.com/filcole "15 total commits to the Home Assistant orga: -10 commits to home-assistant.io -5 commits to home-assistant +- [Phil Cole (@filcole)](https://github.com/filcole "19 total commits to the Home Assistant orga: +12 commits to home-assistant.io +7 commits to home-assistant ") - [Phil Elson (@pelson)](https://github.com/pelson "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") -- [Phil Frost (@bitglue)](https://github.com/bitglue "14 total commits to the Home Assistant orga: +- [Phil Frost (@bitglue)](https://github.com/bitglue "15 total commits to the Home Assistant orga: 12 commits to home-assistant 2 commits to home-assistant.io +1 commit to people ") -- [Phil Haack (@Haacked)](https://github.com/Haacked "3 total commits to the Home Assistant orga: +- [Phil Haack (@haacked)](https://github.com/haacked "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") - [Phil Hansen (@Hansen8601)](https://github.com/Hansen8601 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Phil Hawthorne (@philhawthorne)](https://github.com/philhawthorne "36 total commits to the Home Assistant orga: -21 commits to home-assistant.io +- [Phil Hawthorne (@philhawthorne)](https://github.com/philhawthorne "37 total commits to the Home Assistant orga: +22 commits to home-assistant.io 11 commits to home-assistant 4 commits to open-zwave ") @@ -8452,13 +9767,17 @@ This page contains a list of people who have contributed in one way or another t 56 commits to home-assistant 9 commits to home-assistant.io ") -- [Philip Rosenberg\-Watt (@PhilRW)](https://github.com/PhilRW "22 total commits to the Home Assistant orga: -14 commits to home-assistant -8 commits to home-assistant.io +- [Philip Rosenberg\-Watt (@PhilRW)](https://github.com/PhilRW "27 total commits to the Home Assistant orga: +16 commits to home-assistant +11 commits to home-assistant.io ") - [Philip Søeberg (@philipsoeberg)](https://github.com/philipsoeberg "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") +- [Philipp Danner (@dannerph)](https://github.com/dannerph "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "40 total commits to the Home Assistant orga: 27 commits to home-assistant 11 commits to home-assistant.io @@ -8472,14 +9791,19 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") +- [Philippe Delodder (@phdelodder)](https://github.com/phdelodder "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [philipperequile (@philipperequile)](https://github.com/philipperequile "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Phill Price (@phillprice)](https://github.com/phillprice "12 total commits to the Home Assistant orga: -12 commits to home-assistant.io +- [Phill Price (@phillprice)](https://github.com/phillprice "14 total commits to the Home Assistant orga: +13 commits to home-assistant.io +1 commit to developers.home-assistant ") -- [phispi (@phispi)](https://github.com/phispi "1 total commits to the Home Assistant orga: +- [phispi (@phispi)](https://github.com/phispi "3 total commits to the Home Assistant orga: +2 commits to home-assistant 1 commit to home-assistant.io ") - [phithor (@phithor)](https://github.com/phithor "2 total commits to the Home Assistant orga: @@ -8499,16 +9823,20 @@ This page contains a list of people who have contributed in one way or another t - [Pier\-Luc Charbonneau (@plcharbonneau)](https://github.com/plcharbonneau "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [Pierre (@BaQs)](https://github.com/BaQs "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Pierre (@BaQs)](https://github.com/BaQs "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io ") - [Pierre Gronlier (@ticapix)](https://github.com/ticapix "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Pierre Ståhl (@postlund)](https://github.com/postlund "52 total commits to the Home Assistant orga: -35 commits to home-assistant -11 commits to home-assistant.io +- [Pierre Sicot (@psicot)](https://github.com/psicot "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") +- [Pierre Ståhl (@postlund)](https://github.com/postlund "54 total commits to the Home Assistant orga: +36 commits to home-assistant +12 commits to home-assistant.io 4 commits to netdisco 2 commits to home-assistant-polymer ") @@ -8530,9 +9858,18 @@ This page contains a list of people who have contributed in one way or another t - [Piotr Dobrowolski (@Informatic)](https://github.com/Informatic "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") +- [Piotr Kubiak (@piotr-kubiak)](https://github.com/piotr-kubiak "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [Piotr Miazga (@polishdeveloper)](https://github.com/polishdeveloper "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Piotr Witek (@piowit)](https://github.com/piowit "1 total commits to the Home Assistant orga: +1 commit to hassos +") +- [Piotr Żuralski (@piotr-zuralski)](https://github.com/piotr-zuralski "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io +") - [Pipiche (@pipiche38)](https://github.com/pipiche38 "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") @@ -8548,6 +9885,10 @@ This page contains a list of people who have contributed in one way or another t - [pkonnekermetametrics (@pkonnekermetametrics)](https://github.com/pkonnekermetametrics "5 total commits to the Home Assistant orga: 5 commits to warrant ") +- [plafü (@plafue)](https://github.com/plafue "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [PlanetJ (@PlanetJ)](https://github.com/PlanetJ "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -8566,12 +9907,23 @@ This page contains a list of people who have contributed in one way or another t - [PollieKrismis (@PollieKrismis)](https://github.com/PollieKrismis "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [PoofyTeddy (@poofyteddy)](https://github.com/poofyteddy "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [pp81381 (@pp81381)](https://github.com/pp81381 "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [pplucky (@pplucky)](https://github.com/pplucky "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Pratyush Mohapatra (@Ativerc)](https://github.com/Ativerc "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [presslab\-us (@presslab-us)](https://github.com/presslab-us "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") - [priiduonu (@priiduonu)](https://github.com/priiduonu "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -8604,6 +9956,9 @@ This page contains a list of people who have contributed in one way or another t - [Purplecarrot (@purplecarrot)](https://github.com/purplecarrot "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [pvmil (@pvmil)](https://github.com/pvmil "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [pyitphyoaung (@pyitphyoaung)](https://github.com/pyitphyoaung "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -8617,8 +9972,8 @@ This page contains a list of people who have contributed in one way or another t - [qinghuangchan (@qinghuangchan)](https://github.com/qinghuangchan "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [qqgg231 (@qqgg231)](https://github.com/qqgg231 "3 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [qqgg231 (@qqgg231)](https://github.com/qqgg231 "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io ") - [qrionic labs (@qrioniclabs)](https://github.com/qrioniclabs "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -8626,8 +9981,15 @@ This page contains a list of people who have contributed in one way or another t - [quaec (@quaec)](https://github.com/quaec "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Quatroking (@Quatroking)](https://github.com/Quatroking "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Quatroking (@Quatroking)](https://github.com/Quatroking "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [Quentame (@Quentame)](https://github.com/Quentame "57 total commits to the Home Assistant orga: +55 commits to home-assistant +2 commits to home-assistant.io +") +- [Quentin Favrie (@tseho)](https://github.com/tseho "3 total commits to the Home Assistant orga: +3 commits to appdaemon ") - [Quentin Stafford\-Fraser (@quentinsf)](https://github.com/quentinsf "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -8636,9 +9998,9 @@ This page contains a list of people who have contributed in one way or another t - [Questler (@Questler)](https://github.com/Questler "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [quthla (@quthla)](https://github.com/quthla "17 total commits to the Home Assistant orga: +- [quthla (@quthla)](https://github.com/quthla "21 total commits to the Home Assistant orga: +10 commits to home-assistant 6 commits to home-assistant-polymer -6 commits to home-assistant 4 commits to home-assistant-iOS 1 commit to home-assistant.io ") @@ -8649,8 +10011,8 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [R Huish (@genestealer)](https://github.com/genestealer "5 total commits to the Home Assistant orga: -5 commits to home-assistant.io +- [R Huish (@genestealer)](https://github.com/genestealer "28 total commits to the Home Assistant orga: +28 commits to home-assistant.io ") - [r4nd0mbr1ck (@r4nd0mbr1ck)](https://github.com/r4nd0mbr1ck "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -8660,16 +10022,25 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Raa'Shaun H\. (@CardcaptorRLH85)](https://github.com/CardcaptorRLH85 "1 total commits to the Home Assistant orga: +1 commit to hassio-installer +") - [Radim (@rds76)](https://github.com/rds76 "2 total commits to the Home Assistant orga: 2 commits to appdaemon ") -- [radinsky (@radinsky)](https://github.com/radinsky "1 total commits to the Home Assistant orga: +- [radinsky (@radinsky)](https://github.com/radinsky "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [Rafael Alencar (@rafaeldca)](https://github.com/rafaeldca "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [rafale77 (@rafale77)](https://github.com/rafale77 "7 total commits to the Home Assistant orga: 4 commits to home-assistant.io 3 commits to home-assistant ") +- [rahul\_5409 (@RahulRavishankar)](https://github.com/RahulRavishankar "1 total commits to the Home Assistant orga: +1 commit to hassio-addons +") - [Raiford (@raiford)](https://github.com/raiford "2 total commits to the Home Assistant orga: 1 commit to hassio-addons 1 commit to home-assistant.io @@ -8677,12 +10048,24 @@ This page contains a list of people who have contributed in one way or another t - [rainlake (@rainlake)](https://github.com/rainlake "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") +- [ral (@leitonp)](https://github.com/leitonp "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Ralph (@bberg115)](https://github.com/bberg115 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Ralph Hopman (@rhopman)](https://github.com/rhopman "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Raman Gupta (@raman325)](https://github.com/raman325 "8 total commits to the Home Assistant orga: +5 commits to home-assistant.io +3 commits to home-assistant +") +- [Rami Mosleh (@engrbm87)](https://github.com/engrbm87 "19 total commits to the Home Assistant orga: +8 commits to appdaemon +7 commits to home-assistant +4 commits to home-assistant.io +") - [Randall Mason (@ClashTheBunny)](https://github.com/ClashTheBunny "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -8691,8 +10074,9 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant 2 commits to home-assistant.io ") -- [Raoul Teeuwen (@raoulteeuwen)](https://github.com/raoulteeuwen "1 total commits to the Home Assistant orga: +- [Raoul Teeuwen (@raoulteeuwen)](https://github.com/raoulteeuwen "2 total commits to the Home Assistant orga: 1 commit to home-assistant +1 commit to home-assistant.io ") - [Rashmi Yadav (@raysrashmi)](https://github.com/raysrashmi "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -8714,9 +10098,6 @@ This page contains a list of people who have contributed in one way or another t - [Ray (@raymck)](https://github.com/raymck "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") -- [Ray Goat (@raygoat)](https://github.com/raygoat "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io -") - [ray0711 (@ray0711)](https://github.com/ray0711 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -8729,6 +10110,9 @@ This page contains a list of people who have contributed in one way or another t - [Raymond Ng (@RaymondNg2)](https://github.com/RaymondNg2 "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") +- [Razafintsialonina Ny Andrianina Mamy (@nyandrianinamamy)](https://github.com/nyandrianinamamy "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [rbflurry (@rbflurry)](https://github.com/rbflurry "20 total commits to the Home Assistant orga: 16 commits to home-assistant.io 4 commits to home-assistant @@ -8745,6 +10129,9 @@ This page contains a list of people who have contributed in one way or another t - [rdkayman (@rdkayman)](https://github.com/rdkayman "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [realthk (@realthk)](https://github.com/realthk "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Rebecca Cran (@bcran)](https://github.com/bcran "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -8760,12 +10147,19 @@ This page contains a list of people who have contributed in one way or another t - [reef\-actor (@reef-actor)](https://github.com/reef-actor "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Reinder Reinders (@reinder83)](https://github.com/reinder83 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Reinhard Tartler (@siretart)](https://github.com/siretart "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [remc0 (@remc0)](https://github.com/remc0 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Renaud Martinet (@karouf)](https://github.com/karouf "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Rendili (@Rendili)](https://github.com/Rendili "6 total commits to the Home Assistant orga: 5 commits to home-assistant 1 commit to home-assistant.io @@ -8774,8 +10168,8 @@ This page contains a list of people who have contributed in one way or another t 18 commits to home-assistant 8 commits to home-assistant.io ") -- [Rene Tode (@ReneTode)](https://github.com/ReneTode "57 total commits to the Home Assistant orga: -54 commits to appdaemon +- [Rene Tode (@ReneTode)](https://github.com/ReneTode "62 total commits to the Home Assistant orga: +59 commits to appdaemon 3 commits to home-assistant.io ") - [René (@rretsiem)](https://github.com/rretsiem "1 total commits to the Home Assistant orga: @@ -8828,12 +10222,16 @@ This page contains a list of people who have contributed in one way or another t - [Richard Evans (@rmevans9)](https://github.com/rmevans9 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Richard Lucas (@lucasweb78)](https://github.com/lucasweb78 "9 total commits to the Home Assistant orga: +- [Richard Jones (@RJ)](https://github.com/RJ "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") +- [Richard Lucas (@lucasweb78)](https://github.com/lucasweb78 "10 total commits to the Home Assistant orga: 9 commits to home-assistant +1 commit to people ") -- [Richard Mitchell (@mitchellrj)](https://github.com/mitchellrj "7 total commits to the Home Assistant orga: -5 commits to home-assistant -2 commits to home-assistant.io +- [Richard Mitchell (@mitchellrj)](https://github.com/mitchellrj "20 total commits to the Home Assistant orga: +17 commits to home-assistant +3 commits to home-assistant.io ") - [Richard Niemand (@rniemand)](https://github.com/rniemand "1 total commits to the Home Assistant orga: 1 commit to example-custom-config @@ -8845,17 +10243,23 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 2 commits to home-assistant.io ") +- [RichardUUU (@RichardUUU)](https://github.com/RichardUUU "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [richo (@richo)](https://github.com/richo "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Rick (@rcuddy)](https://github.com/rcuddy "1 total commits to the Home Assistant orga: 1 commit to pi-gen ") +- [Rick Fletcher (@rfletcher)](https://github.com/rfletcher "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Rick Sharp (@ricksharp)](https://github.com/ricksharp "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Rick van Hattem (@WoLpH)](https://github.com/WoLpH "5 total commits to the Home Assistant orga: -2 commits to home-assistant +- [Rick van Hattem (@WoLpH)](https://github.com/WoLpH "6 total commits to the Home Assistant orga: +3 commits to home-assistant 1 commit to scenegen 1 commit to feedparser 1 commit to home-assistant.io @@ -8878,9 +10282,15 @@ This page contains a list of people who have contributed in one way or another t - [rnizametdinov (@rnizametdinov)](https://github.com/rnizametdinov "1 total commits to the Home Assistant orga: 1 commit to hassio-addons ") +- [Rob (@robvanuden)](https://github.com/robvanuden "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Rob Capellini (@capellini)](https://github.com/capellini "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") +- [Rob Chandhok (@robchandhok)](https://github.com/robchandhok "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Rob Connolly (@webworxshop)](https://github.com/webworxshop "4 total commits to the Home Assistant orga: 2 commits to home-assistant 2 commits to home-assistant.io @@ -8895,51 +10305,51 @@ This page contains a list of people who have contributed in one way or another t - [Rob Slifka (@rslifka)](https://github.com/rslifka "5 total commits to the Home Assistant orga: 5 commits to home-assistant.io ") -- [Robbert Müller (@mjrider)](https://github.com/mjrider "10 total commits to the Home Assistant orga: -6 commits to hassio-cli +- [Robbert Müller (@mjrider)](https://github.com/mjrider "15 total commits to the Home Assistant orga: +9 commits to hassio-cli +2 commits to home-assistant 2 commits to home-assistant.io +1 commit to hassio-addons 1 commit to people -1 commit to home-assistant ") - [Robbie Page (@rorpage)](https://github.com/rorpage "3 total commits to the Home Assistant orga: 3 commits to hassbian-scripts ") -- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1810 total commits to the Home Assistant orga: -787 commits to home-assistant-iOS -302 commits to home-assistant -278 commits to home-assistant.io -139 commits to ios-certificates +- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "2483 total commits to the Home Assistant orga: +1256 commits to home-assistant-iOS +332 commits to home-assistant +293 commits to home-assistant.io +163 commits to ios-certificates 93 commits to homebridge-homeassistant -30 commits to people +90 commits to companion.home-assistant +44 commits to people 24 commits to cla-bot 23 commits to Home-Assistant-iOS-Push +21 commits to home-assistant-polymer +18 commits to Iconic +17 commits to mobile-apps-fcm-push 15 commits to hubot-home-assistant -15 commits to home-assistant-polymer -10 commits to home-assistant-dyndns -8 commits to Analytics-Receiver +14 commits to developers.home-assistant +12 commits to home-assistant-assets 8 commits to codeowners-mention -7 commits to dehydrated 7 commits to netdisco 6 commits to organization-internal -6 commits to mobile-apps-fcm-push -4 commits to home-assistant-assets -3 commits to home-assistant-cli -3 commits to home-assistant-js-websocket +4 commits to home-assistant-js-websocket 3 commits to home-assistant-js -3 commits to LabelBot +3 commits to hassbot +3 commits to home-assistant-cli 3 commits to scenegen +3 commits to LabelBot 3 commits to organization 3 commits to hadashboard -3 commits to hassbot 3 commits to appdaemon -3 commits to home-assistant-Android -3 commits to developers.home-assistant +3 commits to .github +3 commits to home-assistant-android 3 commits to open-zwave -2 commits to home-assistant-notebooks 2 commits to micropython-home-assistant -2 commits to lambda-home-assistant-github 2 commits to fabric-home-assistant -2 commits to .github +2 commits to home-assistant-notebooks +2 commits to lambda-home-assistant-github 1 commit to hass-release 1 commit to gu-who ") @@ -8947,11 +10357,8 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") -- [Robert (@metbril)](https://github.com/metbril "10 total commits to the Home Assistant orga: -10 commits to home-assistant.io -") -- [Robert (@rbrtio)](https://github.com/rbrtio "2 total commits to the Home Assistant orga: -2 commits to open-zwave +- [Robert (@metbril)](https://github.com/metbril "12 total commits to the Home Assistant orga: +12 commits to home-assistant.io ") - [Robert Accettura (@raccettura)](https://github.com/raccettura "2 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer @@ -8960,8 +10367,9 @@ This page contains a list of people who have contributed in one way or another t - [Robert Beal (@robertbeal)](https://github.com/robertbeal "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Robert Dunmire III (@slackr31337)](https://github.com/slackr31337 "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Robert Dunmire III (@slackr31337)](https://github.com/slackr31337 "6 total commits to the Home Assistant orga: +5 commits to home-assistant +1 commit to home-assistant.io ") - [Robert Kiss (@kepten)](https://github.com/kepten "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -8970,8 +10378,8 @@ This page contains a list of people who have contributed in one way or another t - [Robert Kowalski (@robertkowalski)](https://github.com/robertkowalski "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Robert Schindler (@efficiosoft)](https://github.com/efficiosoft "5 total commits to the Home Assistant orga: -1 commit to appdaemon +- [Robert Schindler (@efficiosoft)](https://github.com/efficiosoft "8 total commits to the Home Assistant orga: +4 commits to appdaemon 1 commit to home-assistant-polymer 1 commit to hassos 1 commit to home-assistant @@ -8984,35 +10392,50 @@ This page contains a list of people who have contributed in one way or another t 1 commit to appdaemon 1 commit to home-assistant ") -- [Robert Svensson (@Kane610)](https://github.com/Kane610 "120 total commits to the Home Assistant orga: -81 commits to home-assistant -32 commits to home-assistant.io +- [Robert Svensson (@Kane610)](https://github.com/Kane610 "236 total commits to the Home Assistant orga: +186 commits to home-assistant +43 commits to home-assistant.io 4 commits to developers.home-assistant 1 commit to netdisco 1 commit to home-assistant-polymer 1 commit to people ") +- [Robert Van Gorkom (@vangorra)](https://github.com/vangorra "13 total commits to the Home Assistant orga: +10 commits to home-assistant +3 commits to home-assistant.io +") - [Roberto Tyley (@rtyley)](https://github.com/rtyley "207 total commits to the Home Assistant orga: 207 commits to gu-who ") - [robhuls (@robhuls)](https://github.com/robhuls "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Robin (@robmarkcole)](https://github.com/robmarkcole "77 total commits to the Home Assistant orga: -49 commits to home-assistant.io -20 commits to home-assistant -2 commits to home-assistant-notebooks +- [Robin (@robmarkcole)](https://github.com/robmarkcole "80 total commits to the Home Assistant orga: +50 commits to home-assistant.io +22 commits to home-assistant 2 commits to home-assistant-assets +2 commits to home-assistant-notebooks 2 commits to people 1 commit to hassos 1 commit to data.home-assistant ") +- [Robin (@Derkades)](https://github.com/Derkades "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [Robin (@kloknibor)](https://github.com/kloknibor "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Robin Clarke (@robin13)](https://github.com/robin13 "1 total commits to the Home Assistant orga: +- [Robin Clarke (@robin13)](https://github.com/robin13 "2 total commits to the Home Assistant orga: +1 commit to hassio-addons 1 commit to home-assistant ") +- [Robin Harmsen (@reharmsen)](https://github.com/reharmsen "9 total commits to the Home Assistant orga: +2 commits to hassio-homeassistant +2 commits to hassio-base +2 commits to hassos +2 commits to hassio-addons +1 commit to hassio-builder +") - [Robin Laurén (@llauren)](https://github.com/llauren "2 total commits to the Home Assistant orga: 1 commit to appdaemon 1 commit to home-assistant.io @@ -9023,23 +10446,45 @@ This page contains a list of people who have contributed in one way or another t - [Robin Migalski (@RobinMglsk)](https://github.com/RobinMglsk "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [roblandry (@roblandry)](https://github.com/roblandry "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Robin Pronk (@rfpronk)](https://github.com/rfpronk "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") +- [Robin Wohlers\-Reichel (@squishykid)](https://github.com/squishykid "6 total commits to the Home Assistant orga: +5 commits to home-assistant +1 commit to home-assistant.io +") +- [roblandry (@roblandry)](https://github.com/roblandry "3 total commits to the Home Assistant orga: +3 commits to home-assistant ") - [robybob64 (@robybob64)](https://github.com/robybob64 "4 total commits to the Home Assistant orga: 4 commits to open-zwave ") +- [Rocik (@Rocik)](https://github.com/Rocik "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Roddie Hasan (@eiddor)](https://github.com/eiddor "9 total commits to the Home Assistant orga: 6 commits to home-assistant.io 3 commits to open-zwave ") +- [Rodrigo Pérez (@rodripf)](https://github.com/rodripf "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") +- [Roeland Van Lembergen (@clayhill)](https://github.com/clayhill "2 total commits to the Home Assistant orga: +2 commits to appdaemon +") +- [Roelof Schuiling (@rschuiling)](https://github.com/rschuiling "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [Roger Gammans (@rgammans)](https://github.com/rgammans "1 total commits to the Home Assistant orga: 1 commit to feedparser ") -- [Rohan Kapoor (@rohankapoorcom)](https://github.com/rohankapoorcom "113 total commits to the Home Assistant orga: -78 commits to home-assistant -33 commits to home-assistant.io +- [Rohan Kapoor (@rohankapoorcom)](https://github.com/rohankapoorcom "121 total commits to the Home Assistant orga: +83 commits to home-assistant +35 commits to home-assistant.io 2 commits to people +1 commit to developers.home-assistant ") - [Roi Dayan (@roidayan)](https://github.com/roidayan "7 total commits to the Home Assistant orga: 6 commits to home-assistant @@ -9049,11 +10494,19 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to homebridge-homeassistant ") +- [Roland Beck (@Data-Monkey)](https://github.com/Data-Monkey "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Rolf K (@abstrakct)](https://github.com/abstrakct "6 total commits to the Home Assistant orga: +3 commits to home-assistant +3 commits to home-assistant.io +") - [Rolf Schäuble (@rschaeuble)](https://github.com/rschaeuble "6 total commits to the Home Assistant orga: 6 commits to appdaemon ") -- [rolfberkenbosch (@rolfberkenbosch)](https://github.com/rolfberkenbosch "2 total commits to the Home Assistant orga: -2 commits to home-assistant +- [rolfberkenbosch (@rolfberkenbosch)](https://github.com/rolfberkenbosch "9 total commits to the Home Assistant orga: +8 commits to home-assistant +1 commit to home-assistant.io ") - [rollbrettler (@rollbrettler)](https://github.com/rollbrettler "2 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -9069,16 +10522,17 @@ This page contains a list of people who have contributed in one way or another t - [Roman (@Roemer)](https://github.com/Roemer "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Ron Klinkien (@cyberjunky)](https://github.com/cyberjunky "5 total commits to the Home Assistant orga: +- [Ron Klinkien (@cyberjunky)](https://github.com/cyberjunky "7 total commits to the Home Assistant orga: 3 commits to home-assistant.io +2 commits to hassio-homeassistant 2 commits to home-assistant ") - [Ron Miller (@brainyron)](https://github.com/brainyron "1 total commits to the Home Assistant orga: 1 commit to hassio-addons ") -- [Ron Schaeffer (@ronschaeffer)](https://github.com/ronschaeffer "2 total commits to the Home Assistant orga: +- [Ron Schaeffer (@ronschaeffer)](https://github.com/ronschaeffer "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io 1 commit to developers.home-assistant -1 commit to home-assistant.io ") - [Ron Šmeral (@rsmeral)](https://github.com/rsmeral "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -9092,18 +10546,25 @@ This page contains a list of people who have contributed in one way or another t - [Ronnie Garcia (@ronniegarcia)](https://github.com/ronniegarcia "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Ronny Eia (@eiaro)](https://github.com/eiaro "4 total commits to the Home Assistant orga: +4 commits to home-assistant +") - [roqeer (@roqeer)](https://github.com/roqeer "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") -- [Ross Dargan (@rossdargan)](https://github.com/rossdargan "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [Ross Cullen (@rosscullen)](https://github.com/rosscullen "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io +") +- [Ross Dargan (@rossdargan)](https://github.com/rossdargan "8 total commits to the Home Assistant orga: +5 commits to home-assistant.io +3 commits to home-assistant +") +- [Ross Patterson (@rpatterson)](https://github.com/rpatterson "7 total commits to the Home Assistant orga: +7 commits to scenegen ") - [Ross Schulman (@rschulman)](https://github.com/rschulman "1 total commits to the Home Assistant orga: 1 commit to pi-gen ") -- [rosscullen (@rosscullen)](https://github.com/rosscullen "3 total commits to the Home Assistant orga: -3 commits to home-assistant.io -") - [Roustem Karimov (@roustem)](https://github.com/roustem "26 total commits to the Home Assistant orga: 26 commits to 1password-teams-open-source ") @@ -9123,8 +10584,8 @@ This page contains a list of people who have contributed in one way or another t - [rpr69 (@rpr69)](https://github.com/rpr69 "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [rrubin0 (@rrubin0)](https://github.com/rrubin0 "5 total commits to the Home Assistant orga: -5 commits to home-assistant.io +- [rrubin0 (@rrubin0)](https://github.com/rrubin0 "7 total commits to the Home Assistant orga: +7 commits to home-assistant.io ") - [Ruben (@rubenvandeven)](https://github.com/rubenvandeven "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -9152,14 +10613,11 @@ This page contains a list of people who have contributed in one way or another t - [Rudi Middel (@mrBussy)](https://github.com/mrBussy "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [rudis (@rudis)](https://github.com/rudis "37 total commits to the Home Assistant orga: -37 commits to dehydrated -") - [Rudolf Offereins (@Sholofly)](https://github.com/Sholofly "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Rufik (@rufik)](https://github.com/rufik "1 total commits to the Home Assistant orga: -1 commit to home-assistant-cli +- [Rufik (@rufik)](https://github.com/rufik "2 total commits to the Home Assistant orga: +2 commits to home-assistant-cli ") - [runningman84 (@runningman84)](https://github.com/runningman84 "5 total commits to the Home Assistant orga: 4 commits to home-assistant.io @@ -9171,8 +10629,8 @@ This page contains a list of people who have contributed in one way or another t - [runraid (@runraid)](https://github.com/runraid "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [ruohan\.chen (@crhan)](https://github.com/crhan "5 total commits to the Home Assistant orga: -3 commits to home-assistant +- [ruohan\.chen (@crhan)](https://github.com/crhan "6 total commits to the Home Assistant orga: +4 commits to home-assistant 2 commits to home-assistant.io ") - [Ruslan Sayfutdinov (@KapJI)](https://github.com/KapJI "2 total commits to the Home Assistant orga: @@ -9200,15 +10658,15 @@ This page contains a list of people who have contributed in one way or another t 5 commits to home-assistant.io 3 commits to home-assistant ") -- [Ryan Bray (@rbray89)](https://github.com/rbray89 "26 total commits to the Home Assistant orga: -22 commits to hassos +- [Ryan Bray (@rbray89)](https://github.com/rbray89 "28 total commits to the Home Assistant orga: +24 commits to hassos 2 commits to home-assistant.io 1 commit to hassio-build 1 commit to people ") -- [Ryan Claussen (@rtclauss)](https://github.com/rtclauss "3 total commits to the Home Assistant orga: -2 commits to home-assistant.io -1 commit to home-assistant +- [Ryan Claussen (@rtclauss)](https://github.com/rtclauss "5 total commits to the Home Assistant orga: +3 commits to home-assistant.io +2 commits to home-assistant ") - [Ryan Daigle (@rwdaigle)](https://github.com/rwdaigle "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io @@ -9217,6 +10675,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 2 commits to home-assistant.io ") +- [Ryan Ewen (@RyanEwen)](https://github.com/RyanEwen "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Ryan Gibbons (@rtgibbons)](https://github.com/rtgibbons "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -9229,6 +10690,9 @@ This page contains a list of people who have contributed in one way or another t - [Ryan Jarvis (@Cabalist)](https://github.com/Cabalist "1 total commits to the Home Assistant orga: 1 commit to hassbian-scripts ") +- [Ryan Johnson (@ryanjohnsontv)](https://github.com/ryanjohnsontv "1 total commits to the Home Assistant orga: +1 commit to home-assistant-assets +") - [Ryan Kladar (@Kladar)](https://github.com/Kladar "1 total commits to the Home Assistant orga: 1 commit to hassos ") @@ -9238,9 +10702,6 @@ This page contains a list of people who have contributed in one way or another t 14 commits to home-assistant-polymer 1 commit to home-assistant-notebooks ") -- [Ryan Kuhl (@rkk09c)](https://github.com/rkk09c "1 total commits to the Home Assistant orga: -1 commit to 1password-teams-open-source -") - [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "99 total commits to the Home Assistant orga: 77 commits to hassio-cli 16 commits to home-assistant @@ -9298,8 +10759,9 @@ This page contains a list of people who have contributed in one way or another t - [sagilo (@sagilo)](https://github.com/sagilo "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [saintman23 (@saintman23)](https://github.com/saintman23 "10 total commits to the Home Assistant orga: +- [saintman23 (@saintman23)](https://github.com/saintman23 "11 total commits to the Home Assistant orga: 10 commits to open-zwave +1 commit to home-assistant.io ") - [Salman Shah (@salman-bhai)](https://github.com/salman-bhai "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -9345,6 +10807,10 @@ This page contains a list of people who have contributed in one way or another t - [Samuel Maggs (@samuelmaggs)](https://github.com/samuelmaggs "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Samuel Progin (@Arduous)](https://github.com/Arduous "3 total commits to the Home Assistant orga: +2 commits to developers.home-assistant +1 commit to home-assistant.io +") - [samuelsson86 (@samuelsson86)](https://github.com/samuelsson86 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -9362,13 +10828,17 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [sander76 (@sander76)](https://github.com/sander76 "48 total commits to the Home Assistant orga: -44 commits to home-assistant +- [sander76 (@sander76)](https://github.com/sander76 "51 total commits to the Home Assistant orga: +47 commits to home-assistant 4 commits to home-assistant.io ") - [Sangwon Kim (@pueue)](https://github.com/pueue "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Santobert (@Santobert)](https://github.com/Santobert "48 total commits to the Home Assistant orga: +37 commits to home-assistant +11 commits to home-assistant.io +") - [sapph42 (@sapph42)](https://github.com/sapph42 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -9378,12 +10848,18 @@ This page contains a list of people who have contributed in one way or another t - [sarakha63 (@sarakha63)](https://github.com/sarakha63 "130 total commits to the Home Assistant orga: 130 commits to open-zwave ") -- [Saumya Balodi (@saumya1906)](https://github.com/saumya1906 "1 total commits to the Home Assistant orga: +- [SaturnusDJ (@SaturnusDJ)](https://github.com/SaturnusDJ "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Saurabh Sharma (@saurabhsharma001)](https://github.com/saurabhsharma001 "1 total commits to the Home Assistant orga: +- [Saumya Balodi (@saumya1906)](https://github.com/saumya1906 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Saurabh Sharma (@saurabhsharma001)](https://github.com/saurabhsharma001 "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [Save me (@Cyr-ius)](https://github.com/Cyr-ius "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [Sbaa1 (@Sbaa1)](https://github.com/Sbaa1 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -9393,8 +10869,9 @@ This page contains a list of people who have contributed in one way or another t - [scaarup (@scaarup)](https://github.com/scaarup "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [scheric (@scheric)](https://github.com/scheric "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [scheric (@scheric)](https://github.com/scheric "9 total commits to the Home Assistant orga: +6 commits to home-assistant.io +3 commits to home-assistant ") - [schferbe (@schferbe)](https://github.com/schferbe "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -9421,6 +10898,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to developers.home-assistant 1 commit to home-assistant.io ") +- [Scott (@SonicMagna)](https://github.com/SonicMagna "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io +") - [Scott Albertson (@salbertson)](https://github.com/salbertson "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -9503,8 +10983,18 @@ This page contains a list of people who have contributed in one way or another t - [seanodell (@seanodell)](https://github.com/seanodell "1 total commits to the Home Assistant orga: 1 commit to hassos ") -- [seanvictory (@seanvictory)](https://github.com/seanvictory "2 total commits to the Home Assistant orga: -2 commits to home-assistant.io +- [SeanPM5 (@SeanPM5)](https://github.com/SeanPM5 "79 total commits to the Home Assistant orga: +42 commits to companion.home-assistant +22 commits to home-assistant.io +11 commits to home-assistant-polymer +2 commits to developers.home-assistant +2 commits to alerts.home-assistant.io +") +- [seanvictory (@seanvictory)](https://github.com/seanvictory "5 total commits to the Home Assistant orga: +5 commits to home-assistant.io +") +- [Seb Ruiz (@sebr)](https://github.com/sebr "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer ") - [Sebastiaan (@sebastiaanwezenberg)](https://github.com/sebastiaanwezenberg "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -9520,13 +11010,19 @@ This page contains a list of people who have contributed in one way or another t - [Sebastian (@sgso)](https://github.com/sgso "3 total commits to the Home Assistant orga: 3 commits to libcoap ") -- [Sebastian Muszynski (@syssi)](https://github.com/syssi "192 total commits to the Home Assistant orga: -127 commits to home-assistant -59 commits to home-assistant.io +- [Sebastian Kügler (@sebasje)](https://github.com/sebasje "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Sebastian Muszynski (@syssi)](https://github.com/syssi "204 total commits to the Home Assistant orga: +136 commits to home-assistant +62 commits to home-assistant.io 3 commits to netdisco 2 commits to home-assistant-polymer 1 commit to people ") +- [Sebastian Ovide (@sebastianovide)](https://github.com/sebastianovide "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Sebastian von Minckwitz (@teodoc)](https://github.com/teodoc "3 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer 1 commit to home-assistant @@ -9550,10 +11046,16 @@ This page contains a list of people who have contributed in one way or another t - [Sergei Vishnikin (@armicron)](https://github.com/armicron "33 total commits to the Home Assistant orga: 33 commits to warrant ") +- [Sergej (@Sergej-Popov)](https://github.com/Sergej-Popov "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Sergey Isachenko (@zabuldon)](https://github.com/zabuldon "11 total commits to the Home Assistant orga: 9 commits to home-assistant 2 commits to home-assistant.io ") +- [Sergey Lanzman (@sergeylanzman)](https://github.com/sergeylanzman "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Sergey Rymsha (@rymsha)](https://github.com/rymsha "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -9561,6 +11063,13 @@ This page contains a list of people who have contributed in one way or another t - [Serghei Iakovlev (@sergeyklay)](https://github.com/sergeyklay "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") +- [Sergio Conde Gómez (@skgsergio)](https://github.com/skgsergio "4 total commits to the Home Assistant orga: +3 commits to home-assistant +1 commit to home-assistant.io +") +- [Sergio Mayoral Martínez (@sermayoral)](https://github.com/sermayoral "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Sergio Oller (@zeehio)](https://github.com/zeehio "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -9578,8 +11087,9 @@ This page contains a list of people who have contributed in one way or another t - [Sev (@collse)](https://github.com/collse "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [Seweryn Zeman (@cadavre)](https://github.com/cadavre "1 total commits to the Home Assistant orga: +- [Seweryn Zeman (@cadavre)](https://github.com/cadavre "2 total commits to the Home Assistant orga: 1 commit to netdisco +1 commit to home-assistant ") - [sfam (@sfam)](https://github.com/sfam "65 total commits to the Home Assistant orga: 58 commits to home-assistant @@ -9587,6 +11097,12 @@ This page contains a list of people who have contributed in one way or another t 1 commit to netdisco 1 commit to home-assistant-polymer ") +- [sfjes (@sfjes)](https://github.com/sfjes "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Shahen Hovhannisyan (@shahen94)](https://github.com/shahen94 "1 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +") - [shanbs (@shanbs)](https://github.com/shanbs "4 total commits to the Home Assistant orga: 3 commits to home-assistant 1 commit to home-assistant.io @@ -9600,6 +11116,10 @@ This page contains a list of people who have contributed in one way or another t - [Shantanu Tushar (@shaan7)](https://github.com/shaan7 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Sharif Nassar (@mrwacky42)](https://github.com/mrwacky42 "2 total commits to the Home Assistant orga: +1 commit to hassio-addons +1 commit to home-assistant.io +") - [sharukins (@sharukins)](https://github.com/sharukins "3 total commits to the Home Assistant orga: 3 commits to hassio-build ") @@ -9609,23 +11129,24 @@ This page contains a list of people who have contributed in one way or another t - [Shawna (@cherrykoda)](https://github.com/cherrykoda "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") -- [shbatm (@shbatm)](https://github.com/shbatm "2 total commits to the Home Assistant orga: -1 commit to home-assistant-polymer -1 commit to home-assistant +- [shbatm (@shbatm)](https://github.com/shbatm "5 total commits to the Home Assistant orga: +2 commits to home-assistant-polymer +2 commits to home-assistant +1 commit to home-assistant.io ") - [Shiny (@Br3nda)](https://github.com/Br3nda "4 total commits to the Home Assistant orga: 3 commits to home-assistant.io 1 commit to developers.home-assistant ") +- [Shiwigy (@Shiwigy)](https://github.com/Shiwigy "2 total commits to the Home Assistant orga: +2 commits to hassio-addons +") - [shker (@serhtt)](https://github.com/serhtt "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [shootsoft (@shootsoft)](https://github.com/shootsoft "1 total commits to the Home Assistant orga: -1 commit to 1password-teams-open-source -") -- [shred86 (@shred86)](https://github.com/shred86 "4 total commits to the Home Assistant orga: -3 commits to home-assistant -1 commit to home-assistant.io +- [shred86 (@shred86)](https://github.com/shred86 "10 total commits to the Home Assistant orga: +7 commits to home-assistant +3 commits to home-assistant.io ") - [shuaiger (@shuaiger)](https://github.com/shuaiger "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -9633,19 +11154,31 @@ This page contains a list of people who have contributed in one way or another t - [Shubham mittal (@upgoingstar)](https://github.com/upgoingstar "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [siberx (@siberx)](https://github.com/siberx "1 total commits to the Home Assistant orga: +- [Shulyaka (@Shulyaka)](https://github.com/Shulyaka "4 total commits to the Home Assistant orga: +3 commits to home-assistant.io 1 commit to home-assistant ") -- [Sidney (@autinerd)](https://github.com/autinerd "1 total commits to the Home Assistant orga: +- [siberx (@siberx)](https://github.com/siberx "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [siebert (@siebert)](https://github.com/siebert "3 total commits to the Home Assistant orga: 3 commits to home-assistant ") +- [signaleleven (@signaleleven)](https://github.com/signaleleven "1 total commits to the Home Assistant orga: +1 commit to hassio-addons +") - [Siim Talvik (@simpss)](https://github.com/simpss "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [SiliconAvatar (@SiliconAvatar)](https://github.com/SiliconAvatar "1 total commits to the Home Assistant orga: +- [silfa718 (@silfa718)](https://github.com/silfa718 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [SiliconAvatar (@SiliconAvatar)](https://github.com/SiliconAvatar "5 total commits to the Home Assistant orga: +3 commits to home-assistant.io +1 commit to hassio-addons +1 commit to home-assistant +") +- [silsha fux (@silsha)](https://github.com/silsha "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [silversword411 (@silversword411)](https://github.com/silversword411 "1 total commits to the Home Assistant orga: @@ -9660,10 +11193,13 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Simon (@Deadolus)](https://github.com/Deadolus "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") - [Simon (@chatainsim)](https://github.com/chatainsim "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Simon Elsbrock (@else)](https://github.com/else "2 total commits to the Home Assistant orga: +- [Simon Elsbrock (@elsbrock)](https://github.com/elsbrock "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") - [Simon Hellbe (@hellbe)](https://github.com/hellbe "1 total commits to the Home Assistant orga: @@ -9671,8 +11207,8 @@ This page contains a list of people who have contributed in one way or another t ") - [Simon Holzmayer (@sholzmayer)](https://github.com/sholzmayer "6 total commits to the Home Assistant orga: 3 commits to hassos -1 commit to home-assistant-polymer 1 commit to hassio +1 commit to home-assistant-polymer 1 commit to developers.home-assistant ") - [Simon Hörrle (@CM000n)](https://github.com/CM000n "1 total commits to the Home Assistant orga: @@ -9681,8 +11217,8 @@ This page contains a list of people who have contributed in one way or another t - [Simon L\. B\. Nielsen (@simonlbn)](https://github.com/simonlbn "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Simon Nørager Sørensen (@simse)](https://github.com/simse "4 total commits to the Home Assistant orga: -3 commits to home-assistant +- [Simon Nørager Sørensen (@simse)](https://github.com/simse "5 total commits to the Home Assistant orga: +4 commits to home-assistant 1 commit to home-assistant.io ") - [Simon Szustkowski (@simonszu)](https://github.com/simonszu "7 total commits to the Home Assistant orga: @@ -9693,11 +11229,11 @@ This page contains a list of people who have contributed in one way or another t 1 commit to appdaemon 1 commit to home-assistant ") -- [Simone (@simonewebdesign)](https://github.com/simonewebdesign "1 total commits to the Home Assistant orga: +- [Simon Wüllhorst (@descilla)](https://github.com/descilla "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Simone Carletti (@weppos)](https://github.com/weppos "1 total commits to the Home Assistant orga: -1 commit to dehydrated +- [Simone (@simonewebdesign)](https://github.com/simonewebdesign "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [simonk83 (@simonk83)](https://github.com/simonk83 "11 total commits to the Home Assistant orga: 11 commits to open-zwave @@ -9705,8 +11241,8 @@ This page contains a list of people who have contributed in one way or another t - [simonmcmahon4 (@simonmcmahon4)](https://github.com/simonmcmahon4 "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [SimonThoustrup (@SimonThoustrup)](https://github.com/SimonThoustrup "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [SimonThoustrup (@SimonThoustrup)](https://github.com/SimonThoustrup "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [Sindre Hansen (@sindrehan)](https://github.com/sindrehan "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -9725,6 +11261,9 @@ This page contains a list of people who have contributed in one way or another t - [skanab (@skanab)](https://github.com/skanab "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [skycryer (@skycryer)](https://github.com/skycryer "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Slava (@vaceslav)](https://github.com/vaceslav "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") @@ -9749,12 +11288,18 @@ This page contains a list of people who have contributed in one way or another t - [snagytx (@snagytx)](https://github.com/snagytx "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [sndcr (@sndcr)](https://github.com/sndcr "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [SneakSnackSnake (@SneakSnackSnake)](https://github.com/SneakSnackSnake "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [snizzleorg (@snizzleorg)](https://github.com/snizzleorg "5 total commits to the Home Assistant orga: 5 commits to hadashboard ") -- [SNoof85 (@SNoof85)](https://github.com/SNoof85 "10 total commits to the Home Assistant orga: -5 commits to home-assistant.io -5 commits to home-assistant +- [SNoof85 (@SNoof85)](https://github.com/SNoof85 "17 total commits to the Home Assistant orga: +10 commits to home-assistant.io +7 commits to home-assistant ") - [so3n (@so3n)](https://github.com/so3n "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -9762,7 +11307,7 @@ This page contains a list of people who have contributed in one way or another t - [SofianeG (@sofianegargouri)](https://github.com/sofianegargouri "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") -- [SolomonSklash (@SolomonSklash)](https://github.com/SolomonSklash "1 total commits to the Home Assistant orga: +- [Solomon Sklash (@SolomonSklash)](https://github.com/SolomonSklash "1 total commits to the Home Assistant orga: 1 commit to data.home-assistant ") - [Sorin Sbarnea (@ssbarnea)](https://github.com/ssbarnea "1 total commits to the Home Assistant orga: @@ -9800,6 +11345,11 @@ This page contains a list of people who have contributed in one way or another t - [spinside (@spinside)](https://github.com/spinside "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [springstan (@springstan)](https://github.com/springstan "30 total commits to the Home Assistant orga: +19 commits to home-assistant-polymer +10 commits to home-assistant +1 commit to home-assistant.io +") - [SpudGunMan (@SpudGunMan)](https://github.com/SpudGunMan "14 total commits to the Home Assistant orga: 14 commits to open-zwave ") @@ -9811,14 +11361,21 @@ This page contains a list of people who have contributed in one way or another t - [squirtbrnr (@squirtbrnr)](https://github.com/squirtbrnr "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Sriram Vaidyanathan (@vaidyasr)](https://github.com/vaidyasr "7 total commits to the Home Assistant orga: -4 commits to home-assistant -3 commits to home-assistant.io +- [srg74 (@srg74)](https://github.com/srg74 "5 total commits to the Home Assistant orga: +5 commits to home-assistant.io +") +- [Sriram Vaidyanathan (@vaidyasr)](https://github.com/vaidyasr "9 total commits to the Home Assistant orga: +5 commits to home-assistant +4 commits to home-assistant.io ") - [srirams (@srirams)](https://github.com/srirams "3 total commits to the Home Assistant orga: 2 commits to home-assistant 1 commit to home-assistant.io ") +- [ssenart (@ssenart)](https://github.com/ssenart "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [St\. John Johnson (@stjohnjohnson)](https://github.com/stjohnjohnson "9 total commits to the Home Assistant orga: 5 commits to home-assistant 4 commits to home-assistant.io @@ -9833,15 +11390,18 @@ This page contains a list of people who have contributed in one way or another t - [staraxis (@staraxis)](https://github.com/staraxis "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [starkillerOG (@starkillerOG)](https://github.com/starkillerOG "22 total commits to the Home Assistant orga: -15 commits to home-assistant -4 commits to home-assistant.io +- [starkillerOG (@starkillerOG)](https://github.com/starkillerOG "25 total commits to the Home Assistant orga: +17 commits to home-assistant +5 commits to home-assistant.io 2 commits to home-assistant-polymer 1 commit to developers.home-assistant ") - [Stavros Korokithakis (@skorokithakis)](https://github.com/skorokithakis "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [stboch (@stboch)](https://github.com/stboch "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [Steaff (@steffenslavetinsky)](https://github.com/steffenslavetinsky "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -9849,12 +11409,19 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [steckenpferd (@steckenpferd)](https://github.com/steckenpferd "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [steckenpferd (@steckenpferd)](https://github.com/steckenpferd "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [stedy6 (@stedy6)](https://github.com/stedy6 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Stefan (@stefanroelofs)](https://github.com/stefanroelofs "4 total commits to the Home Assistant orga: +4 commits to hassio-addons +") +- [Stefan Agner (@agners)](https://github.com/agners "2 total commits to the Home Assistant orga: +1 commit to hassio-addons +1 commit to hassio-installer +") - [Stefan Burke (@stefnb)](https://github.com/stefnb "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -9865,9 +11432,6 @@ This page contains a list of people who have contributed in one way or another t 8 commits to home-assistant 4 commits to home-assistant.io ") -- [Stefan Tatschner (@rumpelsepp)](https://github.com/rumpelsepp "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [stefanlod (@stefanlod)](https://github.com/stefanlod "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -9891,7 +11455,10 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Stephan Grobler (@stephanfx)](https://github.com/stephanfx "1 total commits to the Home Assistant orga: +- [Stephan Beier (@stbkde)](https://github.com/stbkde "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Stephan Grobler (@stephangrobler)](https://github.com/stephangrobler "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [stephanerosi (@stephanerosi)](https://github.com/stephanerosi "11 total commits to the Home Assistant orga: @@ -9901,8 +11468,17 @@ This page contains a list of people who have contributed in one way or another t - [stephanfevrier (@stephanfevrier)](https://github.com/stephanfevrier "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Stephen Beechen (@sabeechen)](https://github.com/sabeechen "1 total commits to the Home Assistant orga: -1 commit to hassio +- [stephanmiehe (@stephanmiehe)](https://github.com/stephanmiehe "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [StephanVinkenborg (@StephanVinkenborg)](https://github.com/StephanVinkenborg "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [Stephen Benjamin (@stbenjam)](https://github.com/stbenjam "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Stephen Coogan (@coogie)](https://github.com/coogie "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Stephen Edgar (@ntwb)](https://github.com/ntwb "3 total commits to the Home Assistant orga: 1 commit to fabric-home-assistant @@ -9926,6 +11502,10 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [StephenWetzel (@StephenWetzel)](https://github.com/StephenWetzel "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Steve (@kabongsteve)](https://github.com/kabongsteve "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -9938,6 +11518,9 @@ This page contains a list of people who have contributed in one way or another t - [Steve Edson (@SteveEdson)](https://github.com/SteveEdson "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") +- [Steve M (@shmick)](https://github.com/shmick "2 total commits to the Home Assistant orga: +2 commits to home-assistant +") - [Steve Pomeroy (@xxv)](https://github.com/xxv "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") @@ -9957,6 +11540,10 @@ This page contains a list of people who have contributed in one way or another t - [Steve9F (@Steve9F)](https://github.com/Steve9F "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [SteveDinn (@SteveDinn)](https://github.com/SteveDinn "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Steven Adams (@navstev0)](https://github.com/navstev0 "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") @@ -9968,14 +11555,24 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") -- [Steven Looman (@StevenLooman)](https://github.com/StevenLooman "64 total commits to the Home Assistant orga: -58 commits to home-assistant +- [Steven D\. Lander (@stevendlander)](https://github.com/stevendlander "3 total commits to the Home Assistant orga: +3 commits to home-assistant +") +- [Steven Looman (@StevenLooman)](https://github.com/StevenLooman "75 total commits to the Home Assistant orga: +68 commits to home-assistant +4 commits to home-assistant.io 3 commits to netdisco -3 commits to home-assistant.io +") +- [Steven Rollason (@gadgetchnnel)](https://github.com/gadgetchnnel "5 total commits to the Home Assistant orga: +3 commits to home-assistant +2 commits to home-assistant.io ") - [Steven Webb (@cy1701)](https://github.com/cy1701 "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [stevenp (@stevenp)](https://github.com/stevenp "3 total commits to the Home Assistant orga: +3 commits to Iconic +") - [Stijn Tintel (@stintel)](https://github.com/stintel "3 total commits to the Home Assistant orga: 2 commits to open-zwave 1 commit to home-assistant @@ -10032,13 +11629,26 @@ This page contains a list of people who have contributed in one way or another t - [sustah (@sustah)](https://github.com/sustah "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [svedese (@svedese)](https://github.com/svedese "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [sveip (@sveip)](https://github.com/sveip "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") +- [Sven (@svendroid)](https://github.com/svendroid "4 total commits to the Home Assistant orga: +4 commits to home-assistant-polymer +") - [Sven\-Hendrik Haase (@svenstaro)](https://github.com/svenstaro "4 total commits to the Home Assistant orga: 3 commits to home-assistant.io 1 commit to home-assistant ") +- [Swamp\-Ig (@Swamp-Ig)](https://github.com/Swamp-Ig "53 total commits to the Home Assistant orga: +39 commits to home-assistant +10 commits to home-assistant.io +2 commits to home-assistant-polymer +1 commit to people +1 commit to developers.home-assistant +") - [swanwila (@swanwila)](https://github.com/swanwila "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") @@ -10051,8 +11661,12 @@ This page contains a list of people who have contributed in one way or another t - [sylvaincherrier (@sylvaincherrier)](https://github.com/sylvaincherrier "3 total commits to the Home Assistant orga: 3 commits to python-openzwave ") -- [System Tester (@systemtester)](https://github.com/systemtester "3 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [Sylvia van Os (@TheLastProject)](https://github.com/TheLastProject "4 total commits to the Home Assistant orga: +3 commits to home-assistant +1 commit to home-assistant.io +") +- [System Tester (@systemtester)](https://github.com/systemtester "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io ") - [Sytone (@sytone)](https://github.com/sytone "12 total commits to the Home Assistant orga: 6 commits to home-assistant.io @@ -10067,11 +11681,20 @@ This page contains a list of people who have contributed in one way or another t - [Sébastien GALLET (@bibi21000)](https://github.com/bibi21000 "1024 total commits to the Home Assistant orga: 1024 commits to python-openzwave ") +- [Sébastien RAMAGE (@doudz)](https://github.com/doudz "19 total commits to the Home Assistant orga: +15 commits to home-assistant +4 commits to home-assistant.io +") +- [Sören (@pattyland)](https://github.com/pattyland "16 total commits to the Home Assistant orga: +13 commits to home-assistant.io +2 commits to home-assistant +1 commit to example-custom-config +") - [Sören Beye (@Hypfer)](https://github.com/Hypfer "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Sören Oldag (@soldag)](https://github.com/soldag "18 total commits to the Home Assistant orga: -10 commits to home-assistant +- [Sören Oldag (@soldag)](https://github.com/soldag "19 total commits to the Home Assistant orga: +11 commits to home-assistant 8 commits to home-assistant.io ") - [Søren Dam Pedersen (@Pengman)](https://github.com/Pengman "1 total commits to the Home Assistant orga: @@ -10109,6 +11732,9 @@ This page contains a list of people who have contributed in one way or another t 9 commits to home-assistant.io 1 commit to home-assistant ") +- [Taylor Silva (@taylorsilva)](https://github.com/taylorsilva "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Taylor Vierrether (@viertaxa)](https://github.com/viertaxa "5 total commits to the Home Assistant orga: 3 commits to open-zwave 2 commits to home-assistant.io @@ -10117,6 +11743,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [tbrock47 (@tbrock47)](https://github.com/tbrock47 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [tchentchen (@tchentchen)](https://github.com/tchentchen "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -10150,9 +11779,9 @@ This page contains a list of people who have contributed in one way or another t - [Teemu Patja (@tpatja)](https://github.com/tpatja "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Teemu R\. (@rytilahti)](https://github.com/rytilahti "78 total commits to the Home Assistant orga: -56 commits to home-assistant -14 commits to home-assistant.io +- [Teemu R\. (@rytilahti)](https://github.com/rytilahti "94 total commits to the Home Assistant orga: +71 commits to home-assistant +15 commits to home-assistant.io 5 commits to netdisco 2 commits to home-assistant-cli 1 commit to people @@ -10166,7 +11795,15 @@ This page contains a list of people who have contributed in one way or another t - [Teis Angel Clausen (@AngelFreak)](https://github.com/AngelFreak "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [teliov (@teliov)](https://github.com/teliov "1 total commits to the Home Assistant orga: +- [Tejpal Sahota (@GrandNewbien)](https://github.com/GrandNewbien "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [teliov (@teliov)](https://github.com/teliov "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") +- [temeteke (@temeteke)](https://github.com/temeteke "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [Tentoe (@Tentoe)](https://github.com/Tentoe "1 total commits to the Home Assistant orga: @@ -10179,9 +11816,19 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") +- [Tertius (@Tertiush)](https://github.com/Tertiush "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [terual (@terual)](https://github.com/terual "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Test GITHub account (@YogoGit)](https://github.com/YogoGit "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [tetienne (@tetienne)](https://github.com/tetienne "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") - [tfitts (@tfitts)](https://github.com/tfitts "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -10194,15 +11841,37 @@ This page contains a list of people who have contributed in one way or another t - [tguerena (@tguerena)](https://github.com/tguerena "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [thaohtp (@thaohtp)](https://github.com/thaohtp "4 total commits to the Home Assistant orga: +4 commits to home-assistant +") - [Tharsan Bhuvanendran (@thizzle)](https://github.com/thizzle "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") +- [ThaSiouL (@ThaSiouL)](https://github.com/ThaSiouL "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [ThaStealth (@ThaStealth)](https://github.com/ThaStealth "6 total commits to the Home Assistant orga: +3 commits to home-assistant +3 commits to home-assistant.io +") +- [THATDONFC (@THATDONFC)](https://github.com/THATDONFC "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [The Gitter Badger (@gitter-badger)](https://github.com/gitter-badger "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [The Louie (@the-louie)](https://github.com/the-louie "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [The PapaMaan (@thepapamaan)](https://github.com/thepapamaan "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [The Witty Coder (@wittycoder)](https://github.com/wittycoder "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [thealexproctor (@thealexproctor)](https://github.com/thealexproctor "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Theb\-1 (@Theb-1)](https://github.com/Theb-1 "5 total commits to the Home Assistant orga: 5 commits to home-assistant ") @@ -10210,10 +11879,6 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [thecynic (@thecynic)](https://github.com/thecynic "5 total commits to the Home Assistant orga: -4 commits to home-assistant -1 commit to home-assistant.io -") - [TheFrogDaddy (@TheFrogDaddy)](https://github.com/TheFrogDaddy "1 total commits to the Home Assistant orga: 1 commit to appdaemon ") @@ -10255,11 +11920,14 @@ This page contains a list of people who have contributed in one way or another t 13 commits to home-assistant.io 1 commit to home-assistant-polymer ") -- [Thibault Maekelbergh (@thibmaek)](https://github.com/thibmaek "14 total commits to the Home Assistant orga: +- [Thibault Maekelbergh (@thibmaek)](https://github.com/thibmaek "15 total commits to the Home Assistant orga: 7 commits to home-assistant -6 commits to home-assistant.io +7 commits to home-assistant.io 1 commit to hassio-addons ") +- [Thierry Bellocchi (@tbeloc)](https://github.com/tbeloc "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [thinkelastic (@thinkelastic)](https://github.com/thinkelastic "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") @@ -10269,10 +11937,14 @@ This page contains a list of people who have contributed in one way or another t - [Thom Stricklin (@thomshouse)](https://github.com/thomshouse "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Thom Troy (@ttroy50)](https://github.com/ttroy50 "18 total commits to the Home Assistant orga: -10 commits to home-assistant +- [Thom Troy (@ttroy50)](https://github.com/ttroy50 "19 total commits to the Home Assistant orga: +11 commits to home-assistant 8 commits to home-assistant.io ") +- [Thomas (@HexF)](https://github.com/HexF "2 total commits to the Home Assistant orga: +1 commit to home-assistant.io +1 commit to home-assistant +") - [Thomas (@a-tom-s)](https://github.com/a-tom-s "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -10282,15 +11954,19 @@ This page contains a list of people who have contributed in one way or another t - [Thomas Aunvik (@ThomasAunvik)](https://github.com/ThomasAunvik "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Thomas Delaet (@thomasdelaet)](https://github.com/thomasdelaet "6 total commits to the Home Assistant orga: +- [Thomas Delaet (@thomasdelaet)](https://github.com/thomasdelaet "7 total commits to the Home Assistant orga: 4 commits to home-assistant 2 commits to home-assistant.io +1 commit to appdaemon ") - [Thomas Friedel (@tfriedel)](https://github.com/tfriedel "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Thomas Hervé (@therve)](https://github.com/therve "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Thomas Germain (@thomasgermain)](https://github.com/thomasgermain "3 total commits to the Home Assistant orga: +3 commits to home-assistant +") +- [Thomas Hervé (@therve)](https://github.com/therve "3 total commits to the Home Assistant orga: +3 commits to home-assistant ") - [Thomas Klingbeil (@thomasklingbeil)](https://github.com/thomasklingbeil "1 total commits to the Home Assistant orga: 1 commit to home-assistant @@ -10298,10 +11974,14 @@ This page contains a list of people who have contributed in one way or another t - [Thomas Krüger (@thomaskr)](https://github.com/thomaskr "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Thomas Lovén (@thomasloven)](https://github.com/thomasloven "58 total commits to the Home Assistant orga: -35 commits to home-assistant-polymer -15 commits to home-assistant.io -7 commits to home-assistant +- [Thomas Le Gentil (@kifeo)](https://github.com/kifeo "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Thomas Lovén (@thomasloven)](https://github.com/thomasloven "92 total commits to the Home Assistant orga: +54 commits to home-assistant-polymer +24 commits to home-assistant.io +13 commits to home-assistant 1 commit to people ") - [Thomas Passer Jensen (@tomatpasser)](https://github.com/tomatpasser "2 total commits to the Home Assistant orga: @@ -10350,9 +12030,9 @@ This page contains a list of people who have contributed in one way or another t - [Thorsten Alteholz (@alteholz)](https://github.com/alteholz "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [thoscut (@thoscut)](https://github.com/thoscut "3 total commits to the Home Assistant orga: -2 commits to home-assistant.io -1 commit to home-assistant +- [thoscut (@thoscut)](https://github.com/thoscut "5 total commits to the Home Assistant orga: +3 commits to home-assistant.io +2 commits to home-assistant ") - [thrawnarn (@thrawnarn)](https://github.com/thrawnarn "10 total commits to the Home Assistant orga: 5 commits to home-assistant @@ -10368,9 +12048,20 @@ This page contains a list of people who have contributed in one way or another t - [thunfischbrot (@thunfischbrot)](https://github.com/thunfischbrot "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [tiagofreire\-pt (@tiagofreire-pt)](https://github.com/tiagofreire-pt "7 total commits to the Home Assistant orga: +7 commits to home-assistant.io +") +- [Ties de Kock (@ties)](https://github.com/ties "5 total commits to the Home Assistant orga: +3 commits to home-assistant +2 commits to home-assistant.io +") - [tigattack (@tigattack)](https://github.com/tigattack "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Tiit Rätsep (@ratsept)](https://github.com/ratsept "4 total commits to the Home Assistant orga: +3 commits to home-assistant +1 commit to home-assistant.io +") - [tijuca (@tijuca)](https://github.com/tijuca "106 total commits to the Home Assistant orga: 106 commits to libcoap ") @@ -10387,12 +12078,18 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant.io 1 commit to home-assistant ") +- [Tim (@tmyoungjr)](https://github.com/tmyoungjr "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Tim Bailey (@TimBailey-pnk)](https://github.com/TimBailey-pnk "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [Tim Clephas (@Timple)](https://github.com/Timple "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Tim Gates (@timgates42)](https://github.com/timgates42 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Tim Gerla (@tgerla)](https://github.com/tgerla "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -10405,17 +12102,21 @@ This page contains a list of people who have contributed in one way or another t - [Tim Hordern (@mence)](https://github.com/mence "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Tim Lyakhovetskiy (@tlyakhov)](https://github.com/tlyakhov "3 total commits to the Home Assistant orga: -2 commits to home-assistant +- [Tim Lyakhovetskiy (@tlyakhov)](https://github.com/tlyakhov "4 total commits to the Home Assistant orga: +3 commits to home-assistant 1 commit to home-assistant.io ") -- [Tim McCormick (@timmccor)](https://github.com/timmccor "2 total commits to the Home Assistant orga: +- [Tim McCormick (@timmccor)](https://github.com/timmccor "6 total commits to the Home Assistant orga: +4 commits to home-assistant 2 commits to open-zwave ") - [Tim Soderstrom (@m00dawg)](https://github.com/m00dawg "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Tim Stanley (@timstanley1985)](https://github.com/timstanley1985 "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io +") - [Tim van Cann (@timvancann)](https://github.com/timvancann "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -10426,16 +12127,21 @@ This page contains a list of people who have contributed in one way or another t - [Tim Wilde (@twilde)](https://github.com/twilde "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [timfosse (@timfosse)](https://github.com/timfosse "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [timkoers (@timkoers)](https://github.com/timkoers "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") - [Timm Schäuble (@tymm)](https://github.com/tymm "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Timmo (@timmo001)](https://github.com/timmo001 "17 total commits to the Home Assistant orga: -6 commits to home-assistant-polymer -5 commits to home-assistant.io +- [Timmo (@timmo001)](https://github.com/timmo001 "31 total commits to the Home Assistant orga: +14 commits to home-assistant-polymer +8 commits to home-assistant.io 5 commits to home-assistant +2 commits to home-assistant-android +1 commit to hassio 1 commit to data.home-assistant ") - [Timo (@timotk)](https://github.com/timotk "1 total commits to the Home Assistant orga: @@ -10448,9 +12154,6 @@ This page contains a list of people who have contributed in one way or another t - [Timothy Macdonald (@tsmacdonald)](https://github.com/tsmacdonald "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [timstanley1985 (@timstanley1985)](https://github.com/timstanley1985 "4 total commits to the Home Assistant orga: -4 commits to home-assistant.io -") - [TimV (@vroomfonde1)](https://github.com/vroomfonde1 "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -10467,8 +12170,10 @@ This page contains a list of people who have contributed in one way or another t - [tktino (@tktino)](https://github.com/tktino "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [tleegaard (@tleegaard)](https://github.com/tleegaard "1 total commits to the Home Assistant orga: +- [tleegaard (@tleegaard)](https://github.com/tleegaard "4 total commits to the Home Assistant orga: +2 commits to home-assistant 1 commit to home-assistant-polymer +1 commit to home-assistant.io ") - [tlpeter (@tlpeter)](https://github.com/tlpeter "2 total commits to the Home Assistant orga: 2 commits to open-zwave @@ -10489,6 +12194,10 @@ This page contains a list of people who have contributed in one way or another t - [Tobias Bieniek (@Turbo87)](https://github.com/Turbo87 "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") +- [Tobias Efinger (@tefinger)](https://github.com/tefinger "4 total commits to the Home Assistant orga: +2 commits to home-assistant.io +2 commits to home-assistant +") - [Tobias Hoff (@ToSa27)](https://github.com/ToSa27 "5 total commits to the Home Assistant orga: 2 commits to open-zwave 1 commit to hassio-addons @@ -10501,12 +12210,17 @@ This page contains a list of people who have contributed in one way or another t - [Tobias Nordahl Kristensen (@exetico)](https://github.com/exetico "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Tobias Sauerwein (@cgtobi)](https://github.com/cgtobi "75 total commits to the Home Assistant orga: -35 commits to home-assistant -30 commits to home-assistant.io -8 commits to people +- [Tobias Perschon (@tofuSCHNITZEL)](https://github.com/tofuSCHNITZEL "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") +- [Tobias Sauerwein (@cgtobi)](https://github.com/cgtobi "156 total commits to the Home Assistant orga: +98 commits to home-assistant +42 commits to home-assistant.io +9 commits to people +4 commits to developers.home-assistant +2 commits to data.home-assistant 1 commit to appdaemon -1 commit to data.home-assistant ") - [Tobie Booth (@tobiebooth)](https://github.com/tobiebooth "6 total commits to the Home Assistant orga: 4 commits to home-assistant @@ -10532,12 +12246,20 @@ This page contains a list of people who have contributed in one way or another t - [toddeye (@toddeye)](https://github.com/toddeye "20 total commits to the Home Assistant orga: 20 commits to home-assistant ") +- [Tom (@CoMPaTech)](https://github.com/CoMPaTech "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") - [Tom Barbette (@tbarbette)](https://github.com/tbarbette "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Tom Behets (@betz)](https://github.com/betz "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Tom Brien (@TomBrien)](https://github.com/TomBrien "139 total commits to the Home Assistant orga: +137 commits to companion.home-assistant +2 commits to home-assistant.io +") - [Tom Chapin (@tomchapin)](https://github.com/tomchapin "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -10550,12 +12272,12 @@ This page contains a list of people who have contributed in one way or another t 6 commits to home-assistant-polymer 2 commits to netdisco ") -- [Tom Harris (@teharris1)](https://github.com/teharris1 "31 total commits to the Home Assistant orga: -21 commits to home-assistant -10 commits to home-assistant.io +- [Tom Harris (@teharris1)](https://github.com/teharris1 "35 total commits to the Home Assistant orga: +24 commits to home-assistant +11 commits to home-assistant.io ") -- [Tom Hoover (@tomhoover)](https://github.com/tomhoover "3 total commits to the Home Assistant orga: -3 commits to home-assistant.io +- [Tom Hoover (@tomhoover)](https://github.com/tomhoover "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io ") - [Tom Howe (@tomh05)](https://github.com/tomh05 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -10569,10 +12291,10 @@ This page contains a list of people who have contributed in one way or another t - [Tom L (@Qu3uk)](https://github.com/Qu3uk "6 total commits to the Home Assistant orga: 6 commits to home-assistant.io ") -- [Tom Matheussen (@Tommatheussen)](https://github.com/Tommatheussen "15 total commits to the Home Assistant orga: +- [Tom Matheussen (@Tommatheussen)](https://github.com/Tommatheussen "17 total commits to the Home Assistant orga: 6 commits to home-assistant +6 commits to home-assistant.io 4 commits to home-assistant-polymer -4 commits to home-assistant.io 1 commit to developers.home-assistant ") - [Tom Monck JR (@tmonck)](https://github.com/tmonck "1 total commits to the Home Assistant orga: @@ -10581,8 +12303,16 @@ This page contains a list of people who have contributed in one way or another t - [Tom Most (@twm)](https://github.com/twm "9 total commits to the Home Assistant orga: 9 commits to feedparser ") -- [Tom Raithel (@tomraithel)](https://github.com/tomraithel "2 total commits to the Home Assistant orga: -2 commits to home-assistant-polymer +- [Tom Raithel (@tomraithel)](https://github.com/tomraithel "5 total commits to the Home Assistant orga: +4 commits to home-assistant-polymer +1 commit to home-assistant.io +") +- [Tom Robinson (@tlrobinson)](https://github.com/tlrobinson "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") +- [Tom Schneider (@vigonotion)](https://github.com/vigonotion "2 total commits to the Home Assistant orga: +1 commit to custom-components-wheels +1 commit to home-assistant ") - [Tom Usher (@tomusher)](https://github.com/tomusher "1 total commits to the Home Assistant orga: 1 commit to netdisco @@ -10594,18 +12324,39 @@ This page contains a list of people who have contributed in one way or another t 7 commits to home-assistant 1 commit to home-assistant.io ") +- [Tomas Kislan (@tkislan)](https://github.com/tkislan "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") +- [Tomasz (@Misiu)](https://github.com/Misiu "6 total commits to the Home Assistant orga: +5 commits to home-assistant +1 commit to home-assistant.io +") - [Tomasz Mlynski (@dvz)](https://github.com/dvz "1 total commits to the Home Assistant orga: 1 commit to 1password-teams-open-source ") - [tomaszduda23 (@tomaszduda23)](https://github.com/tomaszduda23 "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Tomek985 (@Tomek985)](https://github.com/Tomek985 "1 total commits to the Home Assistant orga: +- [tombbo (@tombbo)](https://github.com/tombbo "4 total commits to the Home Assistant orga: +3 commits to home-assistant 1 commit to home-assistant.io ") -- [Tomi Blinnikka (@docBliny)](https://github.com/docBliny "1 total commits to the Home Assistant orga: +- [Tomek985 (@Tomek985)](https://github.com/Tomek985 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Tomer Figenblat (@TomerFi)](https://github.com/TomerFi "6 total commits to the Home Assistant orga: +3 commits to home-assistant +2 commits to home-assistant.io +1 commit to developers.home-assistant +") +- [Tomi Blinnikka (@docBliny)](https://github.com/docBliny "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [Tomi Lehto (@tomilehto)](https://github.com/tomilehto "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") - [Tomi Salmi (@tomppasalmi)](https://github.com/tomppasalmi "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") @@ -10613,8 +12364,12 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant 1 commit to home-assistant.io ") -- [tomlut (@tomlut)](https://github.com/tomlut "4 total commits to the Home Assistant orga: -4 commits to home-assistant.io +- [tomlut (@tomlut)](https://github.com/tomlut "14 total commits to the Home Assistant orga: +14 commits to home-assistant.io +") +- [Tommaso Marchionni (@tommasomarchionni)](https://github.com/tommasomarchionni "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io ") - [Tommi Pääkkö (@Glenf)](https://github.com/Glenf "1 total commits to the Home Assistant orga: 1 commit to developers.home-assistant @@ -10630,12 +12385,26 @@ This page contains a list of people who have contributed in one way or another t 5 commits to home-assistant.io 4 commits to home-assistant-polymer ") +- [Tommy Larsson (@larssont)](https://github.com/larssont "3 total commits to the Home Assistant orga: +2 commits to home-assistant +1 commit to home-assistant.io +") +- [Tommy Long (@tommyjlong)](https://github.com/tommyjlong "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [tonire1702 (@tonire1702)](https://github.com/tonire1702 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [Tontze (@Tontze)](https://github.com/Tontze "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") +- [Tony Apuzzo (@TonyApuzzo)](https://github.com/TonyApuzzo "2 total commits to the Home Assistant orga: +2 commits to hassos +") +- [Tony Brobston (@TonyBrobston)](https://github.com/TonyBrobston "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [tony chang (@idealisms)](https://github.com/idealisms "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -10652,15 +12421,17 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [TonyApuzzo (@TonyApuzzo)](https://github.com/TonyApuzzo "1 total commits to the Home Assistant orga: -1 commit to hassos -") -- [Toon Willems (@nudded)](https://github.com/nudded "2 total commits to the Home Assistant orga: -2 commits to home-assistant +- [Toon Willems (@nudded)](https://github.com/nudded "4 total commits to the Home Assistant orga: +4 commits to home-assistant ") - [TopdRob (@TopdRob)](https://github.com/TopdRob "7 total commits to the Home Assistant orga: 7 commits to home-assistant ") +- [Tor Arne Vestbø (@torarnv)](https://github.com/torarnv "3 total commits to the Home Assistant orga: +1 commit to home-assistant-polymer +1 commit to developers.home-assistant +1 commit to home-assistant +") - [Tor Magnus (@tcastberg)](https://github.com/tcastberg "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -10716,8 +12487,8 @@ This page contains a list of people who have contributed in one way or another t - [Trey Sheldon (@tsheldon)](https://github.com/tsheldon "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [trilleplay (@trilleplay)](https://github.com/trilleplay "1 total commits to the Home Assistant orga: -1 commit to 1password-teams-open-source +- [trilu2000 (@trilu2000)](https://github.com/trilu2000 "1 total commits to the Home Assistant orga: +1 commit to home-assistant ") - [tringler (@tringler)](https://github.com/tringler "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -10727,6 +12498,12 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant 1 commit to home-assistant.io ") +- [tristanatfarkas (@trilleplay)](https://github.com/trilleplay "1 total commits to the Home Assistant orga: +1 commit to 1password-teams-open-source +") +- [Troels Agergaard Jacobsen (@tkjacobsen)](https://github.com/tkjacobsen "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [trollkarlen (@trollkarlen)](https://github.com/trollkarlen "5 total commits to the Home Assistant orga: 5 commits to home-assistant ") @@ -10736,28 +12513,53 @@ This page contains a list of people who have contributed in one way or another t - [Trung Lê (@joneslee85)](https://github.com/joneslee85 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Tsvi Mostovicz (@tsvi)](https://github.com/tsvi "24 total commits to the Home Assistant orga: -13 commits to home-assistant -11 commits to home-assistant.io -") -- [tubalainen (@tubalainen)](https://github.com/tubalainen "2 total commits to the Home Assistant orga: +- [Trygve Vea (@kvisle)](https://github.com/kvisle "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Tsvi Mostovicz (@tsvi)](https://github.com/tsvi "43 total commits to the Home Assistant orga: +28 commits to home-assistant +14 commits to home-assistant.io +1 commit to developers.home-assistant +") +- [tubalainen (@tubalainen)](https://github.com/tubalainen "4 total commits to the Home Assistant orga: +4 commits to home-assistant.io +") +- [tube0013 (@tube0013)](https://github.com/tube0013 "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io +") - [tumik (@tumik)](https://github.com/tumik "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") -- [Tuncay (@Tuncay-Ayhan)](https://github.com/Tuncay-Ayhan "1 total commits to the Home Assistant orga: +- [Tuncay (@Tuncay-Ayhan)](https://github.com/Tuncay-Ayhan "3 total commits to the Home Assistant orga: +1 commit to hassbian-scripts +1 commit to hassio-addons +1 commit to home-assistant.io +") +- [Tungsteno74 (@Tungsteno74)](https://github.com/Tungsteno74 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") - [tuxuser (@tuxuser)](https://github.com/tuxuser "1 total commits to the Home Assistant orga: 1 commit to netdisco ") +- [Twan Coenraad (@tcoenraad)](https://github.com/tcoenraad "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [twendt (@twendt)](https://github.com/twendt "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Twit123 (@Twit123)](https://github.com/Twit123 "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [txNgineer (@txNgineer)](https://github.com/txNgineer "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [TychoWerner (@TychoWerner)](https://github.com/TychoWerner "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [tyjtyj (@tyjtyj)](https://github.com/tyjtyj "3 total commits to the Home Assistant orga: +3 commits to home-assistant +") - [Tyler (@TFenby)](https://github.com/TFenby "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -10768,10 +12570,13 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") -- [Tyler Page (@iamtpage)](https://github.com/iamtpage "8 total commits to the Home Assistant orga: -5 commits to home-assistant +- [Tyler Page (@iamtpage)](https://github.com/iamtpage "13 total commits to the Home Assistant orga: +10 commits to home-assistant 3 commits to home-assistant.io ") +- [Tyler Shaw\! (@tylershaw)](https://github.com/tylershaw "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Tyler Straub (@tylerstraub)](https://github.com/tylerstraub "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") @@ -10790,11 +12595,15 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant-polymer ") +- [UgaitzEtxebarria (@UgaitzEtxebarria)](https://github.com/UgaitzEtxebarria "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Ugo Viti (@ugoviti)](https://github.com/ugoviti "24 total commits to the Home Assistant orga: 24 commits to open-zwave ") -- [UiGuy (@jjanderson)](https://github.com/jjanderson "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [UiGuy (@jjanderson)](https://github.com/jjanderson "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io ") - [Uli (@uehler)](https://github.com/uehler "5 total commits to the Home Assistant orga: 5 commits to home-assistant.io @@ -10808,6 +12617,13 @@ This page contains a list of people who have contributed in one way or another t - [Umer Salman (@umer936)](https://github.com/umer936 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Underknowledge (@Underknowledge)](https://github.com/Underknowledge "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [unixko (@unixko)](https://github.com/unixko "3 total commits to the Home Assistant orga: +2 commits to home-assistant.io +1 commit to home-assistant +") - [UnrealKazu (@UnrealKazu)](https://github.com/UnrealKazu "3 total commits to the Home Assistant orga: 2 commits to home-assistant.io 1 commit to home-assistant-polymer @@ -10830,9 +12646,6 @@ This page contains a list of people who have contributed in one way or another t 8 commits to home-assistant 3 commits to home-assistant.io ") -- [Valentin Hilbig (@hilbix)](https://github.com/hilbix "1 total commits to the Home Assistant orga: -1 commit to dehydrated -") - [Valentin Petkov (@skyval)](https://github.com/skyval "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -10861,12 +12674,12 @@ This page contains a list of people who have contributed in one way or another t - [Vaz Allen (@vaz)](https://github.com/vaz "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [VdkaShaker (@VdkaShaker)](https://github.com/VdkaShaker "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [VDRainer (@VDRainer)](https://github.com/VDRainer "8 total commits to the Home Assistant orga: +5 commits to home-assistant.io +3 commits to home-assistant ") -- [VDRainer (@VDRainer)](https://github.com/VDRainer "4 total commits to the Home Assistant orga: -3 commits to home-assistant.io -1 commit to home-assistant +- [Veldkornet (@Veldkornet)](https://github.com/Veldkornet "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Velik123 (@Velik123)](https://github.com/Velik123 "1 total commits to the Home Assistant orga: 1 commit to pyharmony @@ -10877,17 +12690,17 @@ This page contains a list of people who have contributed in one way or another t - [vexofp (@vexofp)](https://github.com/vexofp "4 total commits to the Home Assistant orga: 4 commits to open-zwave ") -- [Victor Cerutti (@victorcerutti)](https://github.com/victorcerutti "10 total commits to the Home Assistant orga: +- [Victor Cerutti (@victorcerutti)](https://github.com/victorcerutti "11 total commits to the Home Assistant orga: 5 commits to home-assistant.io 3 commits to home-assistant-polymer -2 commits to home-assistant +3 commits to home-assistant ") - [Victor Jalencas (@victor)](https://github.com/victor "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Victor Vostrikov (@gorynychzmey)](https://github.com/gorynychzmey "8 total commits to the Home Assistant orga: -4 commits to home-assistant -3 commits to home-assistant.io +- [Victor Vostrikov (@gorynychzmey)](https://github.com/gorynychzmey "10 total commits to the Home Assistant orga: +5 commits to home-assistant +4 commits to home-assistant.io 1 commit to home-assistant-polymer ") - [Vidar Tyldum (@tyldum)](https://github.com/tyldum "1 total commits to the Home Assistant orga: @@ -10907,20 +12720,27 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant 1 commit to home-assistant.io ") -- [Ville Skyttä (@scop)](https://github.com/scop "173 total commits to the Home Assistant orga: -119 commits to home-assistant -21 commits to home-assistant.io +- [Viktor45 (@Viktor45)](https://github.com/Viktor45 "2 total commits to the Home Assistant orga: +2 commits to home-assistant.io +") +- [Ville Skyttä (@scop)](https://github.com/scop "282 total commits to the Home Assistant orga: +213 commits to home-assistant +30 commits to home-assistant.io 13 commits to netdisco -6 commits to hassio-addons +7 commits to hassio-addons +5 commits to home-assistant-polymer 4 commits to developers.home-assistant 3 commits to hassio-cli -2 commits to home-assistant-polymer -2 commits to hassio-build 2 commits to hassio +2 commits to hassio-build +1 commit to architecture 1 commit to people +1 commit to ci-azure ") -- [Villhellm (@Villhellm)](https://github.com/Villhellm "1 total commits to the Home Assistant orga: -1 commit to home-assistant.io +- [Villhellm (@Villhellm)](https://github.com/Villhellm "12 total commits to the Home Assistant orga: +9 commits to home-assistant.io +2 commits to home-assistant +1 commit to developers.home-assistant ") - [Vincent Etter (@Wookai)](https://github.com/Wookai "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -10931,6 +12751,9 @@ This page contains a list of people who have contributed in one way or another t - [Vincent KHERBACHE (@vincent-k)](https://github.com/vincent-k "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") +- [Vincent Masselis (@VincentMasselis)](https://github.com/VincentMasselis "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Vincent Miceli (@vincemic)](https://github.com/vincemic "3 total commits to the Home Assistant orga: 3 commits to open-zwave ") @@ -10957,6 +12780,9 @@ This page contains a list of people who have contributed in one way or another t - [viswa\-swami (@viswa-swami)](https://github.com/viswa-swami "9 total commits to the Home Assistant orga: 9 commits to home-assistant ") +- [Vitaly Bogdanov (@vsbogd)](https://github.com/vsbogd "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Vittorio Monaco (@vittoriom)](https://github.com/vittoriom "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -10977,8 +12803,11 @@ This page contains a list of people who have contributed in one way or another t - [vllungu (@vllungu)](https://github.com/vllungu "3 total commits to the Home Assistant orga: 3 commits to libcoap ") -- [vMeph (@vMeph)](https://github.com/vMeph "6 total commits to the Home Assistant orga: -6 commits to home-assistant.io +- [vMeph (@vMeph)](https://github.com/vMeph "7 total commits to the Home Assistant orga: +7 commits to home-assistant.io +") +- [vocweb (@vocweb)](https://github.com/vocweb "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io ") - [Volker Thiel (@riker09)](https://github.com/riker09 "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -11003,6 +12832,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [warcanoid (@warcanoid)](https://github.com/warcanoid "3 total commits to the Home Assistant orga: +3 commits to home-assistant.io +") - [Warren Konkel (@wkonkel)](https://github.com/wkonkel "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -11033,6 +12865,12 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [wietseschmitt (@wietseschmitt)](https://github.com/wietseschmitt "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") +- [wiggitamoo (@wiggitamoo)](https://github.com/wiggitamoo "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Wilco Land (@Wilco89)](https://github.com/Wilco89 "3 total commits to the Home Assistant orga: 3 commits to home-assistant.io ") @@ -11045,6 +12883,9 @@ This page contains a list of people who have contributed in one way or another t - [Will Boyce (@wrboyce)](https://github.com/wrboyce "2 total commits to the Home Assistant orga: 2 commits to home-assistant ") +- [Will Hargrave (@will-h)](https://github.com/will-h "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Will Heid (@bassclarinetl2)](https://github.com/bassclarinetl2 "21 total commits to the Home Assistant orga: 19 commits to home-assistant.io 1 commit to fabric-home-assistant @@ -11057,6 +12898,9 @@ This page contains a list of people who have contributed in one way or another t - [Will Marler (@wmarler)](https://github.com/wmarler "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") +- [Will Pimblett (@wjdp)](https://github.com/wjdp "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Will W (@tiktok7)](https://github.com/tiktok7 "6 total commits to the Home Assistant orga: 4 commits to home-assistant 2 commits to home-assistant.io @@ -11068,6 +12912,9 @@ This page contains a list of people who have contributed in one way or another t 4 commits to home-assistant.io 3 commits to home-assistant ") +- [willgreenberg (@willgreenberg)](https://github.com/willgreenberg "1 total commits to the Home Assistant orga: +1 commit to developers.home-assistant +") - [William Comartin (@wcomartin)](https://github.com/wcomartin "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -11076,21 +12923,26 @@ This page contains a list of people who have contributed in one way or another t 1 commit to hassio 1 commit to home-assistant.io ") -- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "141 total commits to the Home Assistant orga: -96 commits to home-assistant +- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "152 total commits to the Home Assistant orga: +107 commits to home-assistant 40 commits to home-assistant.io 2 commits to netdisco 2 commits to developers.home-assistant 1 commit to home-assistant-polymer ") +- [William Sutton (@zombielinux)](https://github.com/zombielinux "4 total commits to the Home Assistant orga: +3 commits to home-assistant +1 commit to home-assistant.io +") - [williamlehman (@williamlehman)](https://github.com/williamlehman "1 total commits to the Home Assistant orga: 1 commit to home-assistant-polymer ") -- [Wim Haanstra (@depl0y)](https://github.com/depl0y "6 total commits to the Home Assistant orga: -3 commits to home-assistant -3 commits to home-assistant.io +- [Wim Haanstra (@depl0y)](https://github.com/depl0y "8 total commits to the Home Assistant orga: +4 commits to home-assistant +4 commits to home-assistant.io ") -- [wmn79 (@wmn79)](https://github.com/wmn79 "1 total commits to the Home Assistant orga: +- [wmn79 (@wmn79)](https://github.com/wmn79 "6 total commits to the Home Assistant orga: +5 commits to home-assistant.io 1 commit to open-zwave ") - [WofWca (@WofWca)](https://github.com/WofWca "11 total commits to the Home Assistant orga: @@ -11105,6 +12957,9 @@ This page contains a list of people who have contributed in one way or another t 2 commits to home-assistant.io 1 commit to home-assistant ") +- [Wojciech Mamak (@atomic7777)](https://github.com/atomic7777 "1 total commits to the Home Assistant orga: +1 commit to home-assistant +") - [Wojtek (@wiuwiu)](https://github.com/wiuwiu "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -11119,8 +12974,8 @@ This page contains a list of people who have contributed in one way or another t - [Wolfgang Beer (@wolfgangB33r)](https://github.com/wolfgangB33r "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [Wolfgang Malgadey (@wmalgadey)](https://github.com/wmalgadey "7 total commits to the Home Assistant orga: -6 commits to home-assistant +- [Wolfgang Malgadey (@wmalgadey)](https://github.com/wmalgadey "8 total commits to the Home Assistant orga: +7 commits to home-assistant 1 commit to home-assistant.io ") - [Wopalecki (@Wopalecki)](https://github.com/Wopalecki "1 total commits to the Home Assistant orga: @@ -11153,10 +13008,14 @@ This page contains a list of people who have contributed in one way or another t - [xdite (@xdite)](https://github.com/xdite "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [XECDesign (@XECDesign)](https://github.com/XECDesign "175 total commits to the Home Assistant orga: -175 commits to pi-gen +- [XECDesign (@XECDesign)](https://github.com/XECDesign "179 total commits to the Home Assistant orga: +179 commits to pi-gen +") +- [xelprep (@xelprep)](https://github.com/xelprep "6 total commits to the Home Assistant orga: +6 commits to home-assistant.io ") -- [xelprep (@xelprep)](https://github.com/xelprep "2 total commits to the Home Assistant orga: +- [xifle (@xifle)](https://github.com/xifle "9 total commits to the Home Assistant orga: +7 commits to home-assistant 2 commits to home-assistant.io ") - [Xinzhao Xu (@iawia002)](https://github.com/iawia002 "1 total commits to the Home Assistant orga: @@ -11176,13 +13035,18 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") -- [Xus Badia (@XusBadia)](https://github.com/XusBadia "2 total commits to the Home Assistant orga: +- [Xus Badia (@XusBadia)](https://github.com/XusBadia "3 total commits to the Home Assistant orga: +1 commit to home-assistant-assets 1 commit to home-assistant-iOS 1 commit to home-assistant-polymer ") - [yankees9920 (@wagnerbenh)](https://github.com/wagnerbenh "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [Yann Jajkiewicz (@yjajkiew)](https://github.com/yjajkiew "2 total commits to the Home Assistant orga: +1 commit to home-assistant +1 commit to home-assistant.io +") - [Yannic\-HAW (@Yannic-HAW)](https://github.com/Yannic-HAW "2 total commits to the Home Assistant orga: 1 commit to home-assistant 1 commit to home-assistant.io @@ -11191,8 +13055,8 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant.io ") - [Yannick POLLART (@ypollart)](https://github.com/ypollart "8 total commits to the Home Assistant orga: -4 commits to home-assistant.io 4 commits to home-assistant +4 commits to home-assistant.io ") - [Yannick Simard (@TheRaven)](https://github.com/TheRaven "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io @@ -11203,8 +13067,8 @@ This page contains a list of people who have contributed in one way or another t - [Yaron de Leeuw (@jarondl)](https://github.com/jarondl "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Yaroslav (@Yarikx)](https://github.com/Yarikx "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Yaroslav (@Yarikx)](https://github.com/Yarikx "2 total commits to the Home Assistant orga: +2 commits to home-assistant ") - [yasin (@yasinS)](https://github.com/yasinS "4 total commits to the Home Assistant orga: 4 commits to home-assistant.io @@ -11232,12 +13096,15 @@ This page contains a list of people who have contributed in one way or another t - [yingzong (@yingzong)](https://github.com/yingzong "1 total commits to the Home Assistant orga: 1 commit to warrant ") +- [Yllelder Bamir (@Yllelder)](https://github.com/Yllelder "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Yof (@yoflippo)](https://github.com/yoflippo "1 total commits to the Home Assistant orga: 1 commit to developers.home-assistant ") -- [yosilevy (@yosilevy)](https://github.com/yosilevy "49 total commits to the Home Assistant orga: -42 commits to home-assistant-polymer -3 commits to home-assistant.io +- [Yosi Levy (@yosilevy)](https://github.com/yosilevy "56 total commits to the Home Assistant orga: +48 commits to home-assistant-polymer +4 commits to home-assistant.io 3 commits to home-assistant 1 commit to people ") @@ -11253,8 +13120,10 @@ This page contains a list of people who have contributed in one way or another t - [Z (@zanerv)](https://github.com/zanerv "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") -- [z0p (@z0mbieprocess)](https://github.com/z0mbieprocess "1 total commits to the Home Assistant orga: +- [z0p (@z0mbieprocess)](https://github.com/z0mbieprocess "3 total commits to the Home Assistant orga: 1 commit to open-zwave +1 commit to home-assistant +1 commit to home-assistant.io ") - [Zac (@zacs)](https://github.com/zacs "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io @@ -11263,17 +13132,25 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant 2 commits to home-assistant.io ") -- [Zach (@snowzach)](https://github.com/snowzach "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [Zach (@snowzach)](https://github.com/snowzach "8 total commits to the Home Assistant orga: +6 commits to home-assistant +2 commits to home-assistant.io ") - [Zachary Priddy (@zpriddy)](https://github.com/zpriddy "1 total commits to the Home Assistant orga: 1 commit to open-zwave ") -- [Zack Arnett (@zsarnett)](https://github.com/zsarnett "123 total commits to the Home Assistant orga: +- [Zack Arnett (@zsarnett)](https://github.com/zsarnett "124 total commits to the Home Assistant orga: 93 commits to home-assistant-polymer 29 commits to home-assistant.io +1 commit to people 1 commit to developers.home-assistant ") +- [Zack Lalanne (@zlalanne)](https://github.com/zlalanne "1 total commits to the Home Assistant orga: +1 commit to open-zwave +") +- [Zack R (@OspreyPrey)](https://github.com/OspreyPrey "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [zackbcom (@zackbcom)](https://github.com/zackbcom "2 total commits to the Home Assistant orga: 1 commit to open-zwave 1 commit to home-assistant.io @@ -11288,6 +13165,9 @@ This page contains a list of people who have contributed in one way or another t 1 commit to home-assistant 1 commit to home-assistant.io ") +- [Zapfmeister (@Zapfmeister)](https://github.com/Zapfmeister "4 total commits to the Home Assistant orga: +4 commits to hassio-addons +") - [Zeb Palmer (@zebpalmer)](https://github.com/zebpalmer "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") @@ -11304,9 +13184,9 @@ This page contains a list of people who have contributed in one way or another t - [ZERBIB Mickael (@Hellorheaven)](https://github.com/Hellorheaven "2 total commits to the Home Assistant orga: 2 commits to open-zwave ") -- [zewelor (@zewelor)](https://github.com/zewelor "21 total commits to the Home Assistant orga: -15 commits to home-assistant -6 commits to home-assistant.io +- [zewelor (@zewelor)](https://github.com/zewelor "48 total commits to the Home Assistant orga: +40 commits to home-assistant +8 commits to home-assistant.io ") - [zgmnkv (@zgmnkv)](https://github.com/zgmnkv "4 total commits to the Home Assistant orga: 4 commits to open-zwave @@ -11314,7 +13194,7 @@ This page contains a list of people who have contributed in one way or another t - [Zhao (@zhaokoh)](https://github.com/zhaokoh "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") -- [Zhao Lu (@zlu)](https://github.com/zlu "4 total commits to the Home Assistant orga: +- [Zhao Lü (@zlu)](https://github.com/zlu "4 total commits to the Home Assistant orga: 4 commits to home-assistant.io ") - [Zhong Jianxin (@azuwis)](https://github.com/azuwis "1 total commits to the Home Assistant orga: @@ -11324,8 +13204,9 @@ This page contains a list of people who have contributed in one way or another t 3 commits to home-assistant.io 2 commits to home-assistant ") -- [zhumuht (@zhumuht)](https://github.com/zhumuht "1 total commits to the Home Assistant orga: -1 commit to home-assistant +- [zhumuht (@zhumuht)](https://github.com/zhumuht "6 total commits to the Home Assistant orga: +4 commits to home-assistant +2 commits to home-assistant.io ") - [Zio Tibia (@ziotibia81)](https://github.com/ziotibia81 "14 total commits to the Home Assistant orga: 7 commits to home-assistant.io @@ -11337,6 +13218,10 @@ This page contains a list of people who have contributed in one way or another t - [Zippit (@zippit)](https://github.com/zippit "2 total commits to the Home Assistant orga: 2 commits to home-assistant.io ") +- [ZiroNL (@ZiroNL)](https://github.com/ZiroNL "4 total commits to the Home Assistant orga: +3 commits to home-assistant +1 commit to home-assistant.io +") - [zmrowicki@hotmail\.com (@zmrow)](https://github.com/zmrow "1 total commits to the Home Assistant orga: 1 commit to home-assistant ") @@ -11346,6 +13231,9 @@ This page contains a list of people who have contributed in one way or another t - [Zorks (@Zorks)](https://github.com/Zorks "5 total commits to the Home Assistant orga: 5 commits to home-assistant.io ") +- [Zotz (@datdamnzotz)](https://github.com/datdamnzotz "1 total commits to the Home Assistant orga: +1 commit to home-assistant.io +") - [Zoé Bőle (@zoe1337)](https://github.com/zoe1337 "4 total commits to the Home Assistant orga: 3 commits to home-assistant 1 commit to home-assistant.io @@ -11367,10 +13255,14 @@ This page contains a list of people who have contributed in one way or another t - [Šimon Let (@curusarn)](https://github.com/curusarn "2 total commits to the Home Assistant orga: 2 commits to 1password-teams-open-source ") +- [Дубовик Максим (@lufton)](https://github.com/lufton "4 total commits to the Home Assistant orga: +2 commits to home-assistant +2 commits to home-assistant.io +") - [Елизаров Роман Русланович (@fantomnotabene)](https://github.com/fantomnotabene "1 total commits to the Home Assistant orga: 1 commit to home-assistant.io ") This page is irregularly updated using the [`hass-release` tool](https://github.com/home-assistant/hass-release). If you think that you are missing, please let us know. -This page was last updated Sunday, April 07 2019, 04:19:58 UTC. +This page was last updated Sunday, November 17 2019, 13:17:30 UTC. diff --git a/source/docs/index.markdown b/source/docs/index.markdown index 8d2a4446926a..4ccf6afac682 100644 --- a/source/docs/index.markdown +++ b/source/docs/index.markdown @@ -8,9 +8,9 @@ The documentation covers beginner to advanced topics around the installation, se
    - +
    -
    Hass.io
    +
    Installation
    @@ -20,13 +20,13 @@ The documentation covers beginner to advanced topics around the installation, se
    - +
    Z-Wave
    - +
    MQTT
    @@ -38,7 +38,7 @@ The documentation covers beginner to advanced topics around the installation, se
    - +
    iOS
    diff --git a/source/getting-started/automation.markdown b/source/getting-started/automation.markdown index 348de9459349..3ccd5f801ffd 100644 --- a/source/getting-started/automation.markdown +++ b/source/getting-started/automation.markdown @@ -6,36 +6,41 @@ redirect_from: - /getting-started/automation-2/ --- -When your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to **turn on the lights when the sun sets**. +Once your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to **turn on the lights when the sun sets**. -In Home Assistant, open the menu by clicking on the top-left icon and click on configuration. Now click on automation. This is the automation screen from which you can manage all the automations in Home Assistant. - -Click on the orange button at the bottom right to create a new automation. You are presented with a blank automation screen. +In the user interface, click Configuration in the sidebar, then click Automation. You will now see the automation screen from which you can manage all the automations in Home Assistant.

    - + The automation editor.

    -The first thing we will do is to set a name. Enter "Turn Lights On at Sunset". +Click the orange button at the bottom right to create a new automation. You are presented with a blank automation screen. + +

    + +The start of a new automation. +

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

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

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

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

    diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 053f98451027..257af1defe40 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -3,45 +3,65 @@ title: "Advanced Configuration" description: "Instructions to get Home Assistant configured." --- -Until now we have been able to configure Home Assistant purely via the user interface. However, not all options are accessible via the user interface. The other options are accessible via the Home Assistant configuration file called `configuration.yaml`. A default one is created when Home Assistant started for the first time. +The onboarding process takes care of the initial setup for Home Assistant, such as naming your home and selecting your location. After initial onboarding, these options can be changed in the user interface by clicking on Configuration in the sidebar and clicking on General, or by manually editing them in the Home Assistant configuration file called `configuration.yaml`. This section will explain how to do the latter.
    -This final step of the getting started only applies if you've installed Home Assistant via Hass.io. If you've used another installation method, [see here](/docs/configuration/). +The steps below do not apply to Home Assistant Core installations, for those types of installations, [see here](/docs/configuration/).
    -We are going to help you make your first changes to `configuration.yaml`. To do this, we are going to install an add-on from the Hass.io add-on store: the HASS Configurator. To get to the add-on store, click on the menu icon in the top left, then click on Hass.io. On the new page, open the add-on store tab. +We are going to help you make your first changes to `configuration.yaml`. To do this, we are going to install an add-on from the Home Assistant add-on store: the File editor. To get to the add-on store, click on the menu icon in the top left, then click on Supervisor. On the new page, open the add-on store tab.

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

    -Under the "Core" section you will find HASS Configurator. +Under the "Official add-ons" section you will find the File editor add-on. - - Click on Configurator and click on INSTALL. When installation is complete, the UI will go to the add-on details page for the configurator. + - Click on File Editor and click on INSTALL. When installation is complete, the UI will go to the add-on details page for the file editor. - Now start the add-on by clicking on START. - Open the user interface by clicking on OPEN WEB UI. -Now let's make a small change using the configurator: we are going to change the name and location of your Home Assistant installation. +Now let's make a change using the file editor: we are going to change the name, location, unit system, and time zone of your Home Assistant installation. + + - Click the folder icon in the top left of the file editor window to open the file browser sidebar. + - Click the `configuration.yaml` file (in the `/config/` folder) to load it into the main file editor window. + - Add the following to this file (preferably at the very top, but it ultimately doesn't matter): + ```yaml + homeassistant: + name: Home + latitude: xx.xxxx + longitude: xx.xxxx + unit_system: imperial + time_zone: America/Chicago + ``` +
    + + Valid options for `unit_system` are `imperial` or `metric`. See [here](https://timezonedb.com/time-zones) for a list of valid time zones. Enter the appropriate option found under the Time Zone column at that page. + +
    - - Click the folder icon in the top left of the configurator window to open the file browser sidebar. - - Click the `configuration.yaml` file (in the `/config/` folder) to load it into the main Configurator edit window. - - 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 "Server Control" 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. In order for "Check Config" to be visible, you must enable "Advanced Mode" on your user profile. + - 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 configuration check. Do this by clicking on Configuration in the sidebar, click on "Server Controls" and click on the "CHECK configuration" button. When it's valid, it will show the text "Configuration valid!". In order for the "CHECK configuration" button to be visible, you must enable "Advanced Mode" on your user profile. + - Now Restart Home Assistant using the "RESTART" button in the Server management section on the same page.

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

    -### Editing config via Samba/Windows Networking +
    + + If you have watched any videos about setting up Home Assistant using `configuration.yaml` (particularly ones that are old), you might notice your default configuration file is much smaller than what the videos show. Don't be concerned, you haven't done anything wrong. Many items in the default configuration files shown in those old videos are now included in the `default_config:` line that you see in your configuration file. [See here](/integrations/default_config/) for more information on what's included in that line. + +
    + +### Editing configuration via Samba/Windows Networking -Maybe you are not a big fan of our web editor and want to use a text editor on your computer instead. This is possible by sharing the configuration over the network using the Samba add-on, which can also be installed from the Hass.io add-on store. This will make your configuration accessible via the network tab on your computer. +Maybe you are not a big fan of our web editor and want to use a text editor on your computer instead. This is possible by sharing the configuration over the network using the Samba add-on, which can also be installed from the Home Assistant add-on store. This will make your configuration accessible via the network tab on your computer. -Go to the add-on store and look for Samba in the core section. After you have installed the add-on, click on START. Hass.io should now be available in the networking tab on your computer. +Go to the add-on store and look for Samba in the core section. After you have installed the add-on, click on START. Home Assistant should now be available in the networking tab on your computer. -We suggest that to edit `configuration.yaml`, you use the free text editor [Visual Studio Code](https://code.visualstudio.com/) in combination with the [Home Assistant Config Helper extension](https://marketplace.visualstudio.com/items?itemName=keesschollaart.vscode-home-assistant). +We suggest that to edit `configuration.yaml`, you use the free text editor [Visual Studio Code](https://code.visualstudio.com/) in combination with the [Home Assistant Configuration Helper extension](https://marketplace.visualstudio.com/items?itemName=keesschollaart.vscode-home-assistant). diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 8e9e072f3964..9957699f59a9 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -19,13 +19,13 @@ So here are guidelines: - Do not talk about YAML if it can be partially/fully done in UI. - Do not tell people about stuff they can do later. This can be added to a 2nd tier guide. - - The first page of the guide is for installation, hence hass.io specific. + - The first page of the guide is for installation, hence Home Assistant specific. Other pages should not refer to it except for the page introducing the last page that introduces `configuration.yaml`. {% endcomment %} -This guide will help you get Home Assistant running on a Raspberry Pi. The easiest way to do this is by using the [Hass.io](/hassio/) installer, which is our all-in-one solution that turns Raspberry Pis and other devices into the ultimate home automation hub. +This guide will help you get Home Assistant running on a Raspberry Pi, turning your Raspberry Pi into the ultimate home automation hub. Follow this guide if you want to get started with Home Assistant easily or if you have little to no Linux experience. For advanced users (or if you don't have a [device that is supported by this guide][supported]), check out our [alternative installation methods](/docs/installation/). Once you finish your alternative installation, you can continue at the [next step][next-step]. @@ -33,16 +33,16 @@ Follow this guide if you want to get started with Home Assistant easily or if yo ### Suggested hardware -We will need a few things to get started with installing Home Assistant. The Raspberry Pi 3 Model B+ is a good, affordable starting point for your home automation journey. Links below lead to Amazon US. If you're not in the US, you should be able to find these items in web stores in your country. +We will need a few things to get started with installing Home Assistant. The Raspberry Pi 4 Model B is a good, affordable starting point for your home automation journey. Links below lead to Amazon US. If you're not in the US, you should be able to find these items in web stores in your country. -- [Raspberry Pi 3 Model B+](https://amzn.to/2IAyNl0) + [Power Supply](https://www.raspberrypi.org/help/faqs/#powerReqs) (at least 2.5A) +- [Raspberry Pi 4 Model B (2GB)](https://amzn.to/2XULT2z) + [Power Supply](https://www.raspberrypi.org/help/faqs/#powerReqs) (at least 2.5A) - [Micro SD Card](https://amzn.to/2X0Z2di). Ideally get one that is [Application Class 2](https://www.sdcard.org/developers/overview/application/index.html) as they handle small I/O much more consistently than cards not optimized to host applications. A 32 GB or bigger card is recommended. - SD Card reader. This is already part of most laptops, but you can purchase a [standalone USB adapter](https://amzn.to/2WWxntY) if you don't have one. The brand doesn't matter, just pick the cheapest. - Ethernet cable. Home Assistant can work with Wi-Fi, but an Ethernet connection would be more reliable. ### Software requirements -- Download the HassOS image for [your device](/hassio/installation/) +- Download and extract the Home Assistant image for [your device](/hassio/installation/) - Download [balenaEtcher] to write the image to an SD card [balenaEtcher]: https://www.balena.io/etcher @@ -50,7 +50,7 @@ We will need a few things to get started with installing Home Assistant. The Ras ### Installation 1. Put the SD card in your card reader. -2. Open balenaEtcher, select the HassOS image and flash it to the SD card. +2. Open balenaEtcher, select the Home Assistant image and flash it to the SD card. 3. Unmount the SD card and remove it from your card reader. 4. Follow this step if you want to configure Wi-Fi or a static IP address (this step requires a USB stick). Otherwise, move to step 5. - Format a USB stick to FAT32 with the volume name `CONFIG`. @@ -62,7 +62,7 @@ We will need a few things to get started with installing Home Assistant. The Ras 5. Insert the SD card into your Raspberry Pi. If you are going to use an Ethernet cable, connect that too. 6. Connect your power supply to the Raspberry Pi. 7. The Raspberry Pi will now boot up, connect to the Internet and download the latest version of Home Assistant. This will take about 20 minutes. -8. Home Assistant will be available at `http://hassio.local:8123`. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at `http://hassio:8123`. +8. Home Assistant will be available at `http://homeassistant.local:8123`. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at `http://homeassistant:8123` or `http://X.X.X.X:8123` (replace `X.X.X.X` with your Pi's IP address). 9. If you used a USB stick for configuring the network, you can now remove it. [the examples]: https://github.com/home-assistant/hassos/blob/dev/Documentation/network.md diff --git a/source/getting-started/onboarding.markdown b/source/getting-started/onboarding.markdown index c49f522b0b76..ef18296b8c86 100644 --- a/source/getting-started/onboarding.markdown +++ b/source/getting-started/onboarding.markdown @@ -5,11 +5,35 @@ description: "Instructions to get Home Assistant configured." Alright, you made it here. The tough part is done. -With Home Assistant installed, it's time for doing the initial configuration. Here you will create the owner account of Home Assistant. This account will be an administrator and will always be able to change everything. Enter a name, username, password and click on "create account". +With Home Assistant installed, it's time to configure it. Here you will create the owner account of Home Assistant. This account will be an administrator and will always be able to change everything. Enter a name, username, password and click on "create account". -Now you're brought to the main screen of Home Assistant: the states screen. The states screen will show all your devices. So let's get that screen filled up! +

    + +Set your username and password. +

    + +Next, you can enter a name for your home and set your location and unit system. Click "DETECT" to find your location and set your time zone and unit system based on that location. If you'd rather not send your location, you can set these values manually. + +

    + +Set your location, time zone, and unit system. +

    + +Once you are done, click Next. In this screen, Home Assistant will show any devices that it has discovered on your network. Don't be alarmed if you see fewer items than what is shown below; you can always manually add devices later. + +

    + +Discovery of devices on your network. +

    + +Finally, click Finish. Now you're brought to the Home Assistant web interface. This screen will show all of your devices. So let's get that screen filled up! + +

    + +The Home Assistant user interface. +

    -Open the menu on the top left and click on Configuration. On the next screen, click on Integrations. At this screen you will be able to set up integrations with Home Assistant. You might notice a "discovered" section, these are integrations that we found on your network and can easily be added with a few clicks. If your integrations are not discovered, find them in the list and click on configure. +Click on Configuration in the sidebar on the left. On the next screen, click on Integrations. At this screen you will be able to set up integrations with Home Assistant. You might notice a "discovered" section. This section contains integrations that were found on your network and can easily be added with a few clicks. If your integrations are not discovered, click the + button in the lower right and search for your integration in that list.

    @@ -18,6 +42,6 @@ The integrations page in the configurations panel shows you all your configured When each integration is done setting up, it will ask you to put the new devices in areas. Areas allow you to organize all the devices in your home. -When you're done, navigate back to the states panel and voila, your devices are ready for you to control. +When you're done, navigate back to the web interface and voila, your devices are ready for you to control. ### [Next step: Automate Home Assistant »](/getting-started/automation/) diff --git a/source/getting-started/presence-detection.markdown b/source/getting-started/presence-detection.markdown index 548b4090dc8e..21eb5c2502c1 100644 --- a/source/getting-started/presence-detection.markdown +++ b/source/getting-started/presence-detection.markdown @@ -17,11 +17,10 @@ Screenshot of Home Assistant showing a school, work and home zone and two people There are different ways of setting up presence detection. Usually the easiest way to detect presence is by checking which devices are connected to the network. You can do that if you have one of our [supported routers][routers]. By leveraging what your router already knows, you can easily detect if people are at home. -It's also possible to run an app on your phone to provide detailed location information to your Home Assistant instance. If you're on iOS we suggest to use the [Home Assistant iOS app](/ios/). For Android, we suggest [OwnTracks][ha-owntracks]. +It's also possible to run an app on your phone to provide detailed location information to your Home Assistant instance. For iOS and Android, we suggest using the [Home Assistant Companion app][companion]. + +During the setup of Home Assistant Companion on your mobile device, the app will ask for permission to allow the device's location to be provided to Home Assistant. Allowing this will create a `device_tracker` entity for that device which can be used in automations and conditions. -

    - -
    ### Zones @@ -37,7 +36,6 @@ The map view will hide all devices that are home. [nmap]: /integrations/nmap_tracker [ha-bluetooth]: /integrations/bluetooth_tracker [ha-bluetooth-le]: /integrations/bluetooth_le_tracker -[ha-owntracks]: /integrations/owntracks/ [ha-locative]: /integrations/locative [ha-gpslogger]: /integrations/gpslogger [ha-presence]: /integrations/#presence-detection @@ -47,5 +45,6 @@ The map view will hide all devices that are home. [trigger]: /getting-started/automation-trigger/#zone-trigger [condition]: /getting-started/automation-condition/#zone-condition [ha-map]: /integrations/map/ +[companion]: https://companion.home-assistant.io/ ### [Next step: Join the Community »](/getting-started/join-the-community/) diff --git a/source/hassio/commandline.markdown b/source/hassio/commandline.markdown index 1023c77882b2..9e5360ff9312 100644 --- a/source/hassio/commandline.markdown +++ b/source/hassio/commandline.markdown @@ -1,93 +1,96 @@ --- -title: "Hass.io via the Command line" -description: "Command line utility to control Hass.io." +title: "Home Assistant via the command line" +description: "Command line utility to control Home Assistant." ---

    -Hass.io upgrade process from the SSH command line +Home Assistant upgrade process from the SSH command line

    -On the SSH command line, you can use the `hassio` command to retrieve logs, check the details of connected hardware, and more. +On the SSH command line, you can use the `ha` command to retrieve logs, check the details of connected hardware, and more. ## Home Assistant ```bash -hassio homeassistant check -hassio homeassistant info -hassio homeassistant logs -hassio homeassistant options -hassio homeassistant rebuild -hassio homeassistant restart -hassio homeassistant start -hassio homeassistant stats -hassio homeassistant stop -hassio homeassistant update +ha core check +ha core info +ha core logs +ha core options +ha core rebuild +ha core restart +ha core start +ha core stats +ha core stop +ha core update ``` ## Supervisor ```bash -hassio supervisor info -hassio supervisor logs -hassio supervisor reload -hassio supervisor update +ha supervisor info +ha supervisor logs +ha supervisor reload +ha supervisor update ``` ## Host ```bash -hassio host reboot -hassio host shutdown -hassio host update +ha host reboot +ha host shutdown +ha host update ``` ## Hardware ```bash -hassio hardware info -hassio hardware audio +ha hardware info +ha hardware audio ``` ## Usage examples To update Home Assistant to a specific version, use the command: ```bash -hassio homeassistant update --version=x.y.z +ha core update --version=x.y.z ``` Replace x.y.z with the desired version like `--version=0.74.2` -You can get a better description of the CLI capabilities by typing `hassio help`: +You can get a better description of the CLI capabilities by typing `ha help`: ```bash +The Home Assistant CLI is a small and simple command line utility that allows +you to control and configure different aspects of Home Assistant + Usage: - hassio [command] + ha [command] Available Commands: - addons Install, update, remove and configure Hass.io add-ons - dns Get information, update or configure the Hass.io DNS server - hardware Provides hardware information about your system - hassos HassOS specific for updating, info and configuration imports - help Help about any command - homeassistant Provides control of Home Assistant running on Hass.io - host Control the host/system that Hass.io is running on - info Provides a general Hass.io information overview - snapshots Create, restore and remove snapshot backups - supervisor Monitor, control and configure the Hass.io Supervisor + addons Install, update, remove and configure Home Assistant add-ons + authentication Authentication for Home Assistant users. + core Provides control of the Home Assistant Core + dns Get information, update or configure the Home Assistant DNS server + hardware Provides hardware information about your system + help Help about any command + host Control the host/system that Home Assistant is running on + info Provides a general Home Assistant information overview + os Operating System specific for updating, info and configuration imports + snapshots Create, restore and remove snapshot backups + supervisor Monitor, control and configure the Home Assistant Supervisor Flags: - --api-token string Hass.io API token + --api-token string Home Assistant Supervisor API token --config string Optional config file (default is $HOME/.homeassistant.yaml) - --endpoint string Endpoint for Hass.io Supervisor ( default is 'hassio' ) - -h, --help help for hassio + --endpoint string Endpoint for Home Assistant Supervisor ( default is 'supervisor' ) + -h, --help help for ha --log-level string Log level (defaults to Warn) --no-progress Disable the progress spinner --raw-json Output raw JSON from the API -Use "hassio [command] --help" for more information about a command. - +Use "ha [command] --help" for more information about a command. ``` ## Console access -You can also access HassOS via a directly connected keyboard and monitor, the console. To log in to the physical console the username is `root`, with no password. +You can also access the Home Assistant Operating System via a directly connected keyboard and monitor, the console. To log in to the physical console the username is `root`, with no password. diff --git a/source/hassio/enable_i2c.markdown b/source/hassio/enable_i2c.markdown index 88508d0d0c5a..4c4d26933817 100644 --- a/source/hassio/enable_i2c.markdown +++ b/source/hassio/enable_i2c.markdown @@ -1,11 +1,12 @@ --- -title: "Enable HassOS i2c" -description: "Instructions on how to enable I2C on a Raspberry PI for Hass.io." +title: "Enable i2c on the Home Assistant Operating System" +description: "Instructions on how to enable I2C on a Raspberry PI" --- -Hass.io is a managed environment, which means you can't use existing methods to enable the I2C bus on a Raspberry Pi. +Home Assistant using the Home Assistant Operating System, is a managed environment. +Which means you can't use existing methods to enable the I2C bus on a Raspberry Pi. -If you're attempting to add an external sensor, you will have to [enable the I2C interface in the Hass.io configuration](https://github.com/home-assistant/hassos/blob/dev/Documentation/boards/raspberrypi.md#i2c) using a USB stick. +If you're attempting to add an external sensor, you will have to [enable the I2C interface in the Home Assistant configuration](https://github.com/home-assistant/hassos/blob/dev/Documentation/boards/raspberrypi.md#i2c) using a USB stick. ## Step by step instructions @@ -35,11 +36,11 @@ Format a USB stick with FAT32/EXT4/NTFS and name the drive `CONFIG` (uppercase). dtparam=i2c_arm=on ``` -### Step 3 - Load the new USB config +### Step 3 - Load the new USB configuration -- Insert the USB drive into your Raspberry PI. -- Now go to your Home Assistant web interface, in the sidebar click **Hass.io** > **System**. +- Insert the USB drive into your Raspberry Pi. +- Now go to your Home Assistant web interface, in the sidebar click **Supervisor** > **System**. - Now click `Import from USB`. -- This will restart your Hass.io instance, and load the new USB configuration. +- This will restart your Home Assistant instance, and load the new USB configuration. When the service has restarted, you will have a working I2C interface. diff --git a/source/hassio/index.markdown b/source/hassio/index.markdown index 45224ba57692..5241e043899d 100644 --- a/source/hassio/index.markdown +++ b/source/hassio/index.markdown @@ -1,38 +1,37 @@ --- -title: "Hass.io" +title: "Home Assistant" description: "Manage your Home Assistant and custom add-ons." redirect_from: /integrations/hassio/ --- -Hass.io turns your Raspberry Pi (or another device) into the ultimate home automation hub powered by Home Assistant. With Hass.io you can focus on integrating your devices and writing automations. +Home Assistant turns your Raspberry Pi (or another device) into the ultimate home automation hub. With Home Assistant, you can focus on integrating your devices and writing automations. [Go to the installation instructions »][install] -The advantages of using Hass.io: +The advantages of using Home Assistant: - Free and open source - Optimized for embedded devices like Raspberry Pi - 100% local home automation -- Easy installation and updates (powered by [HassOS] and [Docker]) +- Easy installation and updates (powered by the [Home Assistant Operating System] and [Home Assistant Core]) - Management web interface integrated into Home Assistant - Create and restore full backups of your whole configuration with ease - Install many popular add-ons with a single click! For example [Google Assistant], encryption via [Let's Encrypt] and dynamic DNS via [Duck DNS].

    [Browse available add-ons »][all]

    -- Active community that is helpful and sharing add-ons including AppDaemon, Homebridge and InfluxDB.

    [Browse the forums »][forums]
    [Join the Hass.io chat »][chat]
    [Browse community add-on repositories »][comm-add-ons]

    +- Active community that is helpful and sharing add-ons including AppDaemon, Homebridge and InfluxDB.

    [Browse the forums »][forums]
    [Join the Home Assistant chat »][chat]
    [Browse community add-on repositories »][comm-add-ons]

    - +
    ### Upgrading -Hass.io users can update Home Assistant via the 'Hass.io' panel in the UI. However, please note that Home Assistant updates take some time to roll into the Hass.io builds. Therefore, there is often a slight delay (a day or two) between the availability of a Home Assistant update and the update being available in Hass.io, so be patient. When a Hass.io update is available, it will be shown as a notification in the ‘Hass.io' panel in the web interface. +Home Assistant users can update via the 'Supervisor' panel in the UI when a new version is released.

    -Hass.io dashboard with upgrade notification (under the hamburger menu -> Hass.io) +Home Assistant dashboard with upgrade notification (under the hamburger menu -> Supervisor)

    - [Google Assistant]: /addons/google_assistant/ [Snips.ai]: /addons/snips/ [Let's Encrypt]: /addons/lets_encrypt/ @@ -41,6 +40,6 @@ Hass.io dashboard with upgrade notification (under the hamburger menu -> Hass.io [comm-add-ons]: https://community.home-assistant.io/tags/hassio-repository [all]: /addons/ [chat]: https://discord.gg/K3UVxJd -[HassOS]: https://github.com/home-assistant/hassos -[Docker]: https://www.docker.com/ +[Home Assistant Operating System]: https://github.com/home-assistant/operating-system +[Home Assistant Core]: https://www.home-assistant.io/docs/installation/ [install]: /hassio/installation/ diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index e068a530c59c..8132d95f1787 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -1,45 +1,47 @@ --- -title: "Installing Hass.io" -description: "Instructions on how to install Hass.io." +title: "Installing Home Assistant" +description: "Instructions on how to install Home Assistant." --- -The following will take you through the steps required to install Hass.io. +The following will take you through the steps required to install Home Assistant. 1. Download the appropriate install option: - As an image for your device: - - - [Raspberry Pi Zero][pi1] (not recommended for more than testing) - - [Raspberry Pi Zero W][pi0-w] (not recommended for more than testing) - - [Raspberry Pi 1 Model B][pi1] (not recommended for more than testing) - - [Raspberry Pi 2 Model B][pi2] + - [Raspberry Pi 3 Model B and B+ 32bit][pi3-32] (recommended) - [Raspberry Pi 3 Model B and B+ 64bit][pi3-64] - - [(RC) Raspberry Pi 4 Model B 32bit][pi4-32] (recommended) - - [(RC) Raspberry Pi 4 Model B 64bit][pi4-64] + - [Raspberry Pi 4 Model B 32bit][pi4-32] (recommended) + - [Raspberry Pi 4 Model B 64bit][pi4-64] - [Tinkerboard][tinker] - [Odroid-C2][odroid-c2] + - [Odroid-N2 (Beta)][odroid-n2] - [Odroid-XU4][odroid-xu4] - - [OrangePi-Prime][opi-prime] - [Intel-Nuc][intel-nuc] - - - As a virtual appliance: + + - As a virtual appliance: - [VMDK][vmdk] (VMWare Workstation) - [VHDX][vhdx] - [VDI][vdi] - [OVA][Virtual Appliance] (not available at this time!) - -2. Install Hass.io: - - Flash the downloaded image to an SD card using [balenaEtcher][balenaEtcher]. If using a Pi we recommend at least a 32 GB SD card to avoid running out of space. On Virtual machine platforms, provide at least 32 GB of disk space for the VM. + - Not recommended Hardware: + + - [Raspberry Pi][pi1] + - [Raspberry Pi Zero-W][pi0-w] + - [Raspberry Pi 2][pi2] + +2. Install Home Assistant: + + - Flash the downloaded image to an SD card using [balenaEtcher][balenaEtcher]. If using a Pi, we recommend at least a 32 GB SD card to avoid running out of space. On Virtual machine platforms, provide at least 32 GB of disk space for the VM. - Load the appliance image into your virtual machine software. Choose 64-bit Linux and UEFI boot. -3. Optional - set up the WiFi or static IP. There are two possible places for that: +3. Optional - set up the Wi-Fi or static IP. There are two possible places for that: - on a blank USB stick with a FAT32 partition having partition label `CONFIG`, while in its root directory, create the `network/my-network` file, or - - on the Hassio SD card's first, bootable partition (labeled `hassio-boot`, might not be auto mounted in Linux) create the `CONFIG/network/my-network` file. + - on the Home Assistant SD card's first, bootable partition (labeled `hassio-boot`, might not be auto mounted in Linux) create the `CONFIG/network/my-network` file. - For the content of this file, follow the [HassOS howto][hassos-network]. + For the content of this file, follow the [Home Assistant Operating System howto][hassos-network]. 4. For image-based installs insert the SD card (and optional USB stick) into the device. @@ -47,13 +49,19 @@ The following will take you through the steps required to install Hass.io. -6. You will be able to reach your installation at `http://hassio.local:8123` (if your router supports mDNS, otherwise see below). +6. You will be able to reach your installation at `http://homeassistant.local:8123` (if your router supports mDNS, otherwise see below). + +7. It is important to provide yourself proper access, including the Home Assistant CLI tools. Both the [Samba add-on][samba] and the [SSH add-on][ssh] should be the first add-ons you should install, before making changes to the configuration in the `/config/` folder. From the UI choose **Supervisor**, which is located in the sidebar and then the add-on store. -7. Enable either the [Samba add-on][samba] or the [SSH add-on][ssh] to manage your configuration in `/config/` (From the UI choose **Hass.io** which is located in the sidebar). +
    + +We used `hassio.local` in the past, if you have a system that is installed before this naming change, you might need to use `hassio.local` instead of `homeassistant.local`. + +
    -If your router doesn't support mDNS, then you'll have to use the IP address of your Pi instead of `hassio.local`. For example, `http://192.168.0.9:8123`. You should be able to find the IP address of your Pi from the admin interface of your router. +If your router doesn't support mDNS, then you'll have to use the IP address of your Pi instead of `homeassistant.local`. For example, `http://192.168.0.9:8123`. You should be able to find the IP address of your Pi from the admin interface of your router.
    @@ -65,156 +73,137 @@ If you are using a Raspberry Pi please remember to ensure you're using an [appro Now you can [configure][configure] your install. -## Updating a Hass.io installation +## Updating a Home Assistant installation -Best practice for updating a Hass.io installation: +Best practice for updating a Home Assistant installation: -1. Backup your installation, using the snapshot functionality Hass.io offers. +1. Backup your installation, using the snapshot functionality Home Assistant offers. 2. Check the release notes for breaking changes on [Home Assistant release notes](https://github.com/home-assistant/home-assistant/releases). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f`) and search for **Breaking Changes**. -3. Check your configuration using the [Check Home Assistant configuration](/addons/check_config/) add-on. +3. Check your configuration using the [Check Home Assistant configuration](/addons/check_config/) add-on. 4. If the check passes, you can safely update. If not, update your configuration accordingly. -5. Select _Dashboard_ from the _Hass.io_ menu, and then select _Update_. +5. Select _Dashboard_ from the _Supervisor_ menu, and then select _Update_. -## Run a specific version on Hass.io +## Run a specific version on Home Assistant -SSH to your Hass.io system, or connect to the console, and run: +SSH to your Home Assistant system, or connect to the console, and run: ```bash -hassio ha update --version=0.XX.X +ha core update --version=0.XX.X ``` -## Run the beta version on Hass.io +## Run the beta version on Home Assistant -If you would like to test next release before anyone else, you can install the beta version released every two weeks: +If you would like to test next release before anyone else, you can install the beta version released every three weeks: -1. Backup your installation, using the snapshot functionality Hass.io offers. -2. Check the RC release notes for breaking changes on [Home Assistant release notes](https://rc--home-assistant-docs.netlify.com/latest-release-notes/). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f`) and search for **Breaking Changes**. -3. Select _System_ from the _Hass.io_ menu, then select _Join Beta Channel_ under _Hass.io supervisor_, then select _Reload_. -4. Select _Dashboard_ from the _Hass.io_ menu, and then select _Update_. +1. Backup your installation, using the snapshot functionality Home Assistant offers. +2. Check the [Home Assistant Beta release notes](https://rc.home-assistant.io/latest-release-notes/) for breaking changes. Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f`) and search for **Breaking Changes**. +3. Select _System_ tab from the _Supervisor_ menu, then select _Join Beta Channel_ under _Supervisor_, then select _Reload_. +4. Select _Dashboard_ tab from the _Supervisor_ menu, and then select _Update_. -## Alternative: install on a generic Linux host +## Alternative: install Home Assistant Supervised on a generic Linux host -For advanced users, it is also possible to try Hass.io on your [Linux server or inside a virtual machine][linux]. -Examples given here are tested on Ubuntu and Arch Linux, but the instructions should work as a guideline for installing on other Linux distrubutions. +You can also install Home Assistant on a Linux operating system of choice, called Home Assistant Supervised. -The packages you need to have available on your system that will run Hass.io may vary. +Home Assistant Supervised, will still give you access to most features Home Assistant has to offer, including add-ons. -### Debian/Ubuntu +### Supported systems and limitations - - `apparmor-utils` - - `apt-transport-https` - - `avahi-daemon` - - `ca-certificates` - - `curl` - - `dbus` - - `jq` - - `socat` - - `software-properties-common` +While Home Assistant Supervised can be run on practically any Linux systems, +the Home Assistant project limits support for this installation method. -Optional: +Only the use of Debian or Ubuntu is supported. Other Linux-based system may work +but is not part of our testing and thus not supported. - - `network-manager` +Furthermore, if you choose to run Home Assistant Supervised, the operating +system of your choosing (including Debian/Ubuntu) is **your** responsibility. +Both in terms of systems upgrade and system configuration. -
    - - Without the NetworkManager, you will be not able to control your host network setup over the UI. The `modemmanager` package will interfere with any Z-Wave or Zigbee stick and should be removed or disabled. Failure to do so will result in random failures of those integrations. For example you can disable with `sudo systemctl disable ModemManager` and remove with `sudo apt-get purge modemmanager` +Customizations to your custom operating system may interfere with Home Assistant. +For that reason, please be sure you have to knowledge to manage, configure and +maintain the operating system of your choosing. -
    - -### Arch Linux - - - `apparmor` - - `avahi` - - `ca-certificates` - - `curl` - - `dbus` - - `docker` - - `jq` - - `socat` - -You also need to have Docker-CE installed. There are well-documented procedures for installing Docker on Ubuntu at [Docker.com](https://docs.docker.com/install/linux/docker-ce/ubuntu/), you can find installation steps for your Linux distribution in the menu on the left. - -
    - - Some distributions, like Ubuntu, have a `docker.io` package available. Using that packages will cause issues! - Be sure to install the official Docker-CE from the above listed URL. - - Docker is not always ready with a release when a new Ubuntu version is out. Check if your version of Ubuntu is supported by docker [here](https://docs.docker.com/install/linux/docker-ce/ubuntu/). - -
    +When in doubt, we highly recommend using the regular installation of Home +Assistant as provided above. In that case, Home Assistant will manage and update +the Home Assistant Operating System for you. ### Preparation -To prepare your machine for the Hass.io installation, run the following commands: +To prepare your machine for the Home Assistant installation, run the following commands: -For Ubuntu: +If you run Ubuntu, first run this command: ```bash -add-apt-repository universe +sudo add-apt-repository universe ``` -Debian/Ubuntu: +Next run the following commands (for both Debian and Ubuntu): ```bash sudo -i -apt-get install software-properties-common apt-get update -apt-get install -y apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat +apt-get install -y software-properties-common apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat +systemctl disable ModemManager +systemctl stop ModemManager curl -fsSL get.docker.com | sh ``` -The following script will then install Hass.io on a variety of operating systems and machine types. +### Installation of Home Assistant Supervised + +The following script will then install Home Assistant on a variety of operating systems and machine types. ```bash curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh" | bash -s ``` -Some installation types require flags to identify the computer type, for example, when using a Raspberry Pi 3, the flag `-- -m raspberrypi3` is required. The install script would then look like this: +Some installation types require flags to identify the computer type, for example, when using a Raspberry Pi 4, the flag `-- -m raspberrypi4` is required. The install script would then look like this: ```bash -curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh" | bash -s -- -m raspberrypi3 +curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh" | bash -s -- -m raspberrypi4 ``` #### Other machine types - - - `intel-nuc` - - `raspberrypi` - - `raspberrypi2` - - `raspberrypi3` - - `raspberrypi3-64` - - `odroid-c2` - - `odroid-cu2` - - `odroid-xu` - - `orangepi-prime` - -
    -When you use this installation method, the core SSH add-on may not function correctly. If that happens, use the community SSH add-on. Some of the documentation might not work for your installation either. -
    -A detailed guide about running Hass.io as a virtual machine is available in the [blog][hassio-vm]. +- `intel-nuc` +- `raspberrypi` +- `raspberrypi2` +- `raspberrypi3` +- `raspberrypi3-64` +- `raspberrypi4` +- `raspberrypi4-64` +- `odroid-c2` +- `odroid-n2` +- `odroid-xu` +- `tinker` +- `qemuarm` +- `qemuarm-64` +- `qemux86` +- `qemux86-64` + +See the [hassio-installer](https://github.com/home-assistant/hassio-installer) GitHub page for an up-to-date listing of supported machine types. + +If you can not find your machine type in the list, you should pick the `qemu` release. i.e., `qemux86-64` for a normal 64-bit Linux distribution, or `qemuarm-64` for most modern ARM-based target like Raspberry Pi clones, or TV boxes. [balenaEtcher]: https://www.balena.io/etcher -[Virtual Appliance]: https://github.com/home-assistant/hassos/blob/dev/Documentation/boards/ova.md -[hassos-network]: https://github.com/home-assistant/hassos/blob/dev/Documentation/network.md -[pi0-w]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi0-w-2.12.img.gz -[pi1]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi-2.12.img.gz -[pi2]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi2-2.12.img.gz -[pi3-32]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi3-2.12.img.gz -[pi3-64]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi3-64-2.12.img.gz -[pi4-32]: https://github.com/home-assistant/hassos/releases/download/3.5/hassos_rpi4-3.5.img.gz -[pi4-64]: https://github.com/home-assistant/hassos/releases/download/3.5/hassos_rpi4-64-3.5.img.gz -[tinker]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_tinker-2.12.img.gz -[odroid-c2]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_odroid-c2-2.12.img.gz -[odroid-xu4]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_odroid-xu4-2.12.img.gz -[opi-prime]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_opi-prime-2.12.img.gz -[intel-nuc]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_intel-nuc-2.12.img.gz -[vmdk]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_ova-2.12.vmdk.gz -[vhdx]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_ova-2.12.vhdx.gz -[vdi]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_ova-2.12.vdi.gz +[Virtual Appliance]: https://github.com/home-assistant/operating-system/blob/dev/Documentation/boards/ova.md +[hassos-network]: https://github.com/home-assistant/operating-system/blob/dev/Documentation/network.md +[pi0-w]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi0-w-3.12.img.gz +[pi1]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi-3.12.img.gz +[pi2]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi2-3.12.img.gz +[pi3-32]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi3-3.12.img.gz +[pi3-64]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi3-64-3.12.img.gz +[pi4-32]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi4-3.12.img.gz +[pi4-64]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi4-64-3.12.img.gz +[tinker]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_tinker-3.12.img.gz +[odroid-c2]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_odroid-c2-3.12.img.gz +[odroid-n2]: https://github.com/home-assistant/operating-system/releases/download/4.4/hassos_odroid-n2-4.4.img.gz +[odroid-xu4]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_odroid-xu4-3.12.img.gz +[intel-nuc]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_intel-nuc-3.12.img.gz +[vmdk]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_ova-3.12.vmdk.gz +[vhdx]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_ova-3.12.vhdx.gz +[vdi]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_ova-3.12.vdi.gz [linux]: https://github.com/home-assistant/hassio-installer -[local]: http://hassio.local:8123 +[local]: http://homeassistant.local:8123 [samba]: /addons/samba/ [ssh]: /addons/ssh/ [pi-power]: https://www.raspberrypi.org/help/faqs/#powerReqs -[hassio-vm]: /blog/2017/11/29/hassio-virtual-machine/ [configure]: /getting-started/configuration/ diff --git a/source/hassio/installing_third_party_addons.markdown b/source/hassio/installing_third_party_addons.markdown index 21310ad6a68d..fd812d71cb9d 100644 --- a/source/hassio/installing_third_party_addons.markdown +++ b/source/hassio/installing_third_party_addons.markdown @@ -3,7 +3,7 @@ title: "Installing third-party add-ons" description: "Instructions on how to get started using third-party add-ons." --- -Hass.io allows anyone to create add-on repositories to share their add-ons for Hass.io easily. To try this locally, you can use our example add-on repository at +Home Assistant allows anyone to create add-on repositories to share their add-ons easily. To try this locally, you can use our example add-on repository at ```text https://github.com/home-assistant/hassio-addons-example @@ -15,7 +15,7 @@ Home Assistant cannot guarantee the quality or security of third-party add-ons.

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

    @@ -25,4 +25,4 @@ Add the URL of the repository and then press "Add". A new card for the repositor ### Help: Repository is not showing up -If you have added a repository, but it's not showing up, it means that the repository contains invalid configuration. Go to the Hass.io panel and then the System tab to find the System log. It should tell you what went wrong. Report this information to the repository author. +If you have added a repository, but it's not showing up, it means that the repository contains invalid configuration. Go to the Supervisor panel and then the System tab to find the System log. It should tell you what went wrong. Report this information to the repository author. diff --git a/source/hassio/zwave.markdown b/source/hassio/zwave.markdown index 23dd5da322d8..9499c3922c1c 100644 --- a/source/hassio/zwave.markdown +++ b/source/hassio/zwave.markdown @@ -12,7 +12,8 @@ zwave: ## RAZBERRY BOARD -If you need GPIO on Raspberry Pi 3 for your Z-Wave module, add the following line into `config.txt` (you have to access that on the SD card directly. Simply plug it into your PC and edit it there. The `config.txt` is not accessible from your Hass.io system, you may need to open the SD card on a Windows or Linux system.): +If you need GPIO on Raspberry Pi 3 for your Z-Wave module, add the following line into `config.txt` (you have to access that on the SD card directly. Simply plug it into your PC and edit it there. +The `config.txt` is not accessible from the Home Assistant Operating System, you may need to open the SD card on a Windows or Linux system.: ```txt dtoverlay=pi3-miniuart-bt @@ -50,13 +51,13 @@ systemctl disable ModemManager.service ### Finding the path -If the above defaults don't work, you can check what hardware has been found using the [`hassio` command](/hassio/commandline/#hardware): +If the above defaults don't work, you can check what hardware has been found using the [`ha` command](/hassio/commandline/#hardware): ```bash -$ hassio hardware info +ha hardware info ``` -Or you can use the UI and look in the *System* section of the *Hass.io* menu. There you'll find a *Hardware* button which will list all the hardware found. +Or you can use the UI and look in the *System* section of the *Supervisor* menu. There you'll find a *Hardware* button which will list all the hardware found. ## Further reading diff --git a/source/help/trivia.markdown b/source/help/trivia.markdown index bd67e3b2bc1e..094b1e4762a5 100644 --- a/source/help/trivia.markdown +++ b/source/help/trivia.markdown @@ -6,36 +6,36 @@ sidebar: false This page contains only irrelevant and unhelpful information about Home Assistant. If you are going to prepare a talk about Home Assistant, perhaps some information mentioned here can be used for the intro. -### Name +## Name Isn't it obvious? Home Assistant is the good soul that is assisting you in your home. It's common to refer to Home Assistant simply as HA or `hass` (not to be confused with the German word "Hass", it's more like the abbreviation of **H**ome **A**ssistant **S**erver **S**ervice). [`hass`](/docs/tools/hass/) is also the name of the command-line part. -### Website +## Website The website [https://www.home-assistant.io](/) was launched on December 18, 2014 and contains documentation about the setup process, the platforms and integrations, and for the developers. -### Logo +## Logo The current logo was created by [Jeremy Geltman](http://jeremygeltman.com/). Further details can be found in the [announcement](/blog/2015/03/08/new-logo/). -### License +## License Home Assistant is open source software and available under the [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) license. -### Numbers +## Numbers This sections just contains some random numbers of the Home Assistant eco-system. Sorry, only the main repository counts. -| Description | 2015 | 2016 | 2017 | -|---|---| -| [Forum posts](https://community.home-assistant.io/) | 352 | 33004 | 171981 | -| [Forum topics](https://community.home-assistant.io/) | 83 | 4863 | 21512 | -| [Forum members](https://community.home-assistant.io/) | 92 | 3931 | 16663 | -| [Github stars](https://github.com/home-assistant/home-assistant/stargazers) | 2519 | 5239 | 12074 | -| [Github forks](https://github.com/home-assistant/home-assistant/network) | 374 | 1424 | 3474 | -| Page views [ha.io](/) | 600,372 | 6,614,343 | 23,727,481 | +| Description | 2015 | 2016 | 2017 | +| --------------------------------------------------------------------------- | ------- | --------- | ---------- | +| [Forum posts](https://community.home-assistant.io/) | 352 | 33004 | 171981 | +| [Forum topics](https://community.home-assistant.io/) | 83 | 4863 | 21512 | +| [Forum members](https://community.home-assistant.io/) | 92 | 3931 | 16663 | +| [GitHub stars](https://github.com/home-assistant/home-assistant/stargazers) | 2519 | 5239 | 12074 | +| [GitHub forks](https://github.com/home-assistant/home-assistant/network) | 374 | 1424 | 3474 | +| Page views [ha.io](/) | 600,372 | 6,614,343 | 23,727,481 | -### Commit per year +## Commit per year The numbers below only covers the [main git repository](https://github.com/home-assistant/home-assistant/) and doesn't take the helpers ([home-assistant.io](https://github.com/home-assistant/home-assistant.io), [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer), etc.) into account. @@ -47,13 +47,13 @@ The numbers below only covers the [main git repository](https://github.com/home- 2017: 3917 ``` -More details and statistics can be found on [Github](https://github.com/home-assistant/home-assistant/graphs/contributors). +More details and statistics can be found on [GitHub](https://github.com/home-assistant/home-assistant/graphs/contributors). -### First commit +## First commit The first commit in `git` was made on Sep 17, 2013 by [Paulus Schoutsen](https://github.com/balloob). -```bash +```txt commit d55e4d53cccc9123d03f45c53441e7cbfc58e515 Author: Paulus Schoutsen diff --git a/source/images/addons/addon-store.png b/source/images/addons/addon-store.png new file mode 100644 index 000000000000..f949208c97f5 Binary files /dev/null and b/source/images/addons/addon-store.png differ diff --git a/source/images/architecture/architecture-remote.png b/source/images/architecture/architecture-remote.png deleted file mode 100644 index 3d9b3cb2a5c9..000000000000 Binary files a/source/images/architecture/architecture-remote.png and /dev/null differ diff --git a/source/images/architecture/component_interaction.png b/source/images/architecture/component_interaction.png deleted file mode 100644 index a5f2a7a1825d..000000000000 Binary files a/source/images/architecture/component_interaction.png and /dev/null differ diff --git a/source/images/architecture/ha_architecture.png b/source/images/architecture/ha_architecture.png deleted file mode 100644 index ad72d0c59dd3..000000000000 Binary files a/source/images/architecture/ha_architecture.png and /dev/null differ diff --git a/source/images/architecture/ha_full_architecture.png b/source/images/architecture/ha_full_architecture.png deleted file mode 100644 index 24823eb1aab3..000000000000 Binary files a/source/images/architecture/ha_full_architecture.png and /dev/null differ diff --git a/source/images/architecture/intents.png b/source/images/architecture/intents.png deleted file mode 100644 index ac31e4af7a7e..000000000000 Binary files a/source/images/architecture/intents.png and /dev/null differ diff --git a/source/images/blog/2015-08-laundry-automation/moteino.jpg b/source/images/blog/2015-08-laundry-automation/moteino.jpg deleted file mode 100644 index 49089af872e8..000000000000 Binary files a/source/images/blog/2015-08-laundry-automation/moteino.jpg and /dev/null differ diff --git a/source/images/blog/2015-08-laundry-automation/moteino2.jpg b/source/images/blog/2015-08-laundry-automation/moteino2.jpg deleted file mode 100644 index 39e4d13c774a..000000000000 Binary files a/source/images/blog/2015-08-laundry-automation/moteino2.jpg and /dev/null differ diff --git a/source/images/blog/2015-08-laundry-automation/reed-switch.jpg b/source/images/blog/2015-08-laundry-automation/reed-switch.jpg deleted file mode 100644 index 8ded6f9f0e49..000000000000 Binary files a/source/images/blog/2015-08-laundry-automation/reed-switch.jpg and /dev/null differ diff --git a/source/images/blog/2018-12-logitech-harmony-removes-local-api/forum-post-4.png b/source/images/blog/2018-12-logitech-harmony-removes-local-api/forum-post-4.png deleted file mode 100644 index 9a0718723020..000000000000 Binary files a/source/images/blog/2018-12-logitech-harmony-removes-local-api/forum-post-4.png and /dev/null differ diff --git a/source/images/blog/2018-12-logitech-harmony-removes-local-api/vuln-timeline.png b/source/images/blog/2018-12-logitech-harmony-removes-local-api/vuln-timeline.png deleted file mode 100644 index 7681a2bbe49b..000000000000 Binary files a/source/images/blog/2018-12-logitech-harmony-removes-local-api/vuln-timeline.png and /dev/null differ diff --git a/source/images/blog/2019-11-0.102/components.png b/source/images/blog/2019-11-0.102/components.png new file mode 100644 index 000000000000..f2bebd283007 Binary files /dev/null and b/source/images/blog/2019-11-0.102/components.png differ diff --git a/source/images/blog/2019-11-0.102/thingtalk-automation.png b/source/images/blog/2019-11-0.102/thingtalk-automation.png new file mode 100644 index 000000000000..a2b0ee53668f Binary files /dev/null and b/source/images/blog/2019-11-0.102/thingtalk-automation.png differ diff --git a/source/images/blog/2019-11-state-of-the-union/ada.png b/source/images/blog/2019-11-state-of-the-union/ada.png new file mode 100644 index 000000000000..cae954b98fad Binary files /dev/null and b/source/images/blog/2019-11-state-of-the-union/ada.png differ diff --git a/source/images/blog/2019-11-state-of-the-union/almond.png b/source/images/blog/2019-11-state-of-the-union/almond.png new file mode 100644 index 000000000000..105831a01c3a Binary files /dev/null and b/source/images/blog/2019-11-state-of-the-union/almond.png differ diff --git a/source/images/blog/2019-11-state-of-the-union/octoverse.png b/source/images/blog/2019-11-state-of-the-union/octoverse.png new file mode 100644 index 000000000000..f934e826fb27 Binary files /dev/null and b/source/images/blog/2019-11-state-of-the-union/octoverse.png differ diff --git a/source/images/blog/2019-11-state-of-the-union/social.jpeg b/source/images/blog/2019-11-state-of-the-union/social.jpeg new file mode 100644 index 000000000000..807c02b7703b Binary files /dev/null and b/source/images/blog/2019-11-state-of-the-union/social.jpeg differ diff --git a/source/images/blog/2019-11-voice-assistant/almond.png b/source/images/blog/2019-11-voice-assistant/almond.png new file mode 100644 index 000000000000..7f6fe69d02cc Binary files /dev/null and b/source/images/blog/2019-11-voice-assistant/almond.png differ diff --git a/source/images/blog/2019-11-voice-assistant/overview.svg b/source/images/blog/2019-11-voice-assistant/overview.svg new file mode 100644 index 000000000000..9862215b0526 --- /dev/null +++ b/source/images/blog/2019-11-voice-assistant/overview.svg @@ -0,0 +1 @@ + diff --git a/source/images/blog/2019-11-voice-assistant/telegram.png b/source/images/blog/2019-11-voice-assistant/telegram.png new file mode 100644 index 000000000000..dc0e012fde45 Binary files /dev/null and b/source/images/blog/2019-11-voice-assistant/telegram.png differ diff --git a/source/images/blog/2019-12-0.103/automation-actions.png b/source/images/blog/2019-12-0.103/automation-actions.png new file mode 100644 index 000000000000..43db08d2cf88 Binary files /dev/null and b/source/images/blog/2019-12-0.103/automation-actions.png differ diff --git a/source/images/blog/2019-12-0.103/automation-yaml.png b/source/images/blog/2019-12-0.103/automation-yaml.png new file mode 100644 index 000000000000..5dd796667fb9 Binary files /dev/null and b/source/images/blog/2019-12-0.103/automation-yaml.png differ diff --git a/source/images/blog/2019-12-0.103/components.png b/source/images/blog/2019-12-0.103/components.png new file mode 100644 index 000000000000..dc23c3df9d14 Binary files /dev/null and b/source/images/blog/2019-12-0.103/components.png differ diff --git a/source/images/blog/2019-12-0.103/natural-language-area.png b/source/images/blog/2019-12-0.103/natural-language-area.png new file mode 100644 index 000000000000..dac43310731a Binary files /dev/null and b/source/images/blog/2019-12-0.103/natural-language-area.png differ diff --git a/source/images/blog/2019-12-hassos-release-3/blogpost.png b/source/images/blog/2019-12-hassos-release-3/blogpost.png new file mode 100644 index 000000000000..a0562dde18e2 Binary files /dev/null and b/source/images/blog/2019-12-hassos-release-3/blogpost.png differ diff --git a/source/images/blog/2019-12-home-assistant-for-everyone/social.png b/source/images/blog/2019-12-home-assistant-for-everyone/social.png new file mode 100644 index 000000000000..d0522f77aa8d Binary files /dev/null and b/source/images/blog/2019-12-home-assistant-for-everyone/social.png differ diff --git a/source/images/blog/2019-12-sonos-shutting-down-snips/post-history-screenshot.png b/source/images/blog/2019-12-sonos-shutting-down-snips/post-history-screenshot.png new file mode 100644 index 000000000000..2a133fb7f07e Binary files /dev/null and b/source/images/blog/2019-12-sonos-shutting-down-snips/post-history-screenshot.png differ diff --git a/source/images/blog/2019-12-sonos-shutting-down-snips/snips-post-1.png b/source/images/blog/2019-12-sonos-shutting-down-snips/snips-post-1.png new file mode 100644 index 000000000000..9af0b7ab9459 Binary files /dev/null and b/source/images/blog/2019-12-sonos-shutting-down-snips/snips-post-1.png differ diff --git a/source/images/blog/2019-12-sonos-shutting-down-snips/social.png b/source/images/blog/2019-12-sonos-shutting-down-snips/social.png new file mode 100644 index 000000000000..36cb978f11fc Binary files /dev/null and b/source/images/blog/2019-12-sonos-shutting-down-snips/social.png differ diff --git a/source/images/blog/2020-01-0.104/add-device-lovelace.png b/source/images/blog/2020-01-0.104/add-device-lovelace.png new file mode 100644 index 000000000000..e6bc5091e32a Binary files /dev/null and b/source/images/blog/2020-01-0.104/add-device-lovelace.png differ diff --git a/source/images/blog/2020-01-0.104/components.png b/source/images/blog/2020-01-0.104/components.png new file mode 100644 index 000000000000..b1da80eb98cd Binary files /dev/null and b/source/images/blog/2020-01-0.104/components.png differ diff --git a/source/images/blog/2020-01-0.104/entities-multi-select.png b/source/images/blog/2020-01-0.104/entities-multi-select.png new file mode 100644 index 000000000000..c43b27754091 Binary files /dev/null and b/source/images/blog/2020-01-0.104/entities-multi-select.png differ diff --git a/source/images/blog/2020-01-0.104/ignore-discovery.png b/source/images/blog/2020-01-0.104/ignore-discovery.png new file mode 100644 index 000000000000..a9398dd12852 Binary files /dev/null and b/source/images/blog/2020-01-0.104/ignore-discovery.png differ diff --git a/source/images/blog/2020-01-0.104/remove-entity.png b/source/images/blog/2020-01-0.104/remove-entity.png new file mode 100644 index 000000000000..338f189c8c6f Binary files /dev/null and b/source/images/blog/2020-01-0.104/remove-entity.png differ diff --git a/source/images/blog/2020-01-0.104/remove-lovelace-config.png b/source/images/blog/2020-01-0.104/remove-lovelace-config.png new file mode 100644 index 000000000000..56a5e9ecd766 Binary files /dev/null and b/source/images/blog/2020-01-0.104/remove-lovelace-config.png differ diff --git a/source/images/blog/2020-01-0.104/zha-config-panel.png b/source/images/blog/2020-01-0.104/zha-config-panel.png new file mode 100644 index 000000000000..7ce77f055406 Binary files /dev/null and b/source/images/blog/2020-01-0.104/zha-config-panel.png differ diff --git a/source/images/blog/2020-01-29-changing-the-home-assistant-brand/social.png b/source/images/blog/2020-01-29-changing-the-home-assistant-brand/social.png new file mode 100644 index 000000000000..074d7cb428d6 Binary files /dev/null and b/source/images/blog/2020-01-29-changing-the-home-assistant-brand/social.png differ diff --git a/source/images/blog/2020-01-31-community-highlights/social.png b/source/images/blog/2020-01-31-community-highlights/social.png new file mode 100644 index 000000000000..475c3c083d15 Binary files /dev/null and b/source/images/blog/2020-01-31-community-highlights/social.png differ diff --git a/source/images/blog/2020-02-0.105/components.png b/source/images/blog/2020-02-0.105/components.png new file mode 100644 index 000000000000..2628a35924f6 Binary files /dev/null and b/source/images/blog/2020-02-0.105/components.png differ diff --git a/source/images/blog/2020-02-0.105/device-info-page.png b/source/images/blog/2020-02-0.105/device-info-page.png new file mode 100644 index 000000000000..6780aaeea96b Binary files /dev/null and b/source/images/blog/2020-02-0.105/device-info-page.png differ diff --git a/source/images/blog/2020-02-0.105/entities-card-header-footer.png b/source/images/blog/2020-02-0.105/entities-card-header-footer.png new file mode 100644 index 000000000000..e4aa3f301a8a Binary files /dev/null and b/source/images/blog/2020-02-0.105/entities-card-header-footer.png differ diff --git a/source/images/blog/2020-02-0.105/out-of-control.png b/source/images/blog/2020-02-0.105/out-of-control.png new file mode 100644 index 000000000000..e856dd5fc706 Binary files /dev/null and b/source/images/blog/2020-02-0.105/out-of-control.png differ diff --git a/source/images/blog/2020-02-0.105/safe-mode.png b/source/images/blog/2020-02-0.105/safe-mode.png new file mode 100644 index 000000000000..ec19bcdd9181 Binary files /dev/null and b/source/images/blog/2020-02-0.105/safe-mode.png differ diff --git a/source/images/blog/2020-02-0.105/supervisor.png b/source/images/blog/2020-02-0.105/supervisor.png new file mode 100644 index 000000000000..ee1770c4d28b Binary files /dev/null and b/source/images/blog/2020-02-0.105/supervisor.png differ diff --git a/source/images/blog/2020-02-0.105/zone-editor.gif b/source/images/blog/2020-02-0.105/zone-editor.gif new file mode 100644 index 000000000000..e7a8ef7e8629 Binary files /dev/null and b/source/images/blog/2020-02-0.105/zone-editor.gif differ diff --git a/source/images/blog/2020-02-0.106/brightness-step-device-automation.png b/source/images/blog/2020-02-0.106/brightness-step-device-automation.png new file mode 100644 index 000000000000..74ef6732a1d0 Binary files /dev/null and b/source/images/blog/2020-02-0.106/brightness-step-device-automation.png differ diff --git a/source/images/blog/2020-02-0.106/components.png b/source/images/blog/2020-02-0.106/components.png new file mode 100644 index 000000000000..cf926590ad69 Binary files /dev/null and b/source/images/blog/2020-02-0.106/components.png differ diff --git a/source/images/blog/2020-02-0.106/entities.png b/source/images/blog/2020-02-0.106/entities.png new file mode 100644 index 000000000000..cbfecbae0199 Binary files /dev/null and b/source/images/blog/2020-02-0.106/entities.png differ diff --git a/source/images/blog/2020-02-0.106/integrations-list.png b/source/images/blog/2020-02-0.106/integrations-list.png new file mode 100644 index 000000000000..29f49a700d8d Binary files /dev/null and b/source/images/blog/2020-02-0.106/integrations-list.png differ diff --git a/source/images/blog/2020-02-0.106/more-info-person.png b/source/images/blog/2020-02-0.106/more-info-person.png new file mode 100644 index 000000000000..6e0dd9f2a4a3 Binary files /dev/null and b/source/images/blog/2020-02-0.106/more-info-person.png differ diff --git a/source/images/blog/2020-02-0.106/safe-mode-activated.png b/source/images/blog/2020-02-0.106/safe-mode-activated.png new file mode 100644 index 000000000000..b07ff3ddd181 Binary files /dev/null and b/source/images/blog/2020-02-0.106/safe-mode-activated.png differ diff --git a/source/images/blog/2020-02-0.106/sensor-card.png b/source/images/blog/2020-02-0.106/sensor-card.png new file mode 100644 index 000000000000..1a590844ddb3 Binary files /dev/null and b/source/images/blog/2020-02-0.106/sensor-card.png differ diff --git a/source/images/blog/2020-02-0.106/social.png b/source/images/blog/2020-02-0.106/social.png new file mode 100644 index 000000000000..2db0479cdef3 Binary files /dev/null and b/source/images/blog/2020-02-0.106/social.png differ diff --git a/source/images/blog/2020-02-07-community-highlights/social.png b/source/images/blog/2020-02-07-community-highlights/social.png new file mode 100644 index 000000000000..358454aef1a0 Binary files /dev/null and b/source/images/blog/2020-02-07-community-highlights/social.png differ diff --git a/source/images/blog/2020-02-19-community-highlights/social.png b/source/images/blog/2020-02-19-community-highlights/social.png new file mode 100644 index 000000000000..8b637e65b7ca Binary files /dev/null and b/source/images/blog/2020-02-19-community-highlights/social.png differ diff --git a/source/images/blog/2020-02-19-community-highlights/vscode.png b/source/images/blog/2020-02-19-community-highlights/vscode.png new file mode 100644 index 000000000000..a0f2b59d1a14 Binary files /dev/null and b/source/images/blog/2020-02-19-community-highlights/vscode.png differ diff --git a/source/images/blog/2020-02-28-community-highlights/homebyme.png b/source/images/blog/2020-02-28-community-highlights/homebyme.png new file mode 100644 index 000000000000..f0d0edc79e5b Binary files /dev/null and b/source/images/blog/2020-02-28-community-highlights/homebyme.png differ diff --git a/source/images/blog/2020-02-28-community-highlights/social.png b/source/images/blog/2020-02-28-community-highlights/social.png new file mode 100644 index 000000000000..841b721690a4 Binary files /dev/null and b/source/images/blog/2020-02-28-community-highlights/social.png differ diff --git a/source/images/blog/2020-02-android-16-17-release/garage.png b/source/images/blog/2020-02-android-16-17-release/garage.png new file mode 100644 index 000000000000..c5e72d3bdbde Binary files /dev/null and b/source/images/blog/2020-02-android-16-17-release/garage.png differ diff --git a/source/images/blog/2020-03-0.106.3/components.png b/source/images/blog/2020-03-0.106.3/components.png new file mode 100644 index 000000000000..1681b1eb51e7 Binary files /dev/null and b/source/images/blog/2020-03-0.106.3/components.png differ diff --git a/source/images/blog/2020-03-0.106.3/screenshot.png b/source/images/blog/2020-03-0.106.3/screenshot.png new file mode 100644 index 000000000000..9b5317b2baec Binary files /dev/null and b/source/images/blog/2020-03-0.106.3/screenshot.png differ diff --git a/source/images/blog/2020-03-0.106.3/social.png b/source/images/blog/2020-03-0.106.3/social.png new file mode 100644 index 000000000000..b288f739d172 Binary files /dev/null and b/source/images/blog/2020-03-0.106.3/social.png differ diff --git a/source/images/blog/2020-03-0.107/components.png b/source/images/blog/2020-03-0.107/components.png new file mode 100644 index 000000000000..adfc60c73151 Binary files /dev/null and b/source/images/blog/2020-03-0.107/components.png differ diff --git a/source/images/blog/2020-03-0.107/helper-config-dialog.png b/source/images/blog/2020-03-0.107/helper-config-dialog.png new file mode 100644 index 000000000000..0dafdccb08e7 Binary files /dev/null and b/source/images/blog/2020-03-0.107/helper-config-dialog.png differ diff --git a/source/images/blog/2020-03-0.107/lovelace-config-panel.png b/source/images/blog/2020-03-0.107/lovelace-config-panel.png new file mode 100644 index 000000000000..fc52df435814 Binary files /dev/null and b/source/images/blog/2020-03-0.107/lovelace-config-panel.png differ diff --git a/source/images/blog/2020-03-0.107/lovelace-edit-improvements.gif b/source/images/blog/2020-03-0.107/lovelace-edit-improvements.gif new file mode 100644 index 000000000000..97d31b83a494 Binary files /dev/null and b/source/images/blog/2020-03-0.107/lovelace-edit-improvements.gif differ diff --git a/source/images/blog/2020-03-0.107/new-media-control-card.png b/source/images/blog/2020-03-0.107/new-media-control-card.png new file mode 100644 index 000000000000..ef66f484c245 Binary files /dev/null and b/source/images/blog/2020-03-0.107/new-media-control-card.png differ diff --git a/source/images/blog/2020-03-0.107/social.png b/source/images/blog/2020-03-0.107/social.png new file mode 100644 index 000000000000..785cd8ea5784 Binary files /dev/null and b/source/images/blog/2020-03-0.107/social.png differ diff --git a/source/images/blog/2020-03-15-community-highlights/marine-aquariums.png b/source/images/blog/2020-03-15-community-highlights/marine-aquariums.png new file mode 100644 index 000000000000..e75dc5fbbc8a Binary files /dev/null and b/source/images/blog/2020-03-15-community-highlights/marine-aquariums.png differ diff --git a/source/images/blog/2020-03-15-community-highlights/social.png b/source/images/blog/2020-03-15-community-highlights/social.png new file mode 100644 index 000000000000..49a54df6ef11 Binary files /dev/null and b/source/images/blog/2020-03-15-community-highlights/social.png differ diff --git a/source/images/blog/ha-logo-material-big.png b/source/images/blog/ha-logo-material-big.png deleted file mode 100644 index 1f8038342902..000000000000 Binary files a/source/images/blog/ha-logo-material-big.png and /dev/null differ diff --git a/source/images/blog/ha-logo-material-small.png b/source/images/blog/ha-logo-material-small.png deleted file mode 100644 index aaab575401bc..000000000000 Binary files a/source/images/blog/ha-logo-material-small.png and /dev/null differ diff --git a/source/images/blog/ha-logo-original.png b/source/images/blog/ha-logo-original.png deleted file mode 100644 index 67eed19efc4c..000000000000 Binary files a/source/images/blog/ha-logo-original.png and /dev/null differ diff --git a/source/images/docs/scenes/editor.png b/source/images/docs/scenes/editor.png new file mode 100644 index 000000000000..168f48b012b4 Binary files /dev/null and b/source/images/docs/scenes/editor.png differ diff --git a/source/images/docs/scripts/sun-conditions-source.ods b/source/images/docs/scripts/sun-conditions-source.ods deleted file mode 100644 index 444793e1a77d..000000000000 Binary files a/source/images/docs/scripts/sun-conditions-source.ods and /dev/null differ diff --git a/source/images/frontend/choose-language.png b/source/images/frontend/choose-language.png deleted file mode 100644 index fc9beab263b2..000000000000 Binary files a/source/images/frontend/choose-language.png and /dev/null differ diff --git a/source/images/frontend/choose-theme.png b/source/images/frontend/choose-theme.png deleted file mode 100644 index dd1f4d4968f9..000000000000 Binary files a/source/images/frontend/choose-theme.png and /dev/null differ diff --git a/source/images/frontend/frontend-badges.png b/source/images/frontend/frontend-badges.png deleted file mode 100644 index 4f26b007cec1..000000000000 Binary files a/source/images/frontend/frontend-badges.png and /dev/null differ diff --git a/source/images/frontend/frontend-cards.png b/source/images/frontend/frontend-cards.png deleted file mode 100644 index ea46cb17bf6b..000000000000 Binary files a/source/images/frontend/frontend-cards.png and /dev/null differ diff --git a/source/images/frontend/frontend-cards1.png b/source/images/frontend/frontend-cards1.png deleted file mode 100644 index b2bec716533f..000000000000 Binary files a/source/images/frontend/frontend-cards1.png and /dev/null differ diff --git a/source/images/frontend/frontend-more-info-light.png b/source/images/frontend/frontend-more-info-light.png deleted file mode 100644 index 5b4d6d482e10..000000000000 Binary files a/source/images/frontend/frontend-more-info-light.png and /dev/null differ diff --git a/source/images/frontpage/netlify.svg b/source/images/frontpage/netlify.svg new file mode 100644 index 000000000000..25a6c275d315 --- /dev/null +++ b/source/images/frontpage/netlify.svg @@ -0,0 +1,22 @@ + + + + netlify-callout-vertical-color-bg + Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/images/frontpage/sotu2019-paulus.jpeg b/source/images/frontpage/sotu2019-paulus.jpeg new file mode 100644 index 000000000000..98f79444b627 Binary files /dev/null and b/source/images/frontpage/sotu2019-paulus.jpeg differ diff --git a/source/images/frontpage/sotu2019.png b/source/images/frontpage/sotu2019.png deleted file mode 100644 index a53990a5fa5a..000000000000 Binary files a/source/images/frontpage/sotu2019.png and /dev/null differ diff --git a/source/images/getting-started/action.png b/source/images/getting-started/action.png new file mode 100644 index 000000000000..713984285ec5 Binary files /dev/null and b/source/images/getting-started/action.png differ diff --git a/source/images/getting-started/automation-editor.png b/source/images/getting-started/automation-editor.png new file mode 100644 index 000000000000..75c95333a669 Binary files /dev/null and b/source/images/getting-started/automation-editor.png differ diff --git a/source/images/getting-started/automation-new-action.png b/source/images/getting-started/automation-new-action.png deleted file mode 100644 index bd87cdf0fe11..000000000000 Binary files a/source/images/getting-started/automation-new-action.png and /dev/null differ diff --git a/source/images/getting-started/automation-new-blank.png b/source/images/getting-started/automation-new-blank.png deleted file mode 100644 index adc63eaba9a6..000000000000 Binary files a/source/images/getting-started/automation-new-blank.png and /dev/null differ diff --git a/source/images/getting-started/automation-new-name-trigger.png b/source/images/getting-started/automation-new-name-trigger.png deleted file mode 100644 index 1633c64978c3..000000000000 Binary files a/source/images/getting-started/automation-new-name-trigger.png and /dev/null differ diff --git a/source/images/getting-started/devices.png b/source/images/getting-started/devices.png new file mode 100644 index 000000000000..e8221e31f52f Binary files /dev/null and b/source/images/getting-started/devices.png differ diff --git a/source/images/getting-started/integrations.png b/source/images/getting-started/integrations.png index d582d25eb5d0..726ef48d1438 100644 Binary files a/source/images/getting-started/integrations.png and b/source/images/getting-started/integrations.png differ diff --git a/source/images/getting-started/location.png b/source/images/getting-started/location.png new file mode 100644 index 000000000000..2ab3f2ea87cb Binary files /dev/null and b/source/images/getting-started/location.png differ diff --git a/source/images/getting-started/lovelace.png b/source/images/getting-started/lovelace.png new file mode 100644 index 000000000000..502e224853bf Binary files /dev/null and b/source/images/getting-started/lovelace.png differ diff --git a/source/images/getting-started/new-automation.png b/source/images/getting-started/new-automation.png new file mode 100644 index 000000000000..b2766bdd2b53 Binary files /dev/null and b/source/images/getting-started/new-automation.png differ diff --git a/source/images/getting-started/new-trigger.png b/source/images/getting-started/new-trigger.png new file mode 100644 index 000000000000..442e0d6cd323 Binary files /dev/null and b/source/images/getting-started/new-trigger.png differ diff --git a/source/images/getting-started/username.png b/source/images/getting-started/username.png new file mode 100644 index 000000000000..eda8ed37fc6d Binary files /dev/null and b/source/images/getting-started/username.png differ diff --git a/source/images/gravatar.jpg b/source/images/gravatar.jpg deleted file mode 100644 index 85fa115eac71..000000000000 Binary files a/source/images/gravatar.jpg and /dev/null differ diff --git a/source/images/hadashboard/alarm_panel.png b/source/images/hadashboard/alarm_panel.png deleted file mode 100644 index 35c741af0821..000000000000 Binary files a/source/images/hadashboard/alarm_panel.png and /dev/null differ diff --git a/source/images/hassio/architecture.png b/source/images/hassio/architecture.png deleted file mode 100644 index 098d4bd68266..000000000000 Binary files a/source/images/hassio/architecture.png and /dev/null differ diff --git a/source/images/hassio/screenshots/addon-hass-configurator.png b/source/images/hassio/screenshots/addon-hass-configurator.png deleted file mode 100644 index 7fa3d7f3c8d7..000000000000 Binary files a/source/images/hassio/screenshots/addon-hass-configurator.png and /dev/null differ diff --git a/source/images/hassio/screenshots/local_repository.png b/source/images/hassio/screenshots/local_repository.png deleted file mode 100644 index a924efbab587..000000000000 Binary files a/source/images/hassio/screenshots/local_repository.png and /dev/null differ diff --git a/source/images/hassio/tutorial/addon_hello_world_logs.png b/source/images/hassio/tutorial/addon_hello_world_logs.png deleted file mode 100644 index 70930d4ad630..000000000000 Binary files a/source/images/hassio/tutorial/addon_hello_world_logs.png and /dev/null differ diff --git a/source/images/hassio/tutorial/python3-http-server.png b/source/images/hassio/tutorial/python3-http-server.png deleted file mode 100644 index 80f1bd1754d9..000000000000 Binary files a/source/images/hassio/tutorial/python3-http-server.png and /dev/null differ diff --git a/source/images/hassio/tutorial/samba.png b/source/images/hassio/tutorial/samba.png deleted file mode 100644 index 1b8866cd600f..000000000000 Binary files a/source/images/hassio/tutorial/samba.png and /dev/null differ diff --git a/source/images/hassio/tutorial/ssh.png b/source/images/hassio/tutorial/ssh.png deleted file mode 100644 index 4a67db29b654..000000000000 Binary files a/source/images/hassio/tutorial/ssh.png and /dev/null differ diff --git a/source/images/home-assistant-logo-2164x2164.png b/source/images/home-assistant-logo-2164x2164.png deleted file mode 100644 index fd8067e1e1d9..000000000000 Binary files a/source/images/home-assistant-logo-2164x2164.png and /dev/null differ diff --git a/source/images/integrations/alexa/alexa_app_doorbell_announcement.png b/source/images/integrations/alexa/alexa_app_doorbell_announcement.png new file mode 100644 index 000000000000..538dfbef5e3e Binary files /dev/null and b/source/images/integrations/alexa/alexa_app_doorbell_announcement.png differ diff --git a/source/images/integrations/alexa/alexa_app_garage_door_pin.png b/source/images/integrations/alexa/alexa_app_garage_door_pin.png new file mode 100644 index 000000000000..f13dc78de655 Binary files /dev/null and b/source/images/integrations/alexa/alexa_app_garage_door_pin.png differ diff --git a/source/images/integrations/alexa/alexa_app_person_detection.png b/source/images/integrations/alexa/alexa_app_person_detection.png new file mode 100644 index 000000000000..85fd22d720a2 Binary files /dev/null and b/source/images/integrations/alexa/alexa_app_person_detection.png differ diff --git a/source/images/integrations/alexa/alexa_app_security_system_pin.png b/source/images/integrations/alexa/alexa_app_security_system_pin.png new file mode 100644 index 000000000000..909cabb7eb23 Binary files /dev/null and b/source/images/integrations/alexa/alexa_app_security_system_pin.png differ diff --git a/source/images/integrations/almond/almond-architecture.svg b/source/images/integrations/almond/almond-architecture.svg new file mode 100644 index 000000000000..1d60a27fb343 --- /dev/null +++ b/source/images/integrations/almond/almond-architecture.svg @@ -0,0 +1 @@ + diff --git a/source/images/integrations/amcrest/amcrest_ptz.jpg b/source/images/integrations/amcrest/amcrest_ptz.jpg new file mode 100644 index 000000000000..3e925340ceb1 Binary files /dev/null and b/source/images/integrations/amcrest/amcrest_ptz.jpg differ diff --git a/source/images/integrations/apple_tv/authenticate.png b/source/images/integrations/apple_tv/authenticate.png deleted file mode 100644 index e5695da2cdea..000000000000 Binary files a/source/images/integrations/apple_tv/authenticate.png and /dev/null differ diff --git a/source/images/integrations/apple_tv/credentials.png b/source/images/integrations/apple_tv/credentials.png deleted file mode 100644 index 586c82263b07..000000000000 Binary files a/source/images/integrations/apple_tv/credentials.png and /dev/null differ diff --git a/source/images/integrations/calendar/todoist-108x108.png b/source/images/integrations/calendar/todoist-108x108.png deleted file mode 100644 index 31ddfc5481b8..000000000000 Binary files a/source/images/integrations/calendar/todoist-108x108.png and /dev/null differ diff --git a/source/images/integrations/calendar/todoist-512x512.png b/source/images/integrations/calendar/todoist-512x512.png deleted file mode 100644 index 37adcda6ab40..000000000000 Binary files a/source/images/integrations/calendar/todoist-512x512.png and /dev/null differ diff --git a/source/images/integrations/geonetnz_volcano/map.png b/source/images/integrations/geonetnz_volcano/map.png new file mode 100644 index 000000000000..b27733b30b9e Binary files /dev/null and b/source/images/integrations/geonetnz_volcano/map.png differ diff --git a/source/images/integrations/geonetnz_volcano/sensor.png b/source/images/integrations/geonetnz_volcano/sensor.png new file mode 100644 index 000000000000..1182a96600a3 Binary files /dev/null and b/source/images/integrations/geonetnz_volcano/sensor.png differ diff --git a/source/images/integrations/surepetcare/spc_ids.png b/source/images/integrations/surepetcare/spc_ids.png new file mode 100644 index 000000000000..75a6d473b076 Binary files /dev/null and b/source/images/integrations/surepetcare/spc_ids.png differ diff --git a/source/images/ios/NotificationActionFlow.png b/source/images/ios/NotificationActionFlow.png deleted file mode 100644 index d540608f59e6..000000000000 Binary files a/source/images/ios/NotificationActionFlow.png and /dev/null differ diff --git a/source/images/ios/PushNotificationLayout.png b/source/images/ios/PushNotificationLayout.png deleted file mode 100644 index d9f2998dd9b0..000000000000 Binary files a/source/images/ios/PushNotificationLayout.png and /dev/null differ diff --git a/source/images/ios/attachment.png b/source/images/ios/attachment.png deleted file mode 100644 index c62aab734d5e..000000000000 Binary files a/source/images/ios/attachment.png and /dev/null differ diff --git a/source/images/ios/control1.png b/source/images/ios/control1.png deleted file mode 100644 index 1cbb53092b81..000000000000 Binary files a/source/images/ios/control1.png and /dev/null differ diff --git a/source/images/ios/control2.png b/source/images/ios/control2.png deleted file mode 100644 index a5a728fd805e..000000000000 Binary files a/source/images/ios/control2.png and /dev/null differ diff --git a/source/images/ios/expanded_attachment.png b/source/images/ios/expanded_attachment.png deleted file mode 100644 index f2c632caa69e..000000000000 Binary files a/source/images/ios/expanded_attachment.png and /dev/null differ diff --git a/source/images/isy994/isy994_SensorExample.png b/source/images/isy994/isy994_SensorExample.png deleted file mode 100644 index 7802c7b2f7c3..000000000000 Binary files a/source/images/isy994/isy994_SensorExample.png and /dev/null differ diff --git a/source/images/isy994/isy994_SensorStatusExample.png b/source/images/isy994/isy994_SensorStatusExample.png deleted file mode 100644 index 96f8a27a95ea..000000000000 Binary files a/source/images/isy994/isy994_SensorStatusExample.png and /dev/null differ diff --git a/source/images/isy994/isy994_SwitchExample.png b/source/images/isy994/isy994_SwitchExample.png deleted file mode 100644 index 7a925c04a346..000000000000 Binary files a/source/images/isy994/isy994_SwitchExample.png and /dev/null differ diff --git a/source/images/lovelace/header-footer/balloons-header.png b/source/images/lovelace/header-footer/balloons-header.png new file mode 100644 index 000000000000..b33e63fb5b89 Binary files /dev/null and b/source/images/lovelace/header-footer/balloons-header.png differ diff --git a/source/images/lovelace/header-footer/graph.png b/source/images/lovelace/header-footer/graph.png new file mode 100644 index 000000000000..8e529cb6cc1e Binary files /dev/null and b/source/images/lovelace/header-footer/graph.png differ diff --git a/source/images/lovelace/header-footer/screenshot-picture-buttons.png b/source/images/lovelace/header-footer/screenshot-picture-buttons.png new file mode 100644 index 000000000000..784056e0a3d5 Binary files /dev/null and b/source/images/lovelace/header-footer/screenshot-picture-buttons.png differ diff --git a/source/images/lovelace/lovelace_glance_card_custom_title.png b/source/images/lovelace/lovelace_glance_card_custom_title.png deleted file mode 100644 index a884b960cc4e..000000000000 Binary files a/source/images/lovelace/lovelace_glance_card_custom_title.png and /dev/null differ diff --git a/source/images/lovelace/lovelace_mediaplayer.png b/source/images/lovelace/lovelace_mediaplayer.png index fcdccde36da2..c8476106141f 100644 Binary files a/source/images/lovelace/lovelace_mediaplayer.png and b/source/images/lovelace/lovelace_mediaplayer.png differ diff --git a/source/images/lovelace/lovelace_plant.png b/source/images/lovelace/lovelace_plant.png deleted file mode 100644 index 4e0af04ecc67..000000000000 Binary files a/source/images/lovelace/lovelace_plant.png and /dev/null differ diff --git a/source/images/lovelace/lovelace_sensor.png b/source/images/lovelace/lovelace_sensor.png index a3a0fa824887..fc8b83b5c267 100644 Binary files a/source/images/lovelace/lovelace_sensor.png and b/source/images/lovelace/lovelace_sensor.png differ diff --git a/source/images/lovelace/lovelace_unused_entites.png b/source/images/lovelace/lovelace_unused_entites.png deleted file mode 100644 index 75d175364f83..000000000000 Binary files a/source/images/lovelace/lovelace_unused_entites.png and /dev/null differ diff --git a/source/images/screenshots/android-homescreen-guide.gif b/source/images/screenshots/android-homescreen-guide.gif deleted file mode 100644 index 659907a1122e..000000000000 Binary files a/source/images/screenshots/android-homescreen-guide.gif and /dev/null differ diff --git a/source/images/screenshots/blink_example_frontend.png b/source/images/screenshots/blink_example_frontend.png deleted file mode 100644 index 65038448602b..000000000000 Binary files a/source/images/screenshots/blink_example_frontend.png and /dev/null differ diff --git a/source/images/screenshots/create-component01.png b/source/images/screenshots/create-component01.png deleted file mode 100644 index 44b5bc034572..000000000000 Binary files a/source/images/screenshots/create-component01.png and /dev/null differ diff --git a/source/images/screenshots/developer-tool-events-icon.png b/source/images/screenshots/developer-tool-events-icon.png deleted file mode 100644 index 12df27e4c0a9..000000000000 Binary files a/source/images/screenshots/developer-tool-events-icon.png and /dev/null differ diff --git a/source/images/screenshots/developer-tool-mqtt-icon.png b/source/images/screenshots/developer-tool-mqtt-icon.png deleted file mode 100644 index e7783d7836a8..000000000000 Binary files a/source/images/screenshots/developer-tool-mqtt-icon.png and /dev/null differ diff --git a/source/images/screenshots/gdacs-alerts-feed-map.png b/source/images/screenshots/gdacs-alerts-feed-map.png new file mode 100644 index 000000000000..906f8b8f515a Binary files /dev/null and b/source/images/screenshots/gdacs-alerts-feed-map.png differ diff --git a/source/images/screenshots/gdacs-alerts-sensor.png b/source/images/screenshots/gdacs-alerts-sensor.png new file mode 100644 index 000000000000..ff00f6e8cba6 Binary files /dev/null and b/source/images/screenshots/gdacs-alerts-sensor.png differ diff --git a/source/images/screenshots/group-views.png b/source/images/screenshots/group-views.png deleted file mode 100644 index 60232b2d7929..000000000000 Binary files a/source/images/screenshots/group-views.png and /dev/null differ diff --git a/source/images/screenshots/hello-world-state-card.png b/source/images/screenshots/hello-world-state-card.png deleted file mode 100644 index ad375e963b8c..000000000000 Binary files a/source/images/screenshots/hello-world-state-card.png and /dev/null differ diff --git a/source/images/screenshots/instapush.png b/source/images/screenshots/instapush.png deleted file mode 100644 index 4043186d6476..000000000000 Binary files a/source/images/screenshots/instapush.png and /dev/null differ diff --git a/source/images/screenshots/jupyter-graph.png b/source/images/screenshots/jupyter-graph.png deleted file mode 100644 index 9740213a44f5..000000000000 Binary files a/source/images/screenshots/jupyter-graph.png and /dev/null differ diff --git a/source/images/screenshots/jupyter-notebook.png b/source/images/screenshots/jupyter-notebook.png deleted file mode 100644 index 04ca37e8290d..000000000000 Binary files a/source/images/screenshots/jupyter-notebook.png and /dev/null differ diff --git a/source/images/screenshots/more-info-dialog-light.png b/source/images/screenshots/more-info-dialog-light.png deleted file mode 100644 index 855fb6b45598..000000000000 Binary files a/source/images/screenshots/more-info-dialog-light.png and /dev/null differ diff --git a/source/images/screenshots/netatmo_module.png b/source/images/screenshots/netatmo_module.png deleted file mode 100644 index eb4d477a0a95..000000000000 Binary files a/source/images/screenshots/netatmo_module.png and /dev/null differ diff --git a/source/images/screenshots/nextcloud-sample-sensor.png b/source/images/screenshots/nextcloud-sample-sensor.png new file mode 100644 index 000000000000..dcb30a000a4c Binary files /dev/null and b/source/images/screenshots/nextcloud-sample-sensor.png differ diff --git a/source/images/screenshots/plex-configure.png b/source/images/screenshots/plex-configure.png deleted file mode 100644 index e360493e35c4..000000000000 Binary files a/source/images/screenshots/plex-configure.png and /dev/null differ diff --git a/source/images/screenshots/plex-token.png b/source/images/screenshots/plex-token.png deleted file mode 100644 index 970b1c654155..000000000000 Binary files a/source/images/screenshots/plex-token.png and /dev/null differ diff --git a/source/images/supported_brands/17track.png b/source/images/supported_brands/17track.png deleted file mode 100644 index 1d60660ea0ca..000000000000 Binary files a/source/images/supported_brands/17track.png and /dev/null differ diff --git a/source/images/supported_brands/HERE_logo.svg b/source/images/supported_brands/HERE_logo.svg deleted file mode 100644 index 3604dac7874d..000000000000 --- a/source/images/supported_brands/HERE_logo.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - diff --git a/source/images/supported_brands/Ryobi.png b/source/images/supported_brands/Ryobi.png deleted file mode 100644 index a6d2f081d159..000000000000 Binary files a/source/images/supported_brands/Ryobi.png and /dev/null differ diff --git a/source/images/supported_brands/abode.jpg b/source/images/supported_brands/abode.jpg deleted file mode 100644 index e72c4d7be5f9..000000000000 Binary files a/source/images/supported_brands/abode.jpg and /dev/null differ diff --git a/source/images/supported_brands/acer.png b/source/images/supported_brands/acer.png deleted file mode 100644 index 83d4b9147b58..000000000000 Binary files a/source/images/supported_brands/acer.png and /dev/null differ diff --git a/source/images/supported_brands/adguard.png b/source/images/supported_brands/adguard.png deleted file mode 100644 index 6bfd89b7b663..000000000000 Binary files a/source/images/supported_brands/adguard.png and /dev/null differ diff --git a/source/images/supported_brands/afraid_freedns.png b/source/images/supported_brands/afraid_freedns.png deleted file mode 100644 index 6355b00182f1..000000000000 Binary files a/source/images/supported_brands/afraid_freedns.png and /dev/null differ diff --git a/source/images/supported_brands/aftership.png b/source/images/supported_brands/aftership.png deleted file mode 100644 index 61bbca6f40a0..000000000000 Binary files a/source/images/supported_brands/aftership.png and /dev/null differ diff --git a/source/images/supported_brands/airly.png b/source/images/supported_brands/airly.png deleted file mode 100644 index dd6cc4685fd0..000000000000 Binary files a/source/images/supported_brands/airly.png and /dev/null differ diff --git a/source/images/supported_brands/airvisual.jpg b/source/images/supported_brands/airvisual.jpg deleted file mode 100644 index c809df0b201f..000000000000 Binary files a/source/images/supported_brands/airvisual.jpg and /dev/null differ diff --git a/source/images/supported_brands/alarmdotcom.png b/source/images/supported_brands/alarmdotcom.png deleted file mode 100644 index cc94de3a537a..000000000000 Binary files a/source/images/supported_brands/alarmdotcom.png and /dev/null differ diff --git a/source/images/supported_brands/almond.png b/source/images/supported_brands/almond.png new file mode 100644 index 000000000000..dfad22dcda7d Binary files /dev/null and b/source/images/supported_brands/almond.png differ diff --git a/source/images/supported_brands/android_ip_webcam.png b/source/images/supported_brands/android_ip_webcam.png deleted file mode 100644 index d9f6e6f5d2f1..000000000000 Binary files a/source/images/supported_brands/android_ip_webcam.png and /dev/null differ diff --git a/source/images/supported_brands/androidtv.png b/source/images/supported_brands/androidtv.png deleted file mode 100644 index b98653066dae..000000000000 Binary files a/source/images/supported_brands/androidtv.png and /dev/null differ diff --git a/source/images/supported_brands/apache_kafka.png b/source/images/supported_brands/apache_kafka.png deleted file mode 100644 index 6e22be0279c1..000000000000 Binary files a/source/images/supported_brands/apache_kafka.png and /dev/null differ diff --git a/source/images/supported_brands/apple-homekit.png b/source/images/supported_brands/apple-homekit.png deleted file mode 100644 index 8261f4b5c2d4..000000000000 Binary files a/source/images/supported_brands/apple-homekit.png and /dev/null differ diff --git a/source/images/supported_brands/apprise.png b/source/images/supported_brands/apprise.png deleted file mode 100644 index 6dc869a1aeab..000000000000 Binary files a/source/images/supported_brands/apprise.png and /dev/null differ diff --git a/source/images/supported_brands/aprs.png b/source/images/supported_brands/aprs.png deleted file mode 100644 index 0bb10adb6cba..000000000000 Binary files a/source/images/supported_brands/aprs.png and /dev/null differ diff --git a/source/images/supported_brands/arcam.svg b/source/images/supported_brands/arcam.svg deleted file mode 100644 index 849787cebeb7..000000000000 --- a/source/images/supported_brands/arcam.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/source/images/supported_brands/aten.png b/source/images/supported_brands/aten.png new file mode 100644 index 000000000000..44b1f7f29d81 Binary files /dev/null and b/source/images/supported_brands/aten.png differ diff --git a/source/images/supported_brands/avahi.png b/source/images/supported_brands/avahi.png deleted file mode 100644 index ebf1d777147a..000000000000 Binary files a/source/images/supported_brands/avahi.png and /dev/null differ diff --git a/source/images/supported_brands/avm.png b/source/images/supported_brands/avm.png deleted file mode 100644 index 94dd3d412623..000000000000 Binary files a/source/images/supported_brands/avm.png and /dev/null differ diff --git a/source/images/supported_brands/avri.jpeg b/source/images/supported_brands/avri.jpeg new file mode 100644 index 000000000000..08066f8c5db0 Binary files /dev/null and b/source/images/supported_brands/avri.jpeg differ diff --git a/source/images/supported_brands/awair.jpg b/source/images/supported_brands/awair.jpg deleted file mode 100644 index 6f1b0d9c125c..000000000000 Binary files a/source/images/supported_brands/awair.jpg and /dev/null differ diff --git a/source/images/supported_brands/aws.png b/source/images/supported_brands/aws.png deleted file mode 100644 index 5417dcde712b..000000000000 Binary files a/source/images/supported_brands/aws.png and /dev/null differ diff --git a/source/images/supported_brands/azure_event_hub.svg b/source/images/supported_brands/azure_event_hub.svg deleted file mode 100644 index 6e57c82f82cd..000000000000 --- a/source/images/supported_brands/azure_event_hub.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - diff --git a/source/images/supported_brands/azure_service_bus.svg b/source/images/supported_brands/azure_service_bus.svg deleted file mode 100644 index 4b39746e62e6..000000000000 --- a/source/images/supported_brands/azure_service_bus.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - diff --git a/source/images/supported_brands/beaglebone-black.png b/source/images/supported_brands/beaglebone-black.png deleted file mode 100644 index 3fb012d132d5..000000000000 Binary files a/source/images/supported_brands/beaglebone-black.png and /dev/null differ diff --git a/source/images/supported_brands/beewi_by_otio.png b/source/images/supported_brands/beewi_by_otio.png deleted file mode 100644 index 6ac5e6f8782b..000000000000 Binary files a/source/images/supported_brands/beewi_by_otio.png and /dev/null differ diff --git a/source/images/supported_brands/bizkaibus.png b/source/images/supported_brands/bizkaibus.png old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/bmw.png b/source/images/supported_brands/bmw.png deleted file mode 100644 index 7cb7c8d2716c..000000000000 Binary files a/source/images/supported_brands/bmw.png and /dev/null differ diff --git a/source/images/supported_brands/brother.png b/source/images/supported_brands/brother.png new file mode 100644 index 000000000000..78396fd914ee Binary files /dev/null and b/source/images/supported_brands/brother.png differ diff --git a/source/images/supported_brands/brunt.png b/source/images/supported_brands/brunt.png deleted file mode 100644 index 760d04305e5c..000000000000 Binary files a/source/images/supported_brands/brunt.png and /dev/null differ diff --git a/source/images/supported_brands/camcorder.png b/source/images/supported_brands/camcorder.png deleted file mode 100644 index 918a5f742ac5..000000000000 Binary files a/source/images/supported_brands/camcorder.png and /dev/null differ diff --git a/source/images/supported_brands/centralite.svg b/source/images/supported_brands/centralite.svg deleted file mode 100644 index 33fc5ac7dd10..000000000000 --- a/source/images/supported_brands/centralite.svg +++ /dev/null @@ -1 +0,0 @@ -Centralite_LogoWebai \ No newline at end of file diff --git a/source/images/supported_brands/cisco_webex_teams.png b/source/images/supported_brands/cisco_webex_teams.png deleted file mode 100644 index d6056126e5ef..000000000000 Binary files a/source/images/supported_brands/cisco_webex_teams.png and /dev/null differ diff --git a/source/images/supported_brands/ciscospark.png b/source/images/supported_brands/ciscospark.png deleted file mode 100644 index c6bac10f353d..000000000000 Binary files a/source/images/supported_brands/ciscospark.png and /dev/null differ diff --git a/source/images/supported_brands/citybikes.png b/source/images/supported_brands/citybikes.png deleted file mode 100644 index 7b6abe44337e..000000000000 Binary files a/source/images/supported_brands/citybikes.png and /dev/null differ diff --git a/source/images/supported_brands/clementine.png b/source/images/supported_brands/clementine.png deleted file mode 100644 index f7f6596dea6b..000000000000 Binary files a/source/images/supported_brands/clementine.png and /dev/null differ diff --git a/source/images/supported_brands/clicksend.png b/source/images/supported_brands/clicksend.png deleted file mode 100644 index 186eede3d4ed..000000000000 Binary files a/source/images/supported_brands/clicksend.png and /dev/null differ diff --git a/source/images/supported_brands/cloudflare.png b/source/images/supported_brands/cloudflare.png deleted file mode 100644 index 6fb076250bcc..000000000000 Binary files a/source/images/supported_brands/cloudflare.png and /dev/null differ diff --git a/source/images/supported_brands/coinmarketcap.png b/source/images/supported_brands/coinmarketcap.png deleted file mode 100644 index 7366e49ce90c..000000000000 Binary files a/source/images/supported_brands/coinmarketcap.png and /dev/null differ diff --git a/source/images/supported_brands/command_line.png b/source/images/supported_brands/command_line.png deleted file mode 100644 index 56ed161c2f92..000000000000 Binary files a/source/images/supported_brands/command_line.png and /dev/null differ diff --git a/source/images/supported_brands/conversation.png b/source/images/supported_brands/conversation.png deleted file mode 100644 index da75e6fac527..000000000000 Binary files a/source/images/supported_brands/conversation.png and /dev/null differ diff --git a/source/images/supported_brands/cups.png b/source/images/supported_brands/cups.png deleted file mode 100644 index 726e46de9c0a..000000000000 Binary files a/source/images/supported_brands/cups.png and /dev/null differ diff --git a/source/images/supported_brands/danfoss_air.png b/source/images/supported_brands/danfoss_air.png deleted file mode 100644 index cfaad46e6939..000000000000 Binary files a/source/images/supported_brands/danfoss_air.png and /dev/null differ diff --git a/source/images/supported_brands/datadog.png b/source/images/supported_brands/datadog.png deleted file mode 100644 index 25e1f78e3465..000000000000 Binary files a/source/images/supported_brands/datadog.png and /dev/null differ diff --git a/source/images/supported_brands/deconz.jpeg b/source/images/supported_brands/deconz.jpeg deleted file mode 100644 index d9474ff74b1d..000000000000 Binary files a/source/images/supported_brands/deconz.jpeg and /dev/null differ diff --git a/source/images/supported_brands/delijn.svg b/source/images/supported_brands/delijn.svg deleted file mode 100644 index 8f9ee82532cd..000000000000 --- a/source/images/supported_brands/delijn.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/images/supported_brands/deluge.png b/source/images/supported_brands/deluge.png deleted file mode 100644 index 1969fdd372e3..000000000000 Binary files a/source/images/supported_brands/deluge.png and /dev/null differ diff --git a/source/images/supported_brands/derivative.png b/source/images/supported_brands/derivative.png new file mode 100644 index 000000000000..aecf9f6db0b2 Binary files /dev/null and b/source/images/supported_brands/derivative.png differ diff --git a/source/images/supported_brands/digitalloggers.png b/source/images/supported_brands/digitalloggers.png deleted file mode 100644 index aa7b30abad2e..000000000000 Binary files a/source/images/supported_brands/digitalloggers.png and /dev/null differ diff --git a/source/images/supported_brands/directv.png b/source/images/supported_brands/directv.png deleted file mode 100644 index aa0fe2da9214..000000000000 Binary files a/source/images/supported_brands/directv.png and /dev/null differ diff --git a/source/images/supported_brands/dlib.png b/source/images/supported_brands/dlib.png deleted file mode 100644 index 92adbfa5b41d..000000000000 Binary files a/source/images/supported_brands/dlib.png and /dev/null differ diff --git a/source/images/supported_brands/docker.png b/source/images/supported_brands/docker.png deleted file mode 100644 index c0a31487f363..000000000000 Binary files a/source/images/supported_brands/docker.png and /dev/null differ diff --git a/source/images/supported_brands/downloader.png b/source/images/supported_brands/downloader.png deleted file mode 100644 index 8a5ff5789e9c..000000000000 Binary files a/source/images/supported_brands/downloader.png and /dev/null differ diff --git a/source/images/supported_brands/duke_energy.png b/source/images/supported_brands/duke_energy.png deleted file mode 100644 index 72f55e54037e..000000000000 Binary files a/source/images/supported_brands/duke_energy.png and /dev/null differ diff --git a/source/images/supported_brands/dunehd.png b/source/images/supported_brands/dunehd.png deleted file mode 100644 index 03da1c33e006..000000000000 Binary files a/source/images/supported_brands/dunehd.png and /dev/null differ diff --git a/source/images/supported_brands/dynalite.png b/source/images/supported_brands/dynalite.png new file mode 100755 index 000000000000..7751c6b564a9 Binary files /dev/null and b/source/images/supported_brands/dynalite.png differ diff --git a/source/images/supported_brands/ecobee.png b/source/images/supported_brands/ecobee.png index f9621daaf685..64564fe04c09 100644 Binary files a/source/images/supported_brands/ecobee.png and b/source/images/supported_brands/ecobee.png differ diff --git a/source/images/supported_brands/econet.png b/source/images/supported_brands/econet.png deleted file mode 100644 index 5245c500489f..000000000000 Binary files a/source/images/supported_brands/econet.png and /dev/null differ diff --git a/source/images/supported_brands/eff.png b/source/images/supported_brands/eff.png deleted file mode 100644 index aafcf341dcd1..000000000000 Binary files a/source/images/supported_brands/eff.png and /dev/null differ diff --git a/source/images/supported_brands/elv.png b/source/images/supported_brands/elv.png deleted file mode 100644 index 139d727b3f12..000000000000 Binary files a/source/images/supported_brands/elv.png and /dev/null differ diff --git a/source/images/supported_brands/enedis.png b/source/images/supported_brands/enedis.png deleted file mode 100644 index 115fc2162fb8..000000000000 Binary files a/source/images/supported_brands/enedis.png and /dev/null differ diff --git a/source/images/supported_brands/energy_meter.png b/source/images/supported_brands/energy_meter.png deleted file mode 100644 index 602af055d538..000000000000 Binary files a/source/images/supported_brands/energy_meter.png and /dev/null differ diff --git a/source/images/supported_brands/enphase-logo.svg b/source/images/supported_brands/enphase-logo.svg deleted file mode 100644 index 3f8f7b3de38f..000000000000 --- a/source/images/supported_brands/enphase-logo.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 1 \ No newline at end of file diff --git a/source/images/supported_brands/entur.svg b/source/images/supported_brands/entur.svg deleted file mode 100644 index a64ca1543b88..000000000000 --- a/source/images/supported_brands/entur.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - diff --git a/source/images/supported_brands/esphome.png b/source/images/supported_brands/esphome.png deleted file mode 100644 index dbc7a4f9a91f..000000000000 Binary files a/source/images/supported_brands/esphome.png and /dev/null differ diff --git a/source/images/supported_brands/ethernet.png b/source/images/supported_brands/ethernet.png deleted file mode 100644 index c8785ccb455e..000000000000 Binary files a/source/images/supported_brands/ethernet.png and /dev/null differ diff --git a/source/images/supported_brands/ezviz.png b/source/images/supported_brands/ezviz.png new file mode 100644 index 000000000000..ddfb7bd68cd3 Binary files /dev/null and b/source/images/supported_brands/ezviz.png differ diff --git a/source/images/supported_brands/fail2ban.png b/source/images/supported_brands/fail2ban.png deleted file mode 100644 index 532dff1c4c22..000000000000 Binary files a/source/images/supported_brands/fail2ban.png and /dev/null differ diff --git a/source/images/supported_brands/familyhub.png b/source/images/supported_brands/familyhub.png deleted file mode 100644 index b34b9823a20f..000000000000 Binary files a/source/images/supported_brands/familyhub.png and /dev/null differ diff --git a/source/images/supported_brands/ffmpeg.png b/source/images/supported_brands/ffmpeg.png deleted file mode 100644 index 8a120742b08e..000000000000 Binary files a/source/images/supported_brands/ffmpeg.png and /dev/null differ diff --git a/source/images/supported_brands/fibaro.png b/source/images/supported_brands/fibaro.png deleted file mode 100644 index cb266067f25f..000000000000 Binary files a/source/images/supported_brands/fibaro.png and /dev/null differ diff --git a/source/images/supported_brands/fios.svg b/source/images/supported_brands/fios.svg deleted file mode 100644 index c2bc459e43b0..000000000000 --- a/source/images/supported_brands/fios.svg +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/source/images/supported_brands/fitbit.png b/source/images/supported_brands/fitbit.png deleted file mode 100644 index 5204d736ce52..000000000000 Binary files a/source/images/supported_brands/fitbit.png and /dev/null differ diff --git a/source/images/supported_brands/fixer-io.png b/source/images/supported_brands/fixer-io.png deleted file mode 100644 index e149d5b7c3c4..000000000000 Binary files a/source/images/supported_brands/fixer-io.png and /dev/null differ diff --git a/source/images/supported_brands/fleetgo.png b/source/images/supported_brands/fleetgo.png deleted file mode 100644 index 1e7355ef0946..000000000000 Binary files a/source/images/supported_brands/fleetgo.png and /dev/null differ diff --git a/source/images/supported_brands/foobot.png b/source/images/supported_brands/foobot.png deleted file mode 100644 index e8cbc3fb94dc..000000000000 Binary files a/source/images/supported_brands/foobot.png and /dev/null differ diff --git a/source/images/supported_brands/fortinet.jpg b/source/images/supported_brands/fortinet.jpg deleted file mode 100644 index b764105fc003..000000000000 Binary files a/source/images/supported_brands/fortinet.jpg and /dev/null differ diff --git a/source/images/supported_brands/freebox.svg b/source/images/supported_brands/freebox.svg deleted file mode 100644 index cc9e6c87c504..000000000000 --- a/source/images/supported_brands/freebox.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - diff --git a/source/images/supported_brands/fronius.png b/source/images/supported_brands/fronius.png deleted file mode 100644 index 6b44d1cb351c..000000000000 Binary files a/source/images/supported_brands/fronius.png and /dev/null differ diff --git a/source/images/supported_brands/frontier.png b/source/images/supported_brands/frontier.png deleted file mode 100644 index c99a75bd5952..000000000000 Binary files a/source/images/supported_brands/frontier.png and /dev/null differ diff --git a/source/images/supported_brands/fuelcheck.png b/source/images/supported_brands/fuelcheck.png deleted file mode 100644 index 81b47c476f14..000000000000 Binary files a/source/images/supported_brands/fuelcheck.png and /dev/null differ diff --git a/source/images/supported_brands/gammu.png b/source/images/supported_brands/gammu.png new file mode 100644 index 000000000000..a975b68bc2dc Binary files /dev/null and b/source/images/supported_brands/gammu.png differ diff --git a/source/images/supported_brands/garmin_connect.png b/source/images/supported_brands/garmin_connect.png new file mode 100644 index 000000000000..1a95fdd46754 Binary files /dev/null and b/source/images/supported_brands/garmin_connect.png differ diff --git a/source/images/supported_brands/gdacs.jpg b/source/images/supported_brands/gdacs.jpg new file mode 100644 index 000000000000..0d63b968dea7 Binary files /dev/null and b/source/images/supported_brands/gdacs.jpg differ diff --git a/source/images/supported_brands/geofency.png b/source/images/supported_brands/geofency.png deleted file mode 100644 index 50860752d14e..000000000000 Binary files a/source/images/supported_brands/geofency.png and /dev/null differ diff --git a/source/images/supported_brands/gitlab.png b/source/images/supported_brands/gitlab.png deleted file mode 100644 index 0273ae495658..000000000000 Binary files a/source/images/supported_brands/gitlab.png and /dev/null differ diff --git a/source/images/supported_brands/google-assistant.png b/source/images/supported_brands/google-assistant.png deleted file mode 100644 index f5a9bda7e419..000000000000 Binary files a/source/images/supported_brands/google-assistant.png and /dev/null differ diff --git a/source/images/supported_brands/google-pubsub.png b/source/images/supported_brands/google-pubsub.png deleted file mode 100644 index 0ff9a4df927c..000000000000 Binary files a/source/images/supported_brands/google-pubsub.png and /dev/null differ diff --git a/source/images/supported_brands/google.png b/source/images/supported_brands/google.png deleted file mode 100644 index adea680f7ea4..000000000000 Binary files a/source/images/supported_brands/google.png and /dev/null differ diff --git a/source/images/supported_brands/google_calendar.png b/source/images/supported_brands/google_calendar.png deleted file mode 100644 index b767b7641043..000000000000 Binary files a/source/images/supported_brands/google_calendar.png and /dev/null differ diff --git a/source/images/supported_brands/google_cast.png b/source/images/supported_brands/google_cast.png deleted file mode 100644 index be53c784994b..000000000000 Binary files a/source/images/supported_brands/google_cast.png and /dev/null differ diff --git a/source/images/supported_brands/google_cloud.png b/source/images/supported_brands/google_cloud.png deleted file mode 100644 index c63cd67ca4dd..000000000000 Binary files a/source/images/supported_brands/google_cloud.png and /dev/null differ diff --git a/source/images/supported_brands/google_domains.png b/source/images/supported_brands/google_domains.png deleted file mode 100644 index d1843a45f049..000000000000 Binary files a/source/images/supported_brands/google_domains.png and /dev/null differ diff --git a/source/images/supported_brands/google_maps.png b/source/images/supported_brands/google_maps.png deleted file mode 100644 index ac7fdc0132d5..000000000000 Binary files a/source/images/supported_brands/google_maps.png and /dev/null differ diff --git a/source/images/supported_brands/google_wifi.png b/source/images/supported_brands/google_wifi.png deleted file mode 100644 index d304b4d496f7..000000000000 Binary files a/source/images/supported_brands/google_wifi.png and /dev/null differ diff --git a/source/images/supported_brands/gpmdp.png b/source/images/supported_brands/gpmdp.png deleted file mode 100644 index abbfada9ae2a..000000000000 Binary files a/source/images/supported_brands/gpmdp.png and /dev/null differ diff --git a/source/images/supported_brands/gpslogger.png b/source/images/supported_brands/gpslogger.png deleted file mode 100755 index 04e1d08f5a12..000000000000 Binary files a/source/images/supported_brands/gpslogger.png and /dev/null differ diff --git a/source/images/supported_brands/habitica.png b/source/images/supported_brands/habitica.png deleted file mode 100644 index 79837b468380..000000000000 Binary files a/source/images/supported_brands/habitica.png and /dev/null differ diff --git a/source/images/supported_brands/hangouts.png b/source/images/supported_brands/hangouts.png deleted file mode 100644 index af08baaba2d9..000000000000 Binary files a/source/images/supported_brands/hangouts.png and /dev/null differ diff --git a/source/images/supported_brands/hayward.png b/source/images/supported_brands/hayward.png deleted file mode 100644 index 3c644de943b8..000000000000 Binary files a/source/images/supported_brands/hayward.png and /dev/null differ diff --git a/source/images/supported_brands/heat-control.png b/source/images/supported_brands/heat-control.png deleted file mode 100644 index eb7821b1a581..000000000000 Binary files a/source/images/supported_brands/heat-control.png and /dev/null differ diff --git a/source/images/supported_brands/hisense.png b/source/images/supported_brands/hisense.png new file mode 100755 index 000000000000..9c52e3a59fbf Binary files /dev/null and b/source/images/supported_brands/hisense.png differ diff --git a/source/images/supported_brands/hive.png b/source/images/supported_brands/hive.png deleted file mode 100644 index b495f3183df3..000000000000 Binary files a/source/images/supported_brands/hive.png and /dev/null differ diff --git a/source/images/supported_brands/hook.png b/source/images/supported_brands/hook.png deleted file mode 100644 index b26bdbd52fdd..000000000000 Binary files a/source/images/supported_brands/hook.png and /dev/null differ diff --git a/source/images/supported_brands/http.png b/source/images/supported_brands/http.png deleted file mode 100644 index e6037a1d0f37..000000000000 Binary files a/source/images/supported_brands/http.png and /dev/null differ diff --git a/source/images/supported_brands/huawei.svg b/source/images/supported_brands/huawei.svg deleted file mode 100644 index df30a44d898f..000000000000 --- a/source/images/supported_brands/huawei.svg +++ /dev/null @@ -1 +0,0 @@ -image/svg+xml \ No newline at end of file diff --git a/source/images/supported_brands/hyperion.png b/source/images/supported_brands/hyperion.png deleted file mode 100644 index d194c77bc115..000000000000 Binary files a/source/images/supported_brands/hyperion.png and /dev/null differ diff --git a/source/images/supported_brands/iammeter-logo.png b/source/images/supported_brands/iammeter-logo.png new file mode 100644 index 000000000000..d178816c2e20 Binary files /dev/null and b/source/images/supported_brands/iammeter-logo.png differ diff --git a/source/images/supported_brands/iaqualink.png b/source/images/supported_brands/iaqualink.png deleted file mode 100644 index 75e4f8dc67ea..000000000000 Binary files a/source/images/supported_brands/iaqualink.png and /dev/null differ diff --git a/source/images/supported_brands/ibm.png b/source/images/supported_brands/ibm.png deleted file mode 100644 index ca3c4415a411..000000000000 Binary files a/source/images/supported_brands/ibm.png and /dev/null differ diff --git a/source/images/supported_brands/icann.png b/source/images/supported_brands/icann.png deleted file mode 100644 index 51227a41c93e..000000000000 Binary files a/source/images/supported_brands/icann.png and /dev/null differ diff --git a/source/images/supported_brands/idteck.jpg b/source/images/supported_brands/idteck.jpg deleted file mode 100644 index e3f99b01a27f..000000000000 Binary files a/source/images/supported_brands/idteck.jpg and /dev/null differ diff --git a/source/images/supported_brands/ign-sismologia.png b/source/images/supported_brands/ign-sismologia.png deleted file mode 100644 index ce89a8cf2c2e..000000000000 Binary files a/source/images/supported_brands/ign-sismologia.png and /dev/null differ diff --git a/source/images/supported_brands/ihc.png b/source/images/supported_brands/ihc.png deleted file mode 100644 index 9d4ea4cf0a8f..000000000000 Binary files a/source/images/supported_brands/ihc.png and /dev/null differ diff --git a/source/images/supported_brands/incomfort.png b/source/images/supported_brands/incomfort.png deleted file mode 100644 index 41ee3f8375fc..000000000000 Binary files a/source/images/supported_brands/incomfort.png and /dev/null differ diff --git a/source/images/supported_brands/intesishome.png b/source/images/supported_brands/intesishome.png new file mode 100644 index 000000000000..887334753388 Binary files /dev/null and b/source/images/supported_brands/intesishome.png differ diff --git a/source/images/supported_brands/iperf3.png b/source/images/supported_brands/iperf3.png deleted file mode 100644 index a65799a84bd0..000000000000 Binary files a/source/images/supported_brands/iperf3.png and /dev/null differ diff --git a/source/images/supported_brands/iqvia.png b/source/images/supported_brands/iqvia.png deleted file mode 100644 index 6a89f0e37a1a..000000000000 Binary files a/source/images/supported_brands/iqvia.png and /dev/null differ diff --git a/source/images/supported_brands/iss.png b/source/images/supported_brands/iss.png deleted file mode 100644 index 33b91c82a2d6..000000000000 Binary files a/source/images/supported_brands/iss.png and /dev/null differ diff --git a/source/images/supported_brands/kaiterra.svg b/source/images/supported_brands/kaiterra.svg deleted file mode 100644 index fe12292c09f2..000000000000 --- a/source/images/supported_brands/kaiterra.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - -kaiterra-logo-2019-white - - diff --git a/source/images/supported_brands/keyboard.png b/source/images/supported_brands/keyboard.png deleted file mode 100644 index 714757d22f77..000000000000 Binary files a/source/images/supported_brands/keyboard.png and /dev/null differ diff --git a/source/images/supported_brands/kiwi.png b/source/images/supported_brands/kiwi.png deleted file mode 100644 index 79536db637de..000000000000 Binary files a/source/images/supported_brands/kiwi.png and /dev/null differ diff --git a/source/images/supported_brands/knx.png b/source/images/supported_brands/knx.png deleted file mode 100644 index 6a8986e73e53..000000000000 Binary files a/source/images/supported_brands/knx.png and /dev/null differ diff --git a/source/images/supported_brands/kwb.png b/source/images/supported_brands/kwb.png deleted file mode 100644 index cfe09c9f087e..000000000000 Binary files a/source/images/supported_brands/kwb.png and /dev/null differ diff --git a/source/images/supported_brands/linn.png b/source/images/supported_brands/linn.png deleted file mode 100644 index ab3ee666458e..000000000000 Binary files a/source/images/supported_brands/linn.png and /dev/null differ diff --git a/source/images/supported_brands/llamalab_automate.png b/source/images/supported_brands/llamalab_automate.png deleted file mode 100644 index fca2b56ebae2..000000000000 Binary files a/source/images/supported_brands/llamalab_automate.png and /dev/null differ diff --git a/source/images/supported_brands/logentries.png b/source/images/supported_brands/logentries.png deleted file mode 100644 index 85f9554c790e..000000000000 Binary files a/source/images/supported_brands/logentries.png and /dev/null differ diff --git a/source/images/supported_brands/logi_circle.png b/source/images/supported_brands/logi_circle.png deleted file mode 100644 index 4a96ea651dc3..000000000000 Binary files a/source/images/supported_brands/logi_circle.png and /dev/null differ diff --git a/source/images/supported_brands/london_underground.png b/source/images/supported_brands/london_underground.png deleted file mode 100644 index 3250916a8bf8..000000000000 Binary files a/source/images/supported_brands/london_underground.png and /dev/null differ diff --git a/source/images/supported_brands/luftdaten.png b/source/images/supported_brands/luftdaten.png deleted file mode 100644 index 8726fe8158ff..000000000000 Binary files a/source/images/supported_brands/luftdaten.png and /dev/null differ diff --git a/source/images/supported_brands/lyft.png b/source/images/supported_brands/lyft.png deleted file mode 100644 index a27ee89e68e8..000000000000 Binary files a/source/images/supported_brands/lyft.png and /dev/null differ diff --git a/source/images/supported_brands/machine-box.png b/source/images/supported_brands/machine-box.png deleted file mode 100644 index 1d8d854cfa56..000000000000 Binary files a/source/images/supported_brands/machine-box.png and /dev/null differ diff --git a/source/images/supported_brands/mastodon.png b/source/images/supported_brands/mastodon.png deleted file mode 100644 index d1e43017cd6a..000000000000 Binary files a/source/images/supported_brands/mastodon.png and /dev/null differ diff --git a/source/images/supported_brands/mediaroom.png b/source/images/supported_brands/mediaroom.png deleted file mode 100644 index 64e27cc5e364..000000000000 Binary files a/source/images/supported_brands/mediaroom.png and /dev/null differ diff --git a/source/images/supported_brands/meteo-france.png b/source/images/supported_brands/meteo-france.png deleted file mode 100644 index 066867e6e387..000000000000 Binary files a/source/images/supported_brands/meteo-france.png and /dev/null differ diff --git a/source/images/supported_brands/metno.png b/source/images/supported_brands/metno.png deleted file mode 100644 index 2f09c7fe6963..000000000000 Binary files a/source/images/supported_brands/metno.png and /dev/null differ diff --git a/source/images/supported_brands/mhz19_logo.png b/source/images/supported_brands/mhz19_logo.png deleted file mode 100644 index 608031e11c99..000000000000 Binary files a/source/images/supported_brands/mhz19_logo.png and /dev/null differ diff --git a/source/images/supported_brands/microsoft.png b/source/images/supported_brands/microsoft.png deleted file mode 100644 index 8113de114e38..000000000000 Binary files a/source/images/supported_brands/microsoft.png and /dev/null differ diff --git a/source/images/supported_brands/mill.png b/source/images/supported_brands/mill.png deleted file mode 100644 index 0976f28e17ca..000000000000 Binary files a/source/images/supported_brands/mill.png and /dev/null differ diff --git a/source/images/supported_brands/minio.png b/source/images/supported_brands/minio.png deleted file mode 100644 index 38f6ff9f01d5..000000000000 Binary files a/source/images/supported_brands/minio.png and /dev/null differ diff --git a/source/images/supported_brands/minut.svg b/source/images/supported_brands/minut.svg deleted file mode 100644 index 6d73080ba2ae..000000000000 --- a/source/images/supported_brands/minut.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/images/supported_brands/modbus.png b/source/images/supported_brands/modbus.png deleted file mode 100644 index b01d70fa021a..000000000000 Binary files a/source/images/supported_brands/modbus.png and /dev/null differ diff --git a/source/images/supported_brands/monoprice.svg b/source/images/supported_brands/monoprice.svg deleted file mode 100644 index 17079a4ca265..000000000000 --- a/source/images/supported_brands/monoprice.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/source/images/supported_brands/mopar.png b/source/images/supported_brands/mopar.png deleted file mode 100644 index 1b43a07fa707..000000000000 Binary files a/source/images/supported_brands/mopar.png and /dev/null differ diff --git a/source/images/supported_brands/mpchc.png b/source/images/supported_brands/mpchc.png deleted file mode 100644 index 938cb1fd2544..000000000000 Binary files a/source/images/supported_brands/mpchc.png and /dev/null differ diff --git a/source/images/supported_brands/msteams.jpg b/source/images/supported_brands/msteams.jpg deleted file mode 100644 index e411bfcea1b5..000000000000 Binary files a/source/images/supported_brands/msteams.jpg and /dev/null differ diff --git a/source/images/supported_brands/mysensors.png b/source/images/supported_brands/mysensors.png deleted file mode 100644 index c59458474d8f..000000000000 Binary files a/source/images/supported_brands/mysensors.png and /dev/null differ diff --git a/source/images/supported_brands/mystrom.png b/source/images/supported_brands/mystrom.png deleted file mode 100644 index d7f6583155a3..000000000000 Binary files a/source/images/supported_brands/mystrom.png and /dev/null differ diff --git a/source/images/supported_brands/n26.png b/source/images/supported_brands/n26.png deleted file mode 100644 index 725550663327..000000000000 Binary files a/source/images/supported_brands/n26.png and /dev/null differ diff --git a/source/images/supported_brands/nabu-casa.svg b/source/images/supported_brands/nabu-casa.svg deleted file mode 100644 index a038f7e6890e..000000000000 --- a/source/images/supported_brands/nabu-casa.svg +++ /dev/null @@ -1 +0,0 @@ -logo \ No newline at end of file diff --git a/source/images/supported_brands/nad.png b/source/images/supported_brands/nad.png deleted file mode 100644 index be3291945d2a..000000000000 Binary files a/source/images/supported_brands/nad.png and /dev/null differ diff --git a/source/images/supported_brands/nasa.png b/source/images/supported_brands/nasa.png deleted file mode 100644 index 12b96d1a3b61..000000000000 Binary files a/source/images/supported_brands/nasa.png and /dev/null differ diff --git a/source/images/supported_brands/ness.png b/source/images/supported_brands/ness.png deleted file mode 100644 index 9682e269c7d2..000000000000 Binary files a/source/images/supported_brands/ness.png and /dev/null differ diff --git a/source/images/supported_brands/netdata.png b/source/images/supported_brands/netdata.png deleted file mode 100644 index cd9fe2f06af7..000000000000 Binary files a/source/images/supported_brands/netdata.png and /dev/null differ diff --git a/source/images/supported_brands/network-snmp.png b/source/images/supported_brands/network-snmp.png deleted file mode 100644 index 5337e6024d59..000000000000 Binary files a/source/images/supported_brands/network-snmp.png and /dev/null differ diff --git a/source/images/supported_brands/nextcloud.png b/source/images/supported_brands/nextcloud.png new file mode 100644 index 000000000000..1c9558a1301d Binary files /dev/null and b/source/images/supported_brands/nextcloud.png differ diff --git a/source/images/supported_brands/nissan.png b/source/images/supported_brands/nissan.png deleted file mode 100644 index 23b947e8dcb8..000000000000 Binary files a/source/images/supported_brands/nissan.png and /dev/null differ diff --git a/source/images/supported_brands/nmap.png b/source/images/supported_brands/nmap.png deleted file mode 100644 index 1c73d6d460eb..000000000000 Binary files a/source/images/supported_brands/nmap.png and /dev/null differ diff --git a/source/images/supported_brands/noaa.png b/source/images/supported_brands/noaa.png deleted file mode 100644 index 471fbca3e3d1..000000000000 Binary files a/source/images/supported_brands/noaa.png and /dev/null differ diff --git a/source/images/supported_brands/nsw-rural-fire-service.png b/source/images/supported_brands/nsw-rural-fire-service.png deleted file mode 100644 index 6d3a6bfa3fe5..000000000000 Binary files a/source/images/supported_brands/nsw-rural-fire-service.png and /dev/null differ diff --git a/source/images/supported_brands/nuheat.png b/source/images/supported_brands/nuheat.png deleted file mode 100644 index 12d558e54f61..000000000000 Binary files a/source/images/supported_brands/nuheat.png and /dev/null differ diff --git a/source/images/supported_brands/nut.png b/source/images/supported_brands/nut.png deleted file mode 100644 index d661ce720c73..000000000000 Binary files a/source/images/supported_brands/nut.png and /dev/null differ diff --git a/source/images/supported_brands/nws.png b/source/images/supported_brands/nws.png deleted file mode 100644 index 373ce61d76df..000000000000 Binary files a/source/images/supported_brands/nws.png and /dev/null differ diff --git a/source/images/supported_brands/oasa.png b/source/images/supported_brands/oasa.png deleted file mode 100644 index 8780f104c767..000000000000 Binary files a/source/images/supported_brands/oasa.png and /dev/null differ diff --git a/source/images/supported_brands/octoprint.png b/source/images/supported_brands/octoprint.png deleted file mode 100644 index 1a785ecd8c2a..000000000000 Binary files a/source/images/supported_brands/octoprint.png and /dev/null differ diff --git a/source/images/supported_brands/oem.png b/source/images/supported_brands/oem.png deleted file mode 100644 index a9fc79238d02..000000000000 Binary files a/source/images/supported_brands/oem.png and /dev/null differ diff --git a/source/images/supported_brands/ombi.png b/source/images/supported_brands/ombi.png deleted file mode 100644 index d52f82417974..000000000000 Binary files a/source/images/supported_brands/ombi.png and /dev/null differ diff --git a/source/images/supported_brands/onewire.png b/source/images/supported_brands/onewire.png deleted file mode 100644 index 04d988b57fd7..000000000000 Binary files a/source/images/supported_brands/onewire.png and /dev/null differ diff --git a/source/images/supported_brands/opencv.png b/source/images/supported_brands/opencv.png deleted file mode 100644 index cda0478e20d8..000000000000 Binary files a/source/images/supported_brands/opencv.png and /dev/null differ diff --git a/source/images/supported_brands/openhardwaremonitor.png b/source/images/supported_brands/openhardwaremonitor.png deleted file mode 100644 index 068abb565336..000000000000 Binary files a/source/images/supported_brands/openhardwaremonitor.png and /dev/null differ diff --git a/source/images/supported_brands/opensensemap.png b/source/images/supported_brands/opensensemap.png deleted file mode 100644 index 4245b80f297f..000000000000 Binary files a/source/images/supported_brands/opensensemap.png and /dev/null differ diff --git a/source/images/supported_brands/opentherm.png b/source/images/supported_brands/opentherm.png deleted file mode 100644 index 65acc68bb306..000000000000 Binary files a/source/images/supported_brands/opentherm.png and /dev/null differ diff --git a/source/images/supported_brands/openuv.jpg b/source/images/supported_brands/openuv.jpg deleted file mode 100644 index a15741c381c1..000000000000 Binary files a/source/images/supported_brands/openuv.jpg and /dev/null differ diff --git a/source/images/supported_brands/opple.png b/source/images/supported_brands/opple.png deleted file mode 100644 index f897489591dc..000000000000 Binary files a/source/images/supported_brands/opple.png and /dev/null differ diff --git a/source/images/supported_brands/orange.png b/source/images/supported_brands/orange.png deleted file mode 100644 index 6a357089fe5b..000000000000 Binary files a/source/images/supported_brands/orange.png and /dev/null differ diff --git a/source/images/supported_brands/oru.png b/source/images/supported_brands/oru.png deleted file mode 100644 index b06c29e787a7..000000000000 Binary files a/source/images/supported_brands/oru.png and /dev/null differ diff --git a/source/images/supported_brands/owlet.svg b/source/images/supported_brands/owlet.svg deleted file mode 100644 index a14154fa0050..000000000000 --- a/source/images/supported_brands/owlet.svg +++ /dev/null @@ -1 +0,0 @@ - Page 1@3x Created with Sketch. \ No newline at end of file diff --git a/source/images/supported_brands/owntracks.png b/source/images/supported_brands/owntracks.png deleted file mode 100644 index ac237c568777..000000000000 Binary files a/source/images/supported_brands/owntracks.png and /dev/null differ diff --git a/source/images/supported_brands/plaato.png b/source/images/supported_brands/plaato.png deleted file mode 100644 index 78ac490866b7..000000000000 Binary files a/source/images/supported_brands/plaato.png and /dev/null differ diff --git a/source/images/supported_brands/plugwise.png b/source/images/supported_brands/plugwise.png deleted file mode 100644 index f48480b7b135..000000000000 Binary files a/source/images/supported_brands/plugwise.png and /dev/null differ diff --git a/source/images/supported_brands/pocketcasts.png b/source/images/supported_brands/pocketcasts.png deleted file mode 100644 index e52ed3cef025..000000000000 Binary files a/source/images/supported_brands/pocketcasts.png and /dev/null differ diff --git a/source/images/supported_brands/polly.png b/source/images/supported_brands/polly.png deleted file mode 100644 index af4a1e031d8e..000000000000 Binary files a/source/images/supported_brands/polly.png and /dev/null differ diff --git a/source/images/supported_brands/postnl.png b/source/images/supported_brands/postnl.png deleted file mode 100644 index 8d7ed66550ee..000000000000 Binary files a/source/images/supported_brands/postnl.png and /dev/null differ diff --git a/source/images/supported_brands/prezzibenzina.png b/source/images/supported_brands/prezzibenzina.png deleted file mode 100644 index a224b36651eb..000000000000 Binary files a/source/images/supported_brands/prezzibenzina.png and /dev/null differ diff --git a/source/images/supported_brands/prometheus.png b/source/images/supported_brands/prometheus.png deleted file mode 100644 index b98ffa957245..000000000000 Binary files a/source/images/supported_brands/prometheus.png and /dev/null differ diff --git a/source/images/supported_brands/prowl.png b/source/images/supported_brands/prowl.png deleted file mode 100644 index a85484520609..000000000000 Binary files a/source/images/supported_brands/prowl.png and /dev/null differ diff --git a/source/images/supported_brands/pyload.png b/source/images/supported_brands/pyload.png deleted file mode 100644 index 4157ac6c71c1..000000000000 Binary files a/source/images/supported_brands/pyload.png and /dev/null differ diff --git a/source/images/supported_brands/python.svg b/source/images/supported_brands/python.svg deleted file mode 100644 index 5b333e80039a..000000000000 --- a/source/images/supported_brands/python.svg +++ /dev/null @@ -1 +0,0 @@ -image/svg+xml \ No newline at end of file diff --git a/source/images/supported_brands/qbittorrent.png b/source/images/supported_brands/qbittorrent.png deleted file mode 100644 index 814c5e62aaac..000000000000 Binary files a/source/images/supported_brands/qbittorrent.png and /dev/null differ diff --git a/source/images/supported_brands/qvr_pro.png b/source/images/supported_brands/qvr_pro.png new file mode 100644 index 000000000000..99e1e73763ea Binary files /dev/null and b/source/images/supported_brands/qvr_pro.png differ diff --git a/source/images/supported_brands/radarr.png b/source/images/supported_brands/radarr.png deleted file mode 100644 index 6f54a874ebce..000000000000 Binary files a/source/images/supported_brands/radarr.png and /dev/null differ diff --git a/source/images/supported_brands/rainforest_automation_logo.png b/source/images/supported_brands/rainforest_automation_logo.png deleted file mode 100644 index 26bce1cc86a7..000000000000 Binary files a/source/images/supported_brands/rainforest_automation_logo.png and /dev/null differ diff --git a/source/images/supported_brands/rainmachine.png b/source/images/supported_brands/rainmachine.png deleted file mode 100644 index 7c9bfe777dac..000000000000 Binary files a/source/images/supported_brands/rainmachine.png and /dev/null differ diff --git a/source/images/supported_brands/reddit.png b/source/images/supported_brands/reddit.png deleted file mode 100644 index b560fb18f375..000000000000 Binary files a/source/images/supported_brands/reddit.png and /dev/null differ diff --git a/source/images/supported_brands/repetier.png b/source/images/supported_brands/repetier.png deleted file mode 100755 index 7cbba43ad45c..000000000000 Binary files a/source/images/supported_brands/repetier.png and /dev/null differ diff --git a/source/images/supported_brands/restful.png b/source/images/supported_brands/restful.png deleted file mode 100644 index 1443f75c23a8..000000000000 Binary files a/source/images/supported_brands/restful.png and /dev/null differ diff --git a/source/images/supported_brands/rfxtrx.png b/source/images/supported_brands/rfxtrx.png deleted file mode 100644 index 9b9436c67dac..000000000000 Binary files a/source/images/supported_brands/rfxtrx.png and /dev/null differ diff --git a/source/images/supported_brands/rocketchat.png b/source/images/supported_brands/rocketchat.png deleted file mode 100644 index 1434cf286298..000000000000 Binary files a/source/images/supported_brands/rocketchat.png and /dev/null differ diff --git a/source/images/supported_brands/roku.png b/source/images/supported_brands/roku.png deleted file mode 100644 index 5e964140c950..000000000000 Binary files a/source/images/supported_brands/roku.png and /dev/null differ diff --git a/source/images/supported_brands/route53.png b/source/images/supported_brands/route53.png deleted file mode 100644 index aab5f8882c9b..000000000000 Binary files a/source/images/supported_brands/route53.png and /dev/null differ diff --git a/source/images/supported_brands/rova.jpg b/source/images/supported_brands/rova.jpg deleted file mode 100644 index ead2f2b7cfec..000000000000 Binary files a/source/images/supported_brands/rova.jpg and /dev/null differ diff --git a/source/images/supported_brands/rtorrent.png b/source/images/supported_brands/rtorrent.png deleted file mode 100644 index c7a39c43a652..000000000000 Binary files a/source/images/supported_brands/rtorrent.png and /dev/null differ diff --git a/source/images/supported_brands/saj.png b/source/images/supported_brands/saj.png old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/salt.png b/source/images/supported_brands/salt.png new file mode 100644 index 000000000000..96728c59d687 Binary files /dev/null and b/source/images/supported_brands/salt.png differ diff --git a/source/images/supported_brands/sensirion.png b/source/images/supported_brands/sensirion.png deleted file mode 100644 index f592fc5bb1fe..000000000000 Binary files a/source/images/supported_brands/sensirion.png and /dev/null differ diff --git a/source/images/supported_brands/shiftr.png b/source/images/supported_brands/shiftr.png deleted file mode 100644 index bed6fad1873b..000000000000 Binary files a/source/images/supported_brands/shiftr.png and /dev/null differ diff --git a/source/images/supported_brands/sighthound-logo.png b/source/images/supported_brands/sighthound-logo.png new file mode 100644 index 000000000000..3a100832c184 Binary files /dev/null and b/source/images/supported_brands/sighthound-logo.png differ diff --git a/source/images/supported_brands/sisyphus.png b/source/images/supported_brands/sisyphus.png deleted file mode 100644 index a1fd5cc537d1..000000000000 Binary files a/source/images/supported_brands/sisyphus.png and /dev/null differ diff --git a/source/images/supported_brands/skybell.png b/source/images/supported_brands/skybell.png deleted file mode 100644 index b8a8a0cec2f9..000000000000 Binary files a/source/images/supported_brands/skybell.png and /dev/null differ diff --git a/source/images/supported_brands/smarthab.png b/source/images/supported_brands/smarthab.png deleted file mode 100644 index 47db7fbd8107..000000000000 Binary files a/source/images/supported_brands/smarthab.png and /dev/null differ diff --git a/source/images/supported_brands/sncb_nmbs.gif b/source/images/supported_brands/sncb_nmbs.gif deleted file mode 100644 index f78f3f35f6dc..000000000000 Binary files a/source/images/supported_brands/sncb_nmbs.gif and /dev/null differ diff --git a/source/images/supported_brands/solax-logo.png b/source/images/supported_brands/solax-logo.png deleted file mode 100644 index a9dce20ba7b2..000000000000 Binary files a/source/images/supported_brands/solax-logo.png and /dev/null differ diff --git a/source/images/supported_brands/soma.png b/source/images/supported_brands/soma.png deleted file mode 100644 index 9ad8a13d5d62..000000000000 Binary files a/source/images/supported_brands/soma.png and /dev/null differ diff --git a/source/images/supported_brands/somfy.png b/source/images/supported_brands/somfy.png deleted file mode 100644 index f9ef2a55ae0a..000000000000 Binary files a/source/images/supported_brands/somfy.png and /dev/null differ diff --git a/source/images/supported_brands/sonarr.png b/source/images/supported_brands/sonarr.png deleted file mode 100644 index 18eb60666857..000000000000 Binary files a/source/images/supported_brands/sonarr.png and /dev/null differ diff --git a/source/images/supported_brands/spaceapi.png b/source/images/supported_brands/spaceapi.png deleted file mode 100644 index 83b10582565f..000000000000 Binary files a/source/images/supported_brands/spaceapi.png and /dev/null differ diff --git a/source/images/supported_brands/spider.png b/source/images/supported_brands/spider.png deleted file mode 100644 index 6444ecec9e1e..000000000000 Binary files a/source/images/supported_brands/spider.png and /dev/null differ diff --git a/source/images/supported_brands/spotify.png b/source/images/supported_brands/spotify.png deleted file mode 100644 index aca36380cba5..000000000000 Binary files a/source/images/supported_brands/spotify.png and /dev/null differ diff --git a/source/images/supported_brands/sql.png b/source/images/supported_brands/sql.png deleted file mode 100644 index b190bf363e5b..000000000000 Binary files a/source/images/supported_brands/sql.png and /dev/null differ diff --git a/source/images/supported_brands/starlingbank.png b/source/images/supported_brands/starlingbank.png deleted file mode 100644 index 1a6fbd7f6e79..000000000000 Binary files a/source/images/supported_brands/starlingbank.png and /dev/null differ diff --git a/source/images/supported_brands/statsd.png b/source/images/supported_brands/statsd.png deleted file mode 100644 index bb0f431cbf88..000000000000 Binary files a/source/images/supported_brands/statsd.png and /dev/null differ diff --git a/source/images/supported_brands/streamlabswater.png b/source/images/supported_brands/streamlabswater.png deleted file mode 100644 index b77ba3cc54cb..000000000000 Binary files a/source/images/supported_brands/streamlabswater.png and /dev/null differ diff --git a/source/images/supported_brands/suez.png b/source/images/supported_brands/suez.png deleted file mode 100644 index 57c8d53c06d3..000000000000 Binary files a/source/images/supported_brands/suez.png and /dev/null differ diff --git a/source/images/supported_brands/supla.png b/source/images/supported_brands/supla.png deleted file mode 100644 index ee690c287293..000000000000 Binary files a/source/images/supported_brands/supla.png and /dev/null differ diff --git a/source/images/supported_brands/swiss-hydrological-data.png b/source/images/supported_brands/swiss-hydrological-data.png deleted file mode 100644 index 56acf41976be..000000000000 Binary files a/source/images/supported_brands/swiss-hydrological-data.png and /dev/null differ diff --git a/source/images/supported_brands/switchbot.png b/source/images/supported_brands/switchbot.png deleted file mode 100644 index 9dc95f280be4..000000000000 Binary files a/source/images/supported_brands/switchbot.png and /dev/null differ diff --git a/source/images/supported_brands/switcher_boiler.png b/source/images/supported_brands/switcher_boiler.png deleted file mode 100644 index ad29c02e9692..000000000000 Binary files a/source/images/supported_brands/switcher_boiler.png and /dev/null differ diff --git a/source/images/supported_brands/switchmate-logo-rgb.png b/source/images/supported_brands/switchmate-logo-rgb.png deleted file mode 100644 index 800fa82ceee5..000000000000 Binary files a/source/images/supported_brands/switchmate-logo-rgb.png and /dev/null differ diff --git a/source/images/supported_brands/syslog.png b/source/images/supported_brands/syslog.png deleted file mode 100644 index de352e232baa..000000000000 Binary files a/source/images/supported_brands/syslog.png and /dev/null differ diff --git a/source/images/supported_brands/system_monitor.png b/source/images/supported_brands/system_monitor.png deleted file mode 100644 index b76145c2b113..000000000000 Binary files a/source/images/supported_brands/system_monitor.png and /dev/null differ diff --git a/source/images/supported_brands/tankerkoenig.png b/source/images/supported_brands/tankerkoenig.png new file mode 100755 index 000000000000..5d3dd8156771 Binary files /dev/null and b/source/images/supported_brands/tankerkoenig.png differ diff --git a/source/images/supported_brands/tautulli.png b/source/images/supported_brands/tautulli.png deleted file mode 100644 index 10496c5440e8..000000000000 Binary files a/source/images/supported_brands/tautulli.png and /dev/null differ diff --git a/source/images/supported_brands/tcp_ip.png b/source/images/supported_brands/tcp_ip.png deleted file mode 100644 index ee28a51ba2e9..000000000000 Binary files a/source/images/supported_brands/tcp_ip.png and /dev/null differ diff --git a/source/images/supported_brands/tellduslive.svg b/source/images/supported_brands/tellduslive.svg deleted file mode 100644 index 86962e8a7f79..000000000000 --- a/source/images/supported_brands/tellduslive.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/source/images/supported_brands/tensorflow.png b/source/images/supported_brands/tensorflow.png deleted file mode 100644 index 0a8f6982628d..000000000000 Binary files a/source/images/supported_brands/tensorflow.png and /dev/null differ diff --git a/source/images/supported_brands/tesla.png b/source/images/supported_brands/tesla.png deleted file mode 100644 index 3f828e53152c..000000000000 Binary files a/source/images/supported_brands/tesla.png and /dev/null differ diff --git a/source/images/supported_brands/tfiac.png b/source/images/supported_brands/tfiac.png deleted file mode 100644 index 27c11faedf97..000000000000 Binary files a/source/images/supported_brands/tfiac.png and /dev/null differ diff --git a/source/images/supported_brands/thethingsnetwork.png b/source/images/supported_brands/thethingsnetwork.png deleted file mode 100644 index b530e5b19f2b..000000000000 Binary files a/source/images/supported_brands/thethingsnetwork.png and /dev/null differ diff --git a/source/images/supported_brands/tile.png b/source/images/supported_brands/tile.png deleted file mode 100644 index 5fe620999b2a..000000000000 Binary files a/source/images/supported_brands/tile.png and /dev/null differ diff --git a/source/images/supported_brands/tmb.png b/source/images/supported_brands/tmb.png new file mode 100644 index 000000000000..0606dd3f180c Binary files /dev/null and b/source/images/supported_brands/tmb.png differ diff --git a/source/images/supported_brands/tomato.png b/source/images/supported_brands/tomato.png deleted file mode 100644 index 11150d51582c..000000000000 Binary files a/source/images/supported_brands/tomato.png and /dev/null differ diff --git a/source/images/supported_brands/trackr.png b/source/images/supported_brands/trackr.png deleted file mode 100644 index 57a6b6cb60d5..000000000000 Binary files a/source/images/supported_brands/trackr.png and /dev/null differ diff --git a/source/images/supported_brands/train.png b/source/images/supported_brands/train.png deleted file mode 100644 index 6ab406b26040..000000000000 Binary files a/source/images/supported_brands/train.png and /dev/null differ diff --git a/source/images/supported_brands/travisci.svg b/source/images/supported_brands/travisci.svg deleted file mode 100644 index ae791ed9f25c..000000000000 --- a/source/images/supported_brands/travisci.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/images/supported_brands/upc.png b/source/images/supported_brands/upc.png deleted file mode 100644 index c2419cb04474..000000000000 Binary files a/source/images/supported_brands/upc.png and /dev/null differ diff --git a/source/images/supported_brands/updater.png b/source/images/supported_brands/updater.png deleted file mode 100644 index c9808e4d699c..000000000000 Binary files a/source/images/supported_brands/updater.png and /dev/null differ diff --git a/source/images/supported_brands/uscis.png b/source/images/supported_brands/uscis.png deleted file mode 100644 index fe35b8b9affa..000000000000 Binary files a/source/images/supported_brands/uscis.png and /dev/null differ diff --git a/source/images/supported_brands/vallox.png b/source/images/supported_brands/vallox.png deleted file mode 100644 index e8c0b6a3f708..000000000000 Binary files a/source/images/supported_brands/vallox.png and /dev/null differ diff --git a/source/images/supported_brands/velbus.png b/source/images/supported_brands/velbus.png index 76b24398b3f2..072f9dbc98e9 100644 Binary files a/source/images/supported_brands/velbus.png and b/source/images/supported_brands/velbus.png differ diff --git a/source/images/supported_brands/verizon.png b/source/images/supported_brands/verizon.png deleted file mode 100644 index 564aa99b4930..000000000000 Binary files a/source/images/supported_brands/verizon.png and /dev/null differ diff --git a/source/images/supported_brands/vesync.png b/source/images/supported_brands/vesync.png deleted file mode 100644 index ca2b3ca75a3d..000000000000 Binary files a/source/images/supported_brands/vesync.png and /dev/null differ diff --git a/source/images/supported_brands/videolan.png b/source/images/supported_brands/videolan.png deleted file mode 100644 index 776fe71bee0f..000000000000 Binary files a/source/images/supported_brands/videolan.png and /dev/null differ diff --git a/source/images/supported_brands/visual-studio.png b/source/images/supported_brands/visual-studio.png deleted file mode 100644 index 64af2161e6ce..000000000000 Binary files a/source/images/supported_brands/visual-studio.png and /dev/null differ diff --git a/source/images/supported_brands/vivotek.jpg b/source/images/supported_brands/vivotek.jpg deleted file mode 100644 index 951b786c6055..000000000000 Binary files a/source/images/supported_brands/vivotek.jpg and /dev/null differ diff --git a/source/images/supported_brands/vizio-smartcast.png b/source/images/supported_brands/vizio-smartcast.png deleted file mode 100644 index 7d740d21a443..000000000000 Binary files a/source/images/supported_brands/vizio-smartcast.png and /dev/null differ diff --git a/source/images/supported_brands/waqi.png b/source/images/supported_brands/waqi.png deleted file mode 100644 index 2b18ec20927c..000000000000 Binary files a/source/images/supported_brands/waqi.png and /dev/null differ diff --git a/source/images/supported_brands/waterfurnace.png b/source/images/supported_brands/waterfurnace.png deleted file mode 100644 index 6ff59eea92a4..000000000000 Binary files a/source/images/supported_brands/waterfurnace.png and /dev/null differ diff --git a/source/images/supported_brands/watson_tts.png b/source/images/supported_brands/watson_tts.png deleted file mode 100644 index 91a882537be6..000000000000 Binary files a/source/images/supported_brands/watson_tts.png and /dev/null differ diff --git a/source/images/supported_brands/waze.png b/source/images/supported_brands/waze.png deleted file mode 100644 index da757989362e..000000000000 Binary files a/source/images/supported_brands/waze.png and /dev/null differ diff --git a/source/images/supported_brands/windows.png b/source/images/supported_brands/windows.png deleted file mode 100644 index cb7a8574105d..000000000000 Binary files a/source/images/supported_brands/windows.png and /dev/null differ diff --git a/source/images/supported_brands/wirelesstag.png b/source/images/supported_brands/wirelesstag.png deleted file mode 100644 index 283b0a7e6318..000000000000 Binary files a/source/images/supported_brands/wirelesstag.png and /dev/null differ diff --git a/source/images/supported_brands/withings.png b/source/images/supported_brands/withings.png deleted file mode 100644 index 51b690f7cab6..000000000000 Binary files a/source/images/supported_brands/withings.png and /dev/null differ diff --git a/source/images/supported_brands/wled.png b/source/images/supported_brands/wled.png deleted file mode 100644 index 6e553ca7f555..000000000000 Binary files a/source/images/supported_brands/wled.png and /dev/null differ diff --git a/source/images/supported_brands/woonveilig.png b/source/images/supported_brands/woonveilig.png deleted file mode 100644 index 4f016de020cc..000000000000 Binary files a/source/images/supported_brands/woonveilig.png and /dev/null differ diff --git a/source/images/supported_brands/worldtidesinfo.png b/source/images/supported_brands/worldtidesinfo.png deleted file mode 100644 index d86741719255..000000000000 Binary files a/source/images/supported_brands/worldtidesinfo.png and /dev/null differ diff --git a/source/images/supported_brands/wwlln.jpg b/source/images/supported_brands/wwlln.jpg deleted file mode 100644 index 6edc2ddc3d80..000000000000 Binary files a/source/images/supported_brands/wwlln.jpg and /dev/null differ diff --git a/source/images/supported_brands/x10.gif b/source/images/supported_brands/x10.gif deleted file mode 100644 index 0c0e80dbc8b1..000000000000 Binary files a/source/images/supported_brands/x10.gif and /dev/null differ diff --git a/source/images/supported_brands/xeoma.png b/source/images/supported_brands/xeoma.png deleted file mode 100644 index 5ef0a5587097..000000000000 Binary files a/source/images/supported_brands/xeoma.png and /dev/null differ diff --git a/source/images/supported_brands/xfinity.svg b/source/images/supported_brands/xfinity.svg deleted file mode 100644 index 8a9ec171c8ac..000000000000 --- a/source/images/supported_brands/xfinity.svg +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/source/images/supported_brands/xiaomi.png b/source/images/supported_brands/xiaomi.png deleted file mode 100644 index c123fefdb436..000000000000 Binary files a/source/images/supported_brands/xiaomi.png and /dev/null differ diff --git a/source/images/supported_brands/xs1.jpg b/source/images/supported_brands/xs1.jpg deleted file mode 100644 index b4215eda2766..000000000000 Binary files a/source/images/supported_brands/xs1.jpg and /dev/null differ diff --git a/source/images/supported_brands/yesssat.png b/source/images/supported_brands/yesssat.png deleted file mode 100644 index 6b6adf2a0ce1..000000000000 Binary files a/source/images/supported_brands/yesssat.png and /dev/null differ diff --git a/source/images/supported_brands/yi.png b/source/images/supported_brands/yi.png deleted file mode 100644 index ddda86670750..000000000000 Binary files a/source/images/supported_brands/yi.png and /dev/null differ diff --git a/source/images/supported_brands/zengge.png b/source/images/supported_brands/zengge.png deleted file mode 100644 index c08820028c25..000000000000 Binary files a/source/images/supported_brands/zengge.png and /dev/null differ diff --git a/source/images/supported_brands/zillow.png b/source/images/supported_brands/zillow.png deleted file mode 100644 index 4cb006f8dba1..000000000000 Binary files a/source/images/supported_brands/zillow.png and /dev/null differ diff --git a/source/index.html b/source/index.html index 4c8c60bdb78c..fa148a7431ef 100644 --- a/source/index.html +++ b/source/index.html @@ -14,13 +14,12 @@

    Current Version: {{ site.current_major_version }}.{{ - site.current_minor_version - }}.{{ site.current_patch_version }} + site.current_minor_version }}.{{ site.current_patch_version }}

    Released: - {{ - site.date_released | date: "%B %d, %Y" - }} + {{ site.date_released | date: "%B %d, %Y" }}