mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
commit
e2d2f69cb0
40
.coveragerc
40
.coveragerc
@ -143,6 +143,7 @@ omit =
|
|||||||
homeassistant/components/dlna_dmr/media_player.py
|
homeassistant/components/dlna_dmr/media_player.py
|
||||||
homeassistant/components/dnsip/sensor.py
|
homeassistant/components/dnsip/sensor.py
|
||||||
homeassistant/components/dominos/*
|
homeassistant/components/dominos/*
|
||||||
|
homeassistant/components/doods/*
|
||||||
homeassistant/components/doorbird/*
|
homeassistant/components/doorbird/*
|
||||||
homeassistant/components/dovado/*
|
homeassistant/components/dovado/*
|
||||||
homeassistant/components/downloader/*
|
homeassistant/components/downloader/*
|
||||||
@ -155,7 +156,12 @@ omit =
|
|||||||
homeassistant/components/ebox/sensor.py
|
homeassistant/components/ebox/sensor.py
|
||||||
homeassistant/components/ebusd/*
|
homeassistant/components/ebusd/*
|
||||||
homeassistant/components/ecoal_boiler/*
|
homeassistant/components/ecoal_boiler/*
|
||||||
homeassistant/components/ecobee/*
|
homeassistant/components/ecobee/__init__.py
|
||||||
|
homeassistant/components/ecobee/binary_sensor.py
|
||||||
|
homeassistant/components/ecobee/climate.py
|
||||||
|
homeassistant/components/ecobee/notify.py
|
||||||
|
homeassistant/components/ecobee/sensor.py
|
||||||
|
homeassistant/components/ecobee/weather.py
|
||||||
homeassistant/components/econet/water_heater.py
|
homeassistant/components/econet/water_heater.py
|
||||||
homeassistant/components/ecovacs/*
|
homeassistant/components/ecovacs/*
|
||||||
homeassistant/components/eddystone_temperature/sensor.py
|
homeassistant/components/eddystone_temperature/sensor.py
|
||||||
@ -164,7 +170,7 @@ omit =
|
|||||||
homeassistant/components/eight_sleep/*
|
homeassistant/components/eight_sleep/*
|
||||||
homeassistant/components/eliqonline/sensor.py
|
homeassistant/components/eliqonline/sensor.py
|
||||||
homeassistant/components/elkm1/*
|
homeassistant/components/elkm1/*
|
||||||
homeassistant/components/elv/switch.py
|
homeassistant/components/elv/*
|
||||||
homeassistant/components/emby/media_player.py
|
homeassistant/components/emby/media_player.py
|
||||||
homeassistant/components/emoncms/sensor.py
|
homeassistant/components/emoncms/sensor.py
|
||||||
homeassistant/components/emoncms_history/*
|
homeassistant/components/emoncms_history/*
|
||||||
@ -197,7 +203,6 @@ omit =
|
|||||||
homeassistant/components/evohome/*
|
homeassistant/components/evohome/*
|
||||||
homeassistant/components/familyhub/camera.py
|
homeassistant/components/familyhub/camera.py
|
||||||
homeassistant/components/fastdotcom/*
|
homeassistant/components/fastdotcom/*
|
||||||
homeassistant/components/fedex/sensor.py
|
|
||||||
homeassistant/components/ffmpeg/camera.py
|
homeassistant/components/ffmpeg/camera.py
|
||||||
homeassistant/components/fibaro/*
|
homeassistant/components/fibaro/*
|
||||||
homeassistant/components/filesize/sensor.py
|
homeassistant/components/filesize/sensor.py
|
||||||
@ -288,11 +293,15 @@ omit =
|
|||||||
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/ialarm/alarm_control_panel.py
|
||||||
|
homeassistant/components/iaqualink/binary_sensor.py
|
||||||
homeassistant/components/iaqualink/climate.py
|
homeassistant/components/iaqualink/climate.py
|
||||||
homeassistant/components/iaqualink/light.py
|
homeassistant/components/iaqualink/light.py
|
||||||
homeassistant/components/iaqualink/sensor.py
|
homeassistant/components/iaqualink/sensor.py
|
||||||
homeassistant/components/iaqualink/switch.py
|
homeassistant/components/iaqualink/switch.py
|
||||||
homeassistant/components/icloud/device_tracker.py
|
homeassistant/components/icloud/device_tracker.py
|
||||||
|
homeassistant/components/izone/climate.py
|
||||||
|
homeassistant/components/izone/discovery.py
|
||||||
|
homeassistant/components/izone/__init__.py
|
||||||
homeassistant/components/idteck_prox/*
|
homeassistant/components/idteck_prox/*
|
||||||
homeassistant/components/ifttt/*
|
homeassistant/components/ifttt/*
|
||||||
homeassistant/components/iglo/light.py
|
homeassistant/components/iglo/light.py
|
||||||
@ -313,6 +322,7 @@ omit =
|
|||||||
homeassistant/components/itunes/media_player.py
|
homeassistant/components/itunes/media_player.py
|
||||||
homeassistant/components/joaoapps_join/*
|
homeassistant/components/joaoapps_join/*
|
||||||
homeassistant/components/juicenet/*
|
homeassistant/components/juicenet/*
|
||||||
|
homeassistant/components/kaiterra/*
|
||||||
homeassistant/components/kankun/switch.py
|
homeassistant/components/kankun/switch.py
|
||||||
homeassistant/components/keba/*
|
homeassistant/components/keba/*
|
||||||
homeassistant/components/keenetic_ndms2/device_tracker.py
|
homeassistant/components/keenetic_ndms2/device_tracker.py
|
||||||
@ -343,7 +353,6 @@ omit =
|
|||||||
homeassistant/components/lifx_legacy/light.py
|
homeassistant/components/lifx_legacy/light.py
|
||||||
homeassistant/components/lightwave/*
|
homeassistant/components/lightwave/*
|
||||||
homeassistant/components/limitlessled/light.py
|
homeassistant/components/limitlessled/light.py
|
||||||
homeassistant/components/linksys_ap/device_tracker.py
|
|
||||||
homeassistant/components/linksys_smart/device_tracker.py
|
homeassistant/components/linksys_smart/device_tracker.py
|
||||||
homeassistant/components/linky/__init__.py
|
homeassistant/components/linky/__init__.py
|
||||||
homeassistant/components/linky/sensor.py
|
homeassistant/components/linky/sensor.py
|
||||||
@ -434,12 +443,14 @@ omit =
|
|||||||
homeassistant/components/nuki/lock.py
|
homeassistant/components/nuki/lock.py
|
||||||
homeassistant/components/nut/sensor.py
|
homeassistant/components/nut/sensor.py
|
||||||
homeassistant/components/nx584/alarm_control_panel.py
|
homeassistant/components/nx584/alarm_control_panel.py
|
||||||
|
homeassistant/components/nzbget/__init__.py
|
||||||
homeassistant/components/nzbget/sensor.py
|
homeassistant/components/nzbget/sensor.py
|
||||||
homeassistant/components/obihai/*
|
homeassistant/components/obihai/*
|
||||||
homeassistant/components/octoprint/*
|
homeassistant/components/octoprint/*
|
||||||
homeassistant/components/oem/climate.py
|
homeassistant/components/oem/climate.py
|
||||||
homeassistant/components/oasa_telematics/sensor.py
|
homeassistant/components/oasa_telematics/sensor.py
|
||||||
homeassistant/components/ohmconnect/sensor.py
|
homeassistant/components/ohmconnect/sensor.py
|
||||||
|
homeassistant/components/ombi/*
|
||||||
homeassistant/components/onewire/sensor.py
|
homeassistant/components/onewire/sensor.py
|
||||||
homeassistant/components/onkyo/media_player.py
|
homeassistant/components/onkyo/media_player.py
|
||||||
homeassistant/components/onvif/camera.py
|
homeassistant/components/onvif/camera.py
|
||||||
@ -476,7 +487,10 @@ omit =
|
|||||||
homeassistant/components/pioneer/media_player.py
|
homeassistant/components/pioneer/media_player.py
|
||||||
homeassistant/components/pjlink/media_player.py
|
homeassistant/components/pjlink/media_player.py
|
||||||
homeassistant/components/plaato/*
|
homeassistant/components/plaato/*
|
||||||
homeassistant/components/plex/*
|
homeassistant/components/plex/__init__.py
|
||||||
|
homeassistant/components/plex/media_player.py
|
||||||
|
homeassistant/components/plex/sensor.py
|
||||||
|
homeassistant/components/plex/server.py
|
||||||
homeassistant/components/plugwise/*
|
homeassistant/components/plugwise/*
|
||||||
homeassistant/components/plum_lightpad/*
|
homeassistant/components/plum_lightpad/*
|
||||||
homeassistant/components/pocketcasts/sensor.py
|
homeassistant/components/pocketcasts/sensor.py
|
||||||
@ -544,6 +558,7 @@ omit =
|
|||||||
homeassistant/components/russound_rio/media_player.py
|
homeassistant/components/russound_rio/media_player.py
|
||||||
homeassistant/components/russound_rnet/media_player.py
|
homeassistant/components/russound_rnet/media_player.py
|
||||||
homeassistant/components/sabnzbd/*
|
homeassistant/components/sabnzbd/*
|
||||||
|
homeassistant/components/saj/sensor.py
|
||||||
homeassistant/components/satel_integra/*
|
homeassistant/components/satel_integra/*
|
||||||
homeassistant/components/scrape/sensor.py
|
homeassistant/components/scrape/sensor.py
|
||||||
homeassistant/components/scsgate/*
|
homeassistant/components/scsgate/*
|
||||||
@ -585,6 +600,8 @@ omit =
|
|||||||
homeassistant/components/solaredge/sensor.py
|
homeassistant/components/solaredge/sensor.py
|
||||||
homeassistant/components/solaredge_local/sensor.py
|
homeassistant/components/solaredge_local/sensor.py
|
||||||
homeassistant/components/solax/sensor.py
|
homeassistant/components/solax/sensor.py
|
||||||
|
homeassistant/components/soma/cover.py
|
||||||
|
homeassistant/components/soma/__init__.py
|
||||||
homeassistant/components/somfy/*
|
homeassistant/components/somfy/*
|
||||||
homeassistant/components/somfy_mylink/*
|
homeassistant/components/somfy_mylink/*
|
||||||
homeassistant/components/sonarr/sensor.py
|
homeassistant/components/sonarr/sensor.py
|
||||||
@ -597,7 +614,6 @@ omit =
|
|||||||
homeassistant/components/spotcrime/sensor.py
|
homeassistant/components/spotcrime/sensor.py
|
||||||
homeassistant/components/spotify/media_player.py
|
homeassistant/components/spotify/media_player.py
|
||||||
homeassistant/components/squeezebox/media_player.py
|
homeassistant/components/squeezebox/media_player.py
|
||||||
homeassistant/components/srp_energy/sensor.py
|
|
||||||
homeassistant/components/starlingbank/sensor.py
|
homeassistant/components/starlingbank/sensor.py
|
||||||
homeassistant/components/steam_online/sensor.py
|
homeassistant/components/steam_online/sensor.py
|
||||||
homeassistant/components/stiebel_eltron/*
|
homeassistant/components/stiebel_eltron/*
|
||||||
@ -618,7 +634,6 @@ omit =
|
|||||||
homeassistant/components/synologydsm/sensor.py
|
homeassistant/components/synologydsm/sensor.py
|
||||||
homeassistant/components/syslog/notify.py
|
homeassistant/components/syslog/notify.py
|
||||||
homeassistant/components/systemmonitor/sensor.py
|
homeassistant/components/systemmonitor/sensor.py
|
||||||
homeassistant/components/sytadin/sensor.py
|
|
||||||
homeassistant/components/tado/*
|
homeassistant/components/tado/*
|
||||||
homeassistant/components/tado/device_tracker.py
|
homeassistant/components/tado/device_tracker.py
|
||||||
homeassistant/components/tahoma/*
|
homeassistant/components/tahoma/*
|
||||||
@ -660,9 +675,14 @@ omit =
|
|||||||
homeassistant/components/trackr/device_tracker.py
|
homeassistant/components/trackr/device_tracker.py
|
||||||
homeassistant/components/tradfri/*
|
homeassistant/components/tradfri/*
|
||||||
homeassistant/components/tradfri/light.py
|
homeassistant/components/tradfri/light.py
|
||||||
|
homeassistant/components/tradfri/cover.py
|
||||||
homeassistant/components/trafikverket_train/sensor.py
|
homeassistant/components/trafikverket_train/sensor.py
|
||||||
homeassistant/components/trafikverket_weatherstation/sensor.py
|
homeassistant/components/trafikverket_weatherstation/sensor.py
|
||||||
homeassistant/components/transmission/*
|
homeassistant/components/transmission/__init__.py
|
||||||
|
homeassistant/components/transmission/sensor.py
|
||||||
|
homeassistant/components/transmission/switch.py
|
||||||
|
homeassistant/components/transmission/const.py
|
||||||
|
homeassistant/components/transmission/errors.py
|
||||||
homeassistant/components/travisci/sensor.py
|
homeassistant/components/travisci/sensor.py
|
||||||
homeassistant/components/tuya/*
|
homeassistant/components/tuya/*
|
||||||
homeassistant/components/twentemilieu/const.py
|
homeassistant/components/twentemilieu/const.py
|
||||||
@ -678,10 +698,8 @@ omit =
|
|||||||
homeassistant/components/upcloud/*
|
homeassistant/components/upcloud/*
|
||||||
homeassistant/components/upnp/*
|
homeassistant/components/upnp/*
|
||||||
homeassistant/components/upc_connect/*
|
homeassistant/components/upc_connect/*
|
||||||
homeassistant/components/ups/sensor.py
|
|
||||||
homeassistant/components/uptimerobot/binary_sensor.py
|
homeassistant/components/uptimerobot/binary_sensor.py
|
||||||
homeassistant/components/uscis/sensor.py
|
homeassistant/components/uscis/sensor.py
|
||||||
homeassistant/components/usps/*
|
|
||||||
homeassistant/components/vallox/*
|
homeassistant/components/vallox/*
|
||||||
homeassistant/components/vasttrafik/sensor.py
|
homeassistant/components/vasttrafik/sensor.py
|
||||||
homeassistant/components/velbus/__init__.py
|
homeassistant/components/velbus/__init__.py
|
||||||
@ -738,6 +756,7 @@ omit =
|
|||||||
homeassistant/components/yale_smart_alarm/alarm_control_panel.py
|
homeassistant/components/yale_smart_alarm/alarm_control_panel.py
|
||||||
homeassistant/components/yamaha/media_player.py
|
homeassistant/components/yamaha/media_player.py
|
||||||
homeassistant/components/yamaha_musiccast/media_player.py
|
homeassistant/components/yamaha_musiccast/media_player.py
|
||||||
|
homeassistant/components/yandex_transport/*
|
||||||
homeassistant/components/yeelight/*
|
homeassistant/components/yeelight/*
|
||||||
homeassistant/components/yeelightsunflower/light.py
|
homeassistant/components/yeelightsunflower/light.py
|
||||||
homeassistant/components/yi/camera.py
|
homeassistant/components/yi/camera.py
|
||||||
@ -755,6 +774,7 @@ omit =
|
|||||||
homeassistant/components/zha/core/device.py
|
homeassistant/components/zha/core/device.py
|
||||||
homeassistant/components/zha/core/gateway.py
|
homeassistant/components/zha/core/gateway.py
|
||||||
homeassistant/components/zha/core/helpers.py
|
homeassistant/components/zha/core/helpers.py
|
||||||
|
homeassistant/components/zha/core/patches.py
|
||||||
homeassistant/components/zha/core/registries.py
|
homeassistant/components/zha/core/registries.py
|
||||||
homeassistant/components/zha/device_entity.py
|
homeassistant/components/zha/device_entity.py
|
||||||
homeassistant/components/zha/entity.py
|
homeassistant/components/zha/entity.py
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
"runArgs": ["-e", "GIT_EDITOR=\"code --wait\""],
|
"runArgs": ["-e", "GIT_EDITOR=\"code --wait\""],
|
||||||
"extensions": [
|
"extensions": [
|
||||||
"ms-python.python",
|
"ms-python.python",
|
||||||
|
"visualstudioexptteam.vscodeintellicode",
|
||||||
"ms-azure-devops.azure-pipelines",
|
"ms-azure-devops.azure-pipelines",
|
||||||
"redhat.vscode-yaml",
|
"redhat.vscode-yaml",
|
||||||
"esbenp.prettier-vscode"
|
"esbenp.prettier-vscode"
|
||||||
|
4
.github/ISSUE_TEMPLATE.md
vendored
4
.github/ISSUE_TEMPLATE.md
vendored
@ -23,9 +23,9 @@
|
|||||||
Please provide details about your environment.
|
Please provide details about your environment.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
**Component/platform:**
|
**Integration:**
|
||||||
<!--
|
<!--
|
||||||
Please add the link to the documentation at https://www.home-assistant.io/components/ of the component/platform in question.
|
Please add the link to the documentation at https://www.home-assistant.io/integrations/ of the integration in question.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
4
.github/ISSUE_TEMPLATE/Bug_report.md
vendored
4
.github/ISSUE_TEMPLATE/Bug_report.md
vendored
@ -29,9 +29,9 @@ about: Create a report to help us improve
|
|||||||
Please provide details about your environment.
|
Please provide details about your environment.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
**Component/platform:**
|
**Integration:**
|
||||||
<!--
|
<!--
|
||||||
Please add the link to the documentation at https://www.home-assistant.io/components/ of the component/platform in question.
|
Please add the link to the documentation at https://www.home-assistant.io/integrations/ of the integration in question.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
1
.github/stale.yml
vendored
1
.github/stale.yml
vendored
@ -13,6 +13,7 @@ onlyLabels: []
|
|||||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||||
exemptLabels:
|
exemptLabels:
|
||||||
- under investigation
|
- under investigation
|
||||||
|
- Help wanted
|
||||||
|
|
||||||
# Set to true to ignore issues in a project (defaults to false)
|
# Set to true to ignore issues in a project (defaults to false)
|
||||||
exemptProjects: true
|
exemptProjects: true
|
||||||
|
@ -30,4 +30,4 @@ matrix:
|
|||||||
cache: pip
|
cache: pip
|
||||||
install: pip install -U tox
|
install: pip install -U tox
|
||||||
language: python
|
language: python
|
||||||
script: travis_wait 40 tox --develop
|
script: travis_wait 50 tox --develop
|
||||||
|
28
CODEOWNERS
28
CODEOWNERS
@ -1,4 +1,4 @@
|
|||||||
# This file is generated by script/manifest/codeowners.py
|
# This file is generated by script/hassfest/codeowners.py
|
||||||
# People marked here will be automatically requested for a review
|
# People marked here will be automatically requested for a review
|
||||||
# when the code that they own is touched.
|
# when the code that they own is touched.
|
||||||
# https://github.com/blog/2392-introducing-code-owners
|
# https://github.com/blog/2392-introducing-code-owners
|
||||||
@ -16,6 +16,7 @@ homeassistant/scripts/check_config.py @kellerza
|
|||||||
homeassistant/components/adguard/* @frenck
|
homeassistant/components/adguard/* @frenck
|
||||||
homeassistant/components/airvisual/* @bachya
|
homeassistant/components/airvisual/* @bachya
|
||||||
homeassistant/components/alarm_control_panel/* @colinodell
|
homeassistant/components/alarm_control_panel/* @colinodell
|
||||||
|
homeassistant/components/alexa/* @home-assistant/cloud
|
||||||
homeassistant/components/alpha_vantage/* @fabaff
|
homeassistant/components/alpha_vantage/* @fabaff
|
||||||
homeassistant/components/amazon_polly/* @robbiet480
|
homeassistant/components/amazon_polly/* @robbiet480
|
||||||
homeassistant/components/ambiclimate/* @danielhiversen
|
homeassistant/components/ambiclimate/* @danielhiversen
|
||||||
@ -73,6 +74,7 @@ homeassistant/components/digital_ocean/* @fabaff
|
|||||||
homeassistant/components/discogs/* @thibmaek
|
homeassistant/components/discogs/* @thibmaek
|
||||||
homeassistant/components/doorbird/* @oblogic7
|
homeassistant/components/doorbird/* @oblogic7
|
||||||
homeassistant/components/dweet/* @fabaff
|
homeassistant/components/dweet/* @fabaff
|
||||||
|
homeassistant/components/ecobee/* @marthoc
|
||||||
homeassistant/components/ecovacs/* @OverloadUT
|
homeassistant/components/ecovacs/* @OverloadUT
|
||||||
homeassistant/components/egardia/* @jeroenterheerdt
|
homeassistant/components/egardia/* @jeroenterheerdt
|
||||||
homeassistant/components/eight_sleep/* @mezz64
|
homeassistant/components/eight_sleep/* @mezz64
|
||||||
@ -105,6 +107,7 @@ homeassistant/components/geonetnz_quakes/* @exxamalte
|
|||||||
homeassistant/components/gitter/* @fabaff
|
homeassistant/components/gitter/* @fabaff
|
||||||
homeassistant/components/glances/* @fabaff
|
homeassistant/components/glances/* @fabaff
|
||||||
homeassistant/components/gntp/* @robbiet480
|
homeassistant/components/gntp/* @robbiet480
|
||||||
|
homeassistant/components/google_assistant/* @home-assistant/cloud
|
||||||
homeassistant/components/google_cloud/* @lufton
|
homeassistant/components/google_cloud/* @lufton
|
||||||
homeassistant/components/google_translate/* @awarecan
|
homeassistant/components/google_translate/* @awarecan
|
||||||
homeassistant/components/google_travel_time/* @robbiet480
|
homeassistant/components/google_travel_time/* @robbiet480
|
||||||
@ -115,6 +118,7 @@ homeassistant/components/gtfs/* @robbiet480
|
|||||||
homeassistant/components/harmony/* @ehendrix23
|
homeassistant/components/harmony/* @ehendrix23
|
||||||
homeassistant/components/hassio/* @home-assistant/hass-io
|
homeassistant/components/hassio/* @home-assistant/hass-io
|
||||||
homeassistant/components/heos/* @andrewsayre
|
homeassistant/components/heos/* @andrewsayre
|
||||||
|
homeassistant/components/here_travel_time/* @eifinger
|
||||||
homeassistant/components/hikvision/* @mezz64
|
homeassistant/components/hikvision/* @mezz64
|
||||||
homeassistant/components/hikvisioncam/* @fbradyirl
|
homeassistant/components/hikvisioncam/* @fbradyirl
|
||||||
homeassistant/components/history/* @home-assistant/core
|
homeassistant/components/history/* @home-assistant/core
|
||||||
@ -144,7 +148,9 @@ homeassistant/components/ios/* @robbiet480
|
|||||||
homeassistant/components/ipma/* @dgomes
|
homeassistant/components/ipma/* @dgomes
|
||||||
homeassistant/components/iqvia/* @bachya
|
homeassistant/components/iqvia/* @bachya
|
||||||
homeassistant/components/irish_rail_transport/* @ttroy50
|
homeassistant/components/irish_rail_transport/* @ttroy50
|
||||||
|
homeassistant/components/izone/* @Swamp-Ig
|
||||||
homeassistant/components/jewish_calendar/* @tsvi
|
homeassistant/components/jewish_calendar/* @tsvi
|
||||||
|
homeassistant/components/kaiterra/* @Michsior14
|
||||||
homeassistant/components/keba/* @dannerph
|
homeassistant/components/keba/* @dannerph
|
||||||
homeassistant/components/knx/* @Julius2342
|
homeassistant/components/knx/* @Julius2342
|
||||||
homeassistant/components/kodi/* @armills
|
homeassistant/components/kodi/* @armills
|
||||||
@ -153,9 +159,6 @@ homeassistant/components/lametric/* @robbiet480
|
|||||||
homeassistant/components/launch_library/* @ludeeus
|
homeassistant/components/launch_library/* @ludeeus
|
||||||
homeassistant/components/lcn/* @alengwenus
|
homeassistant/components/lcn/* @alengwenus
|
||||||
homeassistant/components/life360/* @pnbruckner
|
homeassistant/components/life360/* @pnbruckner
|
||||||
homeassistant/components/lifx/* @amelchio
|
|
||||||
homeassistant/components/lifx_cloud/* @amelchio
|
|
||||||
homeassistant/components/lifx_legacy/* @amelchio
|
|
||||||
homeassistant/components/linky/* @Quentame
|
homeassistant/components/linky/* @Quentame
|
||||||
homeassistant/components/linux_battery/* @fabaff
|
homeassistant/components/linux_battery/* @fabaff
|
||||||
homeassistant/components/liveboxplaytv/* @pschmitt
|
homeassistant/components/liveboxplaytv/* @pschmitt
|
||||||
@ -181,12 +184,12 @@ homeassistant/components/monoprice/* @etsinko
|
|||||||
homeassistant/components/moon/* @fabaff
|
homeassistant/components/moon/* @fabaff
|
||||||
homeassistant/components/mpd/* @fabaff
|
homeassistant/components/mpd/* @fabaff
|
||||||
homeassistant/components/mqtt/* @home-assistant/core
|
homeassistant/components/mqtt/* @home-assistant/core
|
||||||
|
homeassistant/components/mysensors/* @MartinHjelmare
|
||||||
homeassistant/components/mystrom/* @fabaff
|
homeassistant/components/mystrom/* @fabaff
|
||||||
homeassistant/components/nello/* @pschmitt
|
homeassistant/components/nello/* @pschmitt
|
||||||
homeassistant/components/ness_alarm/* @nickw444
|
homeassistant/components/ness_alarm/* @nickw444
|
||||||
homeassistant/components/nest/* @awarecan
|
homeassistant/components/nest/* @awarecan
|
||||||
homeassistant/components/netdata/* @fabaff
|
homeassistant/components/netdata/* @fabaff
|
||||||
homeassistant/components/netgear_lte/* @amelchio
|
|
||||||
homeassistant/components/nextbus/* @vividboarder
|
homeassistant/components/nextbus/* @vividboarder
|
||||||
homeassistant/components/nissan_leaf/* @filcole
|
homeassistant/components/nissan_leaf/* @filcole
|
||||||
homeassistant/components/nmbs/* @thibmaek
|
homeassistant/components/nmbs/* @thibmaek
|
||||||
@ -197,8 +200,10 @@ homeassistant/components/nsw_fuel_station/* @nickw444
|
|||||||
homeassistant/components/nsw_rural_fire_service_feed/* @exxamalte
|
homeassistant/components/nsw_rural_fire_service_feed/* @exxamalte
|
||||||
homeassistant/components/nuki/* @pvizeli
|
homeassistant/components/nuki/* @pvizeli
|
||||||
homeassistant/components/nws/* @MatthewFlamm
|
homeassistant/components/nws/* @MatthewFlamm
|
||||||
|
homeassistant/components/nzbget/* @chriscla
|
||||||
homeassistant/components/obihai/* @dshokouhi
|
homeassistant/components/obihai/* @dshokouhi
|
||||||
homeassistant/components/ohmconnect/* @robbiet480
|
homeassistant/components/ohmconnect/* @robbiet480
|
||||||
|
homeassistant/components/ombi/* @larssont
|
||||||
homeassistant/components/onboarding/* @home-assistant/core
|
homeassistant/components/onboarding/* @home-assistant/core
|
||||||
homeassistant/components/opentherm_gw/* @mvn23
|
homeassistant/components/opentherm_gw/* @mvn23
|
||||||
homeassistant/components/openuv/* @bachya
|
homeassistant/components/openuv/* @bachya
|
||||||
@ -209,7 +214,7 @@ homeassistant/components/panel_custom/* @home-assistant/frontend
|
|||||||
homeassistant/components/panel_iframe/* @home-assistant/frontend
|
homeassistant/components/panel_iframe/* @home-assistant/frontend
|
||||||
homeassistant/components/persistent_notification/* @home-assistant/core
|
homeassistant/components/persistent_notification/* @home-assistant/core
|
||||||
homeassistant/components/philips_js/* @elupus
|
homeassistant/components/philips_js/* @elupus
|
||||||
homeassistant/components/pi_hole/* @fabaff
|
homeassistant/components/pi_hole/* @fabaff @johnluetke
|
||||||
homeassistant/components/plaato/* @JohNan
|
homeassistant/components/plaato/* @JohNan
|
||||||
homeassistant/components/plant/* @ChristianKuehnel
|
homeassistant/components/plant/* @ChristianKuehnel
|
||||||
homeassistant/components/plex/* @jjlawren
|
homeassistant/components/plex/* @jjlawren
|
||||||
@ -223,6 +228,7 @@ homeassistant/components/qld_bushfire/* @exxamalte
|
|||||||
homeassistant/components/qnap/* @colinodell
|
homeassistant/components/qnap/* @colinodell
|
||||||
homeassistant/components/quantum_gateway/* @cisasteelersfan
|
homeassistant/components/quantum_gateway/* @cisasteelersfan
|
||||||
homeassistant/components/qwikswitch/* @kellerza
|
homeassistant/components/qwikswitch/* @kellerza
|
||||||
|
homeassistant/components/rainbird/* @konikvranik
|
||||||
homeassistant/components/raincloud/* @vanstinator
|
homeassistant/components/raincloud/* @vanstinator
|
||||||
homeassistant/components/rainforest_eagle/* @gtdiehl
|
homeassistant/components/rainforest_eagle/* @gtdiehl
|
||||||
homeassistant/components/rainmachine/* @bachya
|
homeassistant/components/rainmachine/* @bachya
|
||||||
@ -231,6 +237,7 @@ homeassistant/components/repetier/* @MTrab
|
|||||||
homeassistant/components/rfxtrx/* @danielhiversen
|
homeassistant/components/rfxtrx/* @danielhiversen
|
||||||
homeassistant/components/rmvtransport/* @cgtobi
|
homeassistant/components/rmvtransport/* @cgtobi
|
||||||
homeassistant/components/roomba/* @pschmitt
|
homeassistant/components/roomba/* @pschmitt
|
||||||
|
homeassistant/components/saj/* @fredericvl
|
||||||
homeassistant/components/scene/* @home-assistant/core
|
homeassistant/components/scene/* @home-assistant/core
|
||||||
homeassistant/components/scrape/* @fabaff
|
homeassistant/components/scrape/* @fabaff
|
||||||
homeassistant/components/script/* @home-assistant/core
|
homeassistant/components/script/* @home-assistant/core
|
||||||
@ -248,11 +255,11 @@ homeassistant/components/smarthab/* @outadoc
|
|||||||
homeassistant/components/smartthings/* @andrewsayre
|
homeassistant/components/smartthings/* @andrewsayre
|
||||||
homeassistant/components/smarty/* @z0mbieprocess
|
homeassistant/components/smarty/* @z0mbieprocess
|
||||||
homeassistant/components/smtp/* @fabaff
|
homeassistant/components/smtp/* @fabaff
|
||||||
homeassistant/components/solaredge_local/* @drobtravels
|
homeassistant/components/solaredge_local/* @drobtravels @scheric
|
||||||
homeassistant/components/solax/* @squishykid
|
homeassistant/components/solax/* @squishykid
|
||||||
|
homeassistant/components/soma/* @ratsept
|
||||||
homeassistant/components/somfy/* @tetienne
|
homeassistant/components/somfy/* @tetienne
|
||||||
homeassistant/components/songpal/* @rytilahti
|
homeassistant/components/songpal/* @rytilahti
|
||||||
homeassistant/components/sonos/* @amelchio
|
|
||||||
homeassistant/components/spaceapi/* @fabaff
|
homeassistant/components/spaceapi/* @fabaff
|
||||||
homeassistant/components/spider/* @peternijssen
|
homeassistant/components/spider/* @peternijssen
|
||||||
homeassistant/components/sql/* @dgomes
|
homeassistant/components/sql/* @dgomes
|
||||||
@ -270,7 +277,6 @@ homeassistant/components/switchmate/* @danielhiversen
|
|||||||
homeassistant/components/syncthru/* @nielstron
|
homeassistant/components/syncthru/* @nielstron
|
||||||
homeassistant/components/synology_srm/* @aerialls
|
homeassistant/components/synology_srm/* @aerialls
|
||||||
homeassistant/components/syslog/* @fabaff
|
homeassistant/components/syslog/* @fabaff
|
||||||
homeassistant/components/sytadin/* @gautric
|
|
||||||
homeassistant/components/tahoma/* @philklei
|
homeassistant/components/tahoma/* @philklei
|
||||||
homeassistant/components/tautulli/* @ludeeus
|
homeassistant/components/tautulli/* @ludeeus
|
||||||
homeassistant/components/tellduslive/* @fredrike
|
homeassistant/components/tellduslive/* @fredrike
|
||||||
@ -282,11 +288,13 @@ homeassistant/components/threshold/* @fabaff
|
|||||||
homeassistant/components/tibber/* @danielhiversen
|
homeassistant/components/tibber/* @danielhiversen
|
||||||
homeassistant/components/tile/* @bachya
|
homeassistant/components/tile/* @bachya
|
||||||
homeassistant/components/time_date/* @fabaff
|
homeassistant/components/time_date/* @fabaff
|
||||||
|
homeassistant/components/todoist/* @boralyl
|
||||||
homeassistant/components/toon/* @frenck
|
homeassistant/components/toon/* @frenck
|
||||||
homeassistant/components/tplink/* @rytilahti
|
homeassistant/components/tplink/* @rytilahti
|
||||||
homeassistant/components/traccar/* @ludeeus
|
homeassistant/components/traccar/* @ludeeus
|
||||||
homeassistant/components/tradfri/* @ggravlingen
|
homeassistant/components/tradfri/* @ggravlingen
|
||||||
homeassistant/components/trafikverket_train/* @endor-force
|
homeassistant/components/trafikverket_train/* @endor-force
|
||||||
|
homeassistant/components/transmission/* @engrbm87
|
||||||
homeassistant/components/tts/* @robbiet480
|
homeassistant/components/tts/* @robbiet480
|
||||||
homeassistant/components/twentemilieu/* @frenck
|
homeassistant/components/twentemilieu/* @frenck
|
||||||
homeassistant/components/twilio_call/* @robbiet480
|
homeassistant/components/twilio_call/* @robbiet480
|
||||||
@ -315,12 +323,14 @@ homeassistant/components/wemo/* @sqldiablo
|
|||||||
homeassistant/components/withings/* @vangorra
|
homeassistant/components/withings/* @vangorra
|
||||||
homeassistant/components/worldclock/* @fabaff
|
homeassistant/components/worldclock/* @fabaff
|
||||||
homeassistant/components/wwlln/* @bachya
|
homeassistant/components/wwlln/* @bachya
|
||||||
|
homeassistant/components/xbox_live/* @MartinHjelmare
|
||||||
homeassistant/components/xfinity/* @cisasteelersfan
|
homeassistant/components/xfinity/* @cisasteelersfan
|
||||||
homeassistant/components/xiaomi_aqara/* @danielhiversen @syssi
|
homeassistant/components/xiaomi_aqara/* @danielhiversen @syssi
|
||||||
homeassistant/components/xiaomi_miio/* @rytilahti @syssi
|
homeassistant/components/xiaomi_miio/* @rytilahti @syssi
|
||||||
homeassistant/components/xiaomi_tv/* @simse
|
homeassistant/components/xiaomi_tv/* @simse
|
||||||
homeassistant/components/xmpp/* @fabaff @flowolf
|
homeassistant/components/xmpp/* @fabaff @flowolf
|
||||||
homeassistant/components/yamaha_musiccast/* @jalmeroth
|
homeassistant/components/yamaha_musiccast/* @jalmeroth
|
||||||
|
homeassistant/components/yandex_transport/* @rishatik92
|
||||||
homeassistant/components/yeelight/* @rytilahti @zewelor
|
homeassistant/components/yeelight/* @rytilahti @zewelor
|
||||||
homeassistant/components/yeelightsunflower/* @lindsaymarkward
|
homeassistant/components/yeelightsunflower/* @lindsaymarkward
|
||||||
homeassistant/components/yessssms/* @flowolf
|
homeassistant/components/yessssms/* @flowolf
|
||||||
|
@ -32,4 +32,4 @@ of a component, check the `Home Assistant help section <https://home-assistant.i
|
|||||||
.. |screenshot-states| image:: https://raw.github.com/home-assistant/home-assistant/master/docs/screenshots.png
|
.. |screenshot-states| image:: https://raw.github.com/home-assistant/home-assistant/master/docs/screenshots.png
|
||||||
:target: https://home-assistant.io/demo/
|
:target: https://home-assistant.io/demo/
|
||||||
.. |screenshot-components| image:: https://raw.github.com/home-assistant/home-assistant/dev/docs/screenshot-components.png
|
.. |screenshot-components| image:: https://raw.github.com/home-assistant/home-assistant/dev/docs/screenshot-components.png
|
||||||
:target: https://home-assistant.io/components/
|
:target: https://home-assistant.io/integrations/
|
||||||
|
@ -112,6 +112,8 @@ stages:
|
|||||||
# Find offending deps with `pipdeptree -r -p typing`
|
# Find offending deps with `pipdeptree -r -p typing`
|
||||||
pip uninstall -y typing
|
pip uninstall -y typing
|
||||||
- script: |
|
- script: |
|
||||||
|
set -e
|
||||||
|
|
||||||
. venv/bin/activate
|
. venv/bin/activate
|
||||||
pytest --timeout=9 --durations=10 -qq -o console_output_style=count -p no:sugar tests
|
pytest --timeout=9 --durations=10 -qq -o console_output_style=count -p no:sugar tests
|
||||||
script/check_dirty
|
script/check_dirty
|
||||||
|
@ -233,3 +233,45 @@ stages:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
displayName: 'Create Meta-Image'
|
displayName: 'Create Meta-Image'
|
||||||
|
|
||||||
|
- stage: 'Addidional'
|
||||||
|
jobs:
|
||||||
|
- job: 'Updater'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-latest'
|
||||||
|
variables:
|
||||||
|
- group: gcloud
|
||||||
|
steps:
|
||||||
|
- template: templates/azp-step-ha-version.yaml@azure
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
|
||||||
|
export CLOUDSDK_CORE_DISABLE_PROMPTS=1
|
||||||
|
|
||||||
|
curl -o google-cloud-sdk.tar.gz https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz
|
||||||
|
tar -C . -xvf google-cloud-sdk.tar.gz
|
||||||
|
rm -f google-cloud-sdk.tar.gz
|
||||||
|
./google-cloud-sdk/install.sh
|
||||||
|
displayName: 'Setup gCloud'
|
||||||
|
condition: eq(variables['homeassistantReleaseStable'], 'true')
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
|
||||||
|
export CLOUDSDK_CORE_DISABLE_PROMPTS=1
|
||||||
|
|
||||||
|
echo "$(gcloudAnalytic)" > gcloud_auth.json
|
||||||
|
./google-cloud-sdk/bin/gcloud auth activate-service-account --key-file gcloud_auth.json
|
||||||
|
rm -f gcloud_auth.json
|
||||||
|
displayName: 'Auth gCloud'
|
||||||
|
condition: eq(variables['homeassistantReleaseStable'], 'true')
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
|
||||||
|
export CLOUDSDK_CORE_DISABLE_PROMPTS=1
|
||||||
|
|
||||||
|
./google-cloud-sdk/bin/gcloud functions deploy Analytics-Receiver \
|
||||||
|
--project home-assistant-analytics \
|
||||||
|
--update-env-vars VERSION=$(homeassistantRelease) \
|
||||||
|
--source gs://analytics-src/function-source.zip
|
||||||
|
displayName: 'Push details to updater'
|
||||||
|
condition: eq(variables['homeassistantReleaseStable'], 'true')
|
||||||
|
@ -45,7 +45,6 @@ jobs:
|
|||||||
|
|
||||||
requirement_files="requirements_wheels.txt requirements_diff.txt"
|
requirement_files="requirements_wheels.txt requirements_diff.txt"
|
||||||
for requirement_file in ${requirement_files}; do
|
for requirement_file in ${requirement_files}; do
|
||||||
sed -i "s|# pytradfri|pytradfri|g" ${requirement_file}
|
|
||||||
sed -i "s|# pybluez|pybluez|g" ${requirement_file}
|
sed -i "s|# pybluez|pybluez|g" ${requirement_file}
|
||||||
sed -i "s|# bluepy|bluepy|g" ${requirement_file}
|
sed -i "s|# bluepy|bluepy|g" ${requirement_file}
|
||||||
sed -i "s|# beacontools|beacontools|g" ${requirement_file}
|
sed -i "s|# beacontools|beacontools|g" ${requirement_file}
|
||||||
@ -63,9 +62,15 @@ jobs:
|
|||||||
sed -i "s|# homekit|homekit|g" ${requirement_file}
|
sed -i "s|# homekit|homekit|g" ${requirement_file}
|
||||||
sed -i "s|# decora_wifi|decora_wifi|g" ${requirement_file}
|
sed -i "s|# decora_wifi|decora_wifi|g" ${requirement_file}
|
||||||
sed -i "s|# decora|decora|g" ${requirement_file}
|
sed -i "s|# decora|decora|g" ${requirement_file}
|
||||||
|
sed -i "s|# avion|avion|g" ${requirement_file}
|
||||||
sed -i "s|# PySwitchbot|PySwitchbot|g" ${requirement_file}
|
sed -i "s|# PySwitchbot|PySwitchbot|g" ${requirement_file}
|
||||||
sed -i "s|# pySwitchmate|pySwitchmate|g" ${requirement_file}
|
sed -i "s|# pySwitchmate|pySwitchmate|g" ${requirement_file}
|
||||||
sed -i "s|# face_recognition|face_recognition|g" ${requirement_file}
|
sed -i "s|# face_recognition|face_recognition|g" ${requirement_file}
|
||||||
sed -i "s|# py_noaa|py_noaa|g" ${requirement_file}
|
sed -i "s|# py_noaa|py_noaa|g" ${requirement_file}
|
||||||
|
sed -i "s|# bme680|bme680|g" ${requirement_file}
|
||||||
|
|
||||||
|
if [[ "$(buildArch)" =~ arm ]]; then
|
||||||
|
sed -i "s|# VL53L1X|VL53L1X|g" ${requirement_file}
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
displayName: 'Prepare requirements files for Hass.io'
|
displayName: 'Prepare requirements files for Hass.io'
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
"""Start Home Assistant."""
|
"""Start Home Assistant."""
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
|
@ -22,7 +22,7 @@ from . import (
|
|||||||
SetupFlow,
|
SetupFlow,
|
||||||
)
|
)
|
||||||
|
|
||||||
REQUIREMENTS = ["pyotp==2.2.7"]
|
REQUIREMENTS = ["pyotp==2.3.0"]
|
||||||
|
|
||||||
CONF_MESSAGE = "message"
|
CONF_MESSAGE = "message"
|
||||||
|
|
||||||
@ -251,8 +251,10 @@ class NotifyAuthModule(MultiFactorAuthModule):
|
|||||||
_LOGGER.error("Cannot find user %s", user_id)
|
_LOGGER.error("Cannot find user %s", user_id)
|
||||||
return
|
return
|
||||||
|
|
||||||
await self.async_notify( # type: ignore
|
await self.async_notify(
|
||||||
code, notify_setting.notify_service, notify_setting.target
|
code,
|
||||||
|
notify_setting.notify_service, # type: ignore
|
||||||
|
notify_setting.target,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def async_notify(
|
async def async_notify(
|
||||||
|
@ -16,7 +16,7 @@ from . import (
|
|||||||
SetupFlow,
|
SetupFlow,
|
||||||
)
|
)
|
||||||
|
|
||||||
REQUIREMENTS = ["pyotp==2.2.7", "PyQRCode==1.2.1"]
|
REQUIREMENTS = ["pyotp==2.3.0", "PyQRCode==1.2.1"]
|
||||||
|
|
||||||
CONFIG_SCHEMA = MULTI_FACTOR_AUTH_MODULE_SCHEMA.extend({}, extra=vol.PREVENT_EXTRA)
|
CONFIG_SCHEMA = MULTI_FACTOR_AUTH_MODULE_SCHEMA.extend({}, extra=vol.PREVENT_EXTRA)
|
||||||
|
|
||||||
@ -215,8 +215,9 @@ class TotpSetupFlow(SetupFlow):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
hass = self._auth_module.hass
|
hass = self._auth_module.hass
|
||||||
self._ota_secret, self._url, self._image = await hass.async_add_executor_job( # type: ignore
|
self._ota_secret, self._url, self._image = await hass.async_add_executor_job(
|
||||||
_generate_secret_and_qr_code, str(self._user.name)
|
_generate_secret_and_qr_code, # type: ignore
|
||||||
|
str(self._user.name),
|
||||||
)
|
)
|
||||||
|
|
||||||
return self.async_show_form(
|
return self.async_show_form(
|
||||||
|
22
homeassistant/components/.translations/airly.ca.json
Normal file
22
homeassistant/components/.translations/airly.ca.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "La clau API no \u00e9s correcta.",
|
||||||
|
"name_exists": "El nom ja existeix.",
|
||||||
|
"wrong_location": "No hi ha estacions de mesura Airly en aquesta zona."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Clau API d'Airly",
|
||||||
|
"latitude": "Latitud",
|
||||||
|
"longitude": "Longitud",
|
||||||
|
"name": "Nom de la integraci\u00f3"
|
||||||
|
},
|
||||||
|
"description": "Configura una integraci\u00f3 de qualitat d\u2019aire Airly. Per generar la clau API, v\u00e9s a https://developer.airly.eu/register",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.da.json
Normal file
22
homeassistant/components/.translations/airly.da.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "API-n\u00f8glen er ikke korrekt.",
|
||||||
|
"name_exists": "Navnet findes allerede.",
|
||||||
|
"wrong_location": "Ingen Airly m\u00e5lestationer i dette omr\u00e5de."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Airly API-n\u00f8gle",
|
||||||
|
"latitude": "Breddegrad",
|
||||||
|
"longitude": "L\u00e6ngdegrad",
|
||||||
|
"name": "Integrationens navn"
|
||||||
|
},
|
||||||
|
"description": "Konfigurer Airly luftkvalitet integration. For at generere API-n\u00f8gle, g\u00e5 til https://developer.airly.eu/register",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
18
homeassistant/components/.translations/airly.de.json
Normal file
18
homeassistant/components/.translations/airly.de.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"name_exists": "Name existiert bereits"
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"latitude": "Breitengrad",
|
||||||
|
"longitude": "L\u00e4ngengrad",
|
||||||
|
"name": "Name der Integration"
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.en.json
Normal file
22
homeassistant/components/.translations/airly.en.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "API key is not correct.",
|
||||||
|
"name_exists": "Name already exists.",
|
||||||
|
"wrong_location": "No Airly measuring stations in this area."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Airly API key",
|
||||||
|
"latitude": "Latitude",
|
||||||
|
"longitude": "Longitude",
|
||||||
|
"name": "Name of the integration"
|
||||||
|
},
|
||||||
|
"description": "Set up Airly air quality integration. To generate API key go to https://developer.airly.eu/register",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.es.json
Normal file
22
homeassistant/components/.translations/airly.es.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "La clave de la API no es correcta.",
|
||||||
|
"name_exists": "El nombre ya existe.",
|
||||||
|
"wrong_location": "No hay estaciones de medici\u00f3n Airly en esta zona."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Clave API de Airly",
|
||||||
|
"latitude": "Latitud",
|
||||||
|
"longitude": "Longitud",
|
||||||
|
"name": "Nombre de la integraci\u00f3n"
|
||||||
|
},
|
||||||
|
"description": "Establecer la integraci\u00f3n de la calidad del aire de Airly. Para generar la clave de la API vaya a https://developer.airly.eu/register",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
21
homeassistant/components/.translations/airly.fr.json
Normal file
21
homeassistant/components/.translations/airly.fr.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "La cl\u00e9 API n'est pas correcte.",
|
||||||
|
"name_exists": "Le nom existe d\u00e9j\u00e0.",
|
||||||
|
"wrong_location": "Aucune station de mesure Airly dans cette zone."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Cl\u00e9 API Airly",
|
||||||
|
"latitude": "Latitude",
|
||||||
|
"longitude": "Longitude",
|
||||||
|
"name": "Nom de l'int\u00e9gration"
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.it.json
Normal file
22
homeassistant/components/.translations/airly.it.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "La chiave API non \u00e8 corretta.",
|
||||||
|
"name_exists": "Il nome \u00e8 gi\u00e0 esistente",
|
||||||
|
"wrong_location": "Nessuna stazione di misurazione Airly in quest'area."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Chiave API Airly",
|
||||||
|
"latitude": "Latitudine",
|
||||||
|
"longitude": "Logitudine",
|
||||||
|
"name": "Nome dell'integrazione"
|
||||||
|
},
|
||||||
|
"description": "Configurazione dell'integrazione della qualit\u00e0 dell'aria Airly. Per generare la chiave API andare su https://developer.airly.eu/register",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.lb.json
Normal file
22
homeassistant/components/.translations/airly.lb.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "Api Schl\u00ebssel ass net korrekt.",
|
||||||
|
"name_exists": "Numm g\u00ebtt et schonn",
|
||||||
|
"wrong_location": "Keng Airly Moos Statioun an d\u00ebsem Ber\u00e4ich"
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Airly API Schl\u00ebssel",
|
||||||
|
"latitude": "Breedegrad",
|
||||||
|
"longitude": "L\u00e4ngegrad",
|
||||||
|
"name": "Numm vun der Installatioun"
|
||||||
|
},
|
||||||
|
"description": "Airly Loft Qualit\u00e9it Integratioun ariichten. Fir een API Schl\u00ebssel z'erstelle gitt op https://developer.airly.eu/register",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
10
homeassistant/components/.translations/airly.nn.json
Normal file
10
homeassistant/components/.translations/airly.nn.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.no.json
Normal file
22
homeassistant/components/.translations/airly.no.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "API-n\u00f8kkelen er ikke korrekt.",
|
||||||
|
"name_exists": "Navnet finnes allerede.",
|
||||||
|
"wrong_location": "Ingen Airly m\u00e5lestasjoner i dette omr\u00e5det."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Airly API-n\u00f8kkel",
|
||||||
|
"latitude": "Breddegrad",
|
||||||
|
"longitude": "Lengdegrad",
|
||||||
|
"name": "Navn p\u00e5 integrasjonen"
|
||||||
|
},
|
||||||
|
"description": "Sett opp Airly luftkvalitet integrering. For \u00e5 generere API-n\u00f8kkel g\u00e5 til https://developer.airly.eu/register",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.pl.json
Normal file
22
homeassistant/components/.translations/airly.pl.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "Klucz API jest nieprawid\u0142owy.",
|
||||||
|
"name_exists": "Nazwa ju\u017c istnieje.",
|
||||||
|
"wrong_location": "Brak stacji pomiarowych Airly w tym rejonie."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Klucz API Airly",
|
||||||
|
"latitude": "Szeroko\u015b\u0107 geograficzna",
|
||||||
|
"longitude": "D\u0142ugo\u015b\u0107 geograficzna",
|
||||||
|
"name": "Nazwa integracji"
|
||||||
|
},
|
||||||
|
"description": "Konfiguracja integracji Airly. By wygenerowa\u0107 klucz API, przejd\u017a na stron\u0119 https://developer.airly.eu/register",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.ru.json
Normal file
22
homeassistant/components/.translations/airly.ru.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API.",
|
||||||
|
"name_exists": "\u042d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.",
|
||||||
|
"wrong_location": "\u0412 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0435\u0442 \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u0439 Airly."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "\u041a\u043b\u044e\u0447 API",
|
||||||
|
"latitude": "\u0428\u0438\u0440\u043e\u0442\u0430",
|
||||||
|
"longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430",
|
||||||
|
"name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435"
|
||||||
|
},
|
||||||
|
"description": "\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u0434\u0443\u0445\u0430 Airly. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 https://developer.airly.eu/register.",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.sl.json
Normal file
22
homeassistant/components/.translations/airly.sl.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "Klju\u010d API ni pravilen.",
|
||||||
|
"name_exists": "Ime \u017ee obstaja",
|
||||||
|
"wrong_location": "Na tem obmo\u010dju ni merilnih postaj Airly."
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Airly API klju\u010d",
|
||||||
|
"latitude": "Zemljepisna \u0161irina",
|
||||||
|
"longitude": "Zemljepisna dol\u017eina",
|
||||||
|
"name": "Ime integracije"
|
||||||
|
},
|
||||||
|
"description": "Nastavite Airly integracijo za kakovost zraka. \u010ce \u017eelite ustvariti API klju\u010d pojdite na https://developer.airly.eu/register",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
22
homeassistant/components/.translations/airly.zh-Hant.json
Normal file
22
homeassistant/components/.translations/airly.zh-Hant.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"error": {
|
||||||
|
"auth": "API \u5bc6\u9470\u4e0d\u6b63\u78ba\u3002",
|
||||||
|
"name_exists": "\u8a72\u540d\u7a31\u5df2\u5b58\u5728",
|
||||||
|
"wrong_location": "\u8a72\u5340\u57df\u6c92\u6709 Arily \u76e3\u6e2c\u7ad9\u3002"
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"api_key": "Airly API \u5bc6\u9470",
|
||||||
|
"latitude": "\u7def\u5ea6",
|
||||||
|
"longitude": "\u7d93\u5ea6",
|
||||||
|
"name": "\u6574\u5408\u540d\u7a31"
|
||||||
|
},
|
||||||
|
"description": "\u6b32\u8a2d\u5b9a Airly \u7a7a\u6c23\u54c1\u8cea\u6574\u5408\u3002\u8acb\u81f3 https://developer.airly.eu/register \u7522\u751f API \u5bc6\u9470",
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Airly"
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "abode",
|
"domain": "abode",
|
||||||
"name": "Abode",
|
"name": "Abode",
|
||||||
"documentation": "https://www.home-assistant.io/components/abode",
|
"documentation": "https://www.home-assistant.io/integrations/abode",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"abodepy==0.15.0"
|
"abodepy==0.15.0"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "acer_projector",
|
"domain": "acer_projector",
|
||||||
"name": "Acer projector",
|
"name": "Acer projector",
|
||||||
"documentation": "https://www.home-assistant.io/components/acer_projector",
|
"documentation": "https://www.home-assistant.io/integrations/acer_projector",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pyserial==3.1.1"
|
"pyserial==3.1.1"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "actiontec",
|
"domain": "actiontec",
|
||||||
"name": "Actiontec",
|
"name": "Actiontec",
|
||||||
"documentation": "https://www.home-assistant.io/components/actiontec",
|
"documentation": "https://www.home-assistant.io/integrations/actiontec",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": []
|
"codeowners": []
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
},
|
},
|
||||||
"step": {
|
"step": {
|
||||||
"hassio_confirm": {
|
"hassio_confirm": {
|
||||||
"description": "Vil du konfigurere Home Assistant til at oprette forbindelse til Adguard Home, der leveres af Hass.io add-on: {addon}?",
|
"description": "Vil du konfigurere Home Assistant til at oprette forbindelse til AdGuard Home, der leveres af Hass.io add-on: {addon}?",
|
||||||
"title": "AdGuard Home via Hass.io add-on"
|
"title": "AdGuard Home via Hass.io add-on"
|
||||||
},
|
},
|
||||||
"user": {
|
"user": {
|
||||||
|
13
homeassistant/components/adguard/.translations/hu.json
Normal file
13
homeassistant/components/adguard/.translations/hu.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"password": "Jelsz\u00f3",
|
||||||
|
"port": "Port",
|
||||||
|
"username": "Felhaszn\u00e1l\u00f3n\u00e9v"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
homeassistant/components/adguard/.translations/nn.json
Normal file
11
homeassistant/components/adguard/.translations/nn.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"step": {
|
||||||
|
"user": {
|
||||||
|
"data": {
|
||||||
|
"username": "Brukarnamn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
"config": {
|
"config": {
|
||||||
"abort": {
|
"abort": {
|
||||||
"existing_instance_updated": "Oppdatert eksisterende konfigurasjon.",
|
"existing_instance_updated": "Oppdatert eksisterende konfigurasjon.",
|
||||||
"single_instance_allowed": "Kun \u00e9n enkelt konfigurasjon av AdGuard Hjemer tillatt."
|
"single_instance_allowed": "Kun en konfigurasjon av AdGuard Hjemer tillatt."
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"connection_error": "Tilkobling mislyktes."
|
"connection_error": "Tilkobling mislyktes."
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"verify_ssl": "AdGuard Home u\u017cywa odpowiedniego certyfikatu."
|
"verify_ssl": "AdGuard Home u\u017cywa odpowiedniego certyfikatu."
|
||||||
},
|
},
|
||||||
"description": "Skonfiguruj instancj\u0119 AdGuard Home, aby umo\u017cliwi\u0107 monitorowanie i kontrol\u0119.",
|
"description": "Skonfiguruj instancj\u0119 AdGuard Home, aby umo\u017cliwi\u0107 monitorowanie i kontrol\u0119.",
|
||||||
"title": "Po\u0142\u0105cz sw\u00f3j AdGuard Home"
|
"title": "Po\u0142\u0105cz AdGuard Home"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": "AdGuard Home"
|
"title": "AdGuard Home"
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
},
|
},
|
||||||
"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} ?",
|
||||||
"title": "AdGuard Home preko dodatka Hass.io"
|
"title": "AdGuard Home preko dodatka Hass.io"
|
||||||
},
|
},
|
||||||
"user": {
|
"user": {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"domain": "adguard",
|
"domain": "adguard",
|
||||||
"name": "AdGuard Home",
|
"name": "AdGuard Home",
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/components/adguard",
|
"documentation": "https://www.home-assistant.io/integrations/adguard",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"adguardhome==0.2.1"
|
"adguardhome==0.2.1"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "ads",
|
"domain": "ads",
|
||||||
"name": "Ads",
|
"name": "Ads",
|
||||||
"documentation": "https://www.home-assistant.io/components/ads",
|
"documentation": "https://www.home-assistant.io/integrations/ads",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pyads==3.0.7"
|
"pyads==3.0.7"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "aftership",
|
"domain": "aftership",
|
||||||
"name": "Aftership",
|
"name": "Aftership",
|
||||||
"documentation": "https://www.home-assistant.io/components/aftership",
|
"documentation": "https://www.home-assistant.io/integrations/aftership",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pyaftership==0.1.2"
|
"pyaftership==0.1.2"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "air_quality",
|
"domain": "air_quality",
|
||||||
"name": "Air quality",
|
"name": "Air quality",
|
||||||
"documentation": "https://www.home-assistant.io/components/air_quality",
|
"documentation": "https://www.home-assistant.io/integrations/air_quality",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": []
|
"codeowners": []
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "airvisual",
|
"domain": "airvisual",
|
||||||
"name": "Airvisual",
|
"name": "Airvisual",
|
||||||
"documentation": "https://www.home-assistant.io/components/airvisual",
|
"documentation": "https://www.home-assistant.io/integrations/airvisual",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pyairvisual==3.0.1"
|
"pyairvisual==3.0.1"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "aladdin_connect",
|
"domain": "aladdin_connect",
|
||||||
"name": "Aladdin connect",
|
"name": "Aladdin connect",
|
||||||
"documentation": "https://www.home-assistant.io/components/aladdin_connect",
|
"documentation": "https://www.home-assistant.io/integrations/aladdin_connect",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"aladdin_connect==0.3"
|
"aladdin_connect==0.3"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "alarm_control_panel",
|
"domain": "alarm_control_panel",
|
||||||
"name": "Alarm control panel",
|
"name": "Alarm control panel",
|
||||||
"documentation": "https://www.home-assistant.io/components/alarm_control_panel",
|
"documentation": "https://www.home-assistant.io/integrations/alarm_control_panel",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": [
|
"codeowners": [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "alarmdecoder",
|
"domain": "alarmdecoder",
|
||||||
"name": "Alarmdecoder",
|
"name": "Alarmdecoder",
|
||||||
"documentation": "https://www.home-assistant.io/components/alarmdecoder",
|
"documentation": "https://www.home-assistant.io/integrations/alarmdecoder",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"alarmdecoder==1.13.2"
|
"alarmdecoder==1.13.2"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "alarmdotcom",
|
"domain": "alarmdotcom",
|
||||||
"name": "Alarmdotcom",
|
"name": "Alarmdotcom",
|
||||||
"documentation": "https://www.home-assistant.io/components/alarmdotcom",
|
"documentation": "https://www.home-assistant.io/integrations/alarmdotcom",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pyalarmdotcom==0.3.2"
|
"pyalarmdotcom==0.3.2"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "alert",
|
"domain": "alert",
|
||||||
"name": "Alert",
|
"name": "Alert",
|
||||||
"documentation": "https://www.home-assistant.io/components/alert",
|
"documentation": "https://www.home-assistant.io/integrations/alert",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"after_dependencies": [
|
"after_dependencies": [
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
"""Alexa capabilities."""
|
"""Alexa capabilities."""
|
||||||
from datetime import datetime
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
@ -16,6 +15,7 @@ from homeassistant.const import (
|
|||||||
import homeassistant.components.climate.const as climate
|
import homeassistant.components.climate.const as climate
|
||||||
from homeassistant.components import light, fan, cover
|
from homeassistant.components import light, fan, cover
|
||||||
import homeassistant.util.color as color_util
|
import homeassistant.util.color as color_util
|
||||||
|
import homeassistant.util.dt as dt_util
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
API_TEMP_UNITS,
|
API_TEMP_UNITS,
|
||||||
@ -109,7 +109,7 @@ class AlexaCapibility:
|
|||||||
"name": prop_name,
|
"name": prop_name,
|
||||||
"namespace": self.name(),
|
"namespace": self.name(),
|
||||||
"value": prop_value,
|
"value": prop_value,
|
||||||
"timeOfSample": datetime.now().strftime(DATE_FORMAT),
|
"timeOfSample": dt_util.utcnow().strftime(DATE_FORMAT),
|
||||||
"uncertaintyInMilliseconds": 0,
|
"uncertaintyInMilliseconds": 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,7 +326,7 @@ class AlexaColorTemperatureController(AlexaCapibility):
|
|||||||
return color_util.color_temperature_mired_to_kelvin(
|
return color_util.color_temperature_mired_to_kelvin(
|
||||||
self.entity.attributes["color_temp"]
|
self.entity.attributes["color_temp"]
|
||||||
)
|
)
|
||||||
return 0
|
return None
|
||||||
|
|
||||||
|
|
||||||
class AlexaPercentageController(AlexaCapibility):
|
class AlexaPercentageController(AlexaCapibility):
|
||||||
@ -445,7 +445,7 @@ class AlexaTemperatureSensor(AlexaCapibility):
|
|||||||
unit = self.hass.config.units.temperature_unit
|
unit = self.hass.config.units.temperature_unit
|
||||||
temp = self.entity.attributes.get(climate.ATTR_CURRENT_TEMPERATURE)
|
temp = self.entity.attributes.get(climate.ATTR_CURRENT_TEMPERATURE)
|
||||||
|
|
||||||
if temp in (STATE_UNAVAILABLE, STATE_UNKNOWN):
|
if temp in (STATE_UNAVAILABLE, STATE_UNKNOWN, None):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -572,6 +572,9 @@ class AlexaThermostatController(AlexaCapibility):
|
|||||||
|
|
||||||
def get_property(self, name):
|
def get_property(self, name):
|
||||||
"""Read and return a property."""
|
"""Read and return a property."""
|
||||||
|
if self.entity.state == STATE_UNAVAILABLE:
|
||||||
|
return None
|
||||||
|
|
||||||
if name == "thermostatMode":
|
if name == "thermostatMode":
|
||||||
preset = self.entity.attributes.get(climate.ATTR_PRESET_MODE)
|
preset = self.entity.attributes.get(climate.ATTR_PRESET_MODE)
|
||||||
|
|
||||||
|
@ -52,6 +52,8 @@ from .capabilities import (
|
|||||||
|
|
||||||
ENTITY_ADAPTERS = Registry()
|
ENTITY_ADAPTERS = Registry()
|
||||||
|
|
||||||
|
TRANSLATION_TABLE = dict.fromkeys(map(ord, r"}{\/|\"()[]+~!><*%"), None)
|
||||||
|
|
||||||
|
|
||||||
class DisplayCategory:
|
class DisplayCategory:
|
||||||
"""Possible display categories for Discovery response.
|
"""Possible display categories for Discovery response.
|
||||||
@ -74,9 +76,18 @@ class DisplayCategory:
|
|||||||
# Indicates a door.
|
# Indicates a door.
|
||||||
DOOR = "DOOR"
|
DOOR = "DOOR"
|
||||||
|
|
||||||
|
# Indicates a doorbell.
|
||||||
|
DOOR_BELL = "DOORBELL"
|
||||||
|
|
||||||
|
# Indicates a fan.
|
||||||
|
FAN = "FAN"
|
||||||
|
|
||||||
# Indicates light sources or fixtures.
|
# Indicates light sources or fixtures.
|
||||||
LIGHT = "LIGHT"
|
LIGHT = "LIGHT"
|
||||||
|
|
||||||
|
# Indicates a microwave oven.
|
||||||
|
MICROWAVE = "MICROWAVE"
|
||||||
|
|
||||||
# Indicates an endpoint that detects and reports motion.
|
# Indicates an endpoint that detects and reports motion.
|
||||||
MOTION_SENSOR = "MOTION_SENSOR"
|
MOTION_SENSOR = "MOTION_SENSOR"
|
||||||
|
|
||||||
@ -89,6 +100,9 @@ class DisplayCategory:
|
|||||||
# order is unimportant. Applies to Scenes
|
# order is unimportant. Applies to Scenes
|
||||||
SCENE_TRIGGER = "SCENE_TRIGGER"
|
SCENE_TRIGGER = "SCENE_TRIGGER"
|
||||||
|
|
||||||
|
# Indicates a security panel.
|
||||||
|
SECURITY_PANEL = "SECURITY_PANEL"
|
||||||
|
|
||||||
# Indicates an endpoint that locks.
|
# Indicates an endpoint that locks.
|
||||||
SMARTLOCK = "SMARTLOCK"
|
SMARTLOCK = "SMARTLOCK"
|
||||||
|
|
||||||
@ -134,15 +148,18 @@ class AlexaEntity:
|
|||||||
|
|
||||||
def friendly_name(self):
|
def friendly_name(self):
|
||||||
"""Return the Alexa API friendly name."""
|
"""Return the Alexa API friendly name."""
|
||||||
return self.entity_conf.get(CONF_NAME, self.entity.name)
|
return self.entity_conf.get(CONF_NAME, self.entity.name).translate(
|
||||||
|
TRANSLATION_TABLE
|
||||||
|
)
|
||||||
|
|
||||||
def description(self):
|
def description(self):
|
||||||
"""Return the Alexa API description."""
|
"""Return the Alexa API description."""
|
||||||
return self.entity_conf.get(CONF_DESCRIPTION, self.entity.entity_id)
|
description = self.entity_conf.get(CONF_DESCRIPTION) or self.entity_id
|
||||||
|
return f"{description} via Home Assistant".translate(TRANSLATION_TABLE)
|
||||||
|
|
||||||
def alexa_id(self):
|
def alexa_id(self):
|
||||||
"""Return the Alexa API entity id."""
|
"""Return the Alexa API entity id."""
|
||||||
return self.entity.entity_id.replace(".", "#")
|
return self.entity.entity_id.replace(".", "#").translate(TRANSLATION_TABLE)
|
||||||
|
|
||||||
def display_categories(self):
|
def display_categories(self):
|
||||||
"""Return a list of display categories."""
|
"""Return a list of display categories."""
|
||||||
@ -319,7 +336,7 @@ class FanCapabilities(AlexaEntity):
|
|||||||
|
|
||||||
def default_display_categories(self):
|
def default_display_categories(self):
|
||||||
"""Return the display categories for this entity."""
|
"""Return the display categories for this entity."""
|
||||||
return [DisplayCategory.OTHER]
|
return [DisplayCategory.FAN]
|
||||||
|
|
||||||
def interfaces(self):
|
def interfaces(self):
|
||||||
"""Yield the supported interfaces."""
|
"""Yield the supported interfaces."""
|
||||||
@ -389,10 +406,11 @@ class SceneCapabilities(AlexaEntity):
|
|||||||
"""Class to represent Scene capabilities."""
|
"""Class to represent Scene capabilities."""
|
||||||
|
|
||||||
def description(self):
|
def description(self):
|
||||||
"""Return the description of the entity."""
|
"""Return the Alexa API description."""
|
||||||
# Required description as per Amazon Scene docs
|
description = AlexaEntity.description(self)
|
||||||
scene_fmt = "{} (Scene connected via Home Assistant)"
|
if "scene" not in description.casefold():
|
||||||
return scene_fmt.format(AlexaEntity.description(self))
|
return f"{description} (Scene)"
|
||||||
|
return description
|
||||||
|
|
||||||
def default_display_categories(self):
|
def default_display_categories(self):
|
||||||
"""Return the display categories for this entity."""
|
"""Return the display categories for this entity."""
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
"""Support for Alexa skill service end point."""
|
"""Support for Alexa skill service end point."""
|
||||||
import copy
|
import copy
|
||||||
from datetime import datetime
|
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
|
import homeassistant.util.dt as dt_util
|
||||||
from homeassistant.components import http
|
from homeassistant.components import http
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.helpers import template
|
from homeassistant.helpers import template
|
||||||
@ -89,7 +89,7 @@ class AlexaFlashBriefingView(http.HomeAssistantView):
|
|||||||
else:
|
else:
|
||||||
output[ATTR_REDIRECTION_URL] = item.get(CONF_DISPLAY_URL)
|
output[ATTR_REDIRECTION_URL] = item.get(CONF_DISPLAY_URL)
|
||||||
|
|
||||||
output[ATTR_UPDATE_DATE] = datetime.now().strftime(DATE_FORMAT)
|
output[ATTR_UPDATE_DATE] = dt_util.utcnow().strftime(DATE_FORMAT)
|
||||||
|
|
||||||
briefing.append(output)
|
briefing.append(output)
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
"""Alexa message handlers."""
|
"""Alexa message handlers."""
|
||||||
from datetime import datetime
|
|
||||||
import logging
|
import logging
|
||||||
import math
|
import math
|
||||||
|
|
||||||
@ -28,6 +27,7 @@ from homeassistant.const import (
|
|||||||
TEMP_FAHRENHEIT,
|
TEMP_FAHRENHEIT,
|
||||||
)
|
)
|
||||||
import homeassistant.util.color as color_util
|
import homeassistant.util.color as color_util
|
||||||
|
import homeassistant.util.dt as dt_util
|
||||||
from homeassistant.util.decorator import Registry
|
from homeassistant.util.decorator import Registry
|
||||||
from homeassistant.util.temperature import convert as convert_temperature
|
from homeassistant.util.temperature import convert as convert_temperature
|
||||||
|
|
||||||
@ -275,7 +275,7 @@ async def async_api_activate(hass, config, directive, context):
|
|||||||
|
|
||||||
payload = {
|
payload = {
|
||||||
"cause": {"type": Cause.VOICE_INTERACTION},
|
"cause": {"type": Cause.VOICE_INTERACTION},
|
||||||
"timestamp": "%sZ" % (datetime.utcnow().isoformat(),),
|
"timestamp": f"{dt_util.utcnow().replace(tzinfo=None).isoformat()}Z",
|
||||||
}
|
}
|
||||||
|
|
||||||
return directive.response(
|
return directive.response(
|
||||||
@ -299,7 +299,7 @@ async def async_api_deactivate(hass, config, directive, context):
|
|||||||
|
|
||||||
payload = {
|
payload = {
|
||||||
"cause": {"type": Cause.VOICE_INTERACTION},
|
"cause": {"type": Cause.VOICE_INTERACTION},
|
||||||
"timestamp": "%sZ" % (datetime.utcnow().isoformat(),),
|
"timestamp": f"{dt_util.utcnow().replace(tzinfo=None).isoformat()}Z",
|
||||||
}
|
}
|
||||||
|
|
||||||
return directive.response(
|
return directive.response(
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
{
|
{
|
||||||
"domain": "alexa",
|
"domain": "alexa",
|
||||||
"name": "Alexa",
|
"name": "Alexa",
|
||||||
"documentation": "https://www.home-assistant.io/components/alexa",
|
"documentation": "https://www.home-assistant.io/integrations/alexa",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [
|
"dependencies": ["http"],
|
||||||
"http"
|
"codeowners": ["@home-assistant/cloud"]
|
||||||
],
|
|
||||||
"codeowners": []
|
|
||||||
}
|
}
|
||||||
|
@ -131,6 +131,10 @@ async def async_send_add_or_update_message(hass, config, entity_ids):
|
|||||||
|
|
||||||
for entity_id in entity_ids:
|
for entity_id in entity_ids:
|
||||||
domain = entity_id.split(".", 1)[0]
|
domain = entity_id.split(".", 1)[0]
|
||||||
|
|
||||||
|
if domain not in ENTITY_ADAPTERS:
|
||||||
|
continue
|
||||||
|
|
||||||
alexa_entity = ENTITY_ADAPTERS[domain](hass, config, hass.states.get(entity_id))
|
alexa_entity = ENTITY_ADAPTERS[domain](hass, config, hass.states.get(entity_id))
|
||||||
endpoints.append(alexa_entity.serialize_discovery())
|
endpoints.append(alexa_entity.serialize_discovery())
|
||||||
|
|
||||||
@ -161,6 +165,10 @@ async def async_send_delete_message(hass, config, entity_ids):
|
|||||||
|
|
||||||
for entity_id in entity_ids:
|
for entity_id in entity_ids:
|
||||||
domain = entity_id.split(".", 1)[0]
|
domain = entity_id.split(".", 1)[0]
|
||||||
|
|
||||||
|
if domain not in ENTITY_ADAPTERS:
|
||||||
|
continue
|
||||||
|
|
||||||
alexa_entity = ENTITY_ADAPTERS[domain](hass, config, hass.states.get(entity_id))
|
alexa_entity = ENTITY_ADAPTERS[domain](hass, config, hass.states.get(entity_id))
|
||||||
endpoints.append({"endpointId": alexa_entity.alexa_id()})
|
endpoints.append({"endpointId": alexa_entity.alexa_id()})
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "alpha_vantage",
|
"domain": "alpha_vantage",
|
||||||
"name": "Alpha vantage",
|
"name": "Alpha vantage",
|
||||||
"documentation": "https://www.home-assistant.io/components/alpha_vantage",
|
"documentation": "https://www.home-assistant.io/integrations/alpha_vantage",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"alpha_vantage==2.1.0"
|
"alpha_vantage==2.1.0"
|
||||||
],
|
],
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"domain": "amazon_polly",
|
"domain": "amazon_polly",
|
||||||
"name": "Amazon polly",
|
"name": "Amazon polly",
|
||||||
"documentation": "https://www.home-assistant.io/components/amazon_polly",
|
"documentation": "https://www.home-assistant.io/integrations/amazon_polly",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"boto3==1.9.16"
|
"boto3==1.9.233"
|
||||||
],
|
],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": [
|
"codeowners": [
|
||||||
|
@ -33,6 +33,7 @@ SUPPORTED_REGIONS = [
|
|||||||
"sa-east-1",
|
"sa-east-1",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
CONF_ENGINE = "engine"
|
||||||
CONF_VOICE = "voice"
|
CONF_VOICE = "voice"
|
||||||
CONF_OUTPUT_FORMAT = "output_format"
|
CONF_OUTPUT_FORMAT = "output_format"
|
||||||
CONF_SAMPLE_RATE = "sample_rate"
|
CONF_SAMPLE_RATE = "sample_rate"
|
||||||
@ -101,10 +102,12 @@ SUPPORTED_VOICES = [
|
|||||||
|
|
||||||
SUPPORTED_OUTPUT_FORMATS = ["mp3", "ogg_vorbis", "pcm"]
|
SUPPORTED_OUTPUT_FORMATS = ["mp3", "ogg_vorbis", "pcm"]
|
||||||
|
|
||||||
SUPPORTED_SAMPLE_RATES = ["8000", "16000", "22050"]
|
SUPPORTED_ENGINES = ["neural", "standard"]
|
||||||
|
|
||||||
|
SUPPORTED_SAMPLE_RATES = ["8000", "16000", "22050", "24000"]
|
||||||
|
|
||||||
SUPPORTED_SAMPLE_RATES_MAP = {
|
SUPPORTED_SAMPLE_RATES_MAP = {
|
||||||
"mp3": ["8000", "16000", "22050"],
|
"mp3": ["8000", "16000", "22050", "24000"],
|
||||||
"ogg_vorbis": ["8000", "16000", "22050"],
|
"ogg_vorbis": ["8000", "16000", "22050"],
|
||||||
"pcm": ["8000", "16000"],
|
"pcm": ["8000", "16000"],
|
||||||
}
|
}
|
||||||
@ -113,6 +116,7 @@ SUPPORTED_TEXT_TYPES = ["text", "ssml"]
|
|||||||
|
|
||||||
CONTENT_TYPE_EXTENSIONS = {"audio/mpeg": "mp3", "audio/ogg": "ogg", "audio/pcm": "pcm"}
|
CONTENT_TYPE_EXTENSIONS = {"audio/mpeg": "mp3", "audio/ogg": "ogg", "audio/pcm": "pcm"}
|
||||||
|
|
||||||
|
DEFAULT_ENGINE = "standard"
|
||||||
DEFAULT_VOICE = "Joanna"
|
DEFAULT_VOICE = "Joanna"
|
||||||
DEFAULT_OUTPUT_FORMAT = "mp3"
|
DEFAULT_OUTPUT_FORMAT = "mp3"
|
||||||
DEFAULT_TEXT_TYPE = "text"
|
DEFAULT_TEXT_TYPE = "text"
|
||||||
@ -126,6 +130,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||||||
vol.Inclusive(CONF_SECRET_ACCESS_KEY, ATTR_CREDENTIALS): cv.string,
|
vol.Inclusive(CONF_SECRET_ACCESS_KEY, ATTR_CREDENTIALS): cv.string,
|
||||||
vol.Exclusive(CONF_PROFILE_NAME, ATTR_CREDENTIALS): cv.string,
|
vol.Exclusive(CONF_PROFILE_NAME, ATTR_CREDENTIALS): cv.string,
|
||||||
vol.Optional(CONF_VOICE, default=DEFAULT_VOICE): vol.In(SUPPORTED_VOICES),
|
vol.Optional(CONF_VOICE, default=DEFAULT_VOICE): vol.In(SUPPORTED_VOICES),
|
||||||
|
vol.Optional(CONF_ENGINE, default=DEFAULT_ENGINE): vol.In(SUPPORTED_ENGINES),
|
||||||
vol.Optional(CONF_OUTPUT_FORMAT, default=DEFAULT_OUTPUT_FORMAT): vol.In(
|
vol.Optional(CONF_OUTPUT_FORMAT, default=DEFAULT_OUTPUT_FORMAT): vol.In(
|
||||||
SUPPORTED_OUTPUT_FORMATS
|
SUPPORTED_OUTPUT_FORMATS
|
||||||
),
|
),
|
||||||
@ -225,6 +230,7 @@ class AmazonPollyProvider(Provider):
|
|||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
resp = self.client.synthesize_speech(
|
resp = self.client.synthesize_speech(
|
||||||
|
Engine=self.config[CONF_ENGINE],
|
||||||
OutputFormat=self.config[CONF_OUTPUT_FORMAT],
|
OutputFormat=self.config[CONF_OUTPUT_FORMAT],
|
||||||
SampleRate=self.config[CONF_SAMPLE_RATE],
|
SampleRate=self.config[CONF_SAMPLE_RATE],
|
||||||
Text=message,
|
Text=message,
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"abort": {
|
"abort": {
|
||||||
"access_token": "S'ha produ\u00eft un error desconegut al generat un testimoni d'acc\u00e9s.",
|
"access_token": "S'ha produ\u00eft un error desconegut al generat un testimoni d'acc\u00e9s.",
|
||||||
"already_setup": "El compte d\u2019Ambi Climate est\u00e0 configurat.",
|
"already_setup": "El compte d\u2019Ambi Climate est\u00e0 configurat.",
|
||||||
"no_config": "Necessites configurar Ambi Climate abans de poder autenticar-t'hi. Llegeix les [instruccions](https://www.home-assistant.io/components/ambiclimate/)."
|
"no_config": "Necessites configurar Ambiclimate abans de poder autenticar-t'hi. Llegeix les [instruccions](https://www.home-assistant.io/components/ambiclimate/)."
|
||||||
},
|
},
|
||||||
"create_entry": {
|
"create_entry": {
|
||||||
"default": "Autenticaci\u00f3 exitosa amb Ambi Climate."
|
"default": "Autenticaci\u00f3 exitosa amb Ambi Climate."
|
||||||
@ -14,7 +14,7 @@
|
|||||||
},
|
},
|
||||||
"step": {
|
"step": {
|
||||||
"auth": {
|
"auth": {
|
||||||
"description": "V\u00e9s a l'[enlla\u00e7]({authorization_url}) i <b>Permet</b> l'acc\u00e9s al teu compte de Ambi Climate, despr\u00e9s torna i prem <b>Envia</b> (a sota).\n(Assegura't que l'enlla\u00e7 de retorn \u00e9s el seg\u00fcent {cb_url})",
|
"description": "V\u00e9s a l'[enlla\u00e7]({authorization_url}) i <b>Permet</b> l'acc\u00e9s al teu compte de Ambiclimate, despr\u00e9s torna i prem <b>Envia</b> (a sota).\n(Assegura't que l'enlla\u00e7 de retorn \u00e9s el seg\u00fcent {cb_url})",
|
||||||
"title": "Autenticaci\u00f3 amb Ambi Climate"
|
"title": "Autenticaci\u00f3 amb Ambi Climate"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"abort": {
|
"abort": {
|
||||||
"access_token": "\uc561\uc138\uc2a4 \ud1a0\ud070 \uc0dd\uc131\uc5d0 \uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.",
|
"access_token": "\uc561\uc138\uc2a4 \ud1a0\ud070 \uc0dd\uc131\uc5d0 \uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.",
|
||||||
"already_setup": "Ambi Climate \uacc4\uc815\uc774 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
|
"already_setup": "Ambi Climate \uacc4\uc815\uc774 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
|
||||||
"no_config": "Ambi Climate \ub97c \uc778\uc99d\ud558\ub824\uba74 \uba3c\uc800 Ambi Climate \ub97c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. [\uc548\ub0b4](https://www.home-assistant.io/components/ambiclimate/) \ub97c \uc77d\uc5b4\ubcf4\uc138\uc694."
|
"no_config": "Ambiclimate \ub97c \uc778\uc99d\ud558\ub824\uba74 \uba3c\uc800 Ambiclimate \ub97c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. [\uc548\ub0b4](https://www.home-assistant.io/components/ambiclimate/) \ub97c \uc77d\uc5b4\ubcf4\uc138\uc694."
|
||||||
},
|
},
|
||||||
"create_entry": {
|
"create_entry": {
|
||||||
"default": "Ambi Climate \ub85c \uc131\uacf5\uc801\uc73c\ub85c \uc778\uc99d\ub418\uc5c8\uc2b5\ub2c8\ub2e4."
|
"default": "Ambi Climate \ub85c \uc131\uacf5\uc801\uc73c\ub85c \uc778\uc99d\ub418\uc5c8\uc2b5\ub2c8\ub2e4."
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"abort": {
|
"abort": {
|
||||||
"access_token": "Onbekannte Feeler beim gener\u00e9ieren vum Acc\u00e8s Jeton.",
|
"access_token": "Onbekannte Feeler beim gener\u00e9ieren vum Acc\u00e8s Jeton.",
|
||||||
"already_setup": "Den Ambiclimate Kont ass konfigur\u00e9iert.",
|
"already_setup": "Den Ambiclimate Kont ass konfigur\u00e9iert.",
|
||||||
"no_config": "Dir musst Ambiclimate konfigur\u00e9ieren, ier Dir d\u00ebs Authentifiz\u00e9ierung k\u00ebnnt benotzen.[Liest w.e.g. d'Instruktioune](https://www.home-assistant.io/components/ambiclimatet/)."
|
"no_config": "Dir musst Ambiclimate konfigur\u00e9ieren, ier Dir d\u00ebs Authentifiz\u00e9ierung k\u00ebnnt benotzen.[Liest w.e.g. d'Instruktioune](https://www.home-assistant.io/components/ambiclimate/)."
|
||||||
},
|
},
|
||||||
"create_entry": {
|
"create_entry": {
|
||||||
"default": "Erfollegr\u00e4ich mat Ambiclimate authentifiz\u00e9iert."
|
"default": "Erfollegr\u00e4ich mat Ambiclimate authentifiz\u00e9iert."
|
||||||
|
@ -9,12 +9,12 @@
|
|||||||
"default": "Vellykket autentisering med Ambiclimate"
|
"default": "Vellykket autentisering med Ambiclimate"
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"follow_link": "Vennligst f\u00f8lg lenken og godkjen f\u00f8r du trykker p\u00e5 Send",
|
"follow_link": "Vennligst f\u00f8lg lenken og godkjenn f\u00f8r du trykker p\u00e5 Send",
|
||||||
"no_token": "Ikke autentisert med Ambiclimate"
|
"no_token": "Ikke autentisert med Ambiclimate"
|
||||||
},
|
},
|
||||||
"step": {
|
"step": {
|
||||||
"auth": {
|
"auth": {
|
||||||
"description": "Vennligst f\u00f8lg denne [linken]({authorization_url}) og <b>Tillat</b> tilgang til din Ambiclimate konto, og kom s\u00e5 tilbake og trykk <b>Send</b> nedenfor.\n(Kontroller at den angitte URL-adressen for tilbakeringing er {cb_url})",
|
"description": "Vennligst f\u00f8lg denne [linken]({authorization_url}) og <b>Tillat</b> tilgang til din Ambiclimate konto, kom deretter tilbake og trykk <b>Send</b> nedenfor.\n(Kontroller at den angitte URL-adressen for tilbakeringing er {cb_url})",
|
||||||
"title": "Autensiere Ambiclimate"
|
"title": "Autensiere Ambiclimate"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"abort": {
|
"abort": {
|
||||||
"access_token": "Nieznany b\u0142\u0105d podczas generowania tokena dost\u0119pu.",
|
"access_token": "Nieznany b\u0142\u0105d podczas generowania tokena dost\u0119pu.",
|
||||||
"already_setup": "Konto Ambiclimate jest skonfigurowane.",
|
"already_setup": "Konto Ambiclimate jest skonfigurowane.",
|
||||||
"no_config": "Musisz skonfigurowa\u0107 Ambiclimate, zanim b\u0119dziesz m\u00f3g\u0142 si\u0119 w nim uwierzytelni\u0107. [Przeczytaj instrukcj\u0119](https://www.home-assistant.io/components/ambiclimate/)."
|
"no_config": "Musisz skonfigurowa\u0107 Ambiclimate, zanim b\u0119dziesz m\u00f3g\u0142 si\u0119 w nim uwierzytelni\u0107. [Przeczytaj instrukcj\u0119] (https://www.home-assistant.io/components/ambiclimate/)."
|
||||||
},
|
},
|
||||||
"create_entry": {
|
"create_entry": {
|
||||||
"default": "Pomy\u015blnie uwierzytelniono z Ambiclimate"
|
"default": "Pomy\u015blnie uwierzytelniono z Ambiclimate"
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"abort": {
|
"abort": {
|
||||||
"access_token": "\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0442\u043e\u043a\u0435\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430.",
|
"access_token": "\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0442\u043e\u043a\u0435\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430.",
|
||||||
"already_setup": "\u0423\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c Ambi Climate \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430.",
|
"already_setup": "\u0423\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c Ambi Climate \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430.",
|
||||||
"no_config": "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 Ambi Climate \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 [\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438](https://www.home-assistant.io/components/ambiclimate/)."
|
"no_config": "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 Ambiclimate \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 [\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438](https://www.home-assistant.io/components/ambiclimate/)."
|
||||||
},
|
},
|
||||||
"create_entry": {
|
"create_entry": {
|
||||||
"default": "\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e."
|
"default": "\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e."
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"abort": {
|
"abort": {
|
||||||
"access_token": "Neznana napaka pri ustvarjanju \u017eetona za dostop.",
|
"access_token": "Neznana napaka pri ustvarjanju \u017eetona za dostop.",
|
||||||
"already_setup": "Ra\u010dun Ambiclimate je konfiguriran.",
|
"already_setup": "Ra\u010dun Ambiclimate je konfiguriran.",
|
||||||
"no_config": "Ambiclimat morate konfigurirati, preden lahko z njo preverjate pristnost. [Preberite navodila] (https://www.home-assistant.io/components/ambiclimate/)."
|
"no_config": "Ambiclimate morate konfigurirati, preden lahko z njo preverjate pristnost. [Preberite navodila] (https://www.home-assistant.io/components/ambiclimate/)."
|
||||||
},
|
},
|
||||||
"create_entry": {
|
"create_entry": {
|
||||||
"default": "Uspe\u0161no overjeno z funkcijo Ambiclimate"
|
"default": "Uspe\u0161no overjeno z funkcijo Ambiclimate"
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"no_config": "\u5fc5\u9808\u5148\u8a2d\u5b9a Ambiclimate \u65b9\u80fd\u9032\u884c\u8a8d\u8b49\u3002[\u8acb\u53c3\u95b1\u6559\u5b78\u6307\u5f15]\uff08https://www.home-assistant.io/components/ambiclimate/\uff09\u3002"
|
"no_config": "\u5fc5\u9808\u5148\u8a2d\u5b9a Ambiclimate \u65b9\u80fd\u9032\u884c\u8a8d\u8b49\u3002[\u8acb\u53c3\u95b1\u6559\u5b78\u6307\u5f15]\uff08https://www.home-assistant.io/components/ambiclimate/\uff09\u3002"
|
||||||
},
|
},
|
||||||
"create_entry": {
|
"create_entry": {
|
||||||
"default": "\u5df2\u6210\u529f\u8a8d\u8b49 Ambiclimate \u88dd\u7f6e\u3002"
|
"default": "\u5df2\u6210\u529f\u8a8d\u8b49 Ambiclimate \u8a2d\u5099\u3002"
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"follow_link": "\u8acb\u65bc\u50b3\u9001\u524d\uff0c\u5148\u4f7f\u7528\u9023\u7d50\u4e26\u9032\u884c\u8a8d\u8b49\u3002",
|
"follow_link": "\u8acb\u65bc\u50b3\u9001\u524d\uff0c\u5148\u4f7f\u7528\u9023\u7d50\u4e26\u9032\u884c\u8a8d\u8b49\u3002",
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"domain": "ambiclimate",
|
"domain": "ambiclimate",
|
||||||
"name": "Ambiclimate",
|
"name": "Ambiclimate",
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/components/ambiclimate",
|
"documentation": "https://www.home-assistant.io/integrations/ambiclimate",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"ambiclimate==0.2.1"
|
"ambiclimate==0.2.1"
|
||||||
],
|
],
|
||||||
|
@ -14,6 +14,6 @@
|
|||||||
"title": "Completa tu informaci\u00f3n"
|
"title": "Completa tu informaci\u00f3n"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": "Ambient PWS"
|
"title": "Ambiente PWS"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"config": {
|
"config": {
|
||||||
"error": {
|
"error": {
|
||||||
"identifier_exists": "\u041a\u043b\u044e\u0447 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438/\u0438\u043b\u0438 \u043a\u043b\u044e\u0447 API \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d",
|
"identifier_exists": "\u041a\u043b\u044e\u0447 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438/\u0438\u043b\u0438 \u043a\u043b\u044e\u0447 API \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d.",
|
||||||
"invalid_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API \u0438/\u0438\u043b\u0438 \u043a\u043b\u044e\u0447 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f",
|
"invalid_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API \u0438/\u0438\u043b\u0438 \u043a\u043b\u044e\u0447 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f",
|
||||||
"no_devices": "\u0412 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b"
|
"no_devices": "\u0412 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b"
|
||||||
},
|
},
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"identifier_exists": "API \u5bc6\u9470\u53ca/\u6216\u61c9\u7528\u5bc6\u9470\u5df2\u8a3b\u518a",
|
"identifier_exists": "API \u5bc6\u9470\u53ca/\u6216\u61c9\u7528\u5bc6\u9470\u5df2\u8a3b\u518a",
|
||||||
"invalid_key": "API \u5bc6\u9470\u53ca/\u6216\u61c9\u7528\u5bc6\u9470\u7121\u6548",
|
"invalid_key": "API \u5bc6\u9470\u53ca/\u6216\u61c9\u7528\u5bc6\u9470\u7121\u6548",
|
||||||
"no_devices": "\u5e33\u865f\u4e2d\u627e\u4e0d\u5230\u4efb\u4f55\u88dd\u7f6e"
|
"no_devices": "\u5e33\u865f\u4e2d\u627e\u4e0d\u5230\u4efb\u4f55\u8a2d\u5099"
|
||||||
},
|
},
|
||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"domain": "ambient_station",
|
"domain": "ambient_station",
|
||||||
"name": "Ambient station",
|
"name": "Ambient station",
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/components/ambient_station",
|
"documentation": "https://www.home-assistant.io/integrations/ambient_station",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"aioambient==0.3.2"
|
"aioambient==0.3.2"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "amcrest",
|
"domain": "amcrest",
|
||||||
"name": "Amcrest",
|
"name": "Amcrest",
|
||||||
"documentation": "https://www.home-assistant.io/components/amcrest",
|
"documentation": "https://www.home-assistant.io/integrations/amcrest",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"amcrest==1.5.3"
|
"amcrest==1.5.3"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "ampio",
|
"domain": "ampio",
|
||||||
"name": "Ampio",
|
"name": "Ampio",
|
||||||
"documentation": "https://www.home-assistant.io/components/ampio",
|
"documentation": "https://www.home-assistant.io/integrations/ampio",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"asmog==0.0.6"
|
"asmog==0.0.6"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "android_ip_webcam",
|
"domain": "android_ip_webcam",
|
||||||
"name": "Android ip webcam",
|
"name": "Android ip webcam",
|
||||||
"documentation": "https://www.home-assistant.io/components/android_ip_webcam",
|
"documentation": "https://www.home-assistant.io/integrations/android_ip_webcam",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pydroid-ipcam==0.8"
|
"pydroid-ipcam==0.8"
|
||||||
],
|
],
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
{
|
{
|
||||||
"domain": "androidtv",
|
"domain": "androidtv",
|
||||||
"name": "Androidtv",
|
"name": "Androidtv",
|
||||||
"documentation": "https://www.home-assistant.io/components/androidtv",
|
"documentation": "https://www.home-assistant.io/integrations/androidtv",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"androidtv==0.0.27"
|
"adb-shell==0.0.4",
|
||||||
|
"androidtv==0.0.30"
|
||||||
],
|
],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": ["@JeffLIrion"]
|
"codeowners": ["@JeffLIrion"]
|
||||||
|
@ -3,6 +3,12 @@ import functools
|
|||||||
import logging
|
import logging
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
|
from adb_shell.exceptions import (
|
||||||
|
InvalidChecksumError,
|
||||||
|
InvalidCommandError,
|
||||||
|
InvalidResponseError,
|
||||||
|
TcpTimeoutException,
|
||||||
|
)
|
||||||
from androidtv import setup, ha_state_detection_rules_validator
|
from androidtv import setup, ha_state_detection_rules_validator
|
||||||
from androidtv.constants import APPS, KEYS
|
from androidtv.constants import APPS, KEYS
|
||||||
|
|
||||||
@ -123,11 +129,15 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
"""Set up the Android TV / Fire TV platform."""
|
"""Set up the Android TV / Fire TV platform."""
|
||||||
hass.data.setdefault(ANDROIDTV_DOMAIN, {})
|
hass.data.setdefault(ANDROIDTV_DOMAIN, {})
|
||||||
|
|
||||||
host = "{0}:{1}".format(config[CONF_HOST], config[CONF_PORT])
|
host = f"{config[CONF_HOST]}:{config[CONF_PORT]}"
|
||||||
|
|
||||||
if CONF_ADB_SERVER_IP not in config:
|
if CONF_ADB_SERVER_IP not in config:
|
||||||
# Use "python-adb" (Python ADB implementation)
|
# Use "adb_shell" (Python ADB implementation)
|
||||||
adb_log = "using Python ADB implementation "
|
adb_log = "using Python ADB implementation " + (
|
||||||
|
f"with adbkey='{config[CONF_ADBKEY]}'"
|
||||||
|
if CONF_ADBKEY in config
|
||||||
|
else "without adbkey authentication"
|
||||||
|
)
|
||||||
if CONF_ADBKEY in config:
|
if CONF_ADBKEY in config:
|
||||||
aftv = setup(
|
aftv = setup(
|
||||||
host,
|
host,
|
||||||
@ -135,7 +145,6 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
device_class=config[CONF_DEVICE_CLASS],
|
device_class=config[CONF_DEVICE_CLASS],
|
||||||
state_detection_rules=config[CONF_STATE_DETECTION_RULES],
|
state_detection_rules=config[CONF_STATE_DETECTION_RULES],
|
||||||
)
|
)
|
||||||
adb_log += "with adbkey='{0}'".format(config[CONF_ADBKEY])
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
aftv = setup(
|
aftv = setup(
|
||||||
@ -143,7 +152,6 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
device_class=config[CONF_DEVICE_CLASS],
|
device_class=config[CONF_DEVICE_CLASS],
|
||||||
state_detection_rules=config[CONF_STATE_DETECTION_RULES],
|
state_detection_rules=config[CONF_STATE_DETECTION_RULES],
|
||||||
)
|
)
|
||||||
adb_log += "without adbkey authentication"
|
|
||||||
else:
|
else:
|
||||||
# Use "pure-python-adb" (communicate with ADB server)
|
# Use "pure-python-adb" (communicate with ADB server)
|
||||||
aftv = setup(
|
aftv = setup(
|
||||||
@ -153,9 +161,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
device_class=config[CONF_DEVICE_CLASS],
|
device_class=config[CONF_DEVICE_CLASS],
|
||||||
state_detection_rules=config[CONF_STATE_DETECTION_RULES],
|
state_detection_rules=config[CONF_STATE_DETECTION_RULES],
|
||||||
)
|
)
|
||||||
adb_log = "using ADB server at {0}:{1}".format(
|
adb_log = f"using ADB server at {config[CONF_ADB_SERVER_IP]}:{config[CONF_ADB_SERVER_PORT]}"
|
||||||
config[CONF_ADB_SERVER_IP], config[CONF_ADB_SERVER_PORT]
|
|
||||||
)
|
|
||||||
|
|
||||||
if not aftv.available:
|
if not aftv.available:
|
||||||
# Determine the name that will be used for the device in the log
|
# Determine the name that will be used for the device in the log
|
||||||
@ -251,6 +257,7 @@ def adb_decorator(override_available=False):
|
|||||||
"establishing attempt in the next update. Error: %s",
|
"establishing attempt in the next update. Error: %s",
|
||||||
err,
|
err,
|
||||||
)
|
)
|
||||||
|
self.aftv.adb.close()
|
||||||
self._available = False # pylint: disable=protected-access
|
self._available = False # pylint: disable=protected-access
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@ -278,14 +285,7 @@ class ADBDevice(MediaPlayerDevice):
|
|||||||
|
|
||||||
# ADB exceptions to catch
|
# ADB exceptions to catch
|
||||||
if not self.aftv.adb_server_ip:
|
if not self.aftv.adb_server_ip:
|
||||||
# Using "python-adb" (Python ADB implementation)
|
# Using "adb_shell" (Python ADB implementation)
|
||||||
from adb.adb_protocol import (
|
|
||||||
InvalidChecksumError,
|
|
||||||
InvalidCommandError,
|
|
||||||
InvalidResponseError,
|
|
||||||
)
|
|
||||||
from adb.usb_exceptions import TcpTimeoutException
|
|
||||||
|
|
||||||
self.exceptions = (
|
self.exceptions = (
|
||||||
AttributeError,
|
AttributeError,
|
||||||
BrokenPipeError,
|
BrokenPipeError,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "anel_pwrctrl",
|
"domain": "anel_pwrctrl",
|
||||||
"name": "Anel pwrctrl",
|
"name": "Anel pwrctrl",
|
||||||
"documentation": "https://www.home-assistant.io/components/anel_pwrctrl",
|
"documentation": "https://www.home-assistant.io/integrations/anel_pwrctrl",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"anel_pwrctrl-homeassistant==0.0.1.dev2"
|
"anel_pwrctrl-homeassistant==0.0.1.dev2"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "anthemav",
|
"domain": "anthemav",
|
||||||
"name": "Anthemav",
|
"name": "Anthemav",
|
||||||
"documentation": "https://www.home-assistant.io/components/anthemav",
|
"documentation": "https://www.home-assistant.io/integrations/anthemav",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"anthemav==1.1.10"
|
"anthemav==1.1.10"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "apache_kafka",
|
"domain": "apache_kafka",
|
||||||
"name": "Apache Kafka",
|
"name": "Apache Kafka",
|
||||||
"documentation": "https://www.home-assistant.io/components/apache_kafka",
|
"documentation": "https://www.home-assistant.io/integrations/apache_kafka",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"aiokafka==0.5.1"
|
"aiokafka==0.5.1"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "apcupsd",
|
"domain": "apcupsd",
|
||||||
"name": "Apcupsd",
|
"name": "Apcupsd",
|
||||||
"documentation": "https://www.home-assistant.io/components/apcupsd",
|
"documentation": "https://www.home-assistant.io/integrations/apcupsd",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"apcaccess==0.0.13"
|
"apcaccess==0.0.13"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "api",
|
"domain": "api",
|
||||||
"name": "Home Assistant API",
|
"name": "Home Assistant API",
|
||||||
"documentation": "https://www.home-assistant.io/components/api",
|
"documentation": "https://www.home-assistant.io/integrations/api",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"http"
|
"http"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "apns",
|
"domain": "apns",
|
||||||
"name": "Apns",
|
"name": "Apns",
|
||||||
"documentation": "https://www.home-assistant.io/components/apns",
|
"documentation": "https://www.home-assistant.io/integrations/apns",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"apns2==0.3.0"
|
"apns2==0.3.0"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "apple_tv",
|
"domain": "apple_tv",
|
||||||
"name": "Apple tv",
|
"name": "Apple tv",
|
||||||
"documentation": "https://www.home-assistant.io/components/apple_tv",
|
"documentation": "https://www.home-assistant.io/integrations/apple_tv",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pyatv==0.3.13"
|
"pyatv==0.3.13"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "aprs",
|
"domain": "aprs",
|
||||||
"name": "APRS",
|
"name": "APRS",
|
||||||
"documentation": "https://www.home-assistant.io/components/aprs",
|
"documentation": "https://www.home-assistant.io/integrations/aprs",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": ["@PhilRW"],
|
"codeowners": ["@PhilRW"],
|
||||||
"requirements": [
|
"requirements": [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "aqualogic",
|
"domain": "aqualogic",
|
||||||
"name": "Aqualogic",
|
"name": "Aqualogic",
|
||||||
"documentation": "https://www.home-assistant.io/components/aqualogic",
|
"documentation": "https://www.home-assistant.io/integrations/aqualogic",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"aqualogic==1.0"
|
"aqualogic==1.0"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "aquostv",
|
"domain": "aquostv",
|
||||||
"name": "Aquostv",
|
"name": "Aquostv",
|
||||||
"documentation": "https://www.home-assistant.io/components/aquostv",
|
"documentation": "https://www.home-assistant.io/integrations/aquostv",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"sharp_aquos_rc==0.3.2"
|
"sharp_aquos_rc==0.3.2"
|
||||||
],
|
],
|
||||||
|
5
homeassistant/components/arcam_fmj/.translations/bg.json
Normal file
5
homeassistant/components/arcam_fmj/.translations/bg.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"title": "Arcam FMJ"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"title": "Arcam FMJ"
|
||||||
|
}
|
||||||
|
}
|
5
homeassistant/components/arcam_fmj/.translations/nn.json
Normal file
5
homeassistant/components/arcam_fmj/.translations/nn.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"title": "Arcam FMJ"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"title": "Arcam FMJ"
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
"domain": "arcam_fmj",
|
"domain": "arcam_fmj",
|
||||||
"name": "Arcam FMJ Receiver control",
|
"name": "Arcam FMJ Receiver control",
|
||||||
"config_flow": false,
|
"config_flow": false,
|
||||||
"documentation": "https://www.home-assistant.io/components/arcam_fmj",
|
"documentation": "https://www.home-assistant.io/integrations/arcam_fmj",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"arcam-fmj==0.4.3"
|
"arcam-fmj==0.4.3"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "arduino",
|
"domain": "arduino",
|
||||||
"name": "Arduino",
|
"name": "Arduino",
|
||||||
"documentation": "https://www.home-assistant.io/components/arduino",
|
"documentation": "https://www.home-assistant.io/integrations/arduino",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"PyMata==2.14"
|
"PyMata==2.14"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "arest",
|
"domain": "arest",
|
||||||
"name": "Arest",
|
"name": "Arest",
|
||||||
"documentation": "https://www.home-assistant.io/components/arest",
|
"documentation": "https://www.home-assistant.io/integrations/arest",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": [
|
"codeowners": [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "arlo",
|
"domain": "arlo",
|
||||||
"name": "Arlo",
|
"name": "Arlo",
|
||||||
"documentation": "https://www.home-assistant.io/components/arlo",
|
"documentation": "https://www.home-assistant.io/integrations/arlo",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pyarlo==0.2.3"
|
"pyarlo==0.2.3"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "aruba",
|
"domain": "aruba",
|
||||||
"name": "Aruba",
|
"name": "Aruba",
|
||||||
"documentation": "https://www.home-assistant.io/components/aruba",
|
"documentation": "https://www.home-assistant.io/integrations/aruba",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pexpect==4.6.0"
|
"pexpect==4.6.0"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "arwn",
|
"domain": "arwn",
|
||||||
"name": "Arwn",
|
"name": "Arwn",
|
||||||
"documentation": "https://www.home-assistant.io/components/arwn",
|
"documentation": "https://www.home-assistant.io/integrations/arwn",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"mqtt"
|
"mqtt"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "asterisk_cdr",
|
"domain": "asterisk_cdr",
|
||||||
"name": "Asterisk cdr",
|
"name": "Asterisk cdr",
|
||||||
"documentation": "https://www.home-assistant.io/components/asterisk_cdr",
|
"documentation": "https://www.home-assistant.io/integrations/asterisk_cdr",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"asterisk_mbox"
|
"asterisk_mbox"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "asterisk_mbox",
|
"domain": "asterisk_mbox",
|
||||||
"name": "Asterisk mbox",
|
"name": "Asterisk mbox",
|
||||||
"documentation": "https://www.home-assistant.io/components/asterisk_mbox",
|
"documentation": "https://www.home-assistant.io/integrations/asterisk_mbox",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"asterisk_mbox==0.5.0"
|
"asterisk_mbox==0.5.0"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "asuswrt",
|
"domain": "asuswrt",
|
||||||
"name": "Asuswrt",
|
"name": "Asuswrt",
|
||||||
"documentation": "https://www.home-assistant.io/components/asuswrt",
|
"documentation": "https://www.home-assistant.io/integrations/asuswrt",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"aioasuswrt==1.1.21"
|
"aioasuswrt==1.1.21"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "atome",
|
"domain": "atome",
|
||||||
"name": "Atome",
|
"name": "Atome",
|
||||||
"documentation": "https://www.home-assistant.io/components/atome",
|
"documentation": "https://www.home-assistant.io/integrations/atome",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": ["@baqs"],
|
"codeowners": ["@baqs"],
|
||||||
"requirements": ["pyatome==0.1.1"]
|
"requirements": ["pyatome==0.1.1"]
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "august",
|
"domain": "august",
|
||||||
"name": "August",
|
"name": "August",
|
||||||
"documentation": "https://www.home-assistant.io/components/august",
|
"documentation": "https://www.home-assistant.io/integrations/august",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"py-august==0.7.0"
|
"py-august==0.7.0"
|
||||||
],
|
],
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "aurora",
|
"domain": "aurora",
|
||||||
"name": "Aurora",
|
"name": "Aurora",
|
||||||
"documentation": "https://www.home-assistant.io/components/aurora",
|
"documentation": "https://www.home-assistant.io/integrations/aurora",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": []
|
"codeowners": []
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user