Merge pull request #43356 from home-assistant/rc

This commit is contained in:
Franck Nijhof 2020-11-18 19:01:29 +01:00 committed by GitHub
commit aec17d25fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3767 changed files with 31330 additions and 16503 deletions

View File

@ -119,7 +119,6 @@ omit =
homeassistant/components/buienradar/weather.py homeassistant/components/buienradar/weather.py
homeassistant/components/caldav/calendar.py homeassistant/components/caldav/calendar.py
homeassistant/components/canary/camera.py homeassistant/components/canary/camera.py
homeassistant/components/cast/*
homeassistant/components/cert_expiry/helper.py homeassistant/components/cert_expiry/helper.py
homeassistant/components/channels/* homeassistant/components/channels/*
homeassistant/components/circuit/* homeassistant/components/circuit/*
@ -305,6 +304,7 @@ omit =
homeassistant/components/garmin_connect/__init__.py homeassistant/components/garmin_connect/__init__.py
homeassistant/components/garmin_connect/const.py homeassistant/components/garmin_connect/const.py
homeassistant/components/garmin_connect/sensor.py homeassistant/components/garmin_connect/sensor.py
homeassistant/components/garmin_connect/alarm_util.py
homeassistant/components/gc100/* homeassistant/components/gc100/*
homeassistant/components/geniushub/* homeassistant/components/geniushub/*
homeassistant/components/geizhals/sensor.py homeassistant/components/geizhals/sensor.py
@ -377,7 +377,6 @@ omit =
homeassistant/components/hvv_departures/__init__.py homeassistant/components/hvv_departures/__init__.py
homeassistant/components/hydrawise/* homeassistant/components/hydrawise/*
homeassistant/components/hyperion/light.py homeassistant/components/hyperion/light.py
homeassistant/components/ialarm/alarm_control_panel.py
homeassistant/components/iammeter/sensor.py homeassistant/components/iammeter/sensor.py
homeassistant/components/iaqualink/binary_sensor.py homeassistant/components/iaqualink/binary_sensor.py
homeassistant/components/iaqualink/climate.py homeassistant/components/iaqualink/climate.py
@ -460,6 +459,7 @@ omit =
homeassistant/components/lametric/* homeassistant/components/lametric/*
homeassistant/components/lannouncer/notify.py homeassistant/components/lannouncer/notify.py
homeassistant/components/lastfm/sensor.py homeassistant/components/lastfm/sensor.py
homeassistant/components/launch_library/const.py
homeassistant/components/launch_library/sensor.py homeassistant/components/launch_library/sensor.py
homeassistant/components/lcn/* homeassistant/components/lcn/*
homeassistant/components/lg_netcast/media_player.py homeassistant/components/lg_netcast/media_player.py
@ -632,7 +632,6 @@ omit =
homeassistant/components/openuv/sensor.py homeassistant/components/openuv/sensor.py
homeassistant/components/openweathermap/sensor.py homeassistant/components/openweathermap/sensor.py
homeassistant/components/openweathermap/weather.py homeassistant/components/openweathermap/weather.py
homeassistant/components/openweathermap/forecast_update_coordinator.py
homeassistant/components/openweathermap/weather_update_coordinator.py homeassistant/components/openweathermap/weather_update_coordinator.py
homeassistant/components/openweathermap/abstract_owm_sensor.py homeassistant/components/openweathermap/abstract_owm_sensor.py
homeassistant/components/opnsense/* homeassistant/components/opnsense/*
@ -730,6 +729,7 @@ omit =
homeassistant/components/roomba/vacuum.py homeassistant/components/roomba/vacuum.py
homeassistant/components/roon/__init__.py homeassistant/components/roon/__init__.py
homeassistant/components/roon/const.py homeassistant/components/roon/const.py
homeassistant/components/roon/media_browser.py
homeassistant/components/roon/media_player.py homeassistant/components/roon/media_player.py
homeassistant/components/roon/server.py homeassistant/components/roon/server.py
homeassistant/components/route53/* homeassistant/components/route53/*
@ -770,6 +770,7 @@ omit =
homeassistant/components/shelly/light.py homeassistant/components/shelly/light.py
homeassistant/components/shelly/sensor.py homeassistant/components/shelly/sensor.py
homeassistant/components/shelly/switch.py homeassistant/components/shelly/switch.py
homeassistant/components/shelly/utils.py
homeassistant/components/sht31/sensor.py homeassistant/components/sht31/sensor.py
homeassistant/components/sigfox/sensor.py homeassistant/components/sigfox/sensor.py
homeassistant/components/simplepush/notify.py homeassistant/components/simplepush/notify.py

27
.github/lock.yml vendored
View File

@ -1,27 +0,0 @@
# Configuration for Lock Threads - https://github.com/dessant/lock-threads
# Number of days of inactivity before a closed issue or pull request is locked
daysUntilLock: 1
# Skip issues and pull requests created before a given timestamp. Timestamp must
# follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable
skipCreatedBefore: 2019-07-01
# Issues and pull requests with these labels will be ignored. Set to `[]` to disable
exemptLabels: []
# Label to add before locking, such as `outdated`. Set to `false` to disable
lockLabel: false
# Comment to post before locking. Set to `false` to disable
lockComment: false
# Assign `resolved` as the reason for locking. Set to `false` to disable
setLockReason: false
# Limit to only `issues` or `pulls`
only: pulls
# Optionally, specify configuration settings just for `issues` or `pulls`
issues:
daysUntilLock: 30

66
.github/stale.yml vendored
View File

@ -1,66 +0,0 @@
# Configuration for probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 90
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 7
# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
onlyLabels: []
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels:
- under investigation
- Help wanted
# Set to true to ignore issues in a project (defaults to false)
exemptProjects: true
# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: true
# Set to true to ignore issues with an assignee (defaults to false)
exemptAssignees: false
# Label to use when marking as stale
staleLabel: stale
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
There hasn't been any activity on this issue recently. Due to the high number
of incoming GitHub notifications, we have to clean some of the old issues,
as many of them have already been resolved with the latest updates.
Please make sure to update to the latest Home Assistant version and check
if that solves the issue. Let us know if that works for you by adding a
comment 👍
This issue now has been marked as stale and will be closed if no further
activity occurs. Thank you for your contributions.
# Comment to post when removing the stale label.
# unmarkComment: >
# Your comment here.
# Comment to post when closing a stale Issue or Pull Request.
# closeComment: >
# Your comment here.
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30
# Limit to only `issues` or `pulls`
# only: issues
# Handle pull requests a little bit faster and with an adjusted comment.
pulls:
daysUntilStale: 30
exemptProjects: false
markComment: >
There hasn't been any activity on this pull request recently. This pull
request has been automatically marked as stale because of that and will
be closed if no further activity occurs within 7 days.
Thank you for your contributions.

View File

@ -214,11 +214,11 @@ jobs:
run: | run: |
echo "::add-matcher::.github/workflows/matchers/hadolint.json" echo "::add-matcher::.github/workflows/matchers/hadolint.json"
- name: Check Dockerfile - name: Check Dockerfile
uses: docker://hadolint/hadolint:v1.18.0 uses: docker://hadolint/hadolint:v1.18.2
with: with:
args: hadolint Dockerfile args: hadolint Dockerfile
- name: Check Dockerfile.dev - name: Check Dockerfile.dev
uses: docker://hadolint/hadolint:v1.18.0 uses: docker://hadolint/hadolint:v1.18.2
with: with:
args: hadolint Dockerfile.dev args: hadolint Dockerfile.dev
@ -590,7 +590,8 @@ jobs:
steps: steps:
- name: Check out code from GitHub - name: Check out code from GitHub
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment - name:
Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv id: cache-venv
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
@ -604,7 +605,8 @@ jobs:
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }}-${{ hashFiles('requirements_all.txt') }} ${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }}-${{ hashFiles('requirements_all.txt') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }} ${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}- ${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-
- name: Create full Python ${{ matrix.python-version }} virtual environment - name:
Create full Python ${{ matrix.python-version }} virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true' if: steps.cache-venv.outputs.cache-hit != 'true'
run: | run: |
python -m venv venv python -m venv venv
@ -625,7 +627,8 @@ jobs:
steps: steps:
- name: Check out code from GitHub - name: Check out code from GitHub
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment - name:
Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv id: cache-venv
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
@ -659,7 +662,8 @@ jobs:
steps: steps:
- name: Check out code from GitHub - name: Check out code from GitHub
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment - name:
Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv id: cache-venv
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
@ -695,7 +699,8 @@ jobs:
steps: steps:
- name: Check out code from GitHub - name: Check out code from GitHub
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment - name:
Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv id: cache-venv
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
@ -755,7 +760,8 @@ jobs:
steps: steps:
- name: Check out code from GitHub - name: Check out code from GitHub
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment - name:
Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv id: cache-venv
uses: actions/cache@v2 uses: actions/cache@v2
with: with:

20
.github/workflows/lock.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: Lock
# yamllint disable-line rule:truthy
on:
schedule:
- cron: "0 * * * *"
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v2.0.1
with:
github-token: ${{ github.token }}
issue-lock-inactive-days: "30"
issue-exclude-created-before: "2020-10-01T00:00:00Z"
issue-lock-reason: ""
pr-lock-inactive-days: "1"
pr-exclude-created-before: "2020-11-01T00:00:00Z"
pr-lock-reason: ""

84
.github/workflows/stale.yml vendored Normal file
View File

@ -0,0 +1,84 @@
name: Stale
# yamllint disable-line rule:truthy
on:
schedule:
- cron: "0 * * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
# The 90 day stale policy
# Used for: Everything (unless 30 day policy below beats it)
- name: 90 days stale policy
uses: actions/stale@v3.0.13
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 90
days-before-close: 7
operations-per-run: 25
remove-stale-when-updated: true
stale-issue-label: "stale"
exempt-issue-labels: "no-stale,Help%20wanted,help-wanted"
stale-issue-message: >
There hasn't been any activity on this issue recently. Due to the
high number of incoming GitHub notifications, we have to clean some
of the old issues, as many of them have already been resolved with
the latest updates.
Please make sure to update to the latest Home Assistant version and
check if that solves the issue. Let us know if that works for you by
adding a comment 👍
This issue has now been marked as stale and will be closed if no
further activity occurs. Thank you for your contributions.
stale-pr-label: "stale"
exempt-pr-labels: "no-stale"
stale-pr-message: >
There hasn't been any activity on this pull request recently. This
pull request has been automatically marked as stale because of that
and will be closed if no further activity occurs within 7 days.
Thank you for your contributions.
# The 30 day stale policy
# Used for:
# - Issues that are pending more information (incomplete issues)
# - PRs that are not marked as new-integration
- name: 30 days stale policy
uses: actions/stale@v3.0.13
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# PRs have a CLA signed label, we can misuse it to apply this policy
only-labels: "cla-signed,needs-more-information"
days-before-stale: 30
days-before-close: 7
operations-per-run: 5
remove-stale-when-updated: true
stale-issue-label: "stale"
exempt-issue-labels: "no-stale,Help%20wanted,help-wanted"
stale-issue-message: >
There hasn't been any activity on this issue recently. Due to the
high number of incoming GitHub notifications, we have to clean some
of the old issues, as many of them have already been resolved with
the latest updates.
Please make sure to update to the latest Home Assistant version and
check if that solves the issue. Let us know if that works for you by
adding a comment 👍
This issue has now been marked as stale and will be closed if no
further activity occurs. Thank you for your contributions.
stale-pr-label: "stale"
# Exempt new integrations, these often take more time.
# They will automatically be handled by the 90 day version above.
exempt-pr-labels: "no-stale,new-integration"
stale-pr-message: >
There hasn't been any activity on this pull request recently. This
pull request has been automatically marked as stale because of that
and will be closed if no further activity occurs within 7 days.
Thank you for your contributions.

View File

@ -1,4 +1,4 @@
dist: bionic dist: focal
addons: addons:
apt: apt:
packages: packages:
@ -11,9 +11,6 @@ addons:
- libswscale-dev - libswscale-dev
- libswresample-dev - libswresample-dev
- libavfilter-dev - libavfilter-dev
sources:
- sourceline: ppa:savoury1/ffmpeg4
- sourceline: ppa:savoury1/multimedia
python: python:
- "3.7.1" - "3.7.1"
@ -42,4 +39,4 @@ cache:
- $HOME/.cache/pre-commit - $HOME/.cache/pre-commit
install: pip install -U tox tox-travis install: pip install -U tox tox-travis
language: python language: python
script: ${TRAVIS_WAIT:+travis_wait $TRAVIS_WAIT} tox --develop ${TOX_ARGS-} script: ${TRAVIS_WAIT:+travis_wait $TRAVIS_WAIT} tox -vv --develop ${TOX_ARGS-}

View File

@ -9,6 +9,12 @@ homeassistant/*.py @home-assistant/core
homeassistant/helpers/* @home-assistant/core homeassistant/helpers/* @home-assistant/core
homeassistant/util/* @home-assistant/core homeassistant/util/* @home-assistant/core
# Home Assistant Supervisor
build.json @home-assistant/supervisor
machine/* @home-assistant/supervisor
rootfs/* @home-assistant/supervisor
Dockerfile @home-assistant/supervisor
# Other code # Other code
homeassistant/scripts/check_config.py @kellerza homeassistant/scripts/check_config.py @kellerza
@ -58,6 +64,7 @@ homeassistant/components/bitcoin/* @fabaff
homeassistant/components/bizkaibus/* @UgaitzEtxebarria homeassistant/components/bizkaibus/* @UgaitzEtxebarria
homeassistant/components/blebox/* @gadgetmobile homeassistant/components/blebox/* @gadgetmobile
homeassistant/components/blink/* @fronzbot homeassistant/components/blink/* @fronzbot
homeassistant/components/blueprint/* @home-assistant/core
homeassistant/components/bmp280/* @belidzs homeassistant/components/bmp280/* @belidzs
homeassistant/components/bmw_connected_drive/* @gerard33 @rikroe homeassistant/components/bmw_connected_drive/* @gerard33 @rikroe
homeassistant/components/bond/* @prystupa homeassistant/components/bond/* @prystupa
@ -76,6 +83,7 @@ homeassistant/components/cisco_mobility_express/* @fbradyirl
homeassistant/components/cisco_webex_teams/* @fbradyirl homeassistant/components/cisco_webex_teams/* @fbradyirl
homeassistant/components/cloud/* @home-assistant/cloud homeassistant/components/cloud/* @home-assistant/cloud
homeassistant/components/cloudflare/* @ludeeus @ctalkington homeassistant/components/cloudflare/* @ludeeus @ctalkington
homeassistant/components/color_extractor/* @GenericStudent
homeassistant/components/comfoconnect/* @michaelarnauts homeassistant/components/comfoconnect/* @michaelarnauts
homeassistant/components/config/* @home-assistant/core homeassistant/components/config/* @home-assistant/core
homeassistant/components/configurator/* @home-assistant/core homeassistant/components/configurator/* @home-assistant/core
@ -126,6 +134,7 @@ homeassistant/components/enocean/* @bdurrer
homeassistant/components/entur_public_transport/* @hfurubotten homeassistant/components/entur_public_transport/* @hfurubotten
homeassistant/components/environment_canada/* @michaeldavie homeassistant/components/environment_canada/* @michaeldavie
homeassistant/components/ephember/* @ttroy50 homeassistant/components/ephember/* @ttroy50
homeassistant/components/epson/* @pszafer
homeassistant/components/epsonworkforce/* @ThaStealth homeassistant/components/epsonworkforce/* @ThaStealth
homeassistant/components/eq3btsmart/* @rytilahti homeassistant/components/eq3btsmart/* @rytilahti
homeassistant/components/esphome/* @OttoWinter homeassistant/components/esphome/* @OttoWinter
@ -169,7 +178,7 @@ homeassistant/components/group/* @home-assistant/core
homeassistant/components/growatt_server/* @indykoning homeassistant/components/growatt_server/* @indykoning
homeassistant/components/guardian/* @bachya homeassistant/components/guardian/* @bachya
homeassistant/components/harmony/* @ehendrix23 @bramkragten @bdraco homeassistant/components/harmony/* @ehendrix23 @bramkragten @bdraco
homeassistant/components/hassio/* @home-assistant/hass-io homeassistant/components/hassio/* @home-assistant/supervisor
homeassistant/components/hdmi_cec/* @newAM homeassistant/components/hdmi_cec/* @newAM
homeassistant/components/heatmiser/* @andylockran homeassistant/components/heatmiser/* @andylockran
homeassistant/components/heos/* @andrewsayre homeassistant/components/heos/* @andrewsayre
@ -186,7 +195,6 @@ homeassistant/components/homekit/* @bdraco
homeassistant/components/homekit_controller/* @Jc2k homeassistant/components/homekit_controller/* @Jc2k
homeassistant/components/homematic/* @pvizeli @danielperna84 homeassistant/components/homematic/* @pvizeli @danielperna84
homeassistant/components/homematicip_cloud/* @SukramJ homeassistant/components/homematicip_cloud/* @SukramJ
homeassistant/components/honeywell/* @zxdavb
homeassistant/components/http/* @home-assistant/core homeassistant/components/http/* @home-assistant/core
homeassistant/components/huawei_lte/* @scop @fphammerle homeassistant/components/huawei_lte/* @scop @fphammerle
homeassistant/components/huawei_router/* @abmantis homeassistant/components/huawei_router/* @abmantis
@ -257,7 +265,7 @@ homeassistant/components/met/* @danielhiversen @thimic
homeassistant/components/meteo_france/* @hacf-fr @oncleben31 @Quentame homeassistant/components/meteo_france/* @hacf-fr @oncleben31 @Quentame
homeassistant/components/meteoalarm/* @rolfberkenbosch homeassistant/components/meteoalarm/* @rolfberkenbosch
homeassistant/components/metoffice/* @MrHarcombe homeassistant/components/metoffice/* @MrHarcombe
homeassistant/components/miflora/* @danielhiversen @ChristianKuehnel @basnijholt homeassistant/components/miflora/* @danielhiversen @basnijholt
homeassistant/components/mikrotik/* @engrbm87 homeassistant/components/mikrotik/* @engrbm87
homeassistant/components/mill/* @danielhiversen homeassistant/components/mill/* @danielhiversen
homeassistant/components/min_max/* @fabaff homeassistant/components/min_max/* @fabaff
@ -311,7 +319,7 @@ homeassistant/components/openerz/* @misialq
homeassistant/components/opengarage/* @danielhiversen homeassistant/components/opengarage/* @danielhiversen
homeassistant/components/opentherm_gw/* @mvn23 homeassistant/components/opentherm_gw/* @mvn23
homeassistant/components/openuv/* @bachya homeassistant/components/openuv/* @bachya
homeassistant/components/openweathermap/* @fabaff @freekode homeassistant/components/openweathermap/* @fabaff @freekode @nzapponi
homeassistant/components/opnsense/* @mtreinish homeassistant/components/opnsense/* @mtreinish
homeassistant/components/orangepi_gpio/* @pascallj homeassistant/components/orangepi_gpio/* @pascallj
homeassistant/components/oru/* @bvlaicu homeassistant/components/oru/* @bvlaicu
@ -326,7 +334,6 @@ homeassistant/components/pi4ioe5v9xxxx/* @antonverburg
homeassistant/components/pi_hole/* @fabaff @johnluetke @shenxn homeassistant/components/pi_hole/* @fabaff @johnluetke @shenxn
homeassistant/components/pilight/* @trekky12 homeassistant/components/pilight/* @trekky12
homeassistant/components/plaato/* @JohNan homeassistant/components/plaato/* @JohNan
homeassistant/components/plant/* @ChristianKuehnel
homeassistant/components/plex/* @jjlawren homeassistant/components/plex/* @jjlawren
homeassistant/components/plugwise/* @CoMPaTech @bouwew homeassistant/components/plugwise/* @CoMPaTech @bouwew
homeassistant/components/plum_lightpad/* @ColinHarrington @prystupa homeassistant/components/plum_lightpad/* @ColinHarrington @prystupa
@ -382,7 +389,7 @@ homeassistant/components/seven_segments/* @fabaff
homeassistant/components/seventeentrack/* @bachya homeassistant/components/seventeentrack/* @bachya
homeassistant/components/sharkiq/* @ajmarks homeassistant/components/sharkiq/* @ajmarks
homeassistant/components/shell_command/* @home-assistant/core homeassistant/components/shell_command/* @home-assistant/core
homeassistant/components/shelly/* @balloob @bieniu homeassistant/components/shelly/* @balloob @bieniu @thecode
homeassistant/components/shiftr/* @fabaff homeassistant/components/shiftr/* @fabaff
homeassistant/components/shodan/* @fabaff homeassistant/components/shodan/* @fabaff
homeassistant/components/sighthound/* @robmarkcole homeassistant/components/sighthound/* @robmarkcole
@ -431,7 +438,7 @@ homeassistant/components/switchbot/* @danielhiversen
homeassistant/components/switcher_kis/* @tomerfi homeassistant/components/switcher_kis/* @tomerfi
homeassistant/components/switchmate/* @danielhiversen homeassistant/components/switchmate/* @danielhiversen
homeassistant/components/syncthru/* @nielstron homeassistant/components/syncthru/* @nielstron
homeassistant/components/synology_dsm/* @hacf-fr @Quentame homeassistant/components/synology_dsm/* @hacf-fr @Quentame @mib1185
homeassistant/components/synology_srm/* @aerialls homeassistant/components/synology_srm/* @aerialls
homeassistant/components/syslog/* @fabaff homeassistant/components/syslog/* @fabaff
homeassistant/components/tado/* @michaelarnauts @bdraco homeassistant/components/tado/* @michaelarnauts @bdraco

View File

@ -14,7 +14,7 @@ schedules:
always: true always: true
variables: variables:
- name: versionBuilder - name: versionBuilder
value: '7.2.0' value: '2020.11.0'
- group: docker - group: docker
- group: github - group: github
- group: twine - group: twine
@ -82,19 +82,14 @@ stages:
matrix: matrix:
amd64: amd64:
buildArch: 'amd64' buildArch: 'amd64'
buildMachine: 'qemux86-64,intel-nuc'
i386: i386:
buildArch: 'i386' buildArch: 'i386'
buildMachine: 'qemux86'
armhf: armhf:
buildArch: 'armhf' buildArch: 'armhf'
buildMachine: 'qemuarm,raspberrypi'
armv7: armv7:
buildArch: 'armv7' buildArch: 'armv7'
buildMachine: 'raspberrypi2,raspberrypi3,raspberrypi4,odroid-xu,tinker'
aarch64: aarch64:
buildArch: 'aarch64' buildArch: 'aarch64'
buildMachine: 'qemuarm-64,raspberrypi3-64,raspberrypi4-64,odroid-c2,odroid-n2'
steps: steps:
- template: templates/azp-step-ha-version.yaml@azure - template: templates/azp-step-ha-version.yaml@azure
- script: | - script: |
@ -111,6 +106,57 @@ stages:
-v $(pwd):/data:ro \ -v $(pwd):/data:ro \
homeassistant/amd64-builder:$(versionBuilder) \ homeassistant/amd64-builder:$(versionBuilder) \
--generic $(homeassistantRelease) "--$(buildArch)" -t /data \ --generic $(homeassistantRelease) "--$(buildArch)" -t /data \
displayName: 'Build Release'
- job: 'ReleaseMachine'
dependsOn:
- ReleaseDocker
timeoutInMinutes: 240
pool:
vmImage: 'ubuntu-latest'
strategy:
maxParallel: 15
matrix:
qemux86-64:
buildMachine: 'qemux86-64'
intel-nuc:
buildMachine: 'intel-nuc'
qemux86:
buildMachine: 'qemux86'
qemuarm:
buildMachine: 'qemuarm'
raspberrypi:
buildMachine: 'raspberrypi'
raspberrypi2:
buildMachine: 'raspberrypi2'
raspberrypi3:
buildMachine: 'raspberrypi3'
raspberrypi4:
buildMachine: 'raspberrypi4'
odroid-xu:
buildMachine: 'odroid-xu'
tinker:
buildMachine: 'tinker'
qemuarm-64:
buildMachine: 'qemuarm-64'
raspberrypi3-64:
buildMachine: 'raspberrypi3-64'
raspberrypi4-64:
buildMachine: 'raspberrypi4-64'
odroid-c2:
buildMachine: 'odroid-c2'
odroid-c4:
buildMachine: 'odroid-c4'
odroid-n2:
buildMachine: 'odroid-n2'
steps:
- template: templates/azp-step-ha-version.yaml@azure
- script: |
docker login -u $(dockerUser) -p $(dockerPassword)
displayName: 'Docker hub login'
- script: docker pull homeassistant/amd64-builder:$(versionBuilder)
displayName: 'Install Builder'
- script: |
set -e
docker run --rm --privileged \ docker run --rm --privileged \
-v ~/.docker:/root/.docker \ -v ~/.docker:/root/.docker \
@ -119,7 +165,7 @@ stages:
homeassistant/amd64-builder:$(versionBuilder) \ homeassistant/amd64-builder:$(versionBuilder) \
--homeassistant-machine "$(homeassistantRelease)=$(buildMachine)" \ --homeassistant-machine "$(homeassistantRelease)=$(buildMachine)" \
-t /data/machine --docker-hub homeassistant -t /data/machine --docker-hub homeassistant
displayName: 'Build Release' displayName: 'Build Machine'
- stage: 'Publish' - stage: 'Publish'
jobs: jobs:

View File

@ -1,11 +1,11 @@
{ {
"image": "homeassistant/{arch}-homeassistant", "image": "homeassistant/{arch}-homeassistant",
"build_from": { "build_from": {
"aarch64": "homeassistant/aarch64-homeassistant-base:2020.10.0", "aarch64": "homeassistant/aarch64-homeassistant-base:2020.10.1",
"armhf": "homeassistant/armhf-homeassistant-base:2020.10.0", "armhf": "homeassistant/armhf-homeassistant-base:2020.10.1",
"armv7": "homeassistant/armv7-homeassistant-base:2020.10.0", "armv7": "homeassistant/armv7-homeassistant-base:2020.10.1",
"amd64": "homeassistant/amd64-homeassistant-base:2020.10.0", "amd64": "homeassistant/amd64-homeassistant-base:2020.10.1",
"i386": "homeassistant/i386-homeassistant-base:2020.10.0" "i386": "homeassistant/i386-homeassistant-base:2020.10.1"
}, },
"labels": { "labels": {
"io.hass.type": "core" "io.hass.type": "core"

View File

@ -207,7 +207,7 @@ class LoginFlow(data_entry_flow.FlowHandler):
errors["base"] = "invalid_auth_module" errors["base"] = "invalid_auth_module"
if len(self.available_mfa_modules) == 1: if len(self.available_mfa_modules) == 1:
self._auth_module_id = list(self.available_mfa_modules.keys())[0] self._auth_module_id = list(self.available_mfa_modules)[0]
return await self.async_step_mfa() return await self.async_step_mfa()
return self.async_show_form( return self.async_show_form(

View File

@ -28,6 +28,7 @@ from homeassistant.setup import (
async_set_domains_to_be_loaded, async_set_domains_to_be_loaded,
async_setup_component, async_setup_component,
) )
from homeassistant.util.async_ import gather_with_concurrency
from homeassistant.util.logging import async_activate_log_queue_handler from homeassistant.util.logging import async_activate_log_queue_handler
from homeassistant.util.package import async_get_user_site, is_virtual_env from homeassistant.util.package import async_get_user_site, is_virtual_env
from homeassistant.util.yaml import clear_secret_cache from homeassistant.util.yaml import clear_secret_cache
@ -49,6 +50,8 @@ STAGE_2_TIMEOUT = 300
WRAP_UP_TIMEOUT = 300 WRAP_UP_TIMEOUT = 300
COOLDOWN_TIME = 60 COOLDOWN_TIME = 60
MAX_LOAD_CONCURRENTLY = 6
DEBUGGER_INTEGRATIONS = {"debugpy", "ptvsd"} DEBUGGER_INTEGRATIONS = {"debugpy", "ptvsd"}
CORE_INTEGRATIONS = ("homeassistant", "persistent_notification") CORE_INTEGRATIONS = ("homeassistant", "persistent_notification")
LOGGING_INTEGRATIONS = { LOGGING_INTEGRATIONS = {
@ -372,7 +375,7 @@ async def async_mount_local_lib_path(config_dir: str) -> str:
def _get_domains(hass: core.HomeAssistant, config: Dict[str, Any]) -> Set[str]: def _get_domains(hass: core.HomeAssistant, config: Dict[str, Any]) -> Set[str]:
"""Get domains of components to set up.""" """Get domains of components to set up."""
# Filter out the repeating and common config section [homeassistant] # Filter out the repeating and common config section [homeassistant]
domains = {key.split(" ")[0] for key in config.keys() if key != core.DOMAIN} domains = {key.split(" ")[0] for key in config if key != core.DOMAIN}
# Add config entry domains # Add config entry domains
if not hass.config.safe_mode: if not hass.config.safe_mode:
@ -442,7 +445,8 @@ async def _async_set_up_integrations(
integrations_to_process = [ integrations_to_process = [
int_or_exc int_or_exc
for int_or_exc in await asyncio.gather( for int_or_exc in await gather_with_concurrency(
loader.MAX_LOAD_CONCURRENTLY,
*( *(
loader.async_get_integration(hass, domain) loader.async_get_integration(hass, domain)
for domain in old_to_resolve for domain in old_to_resolve

View File

@ -3,11 +3,6 @@
"abort": { "abort": {
"single_instance_allowed": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 Abode." "single_instance_allowed": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 Abode."
}, },
"error": {
"connection_error": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435 \u0441 Abode.",
"identifier_exists": "\u041f\u0440\u043e\u0444\u0438\u043b\u044a\u0442 \u0435 \u0432\u0435\u0447\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u043d.",
"invalid_credentials": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u0438 \u0434\u0430\u043d\u043d\u0438."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "Ha fallat la connexi\u00f3", "cannot_connect": "Ha fallat la connexi\u00f3",
"connection_error": "No es pot connectar amb Abode.", "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida"
"identifier_exists": "Compte ja registrat.",
"invalid_auth": "Autenticaci\u00f3 inv\u00e0lida",
"invalid_credentials": "Credencials inv\u00e0lides."
}, },
"step": { "step": {
"user": { "user": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit", "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit",
"connection_error": "Nelze se p\u0159ipojit k Abode.", "invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed"
"identifier_exists": "\u00da\u010det je ji\u017e zaregistrov\u00e1n.",
"invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed",
"invalid_credentials": "Neplatn\u00e9 p\u0159ihla\u0161ovac\u00ed \u00fadaje."
}, },
"step": { "step": {
"user": { "user": {

View File

@ -3,11 +3,6 @@
"abort": { "abort": {
"single_instance_allowed": "Det er kun n\u00f8dvendigt med en ops\u00e6tning af Abode." "single_instance_allowed": "Det er kun n\u00f8dvendigt med en ops\u00e6tning af Abode."
}, },
"error": {
"connection_error": "Kunne ikke oprette forbindelse til Abode.",
"identifier_exists": "Konto er allerede registreret.",
"invalid_credentials": "Ugyldige legitimationsoplysninger."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -3,11 +3,6 @@
"abort": { "abort": {
"single_instance_allowed": "Es ist nur eine einzige Konfiguration von Abode erlaubt." "single_instance_allowed": "Es ist nur eine einzige Konfiguration von Abode erlaubt."
}, },
"error": {
"connection_error": "Es kann keine Verbindung zu Abode hergestellt werden.",
"identifier_exists": "Das Konto ist bereits registriert.",
"invalid_credentials": "Ung\u00fcltige Anmeldeinformationen"
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "Failed to connect", "cannot_connect": "Failed to connect",
"connection_error": "Unable to connect to Abode.", "invalid_auth": "Invalid authentication"
"identifier_exists": "Account already registered.",
"invalid_auth": "Invalid authentication",
"invalid_credentials": "Invalid credentials."
}, },
"step": { "step": {
"user": { "user": {

View File

@ -3,11 +3,6 @@
"abort": { "abort": {
"single_instance_allowed": "Solo se permite una \u00fanica configuraci\u00f3n de Abode." "single_instance_allowed": "Solo se permite una \u00fanica configuraci\u00f3n de Abode."
}, },
"error": {
"connection_error": "No se puede conectar a Abode.",
"identifier_exists": "Cuenta ya registrada.",
"invalid_credentials": "Credenciales inv\u00e1lidas."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "No se pudo conectar", "cannot_connect": "No se pudo conectar",
"connection_error": "No se puede conectar a Abode.", "invalid_auth": "Autenticaci\u00f3n no v\u00e1lida"
"identifier_exists": "Cuenta ya registrada.",
"invalid_auth": "Autenticaci\u00f3n no v\u00e1lida",
"invalid_credentials": "Credenciales inv\u00e1lidas."
}, },
"step": { "step": {
"user": { "user": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "\u00dchendamine nurjus", "cannot_connect": "\u00dchendamine nurjus",
"connection_error": "\u00dchendus Abode-iga nurjus.", "invalid_auth": "Tuvastamise viga"
"identifier_exists": "Konto on juba seadistatud",
"invalid_auth": "Tuvastamise viga",
"invalid_credentials": "Sobimatu mandaat."
}, },
"step": { "step": {
"user": { "user": {

View File

@ -1,7 +0,0 @@
{
"config": {
"error": {
"connection_error": "Yhteytt\u00e4 Abodeen ei voi muodostaa."
}
}
}

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "\u00c9chec de connexion", "cannot_connect": "\u00c9chec de connexion",
"connection_error": "Impossible de se connecter \u00e0 Abode.", "invalid_auth": "Authentification invalide"
"identifier_exists": "Compte d\u00e9j\u00e0 enregistr\u00e9.",
"invalid_auth": "Authentification invalide",
"invalid_credentials": "Informations d'identification invalides."
}, },
"step": { "step": {
"user": { "user": {

View File

@ -3,11 +3,6 @@
"abort": { "abort": {
"single_instance_allowed": "Csak egyetlen Abode konfigur\u00e1ci\u00f3 enged\u00e9lyezett." "single_instance_allowed": "Csak egyetlen Abode konfigur\u00e1ci\u00f3 enged\u00e9lyezett."
}, },
"error": {
"connection_error": "Nem lehet csatlakozni az Abode-hez.",
"identifier_exists": "Fi\u00f3k m\u00e1r regisztr\u00e1lva van",
"invalid_credentials": "\u00c9rv\u00e9nytelen hiteles\u00edt\u0151 adatok"
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "Impossibile connettersi", "cannot_connect": "Impossibile connettersi",
"connection_error": "Impossibile connettersi ad Abode.", "invalid_auth": "Autenticazione non valida"
"identifier_exists": "Account gi\u00e0 registrato",
"invalid_auth": "Autenticazione non valida",
"invalid_credentials": "Credenziali non valide"
}, },
"step": { "step": {
"user": { "user": {

View File

@ -3,11 +3,6 @@
"abort": { "abort": {
"single_instance_allowed": "\ud558\ub098\uc758 Abode \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4." "single_instance_allowed": "\ud558\ub098\uc758 Abode \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
}, },
"error": {
"connection_error": "Abode \uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"identifier_exists": "\uacc4\uc815\uc774 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"invalid_credentials": "\uc0ac\uc6a9\uc790 \uc774\ub984 \ud639\uc740 \ube44\ubc00\ubc88\ud638\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -1,14 +1,11 @@
{ {
"config": { "config": {
"abort": { "abort": {
"single_instance_allowed": "N\u00ebmmen eng eenzeg Konfiguratioun vun ZHA ass erlaabt." "single_instance_allowed": "Scho konfigur\u00e9iert. N\u00ebmmen eng eenzeg Konfiguratioun m\u00e9iglech."
}, },
"error": { "error": {
"cannot_connect": "Feeler beim verbannen", "cannot_connect": "Feeler beim verbannen",
"connection_error": "Kann sech net mat Abode verbannen.", "invalid_auth": "Ong\u00eblteg Authentifikatioun"
"identifier_exists": "Konto ass scho registr\u00e9iert",
"invalid_auth": "Ong\u00eblteg Authentifikatioun",
"invalid_credentials": "Ong\u00eblteg Login Informatioune"
}, },
"step": { "step": {
"user": { "user": {

View File

@ -5,9 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "Kan geen verbinding maken", "cannot_connect": "Kan geen verbinding maken",
"connection_error": "Kan geen verbinding maken met Abode.", "invalid_auth": "Ongeldige authenticatie"
"identifier_exists": "Account is al geregistreerd.",
"invalid_credentials": "Ongeldige inloggegevens."
}, },
"step": { "step": {
"user": { "user": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "Tilkobling mislyktes", "cannot_connect": "Tilkobling mislyktes",
"connection_error": "Kan ikke koble til Abode.", "invalid_auth": "Ugyldig godkjenning"
"identifier_exists": "Kontoen er allerede registrert.",
"invalid_auth": "Ugyldig godkjenning",
"invalid_credentials": "Ugyldig legitimasjon"
}, },
"step": { "step": {
"user": { "user": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia",
"connection_error": "Nie mo\u017cna po\u0142\u0105czy\u0107 si\u0119 z Abode", "invalid_auth": "Niepoprawne uwierzytelnienie"
"identifier_exists": "Konto jest ju\u017c zarejestrowane",
"invalid_auth": "Niepoprawne uwierzytelnienie",
"invalid_credentials": "Nieprawid\u0142owe dane uwierzytelniaj\u0105ce"
}, },
"step": { "step": {
"user": { "user": {

View File

@ -3,11 +3,6 @@
"abort": { "abort": {
"single_instance_allowed": "Somente uma \u00fanica configura\u00e7\u00e3o de Abode \u00e9 permitida." "single_instance_allowed": "Somente uma \u00fanica configura\u00e7\u00e3o de Abode \u00e9 permitida."
}, },
"error": {
"connection_error": "N\u00e3o foi poss\u00edvel conectar ao Abode.",
"identifier_exists": "Conta j\u00e1 cadastrada.",
"invalid_credentials": "Credenciais inv\u00e1lidas."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -1,8 +1,5 @@
{ {
"config": { "config": {
"error": {
"identifier_exists": "Conta j\u00e1 registada"
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.",
"connection_error": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a Abode.", "invalid_auth": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f."
"identifier_exists": "\u0423\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430.",
"invalid_auth": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.",
"invalid_credentials": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435."
}, },
"step": { "step": {
"user": { "user": {

View File

@ -3,11 +3,6 @@
"abort": { "abort": {
"single_instance_allowed": "Dovoljena je samo ena konfiguracija Abode." "single_instance_allowed": "Dovoljena je samo ena konfiguracija Abode."
}, },
"error": {
"connection_error": "Ni mogo\u010de vzpostaviti povezave z Abode.",
"identifier_exists": "Ra\u010dun je \u017ee registriran.",
"invalid_credentials": "Neveljavne poverilnice."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -3,11 +3,6 @@
"abort": { "abort": {
"single_instance_allowed": "Endast en enda konfiguration av Abode \u00e4r till\u00e5ten." "single_instance_allowed": "Endast en enda konfiguration av Abode \u00e4r till\u00e5ten."
}, },
"error": {
"connection_error": "Det gick inte att ansluta till Abode.",
"identifier_exists": "Kontot \u00e4r redan registrerat.",
"invalid_credentials": "Ogiltiga autentiseringsuppgifter."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -5,10 +5,7 @@
}, },
"error": { "error": {
"cannot_connect": "\u9023\u7dda\u5931\u6557", "cannot_connect": "\u9023\u7dda\u5931\u6557",
"connection_error": "\u7121\u6cd5\u9023\u7dda\u81f3 Abode\u3002", "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548"
"identifier_exists": "\u5e33\u865f\u5df2\u8a3b\u518a\u3002",
"invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548",
"invalid_credentials": "\u6191\u8b49\u7121\u6548\u3002"
}, },
"step": { "step": {
"user": { "user": {

View File

@ -1,6 +1,7 @@
"""Constants for AccuWeather integration.""" """Constants for AccuWeather integration."""
from homeassistant.const import ( from homeassistant.const import (
ATTR_DEVICE_CLASS, ATTR_DEVICE_CLASS,
CONCENTRATION_PARTS_PER_CUBIC_METER,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
LENGTH_FEET, LENGTH_FEET,
LENGTH_INCHES, LENGTH_INCHES,
@ -13,7 +14,6 @@ from homeassistant.const import (
TEMP_FAHRENHEIT, TEMP_FAHRENHEIT,
TIME_HOURS, TIME_HOURS,
UV_INDEX, UV_INDEX,
VOLUME_CUBIC_METERS,
) )
ATTRIBUTION = "Data provided by AccuWeather" ATTRIBUTION = "Data provided by AccuWeather"
@ -22,7 +22,6 @@ ATTR_FORECAST = CONF_FORECAST = "forecast"
ATTR_LABEL = "label" ATTR_LABEL = "label"
ATTR_UNIT_IMPERIAL = "Imperial" ATTR_UNIT_IMPERIAL = "Imperial"
ATTR_UNIT_METRIC = "Metric" ATTR_UNIT_METRIC = "Metric"
CONCENTRATION_PARTS_PER_CUBIC_METER = f"p/{VOLUME_CUBIC_METERS}"
COORDINATOR = "coordinator" COORDINATOR = "coordinator"
DOMAIN = "accuweather" DOMAIN = "accuweather"
MANUFACTURER = "AccuWeather, Inc." MANUFACTURER = "AccuWeather, Inc."

View File

@ -4,7 +4,8 @@
"user": { "user": {
"data": { "data": {
"latitude": "Breitengrad", "latitude": "Breitengrad",
"longitude": "L\u00e4ngengrad" "longitude": "L\u00e4ngengrad",
"name": "Name"
}, },
"title": "AccuWeather" "title": "AccuWeather"
} }

View File

@ -16,7 +16,7 @@
"longitude": "L\u00e4ngegrad", "longitude": "L\u00e4ngegrad",
"name": "Numm" "name": "Numm"
}, },
"description": "Falls du H\u00ebllef mat der Konfiguratioun brauch kuck h\u00e9i:\nhttps://www.home-assistant.io/integrations/accuweather/\n\nWieder Pr\u00e9visounen si standardm\u00e9isseg net aktiv. Du kanns d\u00e9i an den Optioune vun der Integratioun aschalten.", "description": "Falls du H\u00ebllef mat der Konfiguratioun brauch kuck h\u00e9i:\nhttps://www.home-assistant.io/integrations/accuweather/\n\nVerschidde Sensoren si standardm\u00e9isseg net aktiv. Du kanns d\u00e9i an der Entit\u00e9ie Registry no der Konfiguratioun vun der Integratioun aschalten.\n\nWieder Pr\u00e9visounen si standardm\u00e9isseg net aktiv. Du kanns d\u00e9i an den Optioune vun der Integratioun aschalten.",
"title": "AccuWeather" "title": "AccuWeather"
} }
} }

View File

@ -1,11 +1,30 @@
{ {
"config": { "config": {
"error": {
"invalid_api_key": "API-sleutel",
"requests_exceeded": "Het toegestane aantal verzoeken aan de Accuweather API is overschreden. U moet wachten of de API-sleutel wijzigen."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {
"api_key": "API-sleutel",
"latitude": "Breedtegraad",
"longitude": "Lengtegraad", "longitude": "Lengtegraad",
"name": "Naam" "name": "Naam"
} },
"description": "Als je hulp nodig hebt bij de configuratie, kijk dan hier: https://www.home-assistant.io/integrations/accuweather/ \n\n Sommige sensoren zijn niet standaard ingeschakeld. U kunt ze inschakelen in het entiteitenregister na de integratieconfiguratie.\n Weersvoorspelling is niet standaard ingeschakeld. U kunt het inschakelen in de integratieopties.",
"title": "AccuWeather"
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "Weervoorspelling"
},
"description": "Vanwege de beperkingen van de gratis versie van de AccuWeather API-sleutel, worden gegevensupdates elke 64 minuten in plaats van elke 32 minuten uitgevoerd wanneer u weersvoorspelling inschakelt.",
"title": "AccuWeather-opties"
} }
} }
} }

View File

@ -16,7 +16,7 @@
"longitude": "Lengdegrad", "longitude": "Lengdegrad",
"name": "Navn" "name": "Navn"
}, },
"description": "Hvis du trenger hjelp med konfigurasjonen, kan du se her: https://www.home-assistant.io/integrations/accuweather/ \n\n Noen sensorer er ikke aktivert som standard. Du kan aktivere dem i enhetsregisteret etter integrasjonskonfigurasjonen. \n V\u00e6rmelding er ikke aktivert som standard. Du kan aktivere det i integrasjonsalternativene.", "description": "Hvis du trenger hjelp med konfigurasjonen, kan du se her: https://www.home-assistant.io/integrations/accuweather/ \n\nNoen sensorer er ikke aktivert som standard. Du kan aktivere dem i entitetsregisteret etter integrasjonskonfigurasjonen. \nV\u00e6rmelding er ikke aktivert som standard. Du kan aktivere det i integrasjonsalternativene.",
"title": "" "title": ""
} }
} }

View File

@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "Ondergang",
"rising": "Opkomst",
"steady": "Stabiel"
}
}
}

View File

@ -1,5 +1,4 @@
{ {
"title": "Rollease Acmeda Automate",
"config": { "config": {
"step": { "step": {
"user": { "user": {

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "No s'han descobert nous hubs de Pulse.",
"no_devices_found": "No s'han trobat dispositius a la xarxa" "no_devices_found": "No s'han trobat dispositius a la xarxa"
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "Selecci\u00f3 del Hub a afegir" "title": "Selecci\u00f3 del Hub a afegir"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -2,6 +2,13 @@
"config": { "config": {
"abort": { "abort": {
"no_devices_found": "V s\u00edti nebyla nalezena \u017e\u00e1dn\u00e1 za\u0159\u00edzen\u00ed" "no_devices_found": "V s\u00edti nebyla nalezena \u017e\u00e1dn\u00e1 za\u0159\u00edzen\u00ed"
},
"step": {
"user": {
"data": {
"id": "ID hostitele"
}
}
} }
} }
} }

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "No new Pulse hubs discovered.",
"no_devices_found": "No devices found on the network" "no_devices_found": "No devices found on the network"
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "Pick a hub to add" "title": "Pick a hub to add"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "No se han descubierto nuevos hubs Pulse.",
"no_devices_found": "No se encontraron dispositivos en la red" "no_devices_found": "No se encontraron dispositivos en la red"
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "Elige un hub para a\u00f1adir" "title": "Elige un hub para a\u00f1adir"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "Uusi Pulse'i jaotureid ei avastatud.",
"no_devices_found": "V\u00f5rgus ei tuvastatud \u00fchtegi seadet" "no_devices_found": "V\u00f5rgus ei tuvastatud \u00fchtegi seadet"
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "Vali lisatav jaotur" "title": "Vali lisatav jaotur"
} }
} }
}, }
"title": ""
} }

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "Aucun nouveau hub Pulse n'a \u00e9t\u00e9 d\u00e9couvert.",
"no_devices_found": "Aucun appareil trouv\u00e9 sur le r\u00e9seau" "no_devices_found": "Aucun appareil trouv\u00e9 sur le r\u00e9seau"
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "Choisissez un hub \u00e0 ajouter" "title": "Choisissez un hub \u00e0 ajouter"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "Non sono stati scoperti nuovi hub Pulse.",
"no_devices_found": "Nessun dispositivo trovato sulla rete" "no_devices_found": "Nessun dispositivo trovato sulla rete"
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "Scegliere un hub da aggiungere" "title": "Scegliere un hub da aggiungere"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -1,8 +1,5 @@
{ {
"config": { "config": {
"abort": {
"all_configured": "\ubc1c\uacac\ub41c \uc0c8\ub85c\uc6b4 Pulse \ud5c8\ube0c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -11,6 +8,5 @@
"title": "\ucd94\uac00\ud560 \ud5c8\ube0c \uc120\ud0dd\ud558\uae30" "title": "\ucd94\uac00\ud560 \ud5c8\ube0c \uc120\ud0dd\ud558\uae30"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -1,7 +1,7 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "Keng nei Pulse Hubs entdeckt." "no_devices_found": "Keng Apparater am Netzwierk fonnt"
}, },
"step": { "step": {
"user": { "user": {
@ -11,6 +11,5 @@
"title": "Wiel den Hub aus dee soll dob\u00e4igesat ginn." "title": "Wiel den Hub aus dee soll dob\u00e4igesat ginn."
} }
} }
}, }
"title": "Rollease ACmeda Automate"
} }

View File

@ -1,8 +1,5 @@
{ {
"config": { "config": {
"abort": {
"all_configured": "Geen nieuwe Pulse hubs ontdekt."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -11,6 +8,5 @@
"title": "Kies een hub om toe te voegen" "title": "Kies een hub om toe te voegen"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "Ingen nye Pulse-hub oppdaget.",
"no_devices_found": "Ingen enheter funnet p\u00e5 nettverket" "no_devices_found": "Ingen enheter funnet p\u00e5 nettverket"
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "Velg en hub du vil legge til" "title": "Velg en hub du vil legge til"
} }
} }
}, }
"title": ""
} }

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "Nie wykryto hub\u00f3w Pulse",
"no_devices_found": "Nie znaleziono urz\u0105dze\u0144 w sieci" "no_devices_found": "Nie znaleziono urz\u0105dze\u0144 w sieci"
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "Wybierz hub, kt\u00f3ry chcesz doda\u0107" "title": "Wybierz hub, kt\u00f3ry chcesz doda\u0107"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b.",
"no_devices_found": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 \u0441\u0435\u0442\u0438." "no_devices_found": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 \u0441\u0435\u0442\u0438."
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0445\u0430\u0431, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c" "title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0445\u0430\u0431, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -1,7 +1,6 @@
{ {
"config": { "config": {
"abort": { "abort": {
"all_configured": "\u672a\u641c\u5c0b\u5230 Pulse hub",
"no_devices_found": "\u7db2\u8def\u4e0a\u627e\u4e0d\u5230\u8a2d\u5099" "no_devices_found": "\u7db2\u8def\u4e0a\u627e\u4e0d\u5230\u8a2d\u5099"
}, },
"step": { "step": {
@ -12,6 +11,5 @@
"title": "\u9078\u64c7\u6240\u8981\u65b0\u589e\u7684 Hub" "title": "\u9078\u64c7\u6240\u8981\u65b0\u589e\u7684 Hub"
} }
} }
}, }
"title": "Rollease Acmeda Automate"
} }

View File

@ -4,9 +4,6 @@
"existing_instance_updated": "\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430\u0449\u0430\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f.", "existing_instance_updated": "\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430\u0449\u0430\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f.",
"single_instance_allowed": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 AdGuard Home." "single_instance_allowed": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 AdGuard Home."
}, },
"error": {
"connection_error": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435."
},
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"description": "\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 Home Assistant \u0434\u0430 \u0441\u0435 \u0441\u0432\u044a\u0440\u0437\u0432\u0430 \u0441 AdGuard Home, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0435\u043d \u043e\u0442 Hass.io \u0434\u043e\u0431\u0430\u0432\u043a\u0430\u0442\u0430: {addon} ?", "description": "\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 Home Assistant \u0434\u0430 \u0441\u0435 \u0441\u0432\u044a\u0440\u0437\u0432\u0430 \u0441 AdGuard Home, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0435\u043d \u043e\u0442 Hass.io \u0434\u043e\u0431\u0430\u0432\u043a\u0430\u0442\u0430: {addon} ?",

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3." "single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3."
}, },
"error": { "error": {
"cannot_connect": "Ha fallat la connexi\u00f3", "cannot_connect": "Ha fallat la connexi\u00f3"
"connection_error": "No s'ha pogut connectar."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace." "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace."
}, },
"error": { "error": {
"cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit", "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit"
"connection_error": "Nepoda\u0159ilo se p\u0159ipojit."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
@ -21,7 +20,8 @@
"ssl": "Pou\u017e\u00edv\u00e1 SSL certifik\u00e1t", "ssl": "Pou\u017e\u00edv\u00e1 SSL certifik\u00e1t",
"username": "U\u017eivatelsk\u00e9 jm\u00e9no", "username": "U\u017eivatelsk\u00e9 jm\u00e9no",
"verify_ssl": "Ov\u011b\u0159it certifik\u00e1t SSL" "verify_ssl": "Ov\u011b\u0159it certifik\u00e1t SSL"
} },
"description": "Nastavte svou instanci AdGuard Home pro monitorov\u00e1n\u00ed a \u0159\u00edzen\u00ed."
} }
} }
} }

View File

@ -4,9 +4,6 @@
"existing_instance_updated": "Opdaterede eksisterende konfiguration.", "existing_instance_updated": "Opdaterede eksisterende konfiguration.",
"single_instance_allowed": "Kun en enkelt konfiguration af AdGuard Home er tilladt." "single_instance_allowed": "Kun en enkelt konfiguration af AdGuard Home er tilladt."
}, },
"error": {
"connection_error": "Forbindelse mislykkedes."
},
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"description": "Vil du konfigurere Home Assistant til at oprette forbindelse til AdGuard Home leveret af Hass.io-tilf\u00f8jelsen: {addon}?", "description": "Vil du konfigurere Home Assistant til at oprette forbindelse til AdGuard Home leveret af Hass.io-tilf\u00f8jelsen: {addon}?",

View File

@ -4,9 +4,6 @@
"existing_instance_updated": "Bestehende Konfiguration wurde aktualisiert.", "existing_instance_updated": "Bestehende Konfiguration wurde aktualisiert.",
"single_instance_allowed": "Es ist nur eine einzige Konfiguration von AdGuard Home zul\u00e4ssig." "single_instance_allowed": "Es ist nur eine einzige Konfiguration von AdGuard Home zul\u00e4ssig."
}, },
"error": {
"connection_error": "Fehler beim Herstellen einer Verbindung."
},
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"description": "M\u00f6chtest du Home Assistant so konfigurieren, dass eine Verbindung mit AdGuard Home als Hass.io-Add-On hergestellt wird: {addon}?", "description": "M\u00f6chtest du Home Assistant so konfigurieren, dass eine Verbindung mit AdGuard Home als Hass.io-Add-On hergestellt wird: {addon}?",

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "Already configured. Only a single configuration possible." "single_instance_allowed": "Already configured. Only a single configuration possible."
}, },
"error": { "error": {
"cannot_connect": "Failed to connect", "cannot_connect": "Failed to connect"
"connection_error": "Failed to connect."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {

View File

@ -4,9 +4,6 @@
"existing_instance_updated": "Se actualiz\u00f3 la configuraci\u00f3n existente.", "existing_instance_updated": "Se actualiz\u00f3 la configuraci\u00f3n existente.",
"single_instance_allowed": "Solo se permite una \u00fanica configuraci\u00f3n de AdGuard Home." "single_instance_allowed": "Solo se permite una \u00fanica configuraci\u00f3n de AdGuard Home."
}, },
"error": {
"connection_error": "Error al conectar."
},
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"description": "\u00bfDesea configurar Home Assistant para conectarse a la p\u00e1gina principal de AdGuard proporcionada por el complemento Hass.io: {addon}?", "description": "\u00bfDesea configurar Home Assistant para conectarse a la p\u00e1gina principal de AdGuard proporcionada por el complemento Hass.io: {addon}?",

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "S\u00f3lo se permite una \u00fanica configuraci\u00f3n de AdGuard Home." "single_instance_allowed": "S\u00f3lo se permite una \u00fanica configuraci\u00f3n de AdGuard Home."
}, },
"error": { "error": {
"cannot_connect": "No se pudo conectar", "cannot_connect": "No se pudo conectar"
"connection_error": "No se conect\u00f3."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "Juba seadistatud. V\u00f5imalik on ainult \u00fcks seadistamine." "single_instance_allowed": "Juba seadistatud. V\u00f5imalik on ainult \u00fcks seadistamine."
}, },
"error": { "error": {
"cannot_connect": "\u00dchendamine nurjus", "cannot_connect": "\u00dchendamine nurjus"
"connection_error": "\u00dchenduse loomine nurjus"
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {

View File

@ -1,8 +1,5 @@
{ {
"config": { "config": {
"error": {
"connection_error": "Yhdist\u00e4minen ep\u00e4onnistui."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "Une seule configuration d'AdGuard Home est autoris\u00e9e." "single_instance_allowed": "Une seule configuration d'AdGuard Home est autoris\u00e9e."
}, },
"error": { "error": {
"cannot_connect": "\u00c9chec de connexion", "cannot_connect": "\u00c9chec de connexion"
"connection_error": "\u00c9chec de connexion."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {

View File

@ -1,8 +1,5 @@
{ {
"config": { "config": {
"error": {
"connection_error": "Gagal terhubung."
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione." "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione."
}, },
"error": { "error": {
"cannot_connect": "Impossibile connettersi", "cannot_connect": "Impossibile connettersi"
"connection_error": "Impossibile connettersi."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {

View File

@ -4,9 +4,6 @@
"existing_instance_updated": "\uae30\uc874 \uad6c\uc131\uc744 \uc5c5\ub370\uc774\ud2b8\ud588\uc2b5\ub2c8\ub2e4.", "existing_instance_updated": "\uae30\uc874 \uad6c\uc131\uc744 \uc5c5\ub370\uc774\ud2b8\ud588\uc2b5\ub2c8\ub2e4.",
"single_instance_allowed": "\ud558\ub098\uc758 AdGuard Home \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4." "single_instance_allowed": "\ud558\ub098\uc758 AdGuard Home \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
}, },
"error": {
"connection_error": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."
},
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"description": "Hass.io {addon} \uc560\ub4dc\uc628\uc73c\ub85c AdGuard Home \uc5d0 \uc5f0\uacb0\ud558\ub3c4\ub85d Home Assistant \ub97c \uad6c\uc131\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?", "description": "Hass.io {addon} \uc560\ub4dc\uc628\uc73c\ub85c AdGuard Home \uc5d0 \uc5f0\uacb0\ud558\ub3c4\ub85d Home Assistant \ub97c \uad6c\uc131\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",

View File

@ -2,11 +2,10 @@
"config": { "config": {
"abort": { "abort": {
"existing_instance_updated": "D\u00e9i bestehend Konfiguratioun ass ge\u00e4nnert.", "existing_instance_updated": "D\u00e9i bestehend Konfiguratioun ass ge\u00e4nnert.",
"single_instance_allowed": "N\u00ebmmen eng eenzeg Konfiguratioun vun AdGuard Home ass erlaabt." "single_instance_allowed": "Scho konfigur\u00e9iert. N\u00ebmmen eng eenzeg Konfiguratioun m\u00e9iglech."
}, },
"error": { "error": {
"cannot_connect": "Feeler beim verbannen", "cannot_connect": "Feeler beim verbannen"
"connection_error": "Feeler beim verbannen."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
@ -18,9 +17,9 @@
"host": "Host", "host": "Host",
"password": "Passwuert", "password": "Passwuert",
"port": "Port", "port": "Port",
"ssl": "AdGuard Home benotzt een SSL Zertifikat", "ssl": "Benotzt een SSL Zertifikat",
"username": "Benotzernumm", "username": "Benotzernumm",
"verify_ssl": "AdGuard Home benotzt een eegenen Zertifikat" "verify_ssl": "SSL Zertifikat iwwerpr\u00e9iwen"
}, },
"description": "Konfigur\u00e9iert \u00e4r AdGuard Home Instanz fir d'Iwwerwaachung an d'Kontroll z'erlaben." "description": "Konfigur\u00e9iert \u00e4r AdGuard Home Instanz fir d'Iwwerwaachung an d'Kontroll z'erlaben."
} }

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "Slechts \u00e9\u00e9n configuratie van AdGuard Home is toegestaan." "single_instance_allowed": "Slechts \u00e9\u00e9n configuratie van AdGuard Home is toegestaan."
}, },
"error": { "error": {
"cannot_connect": "Kan geen verbinding maken", "cannot_connect": "Kan geen verbinding maken"
"connection_error": "Kon niet verbinden."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
@ -15,6 +14,7 @@
}, },
"user": { "user": {
"data": { "data": {
"host": "Host",
"password": "Wachtwoord", "password": "Wachtwoord",
"port": "Poort", "port": "Poort",
"ssl": "AdGuard Home maakt gebruik van een SSL certificaat", "ssl": "AdGuard Home maakt gebruik van een SSL certificaat",

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig." "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig."
}, },
"error": { "error": {
"cannot_connect": "Tilkobling mislyktes", "cannot_connect": "Tilkobling mislyktes"
"connection_error": "Tilkobling mislyktes."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja." "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja."
}, },
"error": { "error": {
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia", "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia"
"connection_error": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia"
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {

View File

@ -4,9 +4,6 @@
"existing_instance_updated": "Configura\u00e7\u00e3o existente atualizada.", "existing_instance_updated": "Configura\u00e7\u00e3o existente atualizada.",
"single_instance_allowed": "Apenas uma \u00fanica configura\u00e7\u00e3o do AdGuard Home \u00e9 permitida." "single_instance_allowed": "Apenas uma \u00fanica configura\u00e7\u00e3o do AdGuard Home \u00e9 permitida."
}, },
"error": {
"connection_error": "Falhou ao conectar."
},
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"description": "Deseja configurar o Home Assistant para se conectar ao AdGuard Home fornecido pelo complemento Hass.io: {addon} ?", "description": "Deseja configurar o Home Assistant para se conectar ao AdGuard Home fornecido pelo complemento Hass.io: {addon} ?",

View File

@ -1,8 +1,5 @@
{ {
"config": { "config": {
"error": {
"connection_error": "Falha na liga\u00e7\u00e3o"
},
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"title": "AdGuard Home via Hass.io add-on" "title": "AdGuard Home via Hass.io add-on"

View File

@ -5,13 +5,12 @@
"single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e." "single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e."
}, },
"error": { "error": {
"cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.", "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f."
"connection_error": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f."
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a AdGuard Home (\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Hass.io \"{addon}\")?", "description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a AdGuard Home (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Hass.io \"{addon}\")?",
"title": "AdGuard Home (\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Hass.io)" "title": "AdGuard Home (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Hass.io)"
}, },
"user": { "user": {
"data": { "data": {

View File

@ -4,9 +4,6 @@
"existing_instance_updated": "Posodobljena obstoje\u010da konfiguracija.", "existing_instance_updated": "Posodobljena obstoje\u010da konfiguracija.",
"single_instance_allowed": "Dovoljena je samo ena konfiguracija AdGuard Home." "single_instance_allowed": "Dovoljena je samo ena konfiguracija AdGuard Home."
}, },
"error": {
"connection_error": "Povezava ni uspela."
},
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"description": "\u017delite konfigurirati Home Assistant-a za povezavo z AdGuard Home, ki ga ponuja Hass.io add-on {addon} ?", "description": "\u017delite konfigurirati Home Assistant-a za povezavo z AdGuard Home, ki ga ponuja Hass.io add-on {addon} ?",

View File

@ -4,9 +4,6 @@
"existing_instance_updated": "Uppdaterade existerande konfiguration.", "existing_instance_updated": "Uppdaterade existerande konfiguration.",
"single_instance_allowed": "Endast en enda konfiguration av AdGuard Home \u00e4r till\u00e5ten." "single_instance_allowed": "Endast en enda konfiguration av AdGuard Home \u00e4r till\u00e5ten."
}, },
"error": {
"connection_error": "Det gick inte att ansluta."
},
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {
"description": "Vill du konfigurera Home Assistant f\u00f6r att ansluta till AdGuard Home som tillhandah\u00e5lls av Hass.io Add-on: {addon}?", "description": "Vill du konfigurera Home Assistant f\u00f6r att ansluta till AdGuard Home som tillhandah\u00e5lls av Hass.io Add-on: {addon}?",

View File

@ -3,9 +3,6 @@
"abort": { "abort": {
"existing_instance_updated": "\u66f4\u65b0\u4e86\u73b0\u6709\u914d\u7f6e\u3002" "existing_instance_updated": "\u66f4\u65b0\u4e86\u73b0\u6709\u914d\u7f6e\u3002"
}, },
"error": {
"connection_error": "\u8fde\u63a5\u5931\u8d25\u3002"
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -5,8 +5,7 @@
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u8a2d\u5099\u3002" "single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u8a2d\u5099\u3002"
}, },
"error": { "error": {
"cannot_connect": "\u9023\u7dda\u5931\u6557", "cannot_connect": "\u9023\u7dda\u5931\u6557"
"connection_error": "\u9023\u7dda\u5931\u6557\u3002"
}, },
"step": { "step": {
"hassio_confirm": { "hassio_confirm": {

View File

@ -68,10 +68,9 @@ class AdsLight(AdsEntity, LightEntity):
@property @property
def supported_features(self): def supported_features(self):
"""Flag supported features.""" """Flag supported features."""
support = 0
if self._ads_var_brightness is not None: if self._ads_var_brightness is not None:
support = SUPPORT_BRIGHTNESS return SUPPORT_BRIGHTNESS
return support return 0
@property @property
def is_on(self): def is_on(self):

View File

@ -1,6 +1,5 @@
{ {
"config": { "config": {
"flow_title": "Advantage Air Setup",
"error": { "error": {
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]" "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]"
}, },
@ -17,6 +16,5 @@
"title": "Connect" "title": "Connect"
} }
} }
}, }
"title": "Advantage Air" }
}

View File

@ -6,7 +6,6 @@
"error": { "error": {
"cannot_connect": "Ha fallat la connexi\u00f3" "cannot_connect": "Ha fallat la connexi\u00f3"
}, },
"flow_title": "Configuraci\u00f3 d'Advantage Air",
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -17,6 +16,5 @@
"title": "Connecta" "title": "Connecta"
} }
} }
}, }
"title": "Advantage Air"
} }

View File

@ -6,16 +6,15 @@
"error": { "error": {
"cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit" "cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit"
}, },
"flow_title": "Nastaven\u00ed Advantage Air",
"step": { "step": {
"user": { "user": {
"data": { "data": {
"ip_address": "IP adresa", "ip_address": "IP adresa",
"port": "Port" "port": "Port"
}, },
"description": "P\u0159ipojte se k API va\u0161eho n\u00e1st\u011bnn\u00e9ho tabletu Advantage Air.",
"title": "P\u0159ipojit" "title": "P\u0159ipojit"
} }
} }
}, }
"title": "Advantage Air"
} }

View File

@ -6,7 +6,6 @@
"error": { "error": {
"cannot_connect": "Failed to connect" "cannot_connect": "Failed to connect"
}, },
"flow_title": "Advantage Air Setup",
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -17,6 +16,5 @@
"title": "Connect" "title": "Connect"
} }
} }
}, }
"title": "Advantage Air"
} }

View File

@ -6,7 +6,6 @@
"error": { "error": {
"cannot_connect": "No se pudo conectar" "cannot_connect": "No se pudo conectar"
}, },
"flow_title": "Configuraci\u00f3n de Advantage Air",
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -17,6 +16,5 @@
"title": "Conectar" "title": "Conectar"
} }
} }
}, }
"title": "Advantage Air"
} }

View File

@ -6,7 +6,6 @@
"error": { "error": {
"cannot_connect": "\u00dchendus nurjus" "cannot_connect": "\u00dchendus nurjus"
}, },
"flow_title": "Advantage Air-i seadistamine",
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -17,6 +16,5 @@
"title": "\u00dchenda" "title": "\u00dchenda"
} }
} }
}, }
"title": ""
} }

View File

@ -0,0 +1,20 @@
{
"config": {
"abort": {
"already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9"
},
"error": {
"cannot_connect": "\u00c9chec de connexion"
},
"step": {
"user": {
"data": {
"ip_address": "Adresse IP",
"port": "Port"
},
"description": "Connectez-vous \u00e0 l'API de votre tablette murale Advantage Air.",
"title": "Connecter"
}
}
}
}

View File

@ -6,7 +6,6 @@
"error": { "error": {
"cannot_connect": "Impossibile connettersi" "cannot_connect": "Impossibile connettersi"
}, },
"flow_title": "Configurazione di Advantage Air",
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -17,6 +16,5 @@
"title": "Connetti" "title": "Connetti"
} }
} }
}, }
"title": "Advantage Air"
} }

View File

@ -0,0 +1,20 @@
{
"config": {
"abort": {
"already_configured": "Apparat ass scho konfigur\u00e9iert"
},
"error": {
"cannot_connect": "Feeler beim verbannen"
},
"step": {
"user": {
"data": {
"ip_address": "IP Adresse",
"port": "Port"
},
"description": "Mat der API vun dengem Advantage Air Tablet verbannen",
"title": "Verbannen"
}
}
}
}

View File

@ -1,13 +1,16 @@
{ {
"config": { "config": {
"abort": {
"already_configured": "Apparaat is al geconfigureerd"
},
"step": { "step": {
"user": { "user": {
"data": { "data": {
"port": "Poort" "port": "Poort"
}, },
"description": "Maak verbinding met de API van uw Advantage Air-tablet voor wandmontage.",
"title": "Verbind" "title": "Verbind"
} }
} }
}, }
"title": "Advantage Air"
} }

View File

@ -6,7 +6,6 @@
"error": { "error": {
"cannot_connect": "Tilkobling mislyktes" "cannot_connect": "Tilkobling mislyktes"
}, },
"flow_title": "[VOID] oppsett",
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -17,6 +16,5 @@
"title": "Koble til" "title": "Koble til"
} }
} }
}, }
"title": ""
} }

View File

@ -6,7 +6,6 @@
"error": { "error": {
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia" "cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia"
}, },
"flow_title": "Konfiguracja Advantage Air",
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -17,6 +16,5 @@
"title": "Po\u0142\u0105czenie" "title": "Po\u0142\u0105czenie"
} }
} }
}, }
"title": "Advantage Air"
} }

View File

@ -6,17 +6,15 @@
"error": { "error": {
"cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f." "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f."
}, },
"flow_title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Advantage Air",
"step": { "step": {
"user": { "user": {
"data": { "data": {
"ip_address": "IP-\u0430\u0434\u0440\u0435\u0441", "ip_address": "IP-\u0430\u0434\u0440\u0435\u0441",
"port": "\u041f\u043e\u0440\u0442" "port": "\u041f\u043e\u0440\u0442"
}, },
"description": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043a API \u0412\u0430\u0448\u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430 Advantage Air.", "description": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a API \u0412\u0430\u0448\u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430 Advantage Air.",
"title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f" "title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f"
} }
} }
}, }
"title": "Advantage Air"
} }

View File

@ -1,5 +1,8 @@
{ {
"config": { "config": {
"error": {
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
},
"step": { "step": {
"user": { "user": {
"data": { "data": {

View File

@ -6,7 +6,6 @@
"error": { "error": {
"cannot_connect": "\u9023\u7dda\u5931\u6557" "cannot_connect": "\u9023\u7dda\u5931\u6557"
}, },
"flow_title": "Advantage Air \u8a2d\u5b9a",
"step": { "step": {
"user": { "user": {
"data": { "data": {
@ -17,6 +16,5 @@
"title": "\u9023\u63a5" "title": "\u9023\u63a5"
} }
} }
}, }
"title": "Advantage Air"
} }

View File

@ -1,5 +1,4 @@
{ {
"title": "Agent DVR",
"config": { "config": {
"step": { "step": {
"user": { "user": {

View File

@ -5,8 +5,7 @@
}, },
"error": { "error": {
"already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs", "already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs",
"cannot_connect": "Ha fallat la connexi\u00f3", "cannot_connect": "Ha fallat la connexi\u00f3"
"device_unavailable": "Dispositiu no est\u00e0 disponible"
}, },
"step": { "step": {
"user": { "user": {
@ -17,6 +16,5 @@
"title": "Configuraci\u00f3 de Agent DVR" "title": "Configuraci\u00f3 de Agent DVR"
} }
} }
}, }
"title": "Agent DVR"
} }

Some files were not shown because too many files have changed in this diff Show More