diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f924178e3a1..cf0a9789dfc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,6 +26,29 @@ jobs: 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 diff --git a/.textlintrc.json b/.textlintrc.json new file mode 100644 index 00000000000..8d83be6ca3b --- /dev/null +++ b/.textlintrc.json @@ -0,0 +1,256 @@ +{ + "filters": {}, + "rules": { + "common-misspellings": { + "ignore": ["Proove", "Alot"] + }, + "terminology": { + "defaultTerms": false, + "skip": ["Blockquote"], + "terms": [ + " API ", + "2FA", + "ABB Solar PV", + "ABB", + "Abode", + "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", + "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", + "Beckhoff", + "Bravia", + "BSSID", + "Cisco IOS", + "Dark Sky", + "Debian", + "deCONZ", + "DNS", + "Docker Hub", + "Docker", + "ecobee", + "Elgato Key Light", + "Elgato", + "Emoncms", + "Entur", + "ESPHome", + "Everspring", + "FFmpeg", + "Fibaro", + "FreeNAS", + "FRITZ!Box", + "GitHub", + "Google Assistant", + "Google Home", + "Google Wifi", + "Google", + "GraphiQL", + "GraphQL", + "Home Assistant Companion", + "Home Assistant Core", + "Home Assistant Operating System", + "Home Assistant OS", + "Home Assistant Supervised", + "Home Assistant Supervisor", + "Home Assistant", + "HomeKit", + "Honeywell", + "HTTP", + "HTTPS", + "iCloud", + "IFTTT", + "IKEA", + "IntesisHome", + "iOS", + "IoT", + "IP", + "ISY994", + "iTunes", + "JSON", + "Kafka", + "KEF", + "LED", + "Let's Encrypt", + "Life360", + "LinkedIn", + "Linky", + "Linux", + "Lovelace", + "MacBook", + "macOS", + "Markdown", + "Microsoft", + "MikroTik", + "MIME", + "MJPEG", + "MQTT", + "NAS", + "Network Information Server", + "NGINX", + "NodeMCU", + "Norway", + "OpenWrt", + "PayPal", + "PDU", + "Philips", + "PlayStation", + "Plex Media Server", + "Plex", + "PTZ", + "REST API", + "RFXtrx", + "RouterOS", + "RTSP", + "Samung", + "Sentry", + "Signal Messenger", + "SkyBell", + "Slack", + "SleepIQ", + "SmartThings", + "SMS", + "Sonos", + "Sony", + "Spotify", + "SQL", + "SSID", + "SSL", + "StarLine", + "Stookalert", + "StreamLabs", + "STT", + "Sure Petcare", + "SwitchBot", + "Synology", + "Tahoma", + "TCP/IP", + "Tesla", + "TMB", + "Todoist", + "Toon", + "TTS", + "Tuya", + "TV", + "Twilio", + "TwinCAT", + "Twitch", + "Twitter", + "UART", + "Ubiquiti", + "Ubuntu", + "UI", + "UniFi", + "unRAID", + "UPS", + "URL", + "Velbus", + "Velux", + "Venstar", + "Vera", + "Verisure", + "VersaSense", + "ViCare", + "Viessmann", + "VIVOTEK", + "Vizio", + "Vultr", + "Wink", + "WLED", + "Wunderlist", + "WWLLN", + "Xiaomi", + "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"], + ["Alarm ?dot ?com", "Alarm.com"], + ["an URL", "a URL"], + ["API['’]?s", "APIs"], + ["backwards compatible", "backward compatible"], + ["client ?side", "client-side"], + ["colour", "color"], + ["DarkSky", "Dark Sky"], + ["end ?to ?end", "end-to-end"], + ["FRITZ!? ?Box", "FRITZ!Box"], + ["hass", "Home Assistant"], + ["he or she", "they"], + ["he/she", "they"], + ["Home-?Ass?s?iss?tt?ant", "Home Assistant"], + ["ISY ?994", "ISY994"], + ["Mac ?OS", "macOS"], + ["OS ?X", "macOS"], + ["repo\\b", "repository"], + ["config\\b", "configuration"], + ["Sky Bell", "SkyBell"], + ["Sleep IQ", "SleepIQ"], + ["Twill?o", "Twilio"], + ["analyse", "analyze"], + ["recognise", "recognize"], + ["travelled", "traveled"], + ["licence", "license"], + ["behaviour", "behavior"], + ["two ?steps? authentication", "two-step authentication"], + ["URL['’]?s", "URLs"], + ["ZWave", "Z-Wave"] + ] + } + } +} diff --git a/package-lock.json b/package-lock.json index bfe070db959..aa10e59bafc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,12 +4,507 @@ "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", @@ -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", @@ -134,6 +635,12 @@ "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", @@ -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", @@ -261,6 +857,15 @@ "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", @@ -295,6 +926,18 @@ "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", @@ -318,12 +961,56 @@ "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", @@ -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", @@ -395,6 +1088,18 @@ "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", "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": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", @@ -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", @@ -458,6 +1169,30 @@ "integrity": "sha512-EYisGhpgSCwspmIuRHGjROWTon2Xp8Z7U03Wubk/bTL5TTRC5R1rGVgyjzBrk9+ULdH6cRD06KRcw/xfqhVYKQ==", "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": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz", @@ -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,6 +1227,15 @@ "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", @@ -495,6 +1245,46 @@ "minimist": "^1.2.0" } }, + "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": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-2.3.1.tgz", @@ -505,12 +1295,85 @@ "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==", "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": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz", @@ -529,6 +1392,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", @@ -559,12 +1441,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 +1499,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 +1544,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,18 +1612,86 @@ "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==", "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": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -645,6 +1704,96 @@ "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", @@ -665,6 +1814,16 @@ "picomatch": "^2.0.4" } }, + "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", @@ -797,30 +1956,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", @@ -844,6 +2071,36 @@ "strip-ansi": "^5.2.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", @@ -875,12 +2132,30 @@ "ansi-regex": "^4.1.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": { + "is-utf8": "^0.2.0" + } + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "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 +2165,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.1", + "resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-2.1.1.tgz", + "integrity": "sha512-955Q289wCubt67iar/U3jnsPvwHkRhWnOM0gqE3fQDBMJkFsoDnYNummU8CmAPXK7usnbwa2r48q0s4FtATWbw==", + "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", @@ -915,6 +2366,12 @@ "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 +2390,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", @@ -1026,6 +2498,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", @@ -1104,6 +2582,16 @@ "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", @@ -1170,6 +2658,12 @@ "integrity": "sha512-CstaK/ebTz1W3Qp41Bt9Lj/2DmumFsCwC2sKahDNSPh0mPh7/UyMLCoU8ZBX34CRU0d61B4W41yIFsV0NKMZeA==", "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": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz", @@ -1186,12 +2680,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 4e6167fb9ac..3787539be7b 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.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", + "textlint": "^11.6.3", + "textlint-rule-common-misspellings": "^1.0.1", + "textlint-rule-terminology": "^2.1.1" + }, + "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/source/_cookbook/automation_first_light.markdown b/source/_cookbook/automation_first_light.markdown index d16a4310e59..f752ad5f9bf 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/fail2ban.markdown b/source/_cookbook/fail2ban.markdown index 7b09d9b4ee1..5813f33913e 100644 --- a/source/_cookbook/fail2ban.markdown +++ b/source/_cookbook/fail2ban.markdown @@ -160,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 45a8161b666..c2aa460254f 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. diff --git a/source/_cookbook/owntracks_two_mqtt_broker.markdown b/source/_cookbook/owntracks_two_mqtt_broker.markdown index 6bb66837a81..d7ee62f43bb 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/track_battery_level.markdown b/source/_cookbook/track_battery_level.markdown index 3028e1322e1..b73828caa7a 100644 --- a/source/_cookbook/track_battery_level.markdown +++ b/source/_cookbook/track_battery_level.markdown @@ -4,7 +4,8 @@ description: "Basic example how to track the battery level of your mobile device ha_category: Automation Examples --- -### Android and iOS Devices +## 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 @@ -12,6 +13,7 @@ The [Home Assistant Companion Apps](https://companion.home-assistant.io/) for iO 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 @@ -27,13 +29,15 @@ 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. +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 @@ -49,6 +53,7 @@ sensor: {%- endif %} device_class: battery ``` + {% endraw %} Replace 'device_tracker.xxxxx' with your phone name as shown under Configuration/Devices Device Info/Entities, for example: 'device_tracker.mi_a1' @@ -59,6 +64,7 @@ If you have configured Owntracks to send reports via MQTT you can use the receiv 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 @@ -68,6 +74,7 @@ sensor: value_template: '{{ value_json.batt }}' device_class: battery ``` + {% endraw %} #### HTTP @@ -76,6 +83,7 @@ If you have configured Owntracks to send reports to your Home Assistant instance Replace `deviceid` with the set Device ID in Owntracks. {% raw %} + ```yaml sensor: - platform: template @@ -84,4 +92,5 @@ sensor: value_template: "{{ state_attr('device_tracker.deviceid', 'battery_level') }}" unit_of_measurement: '%' ``` + {% endraw %} diff --git a/source/_docs/asterisk_mbox.markdown b/source/_docs/asterisk_mbox.markdown index 724c376d6f2..05fe5a34bcc 100644 --- a/source/_docs/asterisk_mbox.markdown +++ b/source/_docs/asterisk_mbox.markdown @@ -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 diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index ce51136927b..2dfc89d14c4 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -15,9 +15,9 @@ 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). +- Configure Hass.io (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. @@ -86,11 +86,11 @@ While you should hopefully be storing your passwords in a password manager, if y 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 9d33438b574..a026cd0ed1d 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. diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index 9a8d98e56b4..d5ff1b98553 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -31,7 +31,7 @@ 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. @@ -84,7 +84,7 @@ Knowing how to access the [state object](/docs/configuration/state_object/) of a The following tables show the available trigger data per platform. -### event +### Event | Template variable | Data | | ---- | ---- | @@ -92,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 | | ---- | ---- | @@ -102,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 | | ---- | ---- | @@ -114,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 | | ---- | ---- | @@ -124,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 | | ---- | ---- | @@ -132,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 | | ---- | ---- | @@ -142,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 | | ---- | ---- | @@ -165,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/troubleshooting.markdown b/source/_docs/automation/troubleshooting.markdown index 5085acd0a12..12354c708df 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/synology.markdown b/source/_docs/autostart/synology.markdown index ec134d4a8aa..58906c7c8b4 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/upstart.markdown b/source/_docs/autostart/upstart.markdown index 5870aa06501..065f525e25a 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/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index b7fffed55f6..d3b26d31339 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: diff --git a/source/_docs/configuration/secrets.markdown b/source/_docs/configuration/secrets.markdown index c9d108f9282..f09b10eeadb 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 2d7774f51ab..8ec666a8cab 100644 --- a/source/_docs/configuration/securing.markdown +++ b/source/_docs/configuration/securing.markdown @@ -21,7 +21,7 @@ If you want secure remote access, the easiest option is to use [Home Assistant c 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 a7763020f9f..ec01ded7592 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -4,7 +4,7 @@ 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). @@ -154,8 +154,8 @@ If you have issues checkout `home-assistant.log` in the configuration directory 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` diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index b4e1f2ebc28..c15caf07ef9 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/). @@ -186,7 +186,7 @@ Note: [UNIX timestamp](https://en.wikipedia.org/wiki/Unix_time) is the number of ### 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. diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index a3e61e72108..db724c64dc3 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -24,7 +24,7 @@ One of the most common problems with Home Assistant is an invalid `configuration - 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 `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/). +- 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): diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown index 44722632095..fbaffb82e9f 100644 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -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. diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown index 6a44dfd1d9c..cf135c6046d 100644 --- a/source/_docs/ecosystem/appdaemon/api.markdown +++ b/source/_docs/ecosystem/appdaemon/api.markdown @@ -18,7 +18,7 @@ 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): @@ -1936,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 @@ -2035,19 +2035,19 @@ self.error("Some Critical string", level="CRITICAL") 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"] ``` -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] diff --git a/source/_docs/ecosystem/appdaemon/running.markdown b/source/_docs/ecosystem/appdaemon/running.markdown index 031eb19b8ce..615ad1d356d 100644 --- a/source/_docs/ecosystem/appdaemon/running.markdown +++ b/source/_docs/ecosystem/appdaemon/running.markdown @@ -8,7 +8,7 @@ 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 acockburn/appdaemon:latest diff --git a/source/_docs/ecosystem/appdaemon/tutorial.markdown b/source/_docs/ecosystem/appdaemon/tutorial.markdown index fdf445b4c1d..b546206e660 100644 --- a/source/_docs/ecosystem/appdaemon/tutorial.markdown +++ b/source/_docs/ecosystem/appdaemon/tutorial.markdown @@ -23,7 +23,7 @@ So why `AppDaemon`? AppDaemon is not meant to replace Home Assistant Automations - 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 diff --git a/source/_docs/ecosystem/appdaemon/updating.markdown b/source/_docs/ecosystem/appdaemon/updating.markdown index 9d95683b5c7..9f3b1e3b876 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/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index af6dbcf12e4..4b47a08c634 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -198,7 +198,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: diff --git a/source/_docs/ecosystem/haproxy.markdown b/source/_docs/ecosystem/haproxy.markdown index 85c99300b07..e601ef5e9ec 100644 --- a/source/_docs/ecosystem/haproxy.markdown +++ b/source/_docs/ecosystem/haproxy.markdown @@ -86,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/nginx.markdown b/source/_docs/ecosystem/nginx.markdown index ce8cf97fd38..9383b9ad58d 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 { diff --git a/source/_docs/ecosystem/notebooks/database.markdown b/source/_docs/ecosystem/notebooks/database.markdown index b91fdadb3fe..11ad7cce37b 100644 --- a/source/_docs/ecosystem/notebooks/database.markdown +++ b/source/_docs/ecosystem/notebooks/database.markdown @@ -1,7 +1,7 @@ --- title: "Database" -description: "Accessing the Home-Assistant database from a Jupyter notebook." +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. +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/tor.markdown b/source/_docs/ecosystem/tor.markdown index 613d57f5ce7..37ac2694acd 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/mobile.markdown b/source/_docs/frontend/mobile.markdown index f399ccc7482..b2b6201d606 100644 --- a/source/_docs/frontend/mobile.markdown +++ b/source/_docs/frontend/mobile.markdown @@ -6,9 +6,9 @@ redirect_from: /getting-started/mobile/ Home Assistant has [a companion app for both Android and iOS](/docs/ecosystem/ios/). -As an alternative to the iOS and Android companion apps, 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). +As an alternative to the iOS and Android companion apps, 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 +## Android 1. Open Chrome 2. Navigate to your Home Assistant instance @@ -17,10 +17,10 @@ As an alternative to the iOS and Android companion apps, you can add the Home As 5. A dialog will popup; tap on Add

- +

-### iOS +## iOS 1. Open Safari 2. Navigate to your Home Assistant instance diff --git a/source/_docs/installation/armbian.markdown b/source/_docs/installation/armbian.markdown index 3c61119fc87..cb6c1e983d7 100644 --- a/source/_docs/installation/armbian.markdown +++ b/source/_docs/installation/armbian.markdown @@ -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 01a99b4cc6e..02139e0cebe 100644 --- a/source/_docs/installation/docker.markdown +++ b/source/_docs/installation/docker.markdown @@ -30,7 +30,7 @@ docker run --init -d --name="home-assistant" -e "TZ=America/New_York" -v /home/p 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 @@ -42,7 +42,7 @@ Alternatively, `docker-compose` works with any recent release of `docker-ce` on 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). @@ -64,11 +64,11 @@ 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: @@ -117,7 +117,7 @@ Remark: to update your Home Assistant on your Docker within Synology NAS, you ju - 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 +- 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: @@ -131,13 +131,13 @@ If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assista ### 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 +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" +- 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") @@ -156,7 +156,7 @@ 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) +- 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*` @@ -165,7 +165,7 @@ If you want to use a USB Bluetooth adapter or Z-Wave USB stick with Home Assista - 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 + `-v` is your configuration path `-e` is set timezone - Edit `configuration.yaml` @@ -183,7 +183,7 @@ That will tell Home Assistant where to look for our Z-Wave radio. - 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 + First `-v` is your configuration path `-e` is set timezone - Edit the `configuration.yaml` file @@ -202,7 +202,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' @@ -232,7 +232,7 @@ 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 \ diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index 4ce9bbf28d4..86b41b505ae 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -292,7 +292,7 @@ This should output the following /dev/cuau0 /dev/cuaU0 ``` -Add the Z-Wave config to your `configuration.yaml` and restart Home Assistant +Add the Z-Wave configuration to your `configuration.yaml` and restart Home Assistant ```bash vi /home/homeassistant/.homeassistant/configuration.yaml diff --git a/source/_docs/installation/synology.markdown b/source/_docs/installation/synology.markdown index d8102b008ed..59cd1a28b20 100644 --- a/source/_docs/installation/synology.markdown +++ b/source/_docs/installation/synology.markdown @@ -23,29 +23,27 @@ The main benefit from this method is that you can assign Home Assistant its own 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 @@ -58,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 @@ -72,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) @@ -188,7 +187,7 @@ Create links to python folders to make things easier in the future: # 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 @@ -214,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: diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index b6b9a0be12b..00da82ff005 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -142,14 +142,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 diff --git a/source/_docs/mqtt/service.markdown b/source/_docs/mqtt/service.markdown index ce24e1011ab..f848093a169 100644 --- a/source/_docs/mqtt/service.markdown +++ b/source/_docs/mqtt/service.markdown @@ -50,7 +50,7 @@ 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 config folder. This is useful when debugging a problem. +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 | | ---------------------- | -------- | ----------- | diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index 9166b959477..626f5b94ad4 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,7 +94,7 @@ 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. diff --git a/source/_docs/tools/dev-tools.markdown b/source/_docs/tools/dev-tools.markdown index 5e2e0ed8096..72c1e0c6506 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/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown index 126a495fcdd..57c4d5ade65 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 591da3767e3..0822378bed0 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 @@ -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 diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index babad7c72be..69b2ac6d322 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 @@ -457,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 diff --git a/source/_docs/z-wave/devices.markdown b/source/_docs/z-wave/devices.markdown index 0aa392486aa..b8c79c760c3 100644 --- a/source/_docs/z-wave/devices.markdown +++ b/source/_docs/z-wave/devices.markdown @@ -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 diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index b22fb4aa281..5d49aea9073 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -181,7 +181,7 @@ 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 diff --git a/source/_integrations/aftership.markdown b/source/_integrations/aftership.markdown index a04b251280a..f8192a42004 100644 --- a/source/_integrations/aftership.markdown +++ b/source/_integrations/aftership.markdown @@ -44,7 +44,7 @@ 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 | | ---------------------- | -------- | -------- | ----------- | @@ -54,7 +54,7 @@ api_key: ## 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 | | ---------------------- | -------- | -------- | ----------- | diff --git a/source/_integrations/airvisual.markdown b/source/_integrations/airvisual.markdown index da875049a17..74c6595e11f 100644 --- a/source/_integrations/airvisual.markdown +++ b/source/_integrations/airvisual.markdown @@ -14,7 +14,7 @@ The `airvisual` sensor platform queries the [AirVisual](https://airvisual.com/) 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.
@@ -160,8 +160,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/alarm_control_panel.ifttt.markdown b/source/_integrations/alarm_control_panel.ifttt.markdown index 5d326be2936..0fcf7f4049a 100644 --- a/source/_integrations/alarm_control_panel.ifttt.markdown +++ b/source/_integrations/alarm_control_panel.ifttt.markdown @@ -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/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"}`. +* **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.template.markdown b/source/_integrations/alarm_control_panel.template.markdown index 28aecba612d..c4b1ed0a97a 100644 --- a/source/_integrations/alarm_control_panel.template.markdown +++ b/source/_integrations/alarm_control_panel.template.markdown @@ -13,7 +13,7 @@ The `template` integrations creates alarm control panels that combine integratio 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. +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. diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown index 0bdcd0dc360..d1fcc1aed93 100644 --- a/source/_integrations/alarmdecoder.markdown +++ b/source/_integrations/alarmdecoder.markdown @@ -108,7 +108,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: diff --git a/source/_integrations/alexa.intent.markdown b/source/_integrations/alexa.intent.markdown index b434486c9b2..b70928da73a 100644 --- a/source/_integrations/alexa.intent.markdown +++ b/source/_integrations/alexa.intent.markdown @@ -68,7 +68,7 @@ Next you need to create a Lambda function. - 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. @@ -211,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: @@ -259,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: diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 0280afa3017..93da91cb92b 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -109,7 +109,7 @@ Next you need create a Lambda function. - 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. diff --git a/source/_integrations/almond.markdown b/source/_integrations/almond.markdown index 8f400f6c978..ef85b5e4722 100644 --- a/source/_integrations/almond.markdown +++ b/source/_integrations/almond.markdown @@ -26,7 +26,7 @@ Almond consists of three parts: ### Hass.io installation -To install Almond Server on Hass.io, go to Hass.io App Store, search for Almond and click on Install. Once started, it will initiate a config flow to finish set up in Home Assistant. You can find it on the integrations page in the configuration panel. +To install Almond Server on Hass.io, go to Hass.io App 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 @@ -43,7 +43,7 @@ almond: host: http://127.0.0.1:3000 ``` -The Almond integration does not update config entries yet. If you make a change to configuration.yaml, you will need to remove the config entry and then restart Home Assistant. +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 diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index 916d1d4ab20..595e6347f23 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -87,8 +87,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 @@ -135,12 +135,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 diff --git a/source/_integrations/android_ip_webcam.markdown b/source/_integrations/android_ip_webcam.markdown index b84d8267125..f6a72df1301 100644 --- a/source/_integrations/android_ip_webcam.markdown +++ b/source/_integrations/android_ip_webcam.markdown @@ -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 5aa94b35eb7..82fa9416f57 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -194,7 +194,7 @@ 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 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. diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown index 27052df885a..65482765ebf 100644 --- a/source/_integrations/apcupsd.markdown +++ b/source/_integrations/apcupsd.markdown @@ -10,7 +10,7 @@ ha_release: 0.13 ha_iot_class: Local Polling --- -[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. +[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: @@ -34,12 +34,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 +47,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 addesses will not connect. This includes Hass.io running in Docker, even when hosted on the same machine or a virtual machine.
## 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 diff --git a/source/_integrations/arest.markdown b/source/_integrations/arest.markdown index 1d1aab15510..3d41220ce18 100644 --- a/source/_integrations/arest.markdown +++ b/source/_integrations/arest.markdown @@ -21,7 +21,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: @@ -72,7 +72,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: @@ -175,7 +175,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 3556fc7f804..5a60ec23f11 100644 --- a/source/_integrations/arlo.markdown +++ b/source/_integrations/arlo.markdown @@ -152,7 +152,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 3be2fd75acd..baa00be6e00 100644 --- a/source/_integrations/aruba.markdown +++ b/source/_integrations/aruba.markdown @@ -11,7 +11,7 @@ This platform allows you to detect presence by looking at connected devices to a 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/asuswrt.markdown b/source/_integrations/asuswrt.markdown index 088f4f4e1cb..a73d2651802 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 @@ -16,8 +16,8 @@ The `asuswrt` integration is the main integration to connect to a [ASUSWRT](http 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 diff --git a/source/_integrations/aurora.markdown b/source/_integrations/aurora.markdown index 09222ea627b..a6e48efd4ef 100644 --- a/source/_integrations/aurora.markdown +++ b/source/_integrations/aurora.markdown @@ -7,7 +7,7 @@ ha_release: 0.39 logo: noaa.png --- -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/automatic.markdown b/source/_integrations/automatic.markdown index 16754fe63bd..9cb9cfc2576 100644 --- a/source/_integrations/automatic.markdown +++ b/source/_integrations/automatic.markdown @@ -16,7 +16,7 @@ The `automatic` device tracker platform offers presence detection by retrieving 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. -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 diff --git a/source/_integrations/avion.markdown b/source/_integrations/avion.markdown index 20077987233..7e9df4e04c4 100644 --- a/source/_integrations/avion.markdown +++ b/source/_integrations/avion.markdown @@ -8,7 +8,7 @@ logo: avi-on.png ha_release: 0.37 --- -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 +76,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/axis.markdown b/source/_integrations/axis.markdown index 6e1c2954c03..6b4befd53cd 100644 --- a/source/_integrations/axis.markdown +++ b/source/_integrations/axis.markdown @@ -27,7 +27,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/bh1750.markdown b/source/_integrations/bh1750.markdown index 0501af1295e..2ba909f0806 100644 --- a/source/_integrations/bh1750.markdown +++ b/source/_integrations/bh1750.markdown @@ -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.rfxtrx.markdown b/source/_integrations/binary_sensor.rfxtrx.markdown index 670c8fef901..ac7b52e4867 100644 --- a/source/_integrations/binary_sensor.rfxtrx.markdown +++ b/source/_integrations/binary_sensor.rfxtrx.markdown @@ -9,17 +9,17 @@ ha_release: 0.48 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 99e551adeb4..18d6aa35d5f 100644 --- a/source/_integrations/binary_sensor.template.markdown +++ b/source/_integrations/binary_sensor.template.markdown @@ -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 %} diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown index f1afacdab5d..14077e84a66 100644 --- a/source/_integrations/blink.markdown +++ b/source/_integrations/blink.markdown @@ -203,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/bluesound.markdown b/source/_integrations/bluesound.markdown index d4bcf552c6e..744f4535e86 100644 --- a/source/_integrations/bluesound.markdown +++ b/source/_integrations/bluesound.markdown @@ -10,8 +10,7 @@ ha_iot_class: Local Polling 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 diff --git a/source/_integrations/bme280.markdown b/source/_integrations/bme280.markdown index 89635428c0a..57efba7c626 100644 --- a/source/_integrations/bme280.markdown +++ b/source/_integrations/bme280.markdown @@ -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 689c6d75c92..32e98038793 100644 --- a/source/_integrations/bme680.markdown +++ b/source/_integrations/bme680.markdown @@ -195,7 +195,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 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 diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index 0ec2d74fc39..aef068f9f9e 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -370,7 +370,7 @@ Information about how to install on Windows can be found [here](/integrations/br 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: @@ -413,7 +413,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: @@ -430,7 +430,7 @@ switch: friendly_name: 'Humidifier' ``` -Example config for `mp1` device: +Example configuration for `mp1` device: ```yaml switch: @@ -565,7 +565,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 diff --git a/source/_integrations/calendar.google.markdown b/source/_integrations/calendar.google.markdown index 04fcb7b92ef..4613dc8bfa6 100644 --- a/source/_integrations/calendar.google.markdown +++ b/source/_integrations/calendar.google.markdown @@ -12,7 +12,7 @@ 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` in your config directory 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. diff --git a/source/_integrations/camera.ffmpeg.markdown b/source/_integrations/camera.ffmpeg.markdown index b8f497cc3b2..4b23c2f5d43 100644 --- a/source/_integrations/camera.ffmpeg.markdown +++ b/source/_integrations/camera.ffmpeg.markdown @@ -12,7 +12,7 @@ The `ffmpeg` platform allows you to use any video feed as a camera in Home Assis ## 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/cast.markdown b/source/_integrations/cast.markdown index 2bd49bfafb5..7888edbb168 100644 --- a/source/_integrations/cast.markdown +++ b/source/_integrations/cast.markdown @@ -10,7 +10,7 @@ ha_iot_class: Local Polling ha_config_flow: true --- -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 diff --git a/source/_integrations/cert_expiry.markdown b/source/_integrations/cert_expiry.markdown index 5402235e89b..bd9145cd66d 100644 --- a/source/_integrations/cert_expiry.markdown +++ b/source/_integrations/cert_expiry.markdown @@ -19,7 +19,7 @@ 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 `configuration.yaml` file. ```yaml diff --git a/source/_integrations/cisco_ios.markdown b/source/_integrations/cisco_ios.markdown index d1827e4041e..ef704dbafde 100644 --- a/source/_integrations/cisco_ios.markdown +++ b/source/_integrations/cisco_ios.markdown @@ -9,7 +9,7 @@ ha_codeowners: - '@fbradyirl' --- -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/climate.knx.markdown b/source/_integrations/climate.knx.markdown index 2fd5dc2cf48..9274d7acbc6 100644 --- a/source/_integrations/climate.knx.markdown +++ b/source/_integrations/climate.knx.markdown @@ -50,7 +50,7 @@ climate: 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/cloudflare.markdown b/source/_integrations/cloudflare.markdown index 3fc65ff1f81..fb40d370c4e 100644 --- a/source/_integrations/cloudflare.markdown +++ b/source/_integrations/cloudflare.markdown @@ -90,7 +90,7 @@ cloudflare: - EXAMPLE.COM ``` -#### The minimum DNS record settings are (if you have set up https already): +#### 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: diff --git a/source/_integrations/config.markdown b/source/_integrations/config.markdown index 23e626dd151..c20362b7eef 100644 --- a/source/_integrations/config.markdown +++ b/source/_integrations/config.markdown @@ -1,5 +1,5 @@ --- -title: Config +title: Configuration description: Instructions on how to setup the configuration panel for Home Assistant. logo: home-assistant.png ha_category: @@ -53,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 diff --git a/source/_integrations/cover.command_line.markdown b/source/_integrations/cover.command_line.markdown index b0053579b54..646fbb5bd82 100644 --- a/source/_integrations/cover.command_line.markdown +++ b/source/_integrations/cover.command_line.markdown @@ -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.rfxtrx.markdown b/source/_integrations/cover.rfxtrx.markdown index 21da46532d5..1a276eb8f61 100644 --- a/source/_integrations/cover.rfxtrx.markdown +++ b/source/_integrations/cover.rfxtrx.markdown @@ -9,7 +9,7 @@ ha_release: 0.27 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: diff --git a/source/_integrations/darksky.markdown b/source/_integrations/darksky.markdown index 3b191b5553b..d4fe5874f7c 100644 --- a/source/_integrations/darksky.markdown +++ b/source/_integrations/darksky.markdown @@ -68,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. @@ -176,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/ddwrt.markdown b/source/_integrations/ddwrt.markdown index bb28ea003a8..48a991747ef 100644 --- a/source/_integrations/ddwrt.markdown +++ b/source/_integrations/ddwrt.markdown @@ -44,7 +44,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 cb72d42e125..fdead68dbb1 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -45,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 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 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. @@ -313,9 +313,9 @@ class RemoteControl(hass.Hass): {% endraw %} -#### Appdaemon Ikea Tradfri 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 %} @@ -444,7 +444,7 @@ The `entity_id` names will be `light.device_name`, where `device_name` is define - 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 +- Xiaomi Aqara Smart LED Bulb (white) E27 ZNLDP12LM ## Scene diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown index eceacafabdb..96ccf20c966 100644 --- a/source/_integrations/default_config.markdown +++ b/source/_integrations/default_config.markdown @@ -1,6 +1,6 @@ --- -title: Default Config -description: The default config integration will initate a default configuration for Home Assistant. +title: Default Configuration +description: The default configuration integration will initiate a default configuration for Home Assistant. logo: home-assistant.png ha_category: - Other @@ -9,21 +9,21 @@ ha_release: 0.88 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/) ## Configuration diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index 80e53c600f1..130e2e7b536 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -97,7 +97,7 @@ A few notes: #### 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 https://ca.denon.com/ca/product/hometheater/receivers/avrx4400h?docname=AVR-X6400H_X4400H_X3400H_X2400H_X1400H_S930H_S730H_PROTOCOL_V01.xlsx and a full list of IR codes at http://www.denon-hifi.nl/uk/product/hometheater/avreceivers/avr3313?docname=AVR3313_IR_CODE_V01.pdf +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 | | ---------------------- | -------- | ---------------------------------------------------- | diff --git a/source/_integrations/device_tracker.markdown b/source/_integrations/device_tracker.markdown index 171b8751aac..6c9a9bbb57c 100644 --- a/source/_integrations/device_tracker.markdown +++ b/source/_integrations/device_tracker.markdown @@ -66,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: @@ -88,7 +88,7 @@ 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. | diff --git a/source/_integrations/dialogflow.markdown b/source/_integrations/dialogflow.markdown index 9e06b06a98c..14f154214c2 100644 --- a/source/_integrations/dialogflow.markdown +++ b/source/_integrations/dialogflow.markdown @@ -39,7 +39,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?` @@ -52,7 +52,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/discovery.markdown b/source/_integrations/discovery.markdown index 749ff452e8d..feed89e53af 100644 --- a/source/_integrations/discovery.markdown +++ b/source/_integrations/discovery.markdown @@ -25,7 +25,7 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi * [Netgear routers](/integrations/netgear) * [Panasonic Viera](/integrations/panasonic_viera) * [Philips Hue](/integrations/hue) - * [Plex media server](/integrations/plex#media-player) + * [Plex Media Server](/integrations/plex#media-player) * [Roku media player](/integrations/roku#media-player) * [SABnzbd downloader](/integrations/sabnzbd) * [Samsung SyncThru Printer](/integrations/syncthru) @@ -86,7 +86,7 @@ Valid values for ignore are: * `openhome`: Linn / Openhome * `panasonic_viera`: Panasonic Viera * `philips_hue`: Philips Hue - * `plex_mediaserver`: Plex media server + * `plex_mediaserver`: Plex Media Server * `roku`: Roku media player * `sabnzbd`: SABnzbd downloader * `samsung_printer`: Samsung SyncThru Printer diff --git a/source/_integrations/dlna_dmr.markdown b/source/_integrations/dlna_dmr.markdown index 125bdd674f6..d7031865e9d 100644 --- a/source/_integrations/dlna_dmr.markdown +++ b/source/_integrations/dlna_dmr.markdown @@ -42,7 +42,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/doods.markdown b/source/_integrations/doods.markdown index 201e9c97562..e0ba3775c23 100644 --- a/source/_integrations/doods.markdown +++ b/source/_integrations/doods.markdown @@ -11,7 +11,7 @@ The `doods` image processing platform allows you to detect and recognize objects ## 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 @@ -178,7 +178,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 diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index 9f21e05efef..4e063fe6bb0 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -1,5 +1,5 @@ --- -title: Ecobee +title: ecobee description: Instructions for how to integrate ecobee thermostats and sensors within Home Assistant. logo: ecobee.png ha_category: @@ -48,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): @@ -76,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. diff --git a/source/_integrations/emoncms.markdown b/source/_integrations/emoncms.markdown index b6d3474f477..29b79994213 100644 --- a/source/_integrations/emoncms.markdown +++ b/source/_integrations/emoncms.markdown @@ -23,21 +23,21 @@ sensor: ## 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". +- `api_key` (*Required*): The read API key for your Emoncms user. +- `url` (*Required*): The base URL of Emoncms, use 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". ## 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. diff --git a/source/_integrations/emoncms_history.markdown b/source/_integrations/emoncms_history.markdown index bd7f23b6104..2bb3c0a2b63 100644 --- a/source/_integrations/emoncms_history.markdown +++ b/source/_integrations/emoncms_history.markdown @@ -24,11 +24,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_roku.markdown b/source/_integrations/emulated_roku.markdown index ea80363b9f7..3ed02e9dc5c 100644 --- a/source/_integrations/emulated_roku.markdown +++ b/source/_integrations/emulated_roku.markdown @@ -10,7 +10,7 @@ ha_config_flow: true --- 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. @@ -135,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/entur_public_transport.markdown b/source/_integrations/entur_public_transport.markdown index 32ee43e2615..b5be18d9409 100644 --- a/source/_integrations/entur_public_transport.markdown +++ b/source/_integrations/entur_public_transport.markdown @@ -107,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 8e8686c39ed..d77b41584db 100644 --- a/source/_integrations/environment_canada.markdown +++ b/source/_integrations/environment_canada.markdown @@ -35,9 +35,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 diff --git a/source/_integrations/ephember.markdown b/source/_integrations/ephember.markdown index ee53dd5a6ba..3b2e7329bc1 100644 --- a/source/_integrations/ephember.markdown +++ b/source/_integrations/ephember.markdown @@ -10,7 +10,7 @@ ha_codeowners: - '@ttroy50' --- -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/fail2ban.markdown b/source/_integrations/fail2ban.markdown index 00722a620de..62c24f48e4f 100644 --- a/source/_integrations/fail2ban.markdown +++ b/source/_integrations/fail2ban.markdown @@ -54,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. @@ -72,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: @@ -123,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 { @@ -158,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/fan.xiaomi_miio.markdown b/source/_integrations/fan.xiaomi_miio.markdown index 17bb3e5fd10..e161c5f590d 100644 --- a/source/_integrations/fan.xiaomi_miio.markdown +++ b/source/_integrations/fan.xiaomi_miio.markdown @@ -44,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) @@ -77,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) @@ -113,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) @@ -145,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) @@ -174,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) @@ -208,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) @@ -231,21 +231,21 @@ 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) @@ -257,23 +257,23 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - 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 - + - `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 * Power (on, off) @@ -282,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. @@ -360,7 +360,7 @@ Turn the buzzer off. ### Service `xiaomi_miio.fan_set_led_on` (Air Purifiers only) -Turn the led on. +Turn the LED on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| @@ -368,7 +368,7 @@ Turn the led on. ### Service `xiaomi_miio.fan_set_led_off` (Air Purifiers only) -Turn the led off. +Turn the LED off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| @@ -392,7 +392,7 @@ Turn the child lock off. ### 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 | |---------------------------|----------|---------------------------------------------------------| diff --git a/source/_integrations/feedreader.markdown b/source/_integrations/feedreader.markdown index d96dee2b265..720518012b8 100644 --- a/source/_integrations/feedreader.markdown +++ b/source/_integrations/feedreader.markdown @@ -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_motion.markdown b/source/_integrations/ffmpeg_motion.markdown index 2e24019ddc7..f194adc67e9 100644 --- a/source/_integrations/ffmpeg_motion.markdown +++ b/source/_integrations/ffmpeg_motion.markdown @@ -11,7 +11,7 @@ The `ffmpeg` platform allows you to use any video feed with [FFmpeg](https://www
-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 0cf0085bcaa..4deb6c8c380 100644 --- a/source/_integrations/ffmpeg_noise.markdown +++ b/source/_integrations/ffmpeg_noise.markdown @@ -11,7 +11,7 @@ The `ffmpeg` platform allows you to use any video or audio feed with [FFmpeg](ht
-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 230fa166660..8355fbe63a5 100644 --- a/source/_integrations/fibaro.markdown +++ b/source/_integrations/fibaro.markdown @@ -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/flux_led.markdown b/source/_integrations/flux_led.markdown index 12d90b1a650..0f633d44383 100644 --- a/source/_integrations/flux_led.markdown +++ b/source/_integrations/flux_led.markdown @@ -158,7 +158,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/fortios.markdown b/source/_integrations/fortios.markdown index 2cf29b52dcd..1245ef9047c 100644 --- a/source/_integrations/fortios.markdown +++ b/source/_integrations/fortios.markdown @@ -15,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/foursquare.markdown b/source/_integrations/foursquare.markdown index 41dd04d2e7d..d2cac644af9 100644 --- a/source/_integrations/foursquare.markdown +++ b/source/_integrations/foursquare.markdown @@ -42,7 +42,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 diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index 2762beae405..bc7b137a7de 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -19,7 +19,7 @@ There is currently support for the following device types within Home Assistant: * [Sensor](#sensor) with traffic metrics * [Device tracker](#presence-detection) for connected devices -* [Switch](#switch) to control WiFi +* [Switch](#switch) to control Wi-Fi ## Configuration @@ -35,18 +35,18 @@ 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. +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.
@@ -64,7 +64,7 @@ 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 and the reboot service working you will have to add "Modification des réglages de la Freebox +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 @@ -104,4 +104,4 @@ This service will reboot your Freebox router. It does not take any parameter. Be ## 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/fritz.markdown b/source/_integrations/fritz.markdown index e91bc696e14..498fd8212ff 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -1,5 +1,5 @@ --- -title: AVM Fritzbox +title: AVM FRITZ!Box description: Instructions on how to integrate AVM FRITZ!Box based routers into Home Assistant. logo: avm.png ha_category: @@ -7,11 +7,11 @@ ha_category: ha_release: '0.10' --- -The `fritz` platform offers presence detection by looking at connected devices to a [AVM Fritz!Box](https://avm.de/produkte/fritzbox/) based router. +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 @@ -21,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: @@ -35,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 7a1044a6523..25a6fbef9ea 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -11,7 +11,7 @@ ha_release: 0.68 ha_iot_class: Local Polling --- -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: @@ -42,12 +42,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,7 +62,7 @@ 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 @@ -71,7 +71,7 @@ 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,7 +84,7 @@ There 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 @@ -93,6 +93,6 @@ 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 470d85abf1f..4e1881cad3c 100644 --- a/source/_integrations/fritzbox_callmonitor.markdown +++ b/source/_integrations/fritzbox_callmonitor.markdown @@ -8,16 +8,16 @@ ha_release: 0.27 ha_iot_class: Local Polling --- -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. ## 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 @@ -42,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 b3a88fafb1a..e70187df7dd 100644 --- a/source/_integrations/fritzbox_netmonitor.markdown +++ b/source/_integrations/fritzbox_netmonitor.markdown @@ -8,9 +8,9 @@ ha_release: 0.36 ha_iot_class: Local Polling --- -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. -To use the Fritz!Box network monitor in your installation, add the following to your `configuration.yaml` file: +To use the FRITZ!Box network monitor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -20,7 +20,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 @@ -35,8 +35,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 | +|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 | @@ -49,5 +49,5 @@ The following statistics will be exposed as attributes. 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. +This integration does not support "FRITZ!Box 6490 Cable" with FritzOS 6.87 installed.
diff --git a/source/_integrations/frontend.markdown b/source/_integrations/frontend.markdown index 28cf66bb6a4..8cd22f36c63 100644 --- a/source/_integrations/frontend.markdown +++ b/source/_integrations/frontend.markdown @@ -19,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/garmin_connect.markdown b/source/_integrations/garmin_connect.markdown index 923a1ddd1d8..3b76f5f5456 100644 --- a/source/_integrations/garmin_connect.markdown +++ b/source/_integrations/garmin_connect.markdown @@ -15,16 +15,13 @@ The Garmin Connect sensor allows you to expose data from [Garmin Connect](https: ## 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 succesful login a standard set of sensors are enabled. +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. @@ -70,7 +67,6 @@ Lowest SPO2 Latest SPO2 ``` - Disabled by default: ```text diff --git a/source/_integrations/gearbest.markdown b/source/_integrations/gearbest.markdown index 4ce076ed841..40fdafb0274 100644 --- a/source/_integrations/gearbest.markdown +++ b/source/_integrations/gearbest.markdown @@ -25,7 +25,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/geniushub.markdown b/source/_integrations/geniushub.markdown index 0b2bdd5ac16..b9da60c0041 100644 --- a/source/_integrations/geniushub.markdown +++ b/source/_integrations/geniushub.markdown @@ -57,7 +57,7 @@ Switch entities will report back their state; other properties are available via - `On` for **Override** \ **On**, and - `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 behaviour you are expecting. +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. Individual smart plugs are not yet exposed as switches - you can create one zone per smart plug as a work-around. @@ -161,7 +161,7 @@ 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. diff --git a/source/_integrations/gitlab_ci.markdown b/source/_integrations/gitlab_ci.markdown index 1a4b045ba9d..7a9ee6ffd86 100644 --- a/source/_integrations/gitlab_ci.markdown +++ b/source/_integrations/gitlab_ci.markdown @@ -12,7 +12,7 @@ The `gitlab_ci` sensor platform integrates results reported by CI/CD Pipeline Jo ## 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/google_assistant.markdown b/source/_integrations/google_assistant.markdown index f2965b3ca34..d198836a78f 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -66,7 +66,7 @@ If you've added Home Assistant to your phone's home screen, you have to first re 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. diff --git a/source/_integrations/google_pubsub.markdown b/source/_integrations/google_pubsub.markdown index 9545095c0b9..02556f0e999 100644 --- a/source/_integrations/google_pubsub.markdown +++ b/source/_integrations/google_pubsub.markdown @@ -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`. diff --git a/source/_integrations/google_travel_time.markdown b/source/_integrations/google_travel_time.markdown index d316716acd4..92f3f1dcce0 100644 --- a/source/_integrations/google_travel_time.markdown +++ b/source/_integrations/google_travel_time.markdown @@ -77,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/habitica.markdown b/source/_integrations/habitica.markdown index f1e80396022..33872616eb7 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -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 [docs](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`. diff --git a/source/_integrations/harmony.markdown b/source/_integrations/harmony.markdown index dc9f6f0c8eb..ad542976fd4 100644 --- a/source/_integrations/harmony.markdown +++ b/source/_integrations/harmony.markdown @@ -31,7 +31,7 @@ remote: 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. +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 configuration 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 @@ -90,7 +90,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 | | ---------------------- | -------- | ----------- | diff --git a/source/_integrations/hdmi_cec.markdown b/source/_integrations/hdmi_cec.markdown index 3d8d903f247..1bc7667a369 100644 --- a/source/_integrations/hdmi_cec.markdown +++ b/source/_integrations/hdmi_cec.markdown @@ -122,7 +122,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 +137,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 +149,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/heos.markdown b/source/_integrations/heos.markdown index 0f99bbbc15d..b57169a25fb 100644 --- a/source/_integrations/heos.markdown +++ b/source/_integrations/heos.markdown @@ -118,7 +118,7 @@ You can play a HEOS Quick Select by nubmer or name with the `media_player.play_m | `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`) -#### 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/hikvision.markdown b/source/_integrations/hikvision.markdown index 64bdc61950d..d8b4eb3571c 100644 --- a/source/_integrations/hikvision.markdown +++ b/source/_integrations/hikvision.markdown @@ -98,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/hisense_aehw4a1.markdown b/source/_integrations/hisense_aehw4a1.markdown index e99a0f8b9b0..9fa484ca2d8 100644 --- a/source/_integrations/hisense_aehw4a1.markdown +++ b/source/_integrations/hisense_aehw4a1.markdown @@ -11,9 +11,9 @@ ha_codeowners: - '@bannhead' --- -The Hisense AEH-W4A1 is a WiFi module used to give WiFi connectivity to some Hisense ACs and rebranded models (Smart Cool, Beko and others). +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 WiFi modules (like AEH-W4B1 and AEH-W4E1) that are not compatible or otherwise tested with this integration. +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. diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index 2b0df659073..c73139fe1e9 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -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 33743215a88..6a095817ffa 100644 --- a/source/_integrations/hitron_coda.markdown +++ b/source/_integrations/hitron_coda.markdown @@ -32,7 +32,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/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 9c728c8c7f6..f094458fbe3 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -16,11 +16,11 @@ The `homeassistant` integration provides services for controlling Home Assistant ### Service `homeassistant.check_config` -Reads the config 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. +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 config file (`configuration.yaml`) and all linked files. Once loaded the new configuration is applied. +Loads the main configuration file (`configuration.yaml`) and all linked files. Once loaded the new configuration is applied. ### Service `homeassistant.restart` diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 1e6712df47a..371c9ff7342 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -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 @@ -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 diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index e35ab89203f..fb37e982d77 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -44,7 +44,7 @@ There is currently support for the following device types within Home Assistant: 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. Home Assistant does not currently support HomeKit BLE. @@ -73,13 +73,13 @@ This is normal - HomeKit controller is currently a local polling based integrati ### 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. @@ -94,7 +94,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 e71eb08c60f..52b2438c1df 100644 --- a/source/_integrations/homematic.markdown +++ b/source/_integrations/homematic.markdown @@ -37,7 +37,7 @@ Device support is available for most of the wired and wireless devices, as well
-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. +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.
@@ -503,7 +503,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 a61b7d1cbb0..a0703020881 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -78,10 +78,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 diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown index 01f2b0b418d..854b7902ccb 100644 --- a/source/_integrations/honeywell.markdown +++ b/source/_integrations/honeywell.markdown @@ -18,7 +18,7 @@ If your system is compatible with this integration, then you will be able access ## 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/html5.markdown b/source/_integrations/html5.markdown index 3fe4da08a95..a6b15af0b1d 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -313,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/htu21d.markdown b/source/_integrations/htu21d.markdown index edc7c43e3a2..144f8347c64 100644 --- a/source/_integrations/htu21d.markdown +++ b/source/_integrations/htu21d.markdown @@ -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/hyperion.markdown b/source/_integrations/hyperion.markdown index 2d9af3443b5..16606dfef50 100644 --- a/source/_integrations/hyperion.markdown +++ b/source/_integrations/hyperion.markdown @@ -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/icloud.markdown b/source/_integrations/icloud.markdown index eb45715ad9e..3bb2c8ccc11 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -78,9 +78,9 @@ You may receive an email and a notification from Apple saying that someone has l For the notification, press "Allow", then "OK".
-If 2 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. +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 2 Step Authentication and is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet. +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. diff --git a/source/_integrations/ifttt.markdown b/source/_integrations/ifttt.markdown index 5e0e7c4c7b1..5f9dc845be3 100644 --- a/source/_integrations/ifttt.markdown +++ b/source/_integrations/ifttt.markdown @@ -100,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/image_processing.markdown b/source/_integrations/image_processing.markdown index cfeb350ac39..ab00a547f39 100644 --- a/source/_integrations/image_processing.markdown +++ b/source/_integrations/image_processing.markdown @@ -8,7 +8,7 @@ Image processing enables Home Assistant to process images from [cameras](/integr
-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/).
@@ -56,7 +56,7 @@ The following event attributes will be present (platform-dependent): `entity_id` ## scan_interval and Optimising 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/incomfort.markdown b/source/_integrations/incomfort.markdown index 2ea0bef5eb9..9ff53bda70a 100644 --- a/source/_integrations/incomfort.markdown +++ b/source/_integrations/incomfort.markdown @@ -54,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 1f099b7ba05..171f6588401 100644 --- a/source/_integrations/influxdb.markdown +++ b/source/_integrations/influxdb.markdown @@ -60,12 +60,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: @@ -212,12 +212,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 diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index 12245543659..96161c987d1 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -59,7 +59,7 @@ input_text: 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 diff --git a/source/_integrations/iperf3.markdown b/source/_integrations/iperf3.markdown index 19daab71d12..a32d2da62b2 100644 --- a/source/_integrations/iperf3.markdown +++ b/source/_integrations/iperf3.markdown @@ -13,7 +13,7 @@ ha_codeowners: 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 @@ -98,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. @@ -111,7 +111,7 @@ 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: diff --git a/source/_integrations/joaoapps_join.markdown b/source/_integrations/joaoapps_join.markdown index f16d6782287..0f923ff761c 100644 --- a/source/_integrations/joaoapps_join.markdown +++ b/source/_integrations/joaoapps_join.markdown @@ -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 9ae1709b0c7..9c23e753381 100644 --- a/source/_integrations/juicenet.markdown +++ b/source/_integrations/juicenet.markdown @@ -13,7 +13,7 @@ ha_codeowners: - '@jesserockz' --- -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 diff --git a/source/_integrations/kankun.markdown b/source/_integrations/kankun.markdown index b844f607047..13f6d888e97 100644 --- a/source/_integrations/kankun.markdown +++ b/source/_integrations/kankun.markdown @@ -7,7 +7,7 @@ ha_release: 0.36 ha_iot_class: Local Polling --- -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/knx.markdown b/source/_integrations/knx.markdown index fd722ff0fa7..69fb7dbab09 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -113,7 +113,7 @@ fire_event_filter: 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 diff --git a/source/_integrations/kodi.markdown b/source/_integrations/kodi.markdown index 46358cfac5d..94a0ac6066c 100644 --- a/source/_integrations/kodi.markdown +++ b/source/_integrations/kodi.markdown @@ -124,7 +124,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: @@ -385,7 +385,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 1343c6cecf5..e6529b4bf47 100644 --- a/source/_integrations/konnected.markdown +++ b/source/_integrations/konnected.markdown @@ -26,7 +26,7 @@ This integration uses the [`discovery`](/integrations/discovery) component, whic
-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)
diff --git a/source/_integrations/lannouncer.markdown b/source/_integrations/lannouncer.markdown index ebae5eca4a5..973387d10a5 100644 --- a/source/_integrations/lannouncer.markdown +++ b/source/_integrations/lannouncer.markdown @@ -48,7 +48,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/lcn.markdown b/source/_integrations/lcn.markdown index f31bf090cf1..f3b81fb26da 100644 --- a/source/_integrations/lcn.markdown +++ b/source/_integrations/lcn.markdown @@ -44,7 +44,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: @@ -577,12 +577,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/lifx.markdown b/source/_integrations/lifx.markdown index ae434aba53c..c31de1f2b4f 100644 --- a/source/_integrations/lifx.markdown +++ b/source/_integrations/lifx.markdown @@ -13,7 +13,7 @@ The `lifx` integration allows you to integrate your [LIFX](https://www.lifx.com) _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 diff --git a/source/_integrations/light.knx.markdown b/source/_integrations/light.knx.markdown index f47b8233d39..7df94c5cb68 100644 --- a/source/_integrations/light.knx.markdown +++ b/source/_integrations/light.knx.markdown @@ -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.mqtt.markdown b/source/_integrations/light.mqtt.markdown index cdcd0c6db22..85f0260e417 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -335,7 +335,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). @@ -640,7 +640,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,9 +648,9 @@ 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 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. +- [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 diff --git a/source/_integrations/light.rfxtrx.markdown b/source/_integrations/light.rfxtrx.markdown index 031e27cd945..0fb5be5b2c9 100644 --- a/source/_integrations/light.rfxtrx.markdown +++ b/source/_integrations/light.rfxtrx.markdown @@ -10,7 +10,7 @@ ha_iot_class: Assumed State 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.xiaomi_aqara.markdown b/source/_integrations/light.xiaomi_aqara.markdown index c8940c38a69..cbf96cf2f6e 100644 --- a/source/_integrations/light.xiaomi_aqara.markdown +++ b/source/_integrations/light.xiaomi_aqara.markdown @@ -9,7 +9,7 @@ ha_iot_class: Local Push --- -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 1494eba80f8..27484aa390a 100644 --- a/source/_integrations/light.xiaomi_miio.markdown +++ b/source/_integrations/light.xiaomi_miio.markdown @@ -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 diff --git a/source/_integrations/limitlessled.markdown b/source/_integrations/limitlessled.markdown index 59597a5494f..fe19d1cd0c1 100644 --- a/source/_integrations/limitlessled.markdown +++ b/source/_integrations/limitlessled.markdown @@ -84,7 +84,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 +123,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 9cd5ebb485c..b7c9b6ae913 100644 --- a/source/_integrations/linksys_smart.markdown +++ b/source/_integrations/linksys_smart.markdown @@ -1,13 +1,13 @@ --- title: Linksys Smart Wi-Fi -description: Instructions on how to integrate Linksys Smart Wifi Router into Home Assistant. +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 --- -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 +20,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/lirc.markdown b/source/_integrations/lirc.markdown index ab39eb36de5..630f429501b 100644 --- a/source/_integrations/lirc.markdown +++ b/source/_integrations/lirc.markdown @@ -22,7 +22,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/logi_circle.markdown b/source/_integrations/logi_circle.markdown index 50343dc88a9..d7612456f05 100644 --- a/source/_integrations/logi_circle.markdown +++ b/source/_integrations/logi_circle.markdown @@ -115,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 05b50374b84..9a011d0e5ca 100644 --- a/source/_integrations/london_air.markdown +++ b/source/_integrations/london_air.markdown @@ -12,7 +12,7 @@ The `london_air` integration [queries](https://api.erg.kcl.ac.uk/AirQuality/Hour 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/luci.markdown b/source/_integrations/luci.markdown index bc47df1d97b..0b459c82500 100644 --- a/source/_integrations/luci.markdown +++ b/source/_integrations/luci.markdown @@ -10,9 +10,9 @@ ha_codeowners: - '@mzdrale' --- -_This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/integrations/openwrt/)._ +_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 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: @@ -58,11 +58,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/mailgun.markdown b/source/_integrations/mailgun.markdown index 67a5a4fde1b..2c6a03fed88 100644 --- a/source/_integrations/mailgun.markdown +++ b/source/_integrations/mailgun.markdown @@ -12,7 +12,7 @@ To be able to receive webhooks from Mailgun, your Home Assistant instance needs 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: diff --git a/source/_integrations/manual.markdown b/source/_integrations/manual.markdown index 0029971f04f..cea79d6c9f9 100644 --- a/source/_integrations/manual.markdown +++ b/source/_integrations/manual.markdown @@ -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/marytts.markdown b/source/_integrations/marytts.markdown index 28cd78b3c88..9533c8dbeda 100644 --- a/source/_integrations/marytts.markdown +++ b/source/_integrations/marytts.markdown @@ -46,7 +46,7 @@ language: type: string default: "`en_US`" effect: - description: "A dictionary of effects which should be applied to the speach output." + description: "A dictionary of effects which should be applied to the speech output." required: false type: map {% endconfiguration %} @@ -55,7 +55,7 @@ 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/). +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. diff --git a/source/_integrations/matrix.markdown b/source/_integrations/matrix.markdown index d676ea53061..7d66028403b 100644 --- a/source/_integrations/matrix.markdown +++ b/source/_integrations/matrix.markdown @@ -73,7 +73,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 diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown index 2a4d30f80a5..8ea3e3c525c 100644 --- a/source/_integrations/media_player.markdown +++ b/source/_integrations/media_player.markdown @@ -77,5 +77,5 @@ Currently only supported on [Sonos](/integrations/sonos), [Spotify](/integration 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. +- `tv`: Device is a television type device. +- `speaker`: Device is speaker or stereo type device. diff --git a/source/_integrations/mikrotik.markdown b/source/_integrations/mikrotik.markdown index e4e51b154d5..67bf3acf40e 100644 --- a/source/_integrations/mikrotik.markdown +++ b/source/_integrations/mikrotik.markdown @@ -34,7 +34,7 @@ Go to **IP** -> **Services** -> **API** and enable it. Make sure that port 8728 or the port you choose is accessible from your network. -Home Assistant offers Mikrotik integration through **Configuration** -> **Integrations** -> **Mikrotik**. +Home Assistant offers MikroTik integration through **Configuration** -> **Integrations** -> **MikroTik**. It also allows importing from the `configuration.yaml` file: ```yaml @@ -48,7 +48,7 @@ mikrotik: {% configuration %} name: - description: The name of your Mikrotik device. + description: The name of your MikroTik device. required: true default: Mikrotik type: string diff --git a/source/_integrations/minio.markdown b/source/_integrations/minio.markdown index ed9a5d835c0..0f3fbc9c3b5 100644 --- a/source/_integrations/minio.markdown +++ b/source/_integrations/minio.markdown @@ -45,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/mjpeg.markdown b/source/_integrations/mjpeg.markdown index 5ddd5dd9455..4beabb56a8e 100644 --- a/source/_integrations/mjpeg.markdown +++ b/source/_integrations/mjpeg.markdown @@ -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/nad.markdown b/source/_integrations/nad.markdown index 00d63cf4878..57e3a40da74 100644 --- a/source/_integrations/nad.markdown +++ b/source/_integrations/nad.markdown @@ -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/neato.markdown b/source/_integrations/neato.markdown index 1623255ec73..10dede4388a 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -26,7 +26,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: diff --git a/source/_integrations/netatmo.markdown b/source/_integrations/netatmo.markdown index 31e61f11cb2..f98fab48afc 100644 --- a/source/_integrations/netatmo.markdown +++ b/source/_integrations/netatmo.markdown @@ -48,7 +48,7 @@ client_secret: type: string {% endconfiguration %} -After the client_id and client_secret is added to your configuration.yaml you must enable Netatmo through the integrations page. +**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 diff --git a/source/_integrations/netdata.markdown b/source/_integrations/netdata.markdown index ae746df86d8..e81a0c47d9a 100644 --- a/source/_integrations/netdata.markdown +++ b/source/_integrations/netdata.markdown @@ -62,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/netio.markdown b/source/_integrations/netio.markdown index 713c58a427b..f2001c6c57d 100644 --- a/source/_integrations/netio.markdown +++ b/source/_integrations/netio.markdown @@ -8,7 +8,7 @@ ha_iot_class: Local Polling ha_release: 0.24 --- -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/nfandroidtv.markdown b/source/_integrations/nfandroidtv.markdown index 3fc9ccd81b3..a4cdb5fe67e 100644 --- a/source/_integrations/nfandroidtv.markdown +++ b/source/_integrations/nfandroidtv.markdown @@ -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/nut.markdown b/source/_integrations/nut.markdown index bfe35115ddc..2e01891eed5 100644 --- a/source/_integrations/nut.markdown +++ b/source/_integrations/nut.markdown @@ -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 diff --git a/source/_integrations/onvif.markdown b/source/_integrations/onvif.markdown index da4d8b0bead..119ca5a7fd3 100644 --- a/source/_integrations/onvif.markdown +++ b/source/_integrations/onvif.markdown @@ -57,7 +57,7 @@ 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` diff --git a/source/_integrations/opencv.markdown b/source/_integrations/opencv.markdown index 97107e7eae6..2115d3009dd 100644 --- a/source/_integrations/opencv.markdown +++ b/source/_integrations/opencv.markdown @@ -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: diff --git a/source/_integrations/openevse.markdown b/source/_integrations/openevse.markdown index db05ed5297c..9b7d532e17f 100644 --- a/source/_integrations/openevse.markdown +++ b/source/_integrations/openevse.markdown @@ -8,7 +8,7 @@ ha_release: 0.38 ha_iot_class: Local Polling --- -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/openhome.markdown b/source/_integrations/openhome.markdown index 109534e3826..aa1c3b80b61 100644 --- a/source/_integrations/openhome.markdown +++ b/source/_integrations/openhome.markdown @@ -10,7 +10,7 @@ ha_iot_class: Local Polling 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 +### Example `configuration.yaml` entry ```yaml discovery: diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index cbd003b6026..1f9cb3f2de5 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -50,15 +50,15 @@ api_key: required: true type: string elevation: - description: The elevation of the monitored location; if ommitted, the value specified in `configuration.yaml` will be used. + 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 ommitted, the value specified in `configuration.yaml` will be used. + description: The latitude of the monitored location; if omitted, the value specified in `configuration.yaml` will be used. required: false type: float longitude: - description: The longitude of the monitored location; if ommitted, the value specified in `configuration.yaml` will be used. + description: The longitude of the monitored location; if omitted, the value specified in `configuration.yaml` will be used. required: false type: float {% endconfiguration %} diff --git a/source/_integrations/openwrt.markdown b/source/_integrations/openwrt.markdown index b3da60fef51..90fee925772 100644 --- a/source/_integrations/openwrt.markdown +++ b/source/_integrations/openwrt.markdown @@ -1,13 +1,13 @@ --- title: "OpenWRT" -description: "Instructions on how to integrate OpenWRT routers into Home Assistant." +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. +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. @@ -32,7 +32,7 @@ There are _multiple_ ways of integrating an OpenWRT router for presence detectio ### 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: +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: diff --git a/source/_integrations/opnsense.markdown b/source/_integrations/opnsense.markdown index 31f7af2432c..9921045639a 100644 --- a/source/_integrations/opnsense.markdown +++ b/source/_integrations/opnsense.markdown @@ -32,7 +32,7 @@ to the OPNsense [documentation](https://docs.opnsense.org/development/how-tos/ap {% configuration %} url: - description: The URL for the OPNsense api endpoint of your router. + description: The URL for the OPNsense API endpoint of your router. type: string required: true api_key: @@ -44,7 +44,7 @@ api_secret: type: string required: true verify_ssl: - description: Set to true to enable the validation of the OPNsense API's SSL. + description: Set to true to enable the validation of the OPNsense API SSL. type: boolean required: false default: false diff --git a/source/_integrations/owntracks.markdown b/source/_integrations/owntracks.markdown index e076f80b823..4a8280a8eff 100644 --- a/source/_integrations/owntracks.markdown +++ b/source/_integrations/owntracks.markdown @@ -124,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/pandora.markdown b/source/_integrations/pandora.markdown index 4cc4b62b2e3..28871c2f6f4 100644 --- a/source/_integrations/pandora.markdown +++ b/source/_integrations/pandora.markdown @@ -10,24 +10,23 @@ ha_iot_class: Local Polling 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 diff --git a/source/_integrations/panel_iframe.markdown b/source/_integrations/panel_iframe.markdown index 352d019e6cb..8ca1c97e80f 100644 --- a/source/_integrations/panel_iframe.markdown +++ b/source/_integrations/panel_iframe.markdown @@ -32,7 +32,6 @@ panel_iframe: url: '/otherapp' ``` - {% configuration %} panel_iframe: description: Enables the panel_iframe component. Only allowed once. @@ -65,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/picotts.markdown b/source/_integrations/picotts.markdown index a814c1f5ee5..20aa2b554e2 100644 --- a/source/_integrations/picotts.markdown +++ b/source/_integrations/picotts.markdown @@ -8,8 +8,8 @@ ha_release: 0.36 --- 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: diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index b9e255c9e5d..c3264595d39 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -22,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**.
diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown index 6ac354c9555..af7da0bec7d 100644 --- a/source/_integrations/plugwise.markdown +++ b/source/_integrations/plugwise.markdown @@ -21,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 9cade50ec26..73f1accb295 100644 --- a/source/_integrations/plum_lightpad.markdown +++ b/source/_integrations/plum_lightpad.markdown @@ -8,12 +8,12 @@ logo: plum.png ha_release: 0.85 --- -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/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown index a4d75364037..51c62580890 100644 --- a/source/_integrations/proxmoxve.markdown +++ b/source/_integrations/proxmoxve.markdown @@ -20,7 +20,7 @@ After configuring this component, the binary sensors automatically appear. 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 config to your `configuration.yaml` file: +To use the `proxmoxve` component, add the following configuration to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -120,7 +120,7 @@ Before creating the user, we need to create a permissions role for the user. ### 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 config. +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` @@ -139,6 +139,6 @@ To apply the user and role just created, we need to give it permissions * Click `Permissions` * Open `Add` and click `User Permission` * Select "\" for the path -* Select your hass user ("hass") -* Select the Home Assistant role ("home-assistant") +* Select your Home Assistant user (`hass`) +* Select the Home Assistant role (`home-assistant`) * Make sure `Propigate` is checked diff --git a/source/_integrations/ps4.markdown b/source/_integrations/ps4.markdown index 8e2fc2a5b39..3450aec70a1 100644 --- a/source/_integrations/ps4.markdown +++ b/source/_integrations/ps4.markdown @@ -165,7 +165,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. diff --git a/source/_integrations/pushbullet.markdown b/source/_integrations/pushbullet.markdown index d96e84864db..8169511baef 100644 --- a/source/_integrations/pushbullet.markdown +++ b/source/_integrations/pushbullet.markdown @@ -143,7 +143,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 +157,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 +171,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 +184,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 4ab68f63740..b818ac6b7d8 100644 --- a/source/_integrations/pushetta.markdown +++ b/source/_integrations/pushetta.markdown @@ -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/radarr.markdown b/source/_integrations/radarr.markdown index c94d7aa7677..91368831d8f 100644 --- a/source/_integrations/radarr.markdown +++ b/source/_integrations/radarr.markdown @@ -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/raspihats.markdown b/source/_integrations/raspihats.markdown index 448b32227f1..eb22f0e719c 100644 --- a/source/_integrations/raspihats.markdown +++ b/source/_integrations/raspihats.markdown @@ -86,7 +86,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 +194,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 f70808f7eaf..9d22260d7ca 100644 --- a/source/_integrations/raspyrfm.markdown +++ b/source/_integrations/raspyrfm.markdown @@ -79,7 +79,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/recorder.markdown b/source/_integrations/recorder.markdown index f9cb8af4ec0..42df78e6c53 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -165,7 +165,7 @@ Some installations of MariaDB/MySQL may require an ALTERNATE_PORT (3rd-party hos
-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. +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.
diff --git a/source/_integrations/recswitch.markdown b/source/_integrations/recswitch.markdown index 9eba9e83cd3..22682597b9f 100644 --- a/source/_integrations/recswitch.markdown +++ b/source/_integrations/recswitch.markdown @@ -1,6 +1,6 @@ --- title: Ankuoo REC Switch -description: Instructions on how to integrate Ankuoo Rec Switch into Home Assistant. +description: Instructions on how to integrate Ankuoo REC Switch into Home Assistant. logo: ankuoo_recswitch.png ha_release: 0.81 ha_category: @@ -8,7 +8,7 @@ ha_category: ha_iot_class: Local Polling --- -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/rejseplanen.markdown b/source/_integrations/rejseplanen.markdown index 0289f8e6c75..94ab6d883ab 100644 --- a/source/_integrations/rejseplanen.markdown +++ b/source/_integrations/rejseplanen.markdown @@ -14,13 +14,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/rest.markdown b/source/_integrations/rest.markdown index febcb4a06e0..69fbf37cc36 100644 --- a/source/_integrations/rest.markdown +++ b/source/_integrations/rest.markdown @@ -300,7 +300,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 diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index 2b45a808c76..31cda0c343f 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -85,7 +85,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)
@@ -154,7 +154,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 451b990f442..459db92a14c 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -59,7 +59,7 @@ Not all protocols as advertised are enabled on the initial setup of your transce ### 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 config. +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 9dc7f4919b3..e907909898d 100644 --- a/source/_integrations/ring.markdown +++ b/source/_integrations/ring.markdown @@ -31,7 +31,7 @@ This component does NOT allow for live viewing of your Ring camera within Home A ## Configuration -Go to the integrations page in your config and click on new integration -> Ring. +Go to the integrations page in your configuration and click on new integration -> Ring. ## YAML configuration diff --git a/source/_integrations/rocketchat.markdown b/source/_integrations/rocketchat.markdown index 328f2313c41..cf87d79359d 100644 --- a/source/_integrations/rocketchat.markdown +++ b/source/_integrations/rocketchat.markdown @@ -24,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: diff --git a/source/_integrations/rova.markdown b/source/_integrations/rova.markdown index 40de5218116..0414d86e5a3 100644 --- a/source/_integrations/rova.markdown +++ b/source/_integrations/rova.markdown @@ -12,7 +12,7 @@ ha_iot_class: Cloud Polling ## 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 diff --git a/source/_integrations/rpi_gpio_pwm.markdown b/source/_integrations/rpi_gpio_pwm.markdown index 15835e16054..fcc13105bef 100644 --- a/source/_integrations/rpi_gpio_pwm.markdown +++ b/source/_integrations/rpi_gpio_pwm.markdown @@ -8,7 +8,7 @@ ha_release: 0.43 logo: raspberry-pi.png --- -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 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)). diff --git a/source/_integrations/saj.markdown b/source/_integrations/saj.markdown index ed26f24005b..6c8a033d019 100644 --- a/source/_integrations/saj.markdown +++ b/source/_integrations/saj.markdown @@ -14,8 +14,8 @@ The `saj` sensor will poll a [SAJ](https://www.saj-electric.com/) solar inverter 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 @@ -68,7 +68,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/samsungtv.markdown b/source/_integrations/samsungtv.markdown index fc19ce42b18..3cdc0a6c2c6 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -15,7 +15,7 @@ The `samsungtv` platform allows you to control a [Samsung Smart TV](https://www. ### Setup -Go to the integrations page in your config and click on new integration -> Samsung TV. +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. diff --git a/source/_integrations/sensibo.markdown b/source/_integrations/sensibo.markdown index 70dce13f6e1..8a3bbb08741 100644 --- a/source/_integrations/sensibo.markdown +++ b/source/_integrations/sensibo.markdown @@ -38,7 +38,7 @@ 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: diff --git a/source/_integrations/sensor.command_line.markdown b/source/_integrations/sensor.command_line.markdown index 62edb923463..fb5b2c78f72 100644 --- a/source/_integrations/sensor.command_line.markdown +++ b/source/_integrations/sensor.command_line.markdown @@ -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 diff --git a/source/_integrations/sensor.metoffice.markdown b/source/_integrations/sensor.metoffice.markdown index cbdd3dff02d..83d1f53fcf2 100644 --- a/source/_integrations/sensor.metoffice.markdown +++ b/source/_integrations/sensor.metoffice.markdown @@ -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.rfxtrx.markdown b/source/_integrations/sensor.rfxtrx.markdown index 40bad148235..fc4a797d977 100644 --- a/source/_integrations/sensor.rfxtrx.markdown +++ b/source/_integrations/sensor.rfxtrx.markdown @@ -10,7 +10,7 @@ ha_release: 0.7 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/skybell.markdown b/source/_integrations/skybell.markdown index 34c7945c289..a820c3e3ef6 100644 --- a/source/_integrations/skybell.markdown +++ b/source/_integrations/skybell.markdown @@ -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 c70fb19c262..e89f5ed0376 100644 --- a/source/_integrations/slack.markdown +++ b/source/_integrations/slack.markdown @@ -75,10 +75,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` diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index 49eb4c6b457..72fdd161a86 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -49,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 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). +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 @@ -112,7 +112,7 @@ The integration will trigger an event when a device with the [button](https://sm | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `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 config entry 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. | diff --git a/source/_integrations/smhi.markdown b/source/_integrations/smhi.markdown index 2e53261bed0..fe0804a6628 100644 --- a/source/_integrations/smhi.markdown +++ b/source/_integrations/smhi.markdown @@ -20,7 +20,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/snmp.markdown b/source/_integrations/snmp.markdown index 6ae8d3eb7b8..be68efffd4a 100644 --- a/source/_integrations/snmp.markdown +++ b/source/_integrations/snmp.markdown @@ -11,7 +11,7 @@ ha_iot_class: Local Polling ha_release: 0.57 --- -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,8 +34,8 @@ 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` | diff --git a/source/_integrations/solaredge_local.markdown b/source/_integrations/solaredge_local.markdown index 560ff4e51a1..40aacdfa225 100644 --- a/source/_integrations/solaredge_local.markdown +++ b/source/_integrations/solaredge_local.markdown @@ -27,7 +27,7 @@ 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 diff --git a/source/_integrations/solax.markdown b/source/_integrations/solax.markdown index f122f96974e..b5db11ff36b 100644 --- a/source/_integrations/solax.markdown +++ b/source/_integrations/solax.markdown @@ -11,11 +11,11 @@ ha_codeowners: - '@squishykid' --- -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 @@ -59,10 +59,10 @@ sensors: ### 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 wifi that connects to the inverters SSID). +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 +Example NGINX configuration ```text location / { diff --git a/source/_integrations/soma.markdown b/source/_integrations/soma.markdown index 4e8353a9288..74b060d1f89 100644 --- a/source/_integrations/soma.markdown +++ b/source/_integrations/soma.markdown @@ -13,7 +13,7 @@ ha_codeowners: 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. diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown index d83c0da0274..7ccf01c1bb9 100644 --- a/source/_integrations/somfy.markdown +++ b/source/_integrations/somfy.markdown @@ -11,7 +11,7 @@ ha_codeowners: - '@tetienne' --- -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. ## Installation @@ -62,7 +62,7 @@ client_secret: ### 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 diff --git a/source/_integrations/sonarr.markdown b/source/_integrations/sonarr.markdown index a58e92a540c..2d0b63ad3b8 100644 --- a/source/_integrations/sonarr.markdown +++ b/source/_integrations/sonarr.markdown @@ -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/sonos.markdown b/source/_integrations/sonos.markdown index 4af4c8e23b2..3332613ac07 100644 --- a/source/_integrations/sonos.markdown +++ b/source/_integrations/sonos.markdown @@ -12,7 +12,7 @@ ha_config_flow: true 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 diff --git a/source/_integrations/soundtouch.markdown b/source/_integrations/soundtouch.markdown index 906187d5b6d..62831cad630 100644 --- a/source/_integrations/soundtouch.markdown +++ b/source/_integrations/soundtouch.markdown @@ -81,7 +81,7 @@ 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 `play_everywhere` diff --git a/source/_integrations/spaceapi.markdown b/source/_integrations/spaceapi.markdown index 279c8b741ca..58945e46fa8 100644 --- a/source/_integrations/spaceapi.markdown +++ b/source/_integrations/spaceapi.markdown @@ -270,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/spotcrime.markdown b/source/_integrations/spotcrime.markdown index 8889ffb50c1..6512f2efdf6 100644 --- a/source/_integrations/spotcrime.markdown +++ b/source/_integrations/spotcrime.markdown @@ -9,7 +9,7 @@ ha_iot_class: Cloud Polling 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/ssdp.markdown b/source/_integrations/ssdp.markdown index f677803e337..67c5f6b53b2 100644 --- a/source/_integrations/ssdp.markdown +++ b/source/_integrations/ssdp.markdown @@ -7,9 +7,9 @@ ha_release: 0.94 logo: home-assistant.png --- -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" 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 diff --git a/source/_integrations/stookalert.markdown b/source/_integrations/stookalert.markdown index f08da8299b2..abdba5f4de7 100644 --- a/source/_integrations/stookalert.markdown +++ b/source/_integrations/stookalert.markdown @@ -11,8 +11,7 @@ ha_codeowners: - '@fwestenberg' --- -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. - +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 diff --git a/source/_integrations/stream.markdown b/source/_integrations/stream.markdown index 93ad40bb06b..1331b7d170b 100644 --- a/source/_integrations/stream.markdown +++ b/source/_integrations/stream.markdown @@ -54,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 3bc8a2bdfcb..9f7f1263500 100644 --- a/source/_integrations/streamlabswater.markdown +++ b/source/_integrations/streamlabswater.markdown @@ -9,7 +9,7 @@ ha_release: '0.95' ha_iot_class: Cloud Polling --- -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.
@@ -22,7 +22,7 @@ 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 @@ -36,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/supla.markdown b/source/_integrations/supla.markdown index eb2597bbf34..1ca79a2ce0b 100644 --- a/source/_integrations/supla.markdown +++ b/source/_integrations/supla.markdown @@ -40,7 +40,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/switch.command_line.markdown b/source/_integrations/switch.command_line.markdown index b7b9c2524e5..ad9a637b6a4 100644 --- a/source/_integrations/switch.command_line.markdown +++ b/source/_integrations/switch.command_line.markdown @@ -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.mysensors.markdown b/source/_integrations/switch.mysensors.markdown index f4439feff47..362adb0a4c9 100644 --- a/source/_integrations/switch.mysensors.markdown +++ b/source/_integrations/switch.mysensors.markdown @@ -50,7 +50,7 @@ For more information, visit the [serial API](https://www.mysensors.org/download) ## 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 | | ---------------------- | -------------------------------------------------------------------------------------------- | diff --git a/source/_integrations/switch.rfxtrx.markdown b/source/_integrations/switch.rfxtrx.markdown index e1f1ecaa38c..f61d08f1373 100644 --- a/source/_integrations/switch.rfxtrx.markdown +++ b/source/_integrations/switch.rfxtrx.markdown @@ -11,7 +11,7 @@ The `rfxtrx` platform support switches that communicate in the frequency range o ## 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,7 +88,7 @@ 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) - Toggle your new switch in the Home Assistant interface diff --git a/source/_integrations/switch.xiaomi_miio.markdown b/source/_integrations/switch.xiaomi_miio.markdown index a6dd3f74fcc..ac8bd31df4c 100644 --- a/source/_integrations/switch.xiaomi_miio.markdown +++ b/source/_integrations/switch.xiaomi_miio.markdown @@ -90,7 +90,7 @@ model: ### 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 | |---------------------------|----------|---------------------------------------------------------| @@ -98,7 +98,7 @@ Turn the wifi led on. ### 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 | |---------------------------|----------|---------------------------------------------------------| diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 3a8a86debf8..053ad161f71 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -10,7 +10,7 @@ ha_codeowners: - '@danielhiversen' --- -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 @@ -33,9 +33,9 @@ name: 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/tautulli.markdown b/source/_integrations/tautulli.markdown index 2859c84d12b..0d54a07aff4 100644 --- a/source/_integrations/tautulli.markdown +++ b/source/_integrations/tautulli.markdown @@ -56,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/telegram_broadcast.markdown b/source/_integrations/telegram_broadcast.markdown index c138ca1c1ca..17464649bd5 100644 --- a/source/_integrations/telegram_broadcast.markdown +++ b/source/_integrations/telegram_broadcast.markdown @@ -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 2292561224d..38dbfd928b1 100644 --- a/source/_integrations/telegram_polling.markdown +++ b/source/_integrations/telegram_polling.markdown @@ -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 81429f62891..091dfacec4d 100644 --- a/source/_integrations/telegram_webhooks.markdown +++ b/source/_integrations/telegram_webhooks.markdown @@ -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/tensorflow.markdown b/source/_integrations/tensorflow.markdown index 9c3db171f6c..551e1fccb0d 100644 --- a/source/_integrations/tensorflow.markdown +++ b/source/_integrations/tensorflow.markdown @@ -25,7 +25,7 @@ This integration requires files to be downloaded, compiled on your computer, and - 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} @@ -98,7 +98,7 @@ model: 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 @@ -157,7 +157,7 @@ image_processing: ## Optimising 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 diff --git a/source/_integrations/tof.markdown b/source/_integrations/tof.markdown index 43353f56018..5ff221b1101 100644 --- a/source/_integrations/tof.markdown +++ b/source/_integrations/tof.markdown @@ -62,6 +62,7 @@ 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. ## 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 f8748bca5ab..2e3b4c2a92f 100644 --- a/source/_integrations/tomato.markdown +++ b/source/_integrations/tomato.markdown @@ -7,7 +7,7 @@ ha_category: ha_release: pre 0.7 --- -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/tplink.markdown b/source/_integrations/tplink.markdown index f2df3a41a69..b2f10f3157a 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -20,7 +20,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 diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown index ccbb2b50e27..bc81ae4f094 100644 --- a/source/_integrations/transmission.markdown +++ b/source/_integrations/transmission.markdown @@ -119,7 +119,7 @@ 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 | | ---------------------- | -------- | ----------- | diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index a9d9a7812fc..2337e0b94c9 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -20,7 +20,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.
@@ -43,7 +43,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`` @@ -75,7 +75,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. @@ -83,7 +83,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 @@ -145,7 +145,7 @@ The integration has two caches. Both caches can be controlled with the `cache` o ### 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/twilio.markdown b/source/_integrations/twilio.markdown index d3f532fecfe..230ba85268a 100644 --- a/source/_integrations/twilio.markdown +++ b/source/_integrations/twilio.markdown @@ -37,7 +37,7 @@ 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)). diff --git a/source/_integrations/ubus.markdown b/source/_integrations/ubus.markdown index ab455b0a4b5..d132b58b54c 100644 --- a/source/_integrations/ubus.markdown +++ b/source/_integrations/ubus.markdown @@ -7,9 +7,9 @@ ha_category: ha_release: 0.7.6 --- -_This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/integrations/openwrt)._ +_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 +17,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 @@ -119,7 +119,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/uk_transport.markdown b/source/_integrations/uk_transport.markdown index 128fa890995..294a06a8713 100644 --- a/source/_integrations/uk_transport.markdown +++ b/source/_integrations/uk_transport.markdown @@ -146,6 +146,6 @@ And the template sensor for viewing the next bus attributes. ## 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 78aca8b6b63..b226bb6f3d2 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -44,12 +44,12 @@ unifi: {% configuration %} host: - description: Same address as relevant config entry, needed to identify config entry. + description: Same address as relevant configuration entry, needed to identify configuration entry. type: string required: true default: None site: - description: Same site as relevant config entry, needed to identify config entry. + description: Same site as relevant configuration entry, needed to identify configuration entry. type: string required: true default: None @@ -87,13 +87,13 @@ ssid_filter: ### 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 @@ -111,11 +111,11 @@ 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 `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. ### 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. diff --git a/source/_integrations/unifi_direct.markdown b/source/_integrations/unifi_direct.markdown index dbc20717f95..5fd06268816 100644 --- a/source/_integrations/unifi_direct.markdown +++ b/source/_integrations/unifi_direct.markdown @@ -8,7 +8,7 @@ ha_iot_class: Local Polling ha_release: 0.59 --- -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: @@ -23,15 +23,15 @@ 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 %} diff --git a/source/_integrations/unifiled.markdown b/source/_integrations/unifiled.markdown index 8aa27c5033c..5f0661bfdc6 100644 --- a/source/_integrations/unifiled.markdown +++ b/source/_integrations/unifiled.markdown @@ -10,7 +10,7 @@ ha_codeowners: - '@florisvdk' --- -[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. +[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: @@ -29,22 +29,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 diff --git a/source/_integrations/uvc.markdown b/source/_integrations/uvc.markdown index a24c9b985a0..44d02b547dd 100644 --- a/source/_integrations/uvc.markdown +++ b/source/_integrations/uvc.markdown @@ -10,7 +10,7 @@ ha_iot_class: Local Polling 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.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown index 8125ff62f41..e7d8048fbfe 100644 --- a/source/_integrations/vacuum.mqtt.markdown +++ b/source/_integrations/vacuum.mqtt.markdown @@ -12,7 +12,7 @@ There are two possible message schemas - `legacy` and `state`. 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 @@ -320,7 +320,7 @@ payload_pause: 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. + 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 value_template: @@ -417,7 +417,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 +492,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 +525,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.xiaomi_miio.markdown b/source/_integrations/vacuum.xiaomi_miio.markdown index 0101164bc04..bae683ab8a3 100644 --- a/source/_integrations/vacuum.xiaomi_miio.markdown +++ b/source/_integrations/vacuum.xiaomi_miio.markdown @@ -236,7 +236,7 @@ If using an Android device to retrieve the Access Token only `v5.4.49` of Mi Hom

The iPhone app still stores the token in the SQLite db as of `v4.23.4` (Nov 17, 2019).

-After resetting the WiFi settings of the Xiaomi robot vacuum, a new Access Token will be generated and therefore these instructions need to be followed again. +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.

@@ -303,7 +303,7 @@ This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuu ### 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 Wifi network the Vacuum creates. If the vacuum is already paired it's likely this method will only return `???` as your token. +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: diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index dafd75accf0..acd515fb6b2 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -32,7 +32,7 @@ The pushbutton LEDs of input modules are disabled by default. These can be enabl ## 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. @@ -48,7 +48,7 @@ velbus: 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: diff --git a/source/_integrations/velux.markdown b/source/_integrations/velux.markdown index 2a6946067ab..f39209275db 100644 --- a/source/_integrations/velux.markdown +++ b/source/_integrations/velux.markdown @@ -37,7 +37,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/vera.markdown b/source/_integrations/vera.markdown index d46ccbfc236..c5038161d69 100644 --- a/source/_integrations/vera.markdown +++ b/source/_integrations/vera.markdown @@ -32,7 +32,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,7 +77,7 @@ 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. diff --git a/source/_integrations/versasense.markdown b/source/_integrations/versasense.markdown index 5ba9198c8ff..0add4a8ec1e 100644 --- a/source/_integrations/versasense.markdown +++ b/source/_integrations/versasense.markdown @@ -25,14 +25,14 @@ versasense: {% configuration %} host: - description: "The IP address or hostname of the VersaSense gateway. Including *protocol* and *port*, e.g., https://gateway.versasense.com:8889" + 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 +All VersaSense gateways with software version >= 1.0.2.10 The integration is tested with following peripherals and devices: diff --git a/source/_integrations/vivotek.markdown b/source/_integrations/vivotek.markdown index 4c4e63b41b2..af3b7bff23b 100644 --- a/source/_integrations/vivotek.markdown +++ b/source/_integrations/vivotek.markdown @@ -1,6 +1,6 @@ --- title: Vivotek -description: Instructions on how to integrate Vivotek cameras within Home Assistant. +description: Instructions on how to integrate VIVOTEK cameras within Home Assistant. ha_category: - Camera logo: vivotek.jpg @@ -10,7 +10,7 @@ ha_codeowners: - '@HarlemSquirrel' --- -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]`. @@ -35,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. diff --git a/source/_integrations/waze_travel_time.markdown b/source/_integrations/waze_travel_time.markdown index 224740691a6..4cc8fdf330f 100644 --- a/source/_integrations/waze_travel_time.markdown +++ b/source/_integrations/waze_travel_time.markdown @@ -81,7 +81,7 @@ avoid_subscription_roads: 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 behaviour 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. +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 diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index 27dae016b11..a23ee0e2844 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -133,7 +133,7 @@ To obtain complete list of available sources currently configured on the TV, onc ## 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')* @@ -157,7 +157,7 @@ data: ## Next/Previous buttons -The behaviour of the next and previous 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 diff --git a/source/_integrations/wink.markdown b/source/_integrations/wink.markdown index e5a3ff5d521..47b16b98913 100644 --- a/source/_integrations/wink.markdown +++ b/source/_integrations/wink.markdown @@ -130,7 +130,7 @@ 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` @@ -435,7 +435,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. diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index 2dae5335907..2f35973026b 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -46,7 +46,7 @@ Withings supports multiple profiles per account. Each profile has a person's nam ### Step 3 - Authorize Home Assistant - Confirm your YAML configuration is valid by using the `Check Config` tool (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. diff --git a/source/_integrations/worxlandroid.markdown b/source/_integrations/worxlandroid.markdown index 341f2136edc..4448e8195fc 100644 --- a/source/_integrations/worxlandroid.markdown +++ b/source/_integrations/worxlandroid.markdown @@ -30,7 +30,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/xmpp.markdown b/source/_integrations/xmpp.markdown index 335f4d9aa02..b1a86c5dadc 100644 --- a/source/_integrations/xmpp.markdown +++ b/source/_integrations/xmpp.markdown @@ -104,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/yamaha.markdown b/source/_integrations/yamaha.markdown index 2b5e0e3bcff..94b55102177 100644 --- a/source/_integrations/yamaha.markdown +++ b/source/_integrations/yamaha.markdown @@ -70,7 +70,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 diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index 6c4d8b98df2..5d11ed4014b 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -142,7 +142,7 @@ This integration is tested to work with the following models. If you have a diff | ? | 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 Wi-Fi 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 | diff --git a/source/_integrations/zeroconf.markdown b/source/_integrations/zeroconf.markdown index 506da99be4d..6406826de28 100644 --- a/source/_integrations/zeroconf.markdown +++ b/source/_integrations/zeroconf.markdown @@ -11,9 +11,9 @@ ha_codeowners: - '@Kane610' --- -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/zha.markdown b/source/_integrations/zha.markdown index 3b969ee7669..0b26f04004e 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -77,8 +77,8 @@ Use the plus button in the bottom right to add a new integration called **ZHA**. In the popup: -- USB Device Path - on a linux system will be something like `/dev/ttyUSB0` -- Radio type - select device type **ezsp**, **deconz** or **xbee** +- USB Device Path - on a Linux system will be something like `/dev/ttyUSB0` +- Radio type - select device type `ezsp`, `deconz` or `xbee` - Submit 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 (see troubleshooting). @@ -157,7 +157,7 @@ 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 Docker/Hass.io installs on Linux hosts 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. @@ -169,11 +169,11 @@ 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. +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`). +Install Docker-Compose for your platform (Linux - `sudo apt-get install docker-compose`). Create a `docker-compose.yml` with the following data: diff --git a/source/_integrations/zhong_hong.markdown b/source/_integrations/zhong_hong.markdown index dd934388bc9..49dfe6047c6 100644 --- a/source/_integrations/zhong_hong.markdown +++ b/source/_integrations/zhong_hong.markdown @@ -10,7 +10,7 @@ ha_iot_class: Local Push 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/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index b4fc2c57293..6931968a4fc 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -37,6 +37,14 @@ state_color: 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 diff --git a/source/_lovelace/markdown.markdown b/source/_lovelace/markdown.markdown index fd34e2dd64d..4df04eaa741 100644 --- a/source/_lovelace/markdown.markdown +++ b/source/_lovelace/markdown.markdown @@ -31,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] diff --git a/source/_lovelace/picture-entity.markdown b/source/_lovelace/picture-entity.markdown index 4c5fac80557..5e989299daa 100644 --- a/source/_lovelace/picture-entity.markdown +++ b/source/_lovelace/picture-entity.markdown @@ -223,7 +223,7 @@ 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 diff --git a/source/_posts/2020-02-11-android-16-17-release.markdown b/source/_posts/2020-02-11-android-16-17-release.markdown index 67124a180b8..173d6bcfc4c 100644 --- a/source/_posts/2020-02-11-android-16-17-release.markdown +++ b/source/_posts/2020-02-11-android-16-17-release.markdown @@ -21,7 +21,7 @@ Here's an example to check with a user if they want to close the garage door aft ```yaml automation: - - alias: Notify apps when garage door opens + - alias: Notify apps when the garage door opens trigger: platform: state entity_id: cover.garage_door @@ -33,6 +33,7 @@ automation: 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 @@ -58,7 +59,7 @@ We are planning to expand notifications over the next few versions to continue t ## Requesting location updates via notification -You can now send a notification with just the message `request_location_update` and once it reachces your device it will update its current location in Home Assistant. Be careful using this too much though, as it can drain your battery. +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 @@ -66,17 +67,17 @@ New in version 1.7, we have added the first sensors to the app. For now, you wil - Battery percentage - Battery state -- Current WiFi network information +- 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! +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 so that, as much as possible, those that have users of both platforms have to do as little work. +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 diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 13c2a7f6cf7..6237d916c90 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -44,7 +44,7 @@ Now let's make a change using the configurator: we are going to change the name,
- 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 Controls" and click on the "CHECK CONFIG" button. When it's valid, it will show the text "Configuration valid!". In order for the "CHECK CONFIG" button 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.

@@ -58,10 +58,10 @@ Screenshot of the "General" page in the configuration panel.

-### Editing config via Samba/Windows Networking +### 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. 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. -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/hassio/enable_i2c.markdown b/source/hassio/enable_i2c.markdown index 88508d0d0c5..98986b6d378 100644 --- a/source/hassio/enable_i2c.markdown +++ b/source/hassio/enable_i2c.markdown @@ -35,7 +35,7 @@ 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**. diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index e231d8d6412..4bb0a6dfd62 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -37,7 +37,7 @@ The following will take you through the steps required to 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 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. @@ -141,7 +141,7 @@ You also need to have Docker-CE installed. There are well-documented procedures Some distributions, like Ubuntu, have a `docker.io` package available. Using that package 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/). + 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/).
diff --git a/source/lovelace/changelog.markdown b/source/lovelace/changelog.markdown index 506f4b5d8de..00f127ce16f 100644 --- a/source/lovelace/changelog.markdown +++ b/source/lovelace/changelog.markdown @@ -21,7 +21,7 @@ description: "Changelog of the Lovelace UI." * ♿ Add tabindex to Lovelace elements (#4160) @iantrich * 🐛 Fix action directive double tab iOS issues (#4639) @bramkragten * 🐛 [gauge card]: Fix severity toggle (#4600) @iantrich -* 🐛 [markdown card]: Fix visual editor for when all `content` removed (#4583) @iantrich +* 🐛 [Markdown card]: Fix visual editor for when all `content` removed (#4583) @iantrich * 🐛 [alarm panel card]: Fix preview updates (#4592) @bramkragten * 🐛 [thermostat card]: Fix display of current/set temperature when at 0 (#4498) @iantrich * 🐛 [picture glance card]: Fix `camera_view` option in editor (#4495) @iantrich @@ -31,7 +31,7 @@ description: "Changelog of the Lovelace UI." * 🚸 Prompt user to confirm logout (#4501) @iantrich ## Changes in 0.104.0 -- ❤️ Add ability to remove Lovelace config [#4430](https://github.com/home-assistant/home-assistant-polymer/pull/4430) @bramkragten +- ❤️ Add ability to remove Lovelace configuration [#4430](https://github.com/home-assistant/home-assistant-polymer/pull/4430) @bramkragten - ❤️ Add support to add all device entities to Lovelace [#4356](https://github.com/home-assistant/home-assistant-polymer/pull/4356) @bramkragten - 📣 Upgrade MDI icons to 4.7.95 [#4341](https://github.com/home-assistant/home-assistant-polymer/pull/4341) @bonanitech @@ -45,7 +45,7 @@ description: "Changelog of the Lovelace UI." - ❤️ [views]: Add actions to `state-label` badge [#4028](https://github.com/home-assistant/home-assistant-polymer/pull/4028) @iantrich - ❤️ [shopping list card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich - ❤️ [plant status card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich -- ❤️ [markdown card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [Markdown card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich - ❤️ [alarm panel card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich - ❤️ [picture card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich - ❤️ [picture elements card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich @@ -64,18 +64,18 @@ description: "Changelog of the Lovelace UI." - ❤️ Theming: New CSS switch style: `switch-unchecked-track-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich - 📣 Upgrade MDI icons to 4.5.95 [#3977](https://github.com/home-assistant/home-assistant-polymer/pull/3977) @bonanitech - 📣 Display card errors in YAML instead of JSON [#4018](https://github.com/home-assistant/home-assistant-polymer/pull/4018) @iantrich -- ⚠️ revert lovelace selectable text [#4095](https://github.com/home-assistant/home-assistant-polymer/pull/4095) @iantrich +- ⚠️ revert Lovelace selectable text [#4095](https://github.com/home-assistant/home-assistant-polymer/pull/4095) @iantrich - 🔧 [alarm panel card]: Visual accessibility changes [#3991](https://github.com/home-assistant/home-assistant-polymer/pull/3991) @mr-awk - 🔧 [entities card]: Fix media row secondary info [#3957](https://github.com/home-assistant/home-assistant-polymer/pull/3957) @iantrich - 🔧 [light card]: Fix name wrapping [#3972](https://github.com/home-assistant/home-assistant-polymer/pull/3972) @shbatm - 🔧 [map card]: Fix zone icon visibility [#4085](https://github.com/home-assistant/home-assistant-polymer/pull/4085) @springstan -- 📣 [markdown card]: Add default text to card editor [#3960](https://github.com/home-assistant/home-assistant-polymer/pull/3960) @akargl +- 📣 [Markdown card]: Add default text to card editor [#3960](https://github.com/home-assistant/home-assistant-polymer/pull/3960) @akargl ## Changes in 0.100.0 -- ❤️ [picture glance card]: New config `tap_action` and `hold_action` for `entities` [#3807](https://github.com/home-assistant/home-assistant-polymer/pull/3807) @iantrich -- ❤️ [entities card]: New config `image` for `entities` [#3832](https://github.com/home-assistant/home-assistant-polymer/pull/3832) @iantrich +- ❤️ [picture glance card]: New configuration `tap_action` and `hold_action` for `entities` [#3807](https://github.com/home-assistant/home-assistant-polymer/pull/3807) @iantrich +- ❤️ [entities card]: New configuration `image` for `entities` [#3832](https://github.com/home-assistant/home-assistant-polymer/pull/3832) @iantrich - ❤️ [entity filter card]: Support for operators in `state_filter` and individual `state_filter` option for `entitites` [#3692](https://github.com/home-assistant/home-assistant-polymer/pull/3692) @iantrich -- ❤️ [light card]: New config `icon` [#3771](https://github.com/home-assistant/home-assistant-polymer/pull/3771) @iantrich +- ❤️ [light card]: New configuration `icon` [#3771](https://github.com/home-assistant/home-assistant-polymer/pull/3771) @iantrich - ❤️ [picture entity card]: UI Editor [#3708](https://github.com/home-assistant/home-assistant-polymer/pull/3708) @iantrich - ❤️ [picture glance card]: UI Editor [#3709](https://github.com/home-assistant/home-assistant-polymer/pull/3709) @iantrich - ❤️ [history graph card]: UI Editor [#3782](https://github.com/home-assistant/home-assistant-polymer/pull/3782) @iantrich @@ -90,26 +90,26 @@ description: "Changelog of the Lovelace UI." - 🔧 [views]: Guard for null badges [#3841](https://github.com/home-assistant/home-assistant-polymer/pull/3841) @bramkragten ## Changes in 0.99.0 -- ❤️ [glance card]: New config `show_last_changed` for `entities` -- ❤️ [glance card]: New config `image` for `entities` -- ❤️ [views]: New config `image` for `badges` -- ❤️ [views]: New config `icon` for `badges` -- ❤️ [views]: New config `name` for `badges` +- ❤️ [glance card]: New configuration `show_last_changed` for `entities` +- ❤️ [glance card]: New configuration `image` for `entities` +- ❤️ [views]: New configuration `image` for `badges` +- ❤️ [views]: New configuration `icon` for `badges` +- ❤️ [views]: New configuration `name` for `badges` - 📣 Unused entities: Rewritten into a table view - 📣 Unused entities: Add entities to Lovelace cards - 📣 Lovelace background settings moved to theme `--lovelace-background` - 📣 Haptic feedback support added - 📣 Vibrate support added - 📣 MDI icons updated to [4.3.95](https://cdn.materialdesignicons.com/4.3.95/) -- ⚠️ Only allow admins to edit UI config +- ⚠️ Only allow admins to edit UI configuration - 🔧 [alarm panel card]: Handle keyboard input - 🔧 [alarm panel card]: Show `friendly_name` if set - 🔧 [entities card]: Properly show "unavailable" timestamps - 🔧 [entity filter card]: Throttle updates for performance - 🔧 [light card]: Replace jQuery sliders - 🔧 [light card]: Move brightness below icon -- 🔧 [map card]: Update preview when config changes -- 🔧 [markdown card]: Don't allow SVG by default +- 🔧 [map card]: Update preview when configuration changes +- 🔧 [Markdown card]: Don't allow SVG by default - 🔧 Filter null badges - 🔧 Render an overlay on light cards when the light is unavailable - 🔧 Break long strings in notifications @@ -149,7 +149,7 @@ description: "Changelog of the Lovelace UI." - 🔧 The [weblink row] opens links in new tabs ## Changes in 0.85.0 -- ❤️ [map card]: New config `geo_location_sources` +- ❤️ [map card]: New configuration `geo_location_sources` - ❤️ UI Editor for [picture card] - ❤️ UI Editor for [weather forecast card] - ❤️ UI Editor for [plant status card] @@ -159,7 +159,7 @@ description: "Changelog of the Lovelace UI." - ❤️ UI Editor for [shopping list card] - ❤️ UI Editor for [light card] - ❤️ UI Editor for [gauge card] -- ❤️ UI Editor for [markdown card] +- ❤️ UI Editor for [Markdown card] - ❤️ UI Editor for [alarm panel card] - ❤️ UI Editor for [thermostat card] - ❤️ UI Editor for [entity button card] @@ -181,8 +181,8 @@ description: "Changelog of the Lovelace UI." - ⚠️ [views]: Renamed `id` to `path` - ⚠️ `sensor_data`: `entity` is no longer passed as `entity_id` to service call and must be explicitly set - ⚠️ [sensor card]: Removed configs `height`, `line_color` and `line_width` -- ⚠️ [gauge card]: Renamed config `title` to `name` -- ⚠️ [alarm panel card]: Renamed config `title` to `name` +- ⚠️ [gauge card]: Renamed configuration `title` to `name` +- ⚠️ [alarm panel card]: Renamed configuration `title` to `name` - ⚠️ [glance card]: `tap_action` and `hold_action` configurations changed. See docs. - ⚠️ [entity button card]: `tap_action` and `hold_action` configurations changed. See docs. - ⚠️ [picture card]: `tap_action` and `hold_action` configurations changed. See docs. @@ -191,12 +191,12 @@ description: "Changelog of the Lovelace UI." - ⚠️ [picture glance card]: `tap_action` and `hold_action` configurations changed. See docs. ### All Changes -- ❤️ [weather forecast card]: New config `name` -- ❤️ [thermostat card]: New config `name` -- ❤️ [plant status card]: New config `name` +- ❤️ [weather forecast card]: New configuration `name` +- ❤️ [thermostat card]: New configuration `name` +- ❤️ [plant status card]: New configuration `name` - ❤️ [picture elements card]: Added `state_image` and `camera_image` - 📣 [entities card]: Alert entity rows are now displayed as toggles -- 📣 Ability to generate a Lovelace config if not present using available entities +- 📣 Ability to generate a Lovelace configuration if not present using available entities - 📣 UI Editor now in Beta with support for adding/removing views/cards - 🔧 [map card]: Fix `aspect_ratio` - 🔧 Fix Tap/Hold actions on Windows 10 machines with touchscreens diff --git a/source/lovelace/index.markdown b/source/lovelace/index.markdown index 16fe29c0167..c5fe345447b 100644 --- a/source/lovelace/index.markdown +++ b/source/lovelace/index.markdown @@ -7,14 +7,14 @@ redirect_from: Lovelace is the name of the Home Assistant user interface. It is a fast, customizable and powerful way for users to manage their homes, working both on mobile and desktop. - - 24 different cards to place and configure as you like. - - UI Editor. A configuration UI to manage your Lovelace UI including live preview when editing cards. - - Fast. Using a static config allows us to build up the UI once. - - Customizable. - - Cards have numerous options to configure how your data is presented. - - Themes; even at a per card basis. - - Ability to override names and icons of entities. - - Custom Cards from our amazing community are fully supported. +- 24 different cards to place and configure as you like. +- UI Editor. A configuration UI to manage your Lovelace UI including live preview when editing cards. +- Fast. Using a static configuration allows us to build up the UI once. +- Customizable. + - Cards have numerous options to configure how your data is presented. + - Themes; even at a per card basis. + - Ability to override names and icons of entities. + - Custom Cards from our amazing community are fully supported.
@@ -25,7 +25,7 @@ To try it yourself, check out [the demo](https://demo.home-assistant.io). ## Discuss Lovelace - Suggestions are welcome in the [home-assistant-polymer repository](https://github.com/home-assistant/home-assistant-polymer/) -- For help with Lovelace, join the #lovelace channel on [our chat](/join-chat/) or [our forums](https://community.home-assistant.io/c/projects/frontend) +- For help with Lovelace, join the `#frontend` channel on [our chat](/join-chat/) or [our forums](https://community.home-assistant.io/c/projects/frontend) ## Additional Lovelace Resources diff --git a/source/lovelace/views.markdown b/source/lovelace/views.markdown index 1c745a7292a..87c13f4ff7f 100644 --- a/source/lovelace/views.markdown +++ b/source/lovelace/views.markdown @@ -59,7 +59,7 @@ views: #### Example -View config: +View configuration: ```yaml - title: Living room @@ -78,7 +78,7 @@ You can link to one view from a card in another view when using cards that suppo #### Example -View config: +View configuration: ```yaml - title: Living room @@ -86,7 +86,7 @@ View config: path: living_room ``` -Picture card config: +Picture card configuration: ```yaml - type: picture @@ -109,7 +109,7 @@ If you define an icon the title will be used as a tool-tip. ## Visible -You can specify the visibility of views as a whole or per-user. (Note: This is only for the display of the tabs. The url path is still accessible) +You can specify the visibility of views as a whole or per-user. (Note: This is only for the display of the tabs. The URL path is still accessible) #### Example diff --git a/source/lovelace/yaml-mode.markdown b/source/lovelace/yaml-mode.markdown index ef586d091e7..6b772bf1e40 100644 --- a/source/lovelace/yaml-mode.markdown +++ b/source/lovelace/yaml-mode.markdown @@ -3,25 +3,25 @@ title: "Lovelace YAML mode" description: "Advanced users can switch on YAML mode for editing the Lovelace UI." --- -It is possible to customize your Home Assistant interface by writing in YAML instead of via the UI. To do so, you configure the Lovelace integration to be in yaml mode by adding the following to your `configuration.yaml`: +It is possible to customize your Home Assistant interface by writing in YAML instead of via the UI. To do so, you configure the Lovelace integration to be in YAML mode by adding the following to your `configuration.yaml`: ```yaml lovelace: mode: yaml ``` -Restart Home Assistant for the mode to be changed. Create a new file `/ui-lovelace.yaml` and add your Lovelace configuration. A good way to start this file is to copy and paste the "Raw config" from the UI so your manual configuration starts the same as your existing UI. +Restart Home Assistant for the mode to be changed. Create a new file `/ui-lovelace.yaml` and add your Lovelace configuration. A good way to start this file is to copy and paste the "Raw configuration" from the UI so your manual configuration starts the same as your existing UI. - Go into the `Overview` tab. - Click the three dots menu (top-right) and click on `Configure UI`. - Click the three dots menu again and click on `Raw config editor`. -- There you see the config for your current Lovelace UI. Copy that into the `/ui-lovelace.yaml` file. +- There you see the configuration for your current Lovelace UI. Copy that into the `/ui-lovelace.yaml` file. Once you take control of your UI via YAML, the Home Assistant interface for modifying it won't be available anymore and new entities will not automatically be added to your UI. When you make changes to `ui-lovelace.yaml`, you don't have to restart Home Assistant or refresh the page. Just hit the refresh button in the menu at the top of the UI. -To revert back to using the UI to edit your Lovelace interface, remove the `lovelace` section from your `configuration.yaml` and copy the contents of your `ui-lovelace.yaml` into the raw config section of Home Assistant and restart. +To revert back to using the UI to edit your Lovelace interface, remove the `lovelace` section from your `configuration.yaml` and copy the contents of your `ui-lovelace.yaml` into the raw configuration section of Home Assistant and restart. As a super minimal example, here's the bare minimum you will need for this to work: