commit
e2d2f69cb0
1904 changed files with 34664 additions and 8497 deletions
40
.coveragerc
40
.coveragerc
|
@ -143,6 +143,7 @@ omit =
|
|||
homeassistant/components/dlna_dmr/media_player.py
|
||||
homeassistant/components/dnsip/sensor.py
|
||||
homeassistant/components/dominos/*
|
||||
homeassistant/components/doods/*
|
||||
homeassistant/components/doorbird/*
|
||||
homeassistant/components/dovado/*
|
||||
homeassistant/components/downloader/*
|
||||
|
@ -155,7 +156,12 @@ omit =
|
|||
homeassistant/components/ebox/sensor.py
|
||||
homeassistant/components/ebusd/*
|
||||
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/ecovacs/*
|
||||
homeassistant/components/eddystone_temperature/sensor.py
|
||||
|
@ -164,7 +170,7 @@ omit =
|
|||
homeassistant/components/eight_sleep/*
|
||||
homeassistant/components/eliqonline/sensor.py
|
||||
homeassistant/components/elkm1/*
|
||||
homeassistant/components/elv/switch.py
|
||||
homeassistant/components/elv/*
|
||||
homeassistant/components/emby/media_player.py
|
||||
homeassistant/components/emoncms/sensor.py
|
||||
homeassistant/components/emoncms_history/*
|
||||
|
@ -197,7 +203,6 @@ omit =
|
|||
homeassistant/components/evohome/*
|
||||
homeassistant/components/familyhub/camera.py
|
||||
homeassistant/components/fastdotcom/*
|
||||
homeassistant/components/fedex/sensor.py
|
||||
homeassistant/components/ffmpeg/camera.py
|
||||
homeassistant/components/fibaro/*
|
||||
homeassistant/components/filesize/sensor.py
|
||||
|
@ -288,11 +293,15 @@ omit =
|
|||
homeassistant/components/hydrawise/*
|
||||
homeassistant/components/hyperion/light.py
|
||||
homeassistant/components/ialarm/alarm_control_panel.py
|
||||
homeassistant/components/iaqualink/binary_sensor.py
|
||||
homeassistant/components/iaqualink/climate.py
|
||||
homeassistant/components/iaqualink/light.py
|
||||
homeassistant/components/iaqualink/sensor.py
|
||||
homeassistant/components/iaqualink/switch.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/ifttt/*
|
||||
homeassistant/components/iglo/light.py
|
||||
|
@ -313,6 +322,7 @@ omit =
|
|||
homeassistant/components/itunes/media_player.py
|
||||
homeassistant/components/joaoapps_join/*
|
||||
homeassistant/components/juicenet/*
|
||||
homeassistant/components/kaiterra/*
|
||||
homeassistant/components/kankun/switch.py
|
||||
homeassistant/components/keba/*
|
||||
homeassistant/components/keenetic_ndms2/device_tracker.py
|
||||
|
@ -343,7 +353,6 @@ omit =
|
|||
homeassistant/components/lifx_legacy/light.py
|
||||
homeassistant/components/lightwave/*
|
||||
homeassistant/components/limitlessled/light.py
|
||||
homeassistant/components/linksys_ap/device_tracker.py
|
||||
homeassistant/components/linksys_smart/device_tracker.py
|
||||
homeassistant/components/linky/__init__.py
|
||||
homeassistant/components/linky/sensor.py
|
||||
|
@ -434,12 +443,14 @@ omit =
|
|||
homeassistant/components/nuki/lock.py
|
||||
homeassistant/components/nut/sensor.py
|
||||
homeassistant/components/nx584/alarm_control_panel.py
|
||||
homeassistant/components/nzbget/__init__.py
|
||||
homeassistant/components/nzbget/sensor.py
|
||||
homeassistant/components/obihai/*
|
||||
homeassistant/components/octoprint/*
|
||||
homeassistant/components/oem/climate.py
|
||||
homeassistant/components/oasa_telematics/sensor.py
|
||||
homeassistant/components/ohmconnect/sensor.py
|
||||
homeassistant/components/ombi/*
|
||||
homeassistant/components/onewire/sensor.py
|
||||
homeassistant/components/onkyo/media_player.py
|
||||
homeassistant/components/onvif/camera.py
|
||||
|
@ -476,7 +487,10 @@ omit =
|
|||
homeassistant/components/pioneer/media_player.py
|
||||
homeassistant/components/pjlink/media_player.py
|
||||
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/plum_lightpad/*
|
||||
homeassistant/components/pocketcasts/sensor.py
|
||||
|
@ -544,6 +558,7 @@ omit =
|
|||
homeassistant/components/russound_rio/media_player.py
|
||||
homeassistant/components/russound_rnet/media_player.py
|
||||
homeassistant/components/sabnzbd/*
|
||||
homeassistant/components/saj/sensor.py
|
||||
homeassistant/components/satel_integra/*
|
||||
homeassistant/components/scrape/sensor.py
|
||||
homeassistant/components/scsgate/*
|
||||
|
@ -585,6 +600,8 @@ omit =
|
|||
homeassistant/components/solaredge/sensor.py
|
||||
homeassistant/components/solaredge_local/sensor.py
|
||||
homeassistant/components/solax/sensor.py
|
||||
homeassistant/components/soma/cover.py
|
||||
homeassistant/components/soma/__init__.py
|
||||
homeassistant/components/somfy/*
|
||||
homeassistant/components/somfy_mylink/*
|
||||
homeassistant/components/sonarr/sensor.py
|
||||
|
@ -597,7 +614,6 @@ omit =
|
|||
homeassistant/components/spotcrime/sensor.py
|
||||
homeassistant/components/spotify/media_player.py
|
||||
homeassistant/components/squeezebox/media_player.py
|
||||
homeassistant/components/srp_energy/sensor.py
|
||||
homeassistant/components/starlingbank/sensor.py
|
||||
homeassistant/components/steam_online/sensor.py
|
||||
homeassistant/components/stiebel_eltron/*
|
||||
|
@ -618,7 +634,6 @@ omit =
|
|||
homeassistant/components/synologydsm/sensor.py
|
||||
homeassistant/components/syslog/notify.py
|
||||
homeassistant/components/systemmonitor/sensor.py
|
||||
homeassistant/components/sytadin/sensor.py
|
||||
homeassistant/components/tado/*
|
||||
homeassistant/components/tado/device_tracker.py
|
||||
homeassistant/components/tahoma/*
|
||||
|
@ -660,9 +675,14 @@ omit =
|
|||
homeassistant/components/trackr/device_tracker.py
|
||||
homeassistant/components/tradfri/*
|
||||
homeassistant/components/tradfri/light.py
|
||||
homeassistant/components/tradfri/cover.py
|
||||
homeassistant/components/trafikverket_train/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/tuya/*
|
||||
homeassistant/components/twentemilieu/const.py
|
||||
|
@ -678,10 +698,8 @@ omit =
|
|||
homeassistant/components/upcloud/*
|
||||
homeassistant/components/upnp/*
|
||||
homeassistant/components/upc_connect/*
|
||||
homeassistant/components/ups/sensor.py
|
||||
homeassistant/components/uptimerobot/binary_sensor.py
|
||||
homeassistant/components/uscis/sensor.py
|
||||
homeassistant/components/usps/*
|
||||
homeassistant/components/vallox/*
|
||||
homeassistant/components/vasttrafik/sensor.py
|
||||
homeassistant/components/velbus/__init__.py
|
||||
|
@ -738,6 +756,7 @@ omit =
|
|||
homeassistant/components/yale_smart_alarm/alarm_control_panel.py
|
||||
homeassistant/components/yamaha/media_player.py
|
||||
homeassistant/components/yamaha_musiccast/media_player.py
|
||||
homeassistant/components/yandex_transport/*
|
||||
homeassistant/components/yeelight/*
|
||||
homeassistant/components/yeelightsunflower/light.py
|
||||
homeassistant/components/yi/camera.py
|
||||
|
@ -755,6 +774,7 @@ omit =
|
|||
homeassistant/components/zha/core/device.py
|
||||
homeassistant/components/zha/core/gateway.py
|
||||
homeassistant/components/zha/core/helpers.py
|
||||
homeassistant/components/zha/core/patches.py
|
||||
homeassistant/components/zha/core/registries.py
|
||||
homeassistant/components/zha/device_entity.py
|
||||
homeassistant/components/zha/entity.py
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"runArgs": ["-e", "GIT_EDITOR=\"code --wait\""],
|
||||
"extensions": [
|
||||
"ms-python.python",
|
||||
"visualstudioexptteam.vscodeintellicode",
|
||||
"ms-azure-devops.azure-pipelines",
|
||||
"redhat.vscode-yaml",
|
||||
"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.
|
||||
-->
|
||||
|
||||
**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.
|
||||
-->
|
||||
|
||||
**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
|
||||
exemptLabels:
|
||||
- under investigation
|
||||
- Help wanted
|
||||
|
||||
# Set to true to ignore issues in a project (defaults to false)
|
||||
exemptProjects: true
|
||||
|
|
|
@ -30,4 +30,4 @@ matrix:
|
|||
cache: pip
|
||||
install: pip install -U tox
|
||||
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
|
||||
# when the code that they own is touched.
|
||||
# https://github.com/blog/2392-introducing-code-owners
|
||||
|
@ -16,6 +16,7 @@ homeassistant/scripts/check_config.py @kellerza
|
|||
homeassistant/components/adguard/* @frenck
|
||||
homeassistant/components/airvisual/* @bachya
|
||||
homeassistant/components/alarm_control_panel/* @colinodell
|
||||
homeassistant/components/alexa/* @home-assistant/cloud
|
||||
homeassistant/components/alpha_vantage/* @fabaff
|
||||
homeassistant/components/amazon_polly/* @robbiet480
|
||||
homeassistant/components/ambiclimate/* @danielhiversen
|
||||
|
@ -73,6 +74,7 @@ homeassistant/components/digital_ocean/* @fabaff
|
|||
homeassistant/components/discogs/* @thibmaek
|
||||
homeassistant/components/doorbird/* @oblogic7
|
||||
homeassistant/components/dweet/* @fabaff
|
||||
homeassistant/components/ecobee/* @marthoc
|
||||
homeassistant/components/ecovacs/* @OverloadUT
|
||||
homeassistant/components/egardia/* @jeroenterheerdt
|
||||
homeassistant/components/eight_sleep/* @mezz64
|
||||
|
@ -105,6 +107,7 @@ homeassistant/components/geonetnz_quakes/* @exxamalte
|
|||
homeassistant/components/gitter/* @fabaff
|
||||
homeassistant/components/glances/* @fabaff
|
||||
homeassistant/components/gntp/* @robbiet480
|
||||
homeassistant/components/google_assistant/* @home-assistant/cloud
|
||||
homeassistant/components/google_cloud/* @lufton
|
||||
homeassistant/components/google_translate/* @awarecan
|
||||
homeassistant/components/google_travel_time/* @robbiet480
|
||||
|
@ -115,6 +118,7 @@ homeassistant/components/gtfs/* @robbiet480
|
|||
homeassistant/components/harmony/* @ehendrix23
|
||||
homeassistant/components/hassio/* @home-assistant/hass-io
|
||||
homeassistant/components/heos/* @andrewsayre
|
||||
homeassistant/components/here_travel_time/* @eifinger
|
||||
homeassistant/components/hikvision/* @mezz64
|
||||
homeassistant/components/hikvisioncam/* @fbradyirl
|
||||
homeassistant/components/history/* @home-assistant/core
|
||||
|
@ -144,7 +148,9 @@ homeassistant/components/ios/* @robbiet480
|
|||
homeassistant/components/ipma/* @dgomes
|
||||
homeassistant/components/iqvia/* @bachya
|
||||
homeassistant/components/irish_rail_transport/* @ttroy50
|
||||
homeassistant/components/izone/* @Swamp-Ig
|
||||
homeassistant/components/jewish_calendar/* @tsvi
|
||||
homeassistant/components/kaiterra/* @Michsior14
|
||||
homeassistant/components/keba/* @dannerph
|
||||
homeassistant/components/knx/* @Julius2342
|
||||
homeassistant/components/kodi/* @armills
|
||||
|
@ -153,9 +159,6 @@ homeassistant/components/lametric/* @robbiet480
|
|||
homeassistant/components/launch_library/* @ludeeus
|
||||
homeassistant/components/lcn/* @alengwenus
|
||||
homeassistant/components/life360/* @pnbruckner
|
||||
homeassistant/components/lifx/* @amelchio
|
||||
homeassistant/components/lifx_cloud/* @amelchio
|
||||
homeassistant/components/lifx_legacy/* @amelchio
|
||||
homeassistant/components/linky/* @Quentame
|
||||
homeassistant/components/linux_battery/* @fabaff
|
||||
homeassistant/components/liveboxplaytv/* @pschmitt
|
||||
|
@ -181,12 +184,12 @@ homeassistant/components/monoprice/* @etsinko
|
|||
homeassistant/components/moon/* @fabaff
|
||||
homeassistant/components/mpd/* @fabaff
|
||||
homeassistant/components/mqtt/* @home-assistant/core
|
||||
homeassistant/components/mysensors/* @MartinHjelmare
|
||||
homeassistant/components/mystrom/* @fabaff
|
||||
homeassistant/components/nello/* @pschmitt
|
||||
homeassistant/components/ness_alarm/* @nickw444
|
||||
homeassistant/components/nest/* @awarecan
|
||||
homeassistant/components/netdata/* @fabaff
|
||||
homeassistant/components/netgear_lte/* @amelchio
|
||||
homeassistant/components/nextbus/* @vividboarder
|
||||
homeassistant/components/nissan_leaf/* @filcole
|
||||
homeassistant/components/nmbs/* @thibmaek
|
||||
|
@ -197,8 +200,10 @@ homeassistant/components/nsw_fuel_station/* @nickw444
|
|||
homeassistant/components/nsw_rural_fire_service_feed/* @exxamalte
|
||||
homeassistant/components/nuki/* @pvizeli
|
||||
homeassistant/components/nws/* @MatthewFlamm
|
||||
homeassistant/components/nzbget/* @chriscla
|
||||
homeassistant/components/obihai/* @dshokouhi
|
||||
homeassistant/components/ohmconnect/* @robbiet480
|
||||
homeassistant/components/ombi/* @larssont
|
||||
homeassistant/components/onboarding/* @home-assistant/core
|
||||
homeassistant/components/opentherm_gw/* @mvn23
|
||||
homeassistant/components/openuv/* @bachya
|
||||
|
@ -209,7 +214,7 @@ homeassistant/components/panel_custom/* @home-assistant/frontend
|
|||
homeassistant/components/panel_iframe/* @home-assistant/frontend
|
||||
homeassistant/components/persistent_notification/* @home-assistant/core
|
||||
homeassistant/components/philips_js/* @elupus
|
||||
homeassistant/components/pi_hole/* @fabaff
|
||||
homeassistant/components/pi_hole/* @fabaff @johnluetke
|
||||
homeassistant/components/plaato/* @JohNan
|
||||
homeassistant/components/plant/* @ChristianKuehnel
|
||||
homeassistant/components/plex/* @jjlawren
|
||||
|
@ -223,6 +228,7 @@ homeassistant/components/qld_bushfire/* @exxamalte
|
|||
homeassistant/components/qnap/* @colinodell
|
||||
homeassistant/components/quantum_gateway/* @cisasteelersfan
|
||||
homeassistant/components/qwikswitch/* @kellerza
|
||||
homeassistant/components/rainbird/* @konikvranik
|
||||
homeassistant/components/raincloud/* @vanstinator
|
||||
homeassistant/components/rainforest_eagle/* @gtdiehl
|
||||
homeassistant/components/rainmachine/* @bachya
|
||||
|
@ -231,6 +237,7 @@ homeassistant/components/repetier/* @MTrab
|
|||
homeassistant/components/rfxtrx/* @danielhiversen
|
||||
homeassistant/components/rmvtransport/* @cgtobi
|
||||
homeassistant/components/roomba/* @pschmitt
|
||||
homeassistant/components/saj/* @fredericvl
|
||||
homeassistant/components/scene/* @home-assistant/core
|
||||
homeassistant/components/scrape/* @fabaff
|
||||
homeassistant/components/script/* @home-assistant/core
|
||||
|
@ -248,11 +255,11 @@ homeassistant/components/smarthab/* @outadoc
|
|||
homeassistant/components/smartthings/* @andrewsayre
|
||||
homeassistant/components/smarty/* @z0mbieprocess
|
||||
homeassistant/components/smtp/* @fabaff
|
||||
homeassistant/components/solaredge_local/* @drobtravels
|
||||
homeassistant/components/solaredge_local/* @drobtravels @scheric
|
||||
homeassistant/components/solax/* @squishykid
|
||||
homeassistant/components/soma/* @ratsept
|
||||
homeassistant/components/somfy/* @tetienne
|
||||
homeassistant/components/songpal/* @rytilahti
|
||||
homeassistant/components/sonos/* @amelchio
|
||||
homeassistant/components/spaceapi/* @fabaff
|
||||
homeassistant/components/spider/* @peternijssen
|
||||
homeassistant/components/sql/* @dgomes
|
||||
|
@ -270,7 +277,6 @@ homeassistant/components/switchmate/* @danielhiversen
|
|||
homeassistant/components/syncthru/* @nielstron
|
||||
homeassistant/components/synology_srm/* @aerialls
|
||||
homeassistant/components/syslog/* @fabaff
|
||||
homeassistant/components/sytadin/* @gautric
|
||||
homeassistant/components/tahoma/* @philklei
|
||||
homeassistant/components/tautulli/* @ludeeus
|
||||
homeassistant/components/tellduslive/* @fredrike
|
||||
|
@ -282,11 +288,13 @@ homeassistant/components/threshold/* @fabaff
|
|||
homeassistant/components/tibber/* @danielhiversen
|
||||
homeassistant/components/tile/* @bachya
|
||||
homeassistant/components/time_date/* @fabaff
|
||||
homeassistant/components/todoist/* @boralyl
|
||||
homeassistant/components/toon/* @frenck
|
||||
homeassistant/components/tplink/* @rytilahti
|
||||
homeassistant/components/traccar/* @ludeeus
|
||||
homeassistant/components/tradfri/* @ggravlingen
|
||||
homeassistant/components/trafikverket_train/* @endor-force
|
||||
homeassistant/components/transmission/* @engrbm87
|
||||
homeassistant/components/tts/* @robbiet480
|
||||
homeassistant/components/twentemilieu/* @frenck
|
||||
homeassistant/components/twilio_call/* @robbiet480
|
||||
|
@ -315,12 +323,14 @@ homeassistant/components/wemo/* @sqldiablo
|
|||
homeassistant/components/withings/* @vangorra
|
||||
homeassistant/components/worldclock/* @fabaff
|
||||
homeassistant/components/wwlln/* @bachya
|
||||
homeassistant/components/xbox_live/* @MartinHjelmare
|
||||
homeassistant/components/xfinity/* @cisasteelersfan
|
||||
homeassistant/components/xiaomi_aqara/* @danielhiversen @syssi
|
||||
homeassistant/components/xiaomi_miio/* @rytilahti @syssi
|
||||
homeassistant/components/xiaomi_tv/* @simse
|
||||
homeassistant/components/xmpp/* @fabaff @flowolf
|
||||
homeassistant/components/yamaha_musiccast/* @jalmeroth
|
||||
homeassistant/components/yandex_transport/* @rishatik92
|
||||
homeassistant/components/yeelight/* @rytilahti @zewelor
|
||||
homeassistant/components/yeelightsunflower/* @lindsaymarkward
|
||||
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
|
||||
:target: https://home-assistant.io/demo/
|
||||
.. |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`
|
||||
pip uninstall -y typing
|
||||
- script: |
|
||||
set -e
|
||||
|
||||
. venv/bin/activate
|
||||
pytest --timeout=9 --durations=10 -qq -o console_output_style=count -p no:sugar tests
|
||||
script/check_dirty
|
||||
|
|
|
@ -233,3 +233,45 @@ stages:
|
|||
fi
|
||||
|
||||
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"
|
||||
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|# bluepy|bluepy|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|# decora_wifi|decora_wifi|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|# pySwitchmate|pySwitchmate|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|# bme680|bme680|g" ${requirement_file}
|
||||
|
||||
if [[ "$(buildArch)" =~ arm ]]; then
|
||||
sed -i "s|# VL53L1X|VL53L1X|g" ${requirement_file}
|
||||
fi
|
||||
done
|
||||
displayName: 'Prepare requirements files for Hass.io'
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
"""Start Home Assistant."""
|
||||
from __future__ import print_function
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import platform
|
||||
|
|
|
@ -22,7 +22,7 @@ from . import (
|
|||
SetupFlow,
|
||||
)
|
||||
|
||||
REQUIREMENTS = ["pyotp==2.2.7"]
|
||||
REQUIREMENTS = ["pyotp==2.3.0"]
|
||||
|
||||
CONF_MESSAGE = "message"
|
||||
|
||||
|
@ -251,8 +251,10 @@ class NotifyAuthModule(MultiFactorAuthModule):
|
|||
_LOGGER.error("Cannot find user %s", user_id)
|
||||
return
|
||||
|
||||
await self.async_notify( # type: ignore
|
||||
code, notify_setting.notify_service, notify_setting.target
|
||||
await self.async_notify(
|
||||
code,
|
||||
notify_setting.notify_service, # type: ignore
|
||||
notify_setting.target,
|
||||
)
|
||||
|
||||
async def async_notify(
|
||||
|
|
|
@ -16,7 +16,7 @@ from . import (
|
|||
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)
|
||||
|
||||
|
@ -215,8 +215,9 @@ class TotpSetupFlow(SetupFlow):
|
|||
|
||||
else:
|
||||
hass = self._auth_module.hass
|
||||
self._ota_secret, self._url, self._image = await hass.async_add_executor_job( # type: ignore
|
||||
_generate_secret_and_qr_code, str(self._user.name)
|
||||
self._ota_secret, self._url, self._image = await hass.async_add_executor_job(
|
||||
_generate_secret_and_qr_code, # type: ignore
|
||||
str(self._user.name),
|
||||
)
|
||||
|
||||
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",
|
||||
"name": "Abode",
|
||||
"documentation": "https://www.home-assistant.io/components/abode",
|
||||
"documentation": "https://www.home-assistant.io/integrations/abode",
|
||||
"requirements": [
|
||||
"abodepy==0.15.0"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "acer_projector",
|
||||
"name": "Acer projector",
|
||||
"documentation": "https://www.home-assistant.io/components/acer_projector",
|
||||
"documentation": "https://www.home-assistant.io/integrations/acer_projector",
|
||||
"requirements": [
|
||||
"pyserial==3.1.1"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "actiontec",
|
||||
"name": "Actiontec",
|
||||
"documentation": "https://www.home-assistant.io/components/actiontec",
|
||||
"documentation": "https://www.home-assistant.io/integrations/actiontec",
|
||||
"requirements": [],
|
||||
"dependencies": [],
|
||||
"codeowners": []
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
},
|
||||
"step": {
|
||||
"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"
|
||||
},
|
||||
"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": {
|
||||
"abort": {
|
||||
"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": {
|
||||
"connection_error": "Tilkobling mislyktes."
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
"verify_ssl": "AdGuard Home u\u017cywa odpowiedniego certyfikatu."
|
||||
},
|
||||
"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"
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
},
|
||||
"step": {
|
||||
"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"
|
||||
},
|
||||
"user": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"domain": "adguard",
|
||||
"name": "AdGuard Home",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/components/adguard",
|
||||
"documentation": "https://www.home-assistant.io/integrations/adguard",
|
||||
"requirements": [
|
||||
"adguardhome==0.2.1"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "ads",
|
||||
"name": "Ads",
|
||||
"documentation": "https://www.home-assistant.io/components/ads",
|
||||
"documentation": "https://www.home-assistant.io/integrations/ads",
|
||||
"requirements": [
|
||||
"pyads==3.0.7"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "aftership",
|
||||
"name": "Aftership",
|
||||
"documentation": "https://www.home-assistant.io/components/aftership",
|
||||
"documentation": "https://www.home-assistant.io/integrations/aftership",
|
||||
"requirements": [
|
||||
"pyaftership==0.1.2"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "air_quality",
|
||||
"name": "Air quality",
|
||||
"documentation": "https://www.home-assistant.io/components/air_quality",
|
||||
"documentation": "https://www.home-assistant.io/integrations/air_quality",
|
||||
"requirements": [],
|
||||
"dependencies": [],
|
||||
"codeowners": []
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "airvisual",
|
||||
"name": "Airvisual",
|
||||
"documentation": "https://www.home-assistant.io/components/airvisual",
|
||||
"documentation": "https://www.home-assistant.io/integrations/airvisual",
|
||||
"requirements": [
|
||||
"pyairvisual==3.0.1"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "aladdin_connect",
|
||||
"name": "Aladdin connect",
|
||||
"documentation": "https://www.home-assistant.io/components/aladdin_connect",
|
||||
"documentation": "https://www.home-assistant.io/integrations/aladdin_connect",
|
||||
"requirements": [
|
||||
"aladdin_connect==0.3"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "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": [],
|
||||
"dependencies": [],
|
||||
"codeowners": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "alarmdecoder",
|
||||
"name": "Alarmdecoder",
|
||||
"documentation": "https://www.home-assistant.io/components/alarmdecoder",
|
||||
"documentation": "https://www.home-assistant.io/integrations/alarmdecoder",
|
||||
"requirements": [
|
||||
"alarmdecoder==1.13.2"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "alarmdotcom",
|
||||
"name": "Alarmdotcom",
|
||||
"documentation": "https://www.home-assistant.io/components/alarmdotcom",
|
||||
"documentation": "https://www.home-assistant.io/integrations/alarmdotcom",
|
||||
"requirements": [
|
||||
"pyalarmdotcom==0.3.2"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "alert",
|
||||
"name": "Alert",
|
||||
"documentation": "https://www.home-assistant.io/components/alert",
|
||||
"documentation": "https://www.home-assistant.io/integrations/alert",
|
||||
"requirements": [],
|
||||
"dependencies": [],
|
||||
"after_dependencies": [
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
"""Alexa capabilities."""
|
||||
from datetime import datetime
|
||||
import logging
|
||||
|
||||
from homeassistant.const import (
|
||||
|
@ -16,6 +15,7 @@ from homeassistant.const import (
|
|||
import homeassistant.components.climate.const as climate
|
||||
from homeassistant.components import light, fan, cover
|
||||
import homeassistant.util.color as color_util
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
from .const import (
|
||||
API_TEMP_UNITS,
|
||||
|
@ -109,7 +109,7 @@ class AlexaCapibility:
|
|||
"name": prop_name,
|
||||
"namespace": self.name(),
|
||||
"value": prop_value,
|
||||
"timeOfSample": datetime.now().strftime(DATE_FORMAT),
|
||||
"timeOfSample": dt_util.utcnow().strftime(DATE_FORMAT),
|
||||
"uncertaintyInMilliseconds": 0,
|
||||
}
|
||||
|
||||
|
@ -326,7 +326,7 @@ class AlexaColorTemperatureController(AlexaCapibility):
|
|||
return color_util.color_temperature_mired_to_kelvin(
|
||||
self.entity.attributes["color_temp"]
|
||||
)
|
||||
return 0
|
||||
return None
|
||||
|
||||
|
||||
class AlexaPercentageController(AlexaCapibility):
|
||||
|
@ -445,7 +445,7 @@ class AlexaTemperatureSensor(AlexaCapibility):
|
|||
unit = self.hass.config.units.temperature_unit
|
||||
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
|
||||
|
||||
try:
|
||||
|
@ -572,6 +572,9 @@ class AlexaThermostatController(AlexaCapibility):
|
|||
|
||||
def get_property(self, name):
|
||||
"""Read and return a property."""
|
||||
if self.entity.state == STATE_UNAVAILABLE:
|
||||
return None
|
||||
|
||||
if name == "thermostatMode":
|
||||
preset = self.entity.attributes.get(climate.ATTR_PRESET_MODE)
|
||||
|
||||
|
|
|
@ -52,6 +52,8 @@ from .capabilities import (
|
|||
|
||||
ENTITY_ADAPTERS = Registry()
|
||||
|
||||
TRANSLATION_TABLE = dict.fromkeys(map(ord, r"}{\/|\"()[]+~!><*%"), None)
|
||||
|
||||
|
||||
class DisplayCategory:
|
||||
"""Possible display categories for Discovery response.
|
||||
|
@ -74,9 +76,18 @@ class DisplayCategory:
|
|||
# Indicates a door.
|
||||
DOOR = "DOOR"
|
||||
|
||||
# Indicates a doorbell.
|
||||
DOOR_BELL = "DOORBELL"
|
||||
|
||||
# Indicates a fan.
|
||||
FAN = "FAN"
|
||||
|
||||
# Indicates light sources or fixtures.
|
||||
LIGHT = "LIGHT"
|
||||
|
||||
# Indicates a microwave oven.
|
||||
MICROWAVE = "MICROWAVE"
|
||||
|
||||
# Indicates an endpoint that detects and reports motion.
|
||||
MOTION_SENSOR = "MOTION_SENSOR"
|
||||
|
||||
|
@ -89,6 +100,9 @@ class DisplayCategory:
|
|||
# order is unimportant. Applies to Scenes
|
||||
SCENE_TRIGGER = "SCENE_TRIGGER"
|
||||
|
||||
# Indicates a security panel.
|
||||
SECURITY_PANEL = "SECURITY_PANEL"
|
||||
|
||||
# Indicates an endpoint that locks.
|
||||
SMARTLOCK = "SMARTLOCK"
|
||||
|
||||
|
@ -134,15 +148,18 @@ class AlexaEntity:
|
|||
|
||||
def friendly_name(self):
|
||||
"""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):
|
||||
"""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):
|
||||
"""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):
|
||||
"""Return a list of display categories."""
|
||||
|
@ -319,7 +336,7 @@ class FanCapabilities(AlexaEntity):
|
|||
|
||||
def default_display_categories(self):
|
||||
"""Return the display categories for this entity."""
|
||||
return [DisplayCategory.OTHER]
|
||||
return [DisplayCategory.FAN]
|
||||
|
||||
def interfaces(self):
|
||||
"""Yield the supported interfaces."""
|
||||
|
@ -389,10 +406,11 @@ class SceneCapabilities(AlexaEntity):
|
|||
"""Class to represent Scene capabilities."""
|
||||
|
||||
def description(self):
|
||||
"""Return the description of the entity."""
|
||||
# Required description as per Amazon Scene docs
|
||||
scene_fmt = "{} (Scene connected via Home Assistant)"
|
||||
return scene_fmt.format(AlexaEntity.description(self))
|
||||
"""Return the Alexa API description."""
|
||||
description = AlexaEntity.description(self)
|
||||
if "scene" not in description.casefold():
|
||||
return f"{description} (Scene)"
|
||||
return description
|
||||
|
||||
def default_display_categories(self):
|
||||
"""Return the display categories for this entity."""
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
"""Support for Alexa skill service end point."""
|
||||
import copy
|
||||
from datetime import datetime
|
||||
import logging
|
||||
import uuid
|
||||
|
||||
import homeassistant.util.dt as dt_util
|
||||
from homeassistant.components import http
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers import template
|
||||
|
@ -89,7 +89,7 @@ class AlexaFlashBriefingView(http.HomeAssistantView):
|
|||
else:
|
||||
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)
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
"""Alexa message handlers."""
|
||||
from datetime import datetime
|
||||
import logging
|
||||
import math
|
||||
|
||||
|
@ -28,6 +27,7 @@ from homeassistant.const import (
|
|||
TEMP_FAHRENHEIT,
|
||||
)
|
||||
import homeassistant.util.color as color_util
|
||||
import homeassistant.util.dt as dt_util
|
||||
from homeassistant.util.decorator import Registry
|
||||
from homeassistant.util.temperature import convert as convert_temperature
|
||||
|
||||
|
@ -275,7 +275,7 @@ async def async_api_activate(hass, config, directive, context):
|
|||
|
||||
payload = {
|
||||
"cause": {"type": Cause.VOICE_INTERACTION},
|
||||
"timestamp": "%sZ" % (datetime.utcnow().isoformat(),),
|
||||
"timestamp": f"{dt_util.utcnow().replace(tzinfo=None).isoformat()}Z",
|
||||
}
|
||||
|
||||
return directive.response(
|
||||
|
@ -299,7 +299,7 @@ async def async_api_deactivate(hass, config, directive, context):
|
|||
|
||||
payload = {
|
||||
"cause": {"type": Cause.VOICE_INTERACTION},
|
||||
"timestamp": "%sZ" % (datetime.utcnow().isoformat(),),
|
||||
"timestamp": f"{dt_util.utcnow().replace(tzinfo=None).isoformat()}Z",
|
||||
}
|
||||
|
||||
return directive.response(
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
{
|
||||
"domain": "alexa",
|
||||
"name": "Alexa",
|
||||
"documentation": "https://www.home-assistant.io/components/alexa",
|
||||
"documentation": "https://www.home-assistant.io/integrations/alexa",
|
||||
"requirements": [],
|
||||
"dependencies": [
|
||||
"http"
|
||||
],
|
||||
"codeowners": []
|
||||
"dependencies": ["http"],
|
||||
"codeowners": ["@home-assistant/cloud"]
|
||||
}
|
||||
|
|
|
@ -131,6 +131,10 @@ async def async_send_add_or_update_message(hass, config, entity_ids):
|
|||
|
||||
for entity_id in entity_ids:
|
||||
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))
|
||||
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:
|
||||
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))
|
||||
endpoints.append({"endpointId": alexa_entity.alexa_id()})
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "alpha_vantage",
|
||||
"name": "Alpha vantage",
|
||||
"documentation": "https://www.home-assistant.io/components/alpha_vantage",
|
||||
"documentation": "https://www.home-assistant.io/integrations/alpha_vantage",
|
||||
"requirements": [
|
||||
"alpha_vantage==2.1.0"
|
||||
],
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"domain": "amazon_polly",
|
||||
"name": "Amazon polly",
|
||||
"documentation": "https://www.home-assistant.io/components/amazon_polly",
|
||||
"documentation": "https://www.home-assistant.io/integrations/amazon_polly",
|
||||
"requirements": [
|
||||
"boto3==1.9.16"
|
||||
"boto3==1.9.233"
|
||||
],
|
||||
"dependencies": [],
|
||||
"codeowners": [
|
||||
|
|
|
@ -33,6 +33,7 @@ SUPPORTED_REGIONS = [
|
|||
"sa-east-1",
|
||||
]
|
||||
|
||||
CONF_ENGINE = "engine"
|
||||
CONF_VOICE = "voice"
|
||||
CONF_OUTPUT_FORMAT = "output_format"
|
||||
CONF_SAMPLE_RATE = "sample_rate"
|
||||
|
@ -101,10 +102,12 @@ SUPPORTED_VOICES = [
|
|||
|
||||
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 = {
|
||||
"mp3": ["8000", "16000", "22050"],
|
||||
"mp3": ["8000", "16000", "22050", "24000"],
|
||||
"ogg_vorbis": ["8000", "16000", "22050"],
|
||||
"pcm": ["8000", "16000"],
|
||||
}
|
||||
|
@ -113,6 +116,7 @@ SUPPORTED_TEXT_TYPES = ["text", "ssml"]
|
|||
|
||||
CONTENT_TYPE_EXTENSIONS = {"audio/mpeg": "mp3", "audio/ogg": "ogg", "audio/pcm": "pcm"}
|
||||
|
||||
DEFAULT_ENGINE = "standard"
|
||||
DEFAULT_VOICE = "Joanna"
|
||||
DEFAULT_OUTPUT_FORMAT = "mp3"
|
||||
DEFAULT_TEXT_TYPE = "text"
|
||||
|
@ -126,6 +130,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||
vol.Inclusive(CONF_SECRET_ACCESS_KEY, 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_ENGINE, default=DEFAULT_ENGINE): vol.In(SUPPORTED_ENGINES),
|
||||
vol.Optional(CONF_OUTPUT_FORMAT, default=DEFAULT_OUTPUT_FORMAT): vol.In(
|
||||
SUPPORTED_OUTPUT_FORMATS
|
||||
),
|
||||
|
@ -225,6 +230,7 @@ class AmazonPollyProvider(Provider):
|
|||
return None, None
|
||||
|
||||
resp = self.client.synthesize_speech(
|
||||
Engine=self.config[CONF_ENGINE],
|
||||
OutputFormat=self.config[CONF_OUTPUT_FORMAT],
|
||||
SampleRate=self.config[CONF_SAMPLE_RATE],
|
||||
Text=message,
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"abort": {
|
||||
"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.",
|
||||
"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": {
|
||||
"default": "Autenticaci\u00f3 exitosa amb Ambi Climate."
|
||||
|
@ -14,7 +14,7 @@
|
|||
},
|
||||
"step": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"abort": {
|
||||
"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.",
|
||||
"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": {
|
||||
"default": "Ambi Climate \ub85c \uc131\uacf5\uc801\uc73c\ub85c \uc778\uc99d\ub418\uc5c8\uc2b5\ub2c8\ub2e4."
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"abort": {
|
||||
"access_token": "Onbekannte Feeler beim gener\u00e9ieren vum Acc\u00e8s Jeton.",
|
||||
"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": {
|
||||
"default": "Erfollegr\u00e4ich mat Ambiclimate authentifiz\u00e9iert."
|
||||
|
|
|
@ -9,12 +9,12 @@
|
|||
"default": "Vellykket autentisering med Ambiclimate"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"step": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"abort": {
|
||||
"access_token": "Nieznany b\u0142\u0105d podczas generowania tokena dost\u0119pu.",
|
||||
"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": {
|
||||
"default": "Pomy\u015blnie uwierzytelniono z Ambiclimate"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"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.",
|
||||
"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": {
|
||||
"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": {
|
||||
"access_token": "Neznana napaka pri ustvarjanju \u017eetona za dostop.",
|
||||
"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": {
|
||||
"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"
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "\u5df2\u6210\u529f\u8a8d\u8b49 Ambiclimate \u88dd\u7f6e\u3002"
|
||||
"default": "\u5df2\u6210\u529f\u8a8d\u8b49 Ambiclimate \u8a2d\u5099\u3002"
|
||||
},
|
||||
"error": {
|
||||
"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",
|
||||
"name": "Ambiclimate",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/components/ambiclimate",
|
||||
"documentation": "https://www.home-assistant.io/integrations/ambiclimate",
|
||||
"requirements": [
|
||||
"ambiclimate==0.2.1"
|
||||
],
|
||||
|
|
|
@ -14,6 +14,6 @@
|
|||
"title": "Completa tu informaci\u00f3n"
|
||||
}
|
||||
},
|
||||
"title": "Ambient PWS"
|
||||
"title": "Ambiente PWS"
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"config": {
|
||||
"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",
|
||||
"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": {
|
||||
"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",
|
||||
"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": {
|
||||
"user": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"domain": "ambient_station",
|
||||
"name": "Ambient station",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/components/ambient_station",
|
||||
"documentation": "https://www.home-assistant.io/integrations/ambient_station",
|
||||
"requirements": [
|
||||
"aioambient==0.3.2"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "amcrest",
|
||||
"name": "Amcrest",
|
||||
"documentation": "https://www.home-assistant.io/components/amcrest",
|
||||
"documentation": "https://www.home-assistant.io/integrations/amcrest",
|
||||
"requirements": [
|
||||
"amcrest==1.5.3"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "ampio",
|
||||
"name": "Ampio",
|
||||
"documentation": "https://www.home-assistant.io/components/ampio",
|
||||
"documentation": "https://www.home-assistant.io/integrations/ampio",
|
||||
"requirements": [
|
||||
"asmog==0.0.6"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "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": [
|
||||
"pydroid-ipcam==0.8"
|
||||
],
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
{
|
||||
"domain": "androidtv",
|
||||
"name": "Androidtv",
|
||||
"documentation": "https://www.home-assistant.io/components/androidtv",
|
||||
"documentation": "https://www.home-assistant.io/integrations/androidtv",
|
||||
"requirements": [
|
||||
"androidtv==0.0.27"
|
||||
"adb-shell==0.0.4",
|
||||
"androidtv==0.0.30"
|
||||
],
|
||||
"dependencies": [],
|
||||
"codeowners": ["@JeffLIrion"]
|
||||
|
|
|
@ -3,6 +3,12 @@ import functools
|
|||
import logging
|
||||
import voluptuous as vol
|
||||
|
||||
from adb_shell.exceptions import (
|
||||
InvalidChecksumError,
|
||||
InvalidCommandError,
|
||||
InvalidResponseError,
|
||||
TcpTimeoutException,
|
||||
)
|
||||
from androidtv import setup, ha_state_detection_rules_validator
|
||||
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."""
|
||||
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:
|
||||
# Use "python-adb" (Python ADB implementation)
|
||||
adb_log = "using Python ADB implementation "
|
||||
# Use "adb_shell" (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:
|
||||
aftv = setup(
|
||||
host,
|
||||
|
@ -135,7 +145,6 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||
device_class=config[CONF_DEVICE_CLASS],
|
||||
state_detection_rules=config[CONF_STATE_DETECTION_RULES],
|
||||
)
|
||||
adb_log += "with adbkey='{0}'".format(config[CONF_ADBKEY])
|
||||
|
||||
else:
|
||||
aftv = setup(
|
||||
|
@ -143,7 +152,6 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||
device_class=config[CONF_DEVICE_CLASS],
|
||||
state_detection_rules=config[CONF_STATE_DETECTION_RULES],
|
||||
)
|
||||
adb_log += "without adbkey authentication"
|
||||
else:
|
||||
# Use "pure-python-adb" (communicate with ADB server)
|
||||
aftv = setup(
|
||||
|
@ -153,9 +161,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||
device_class=config[CONF_DEVICE_CLASS],
|
||||
state_detection_rules=config[CONF_STATE_DETECTION_RULES],
|
||||
)
|
||||
adb_log = "using ADB server at {0}:{1}".format(
|
||||
config[CONF_ADB_SERVER_IP], config[CONF_ADB_SERVER_PORT]
|
||||
)
|
||||
adb_log = f"using ADB server at {config[CONF_ADB_SERVER_IP]}:{config[CONF_ADB_SERVER_PORT]}"
|
||||
|
||||
if not aftv.available:
|
||||
# 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",
|
||||
err,
|
||||
)
|
||||
self.aftv.adb.close()
|
||||
self._available = False # pylint: disable=protected-access
|
||||
return None
|
||||
|
||||
|
@ -278,14 +285,7 @@ class ADBDevice(MediaPlayerDevice):
|
|||
|
||||
# ADB exceptions to catch
|
||||
if not self.aftv.adb_server_ip:
|
||||
# Using "python-adb" (Python ADB implementation)
|
||||
from adb.adb_protocol import (
|
||||
InvalidChecksumError,
|
||||
InvalidCommandError,
|
||||
InvalidResponseError,
|
||||
)
|
||||
from adb.usb_exceptions import TcpTimeoutException
|
||||
|
||||
# Using "adb_shell" (Python ADB implementation)
|
||||
self.exceptions = (
|
||||
AttributeError,
|
||||
BrokenPipeError,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "anel_pwrctrl",
|
||||
"name": "Anel pwrctrl",
|
||||
"documentation": "https://www.home-assistant.io/components/anel_pwrctrl",
|
||||
"documentation": "https://www.home-assistant.io/integrations/anel_pwrctrl",
|
||||
"requirements": [
|
||||
"anel_pwrctrl-homeassistant==0.0.1.dev2"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "anthemav",
|
||||
"name": "Anthemav",
|
||||
"documentation": "https://www.home-assistant.io/components/anthemav",
|
||||
"documentation": "https://www.home-assistant.io/integrations/anthemav",
|
||||
"requirements": [
|
||||
"anthemav==1.1.10"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "apache_kafka",
|
||||
"name": "Apache Kafka",
|
||||
"documentation": "https://www.home-assistant.io/components/apache_kafka",
|
||||
"documentation": "https://www.home-assistant.io/integrations/apache_kafka",
|
||||
"requirements": [
|
||||
"aiokafka==0.5.1"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "apcupsd",
|
||||
"name": "Apcupsd",
|
||||
"documentation": "https://www.home-assistant.io/components/apcupsd",
|
||||
"documentation": "https://www.home-assistant.io/integrations/apcupsd",
|
||||
"requirements": [
|
||||
"apcaccess==0.0.13"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "api",
|
||||
"name": "Home Assistant API",
|
||||
"documentation": "https://www.home-assistant.io/components/api",
|
||||
"documentation": "https://www.home-assistant.io/integrations/api",
|
||||
"requirements": [],
|
||||
"dependencies": [
|
||||
"http"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "apns",
|
||||
"name": "Apns",
|
||||
"documentation": "https://www.home-assistant.io/components/apns",
|
||||
"documentation": "https://www.home-assistant.io/integrations/apns",
|
||||
"requirements": [
|
||||
"apns2==0.3.0"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "apple_tv",
|
||||
"name": "Apple tv",
|
||||
"documentation": "https://www.home-assistant.io/components/apple_tv",
|
||||
"documentation": "https://www.home-assistant.io/integrations/apple_tv",
|
||||
"requirements": [
|
||||
"pyatv==0.3.13"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "aprs",
|
||||
"name": "APRS",
|
||||
"documentation": "https://www.home-assistant.io/components/aprs",
|
||||
"documentation": "https://www.home-assistant.io/integrations/aprs",
|
||||
"dependencies": [],
|
||||
"codeowners": ["@PhilRW"],
|
||||
"requirements": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "aqualogic",
|
||||
"name": "Aqualogic",
|
||||
"documentation": "https://www.home-assistant.io/components/aqualogic",
|
||||
"documentation": "https://www.home-assistant.io/integrations/aqualogic",
|
||||
"requirements": [
|
||||
"aqualogic==1.0"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "aquostv",
|
||||
"name": "Aquostv",
|
||||
"documentation": "https://www.home-assistant.io/components/aquostv",
|
||||
"documentation": "https://www.home-assistant.io/integrations/aquostv",
|
||||
"requirements": [
|
||||
"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",
|
||||
"name": "Arcam FMJ Receiver control",
|
||||
"config_flow": false,
|
||||
"documentation": "https://www.home-assistant.io/components/arcam_fmj",
|
||||
"documentation": "https://www.home-assistant.io/integrations/arcam_fmj",
|
||||
"requirements": [
|
||||
"arcam-fmj==0.4.3"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "arduino",
|
||||
"name": "Arduino",
|
||||
"documentation": "https://www.home-assistant.io/components/arduino",
|
||||
"documentation": "https://www.home-assistant.io/integrations/arduino",
|
||||
"requirements": [
|
||||
"PyMata==2.14"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "arest",
|
||||
"name": "Arest",
|
||||
"documentation": "https://www.home-assistant.io/components/arest",
|
||||
"documentation": "https://www.home-assistant.io/integrations/arest",
|
||||
"requirements": [],
|
||||
"dependencies": [],
|
||||
"codeowners": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "arlo",
|
||||
"name": "Arlo",
|
||||
"documentation": "https://www.home-assistant.io/components/arlo",
|
||||
"documentation": "https://www.home-assistant.io/integrations/arlo",
|
||||
"requirements": [
|
||||
"pyarlo==0.2.3"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "aruba",
|
||||
"name": "Aruba",
|
||||
"documentation": "https://www.home-assistant.io/components/aruba",
|
||||
"documentation": "https://www.home-assistant.io/integrations/aruba",
|
||||
"requirements": [
|
||||
"pexpect==4.6.0"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "arwn",
|
||||
"name": "Arwn",
|
||||
"documentation": "https://www.home-assistant.io/components/arwn",
|
||||
"documentation": "https://www.home-assistant.io/integrations/arwn",
|
||||
"requirements": [],
|
||||
"dependencies": [
|
||||
"mqtt"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "asterisk_cdr",
|
||||
"name": "Asterisk cdr",
|
||||
"documentation": "https://www.home-assistant.io/components/asterisk_cdr",
|
||||
"documentation": "https://www.home-assistant.io/integrations/asterisk_cdr",
|
||||
"requirements": [],
|
||||
"dependencies": [
|
||||
"asterisk_mbox"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "asterisk_mbox",
|
||||
"name": "Asterisk mbox",
|
||||
"documentation": "https://www.home-assistant.io/components/asterisk_mbox",
|
||||
"documentation": "https://www.home-assistant.io/integrations/asterisk_mbox",
|
||||
"requirements": [
|
||||
"asterisk_mbox==0.5.0"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "asuswrt",
|
||||
"name": "Asuswrt",
|
||||
"documentation": "https://www.home-assistant.io/components/asuswrt",
|
||||
"documentation": "https://www.home-assistant.io/integrations/asuswrt",
|
||||
"requirements": [
|
||||
"aioasuswrt==1.1.21"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "atome",
|
||||
"name": "Atome",
|
||||
"documentation": "https://www.home-assistant.io/components/atome",
|
||||
"documentation": "https://www.home-assistant.io/integrations/atome",
|
||||
"dependencies": [],
|
||||
"codeowners": ["@baqs"],
|
||||
"requirements": ["pyatome==0.1.1"]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "august",
|
||||
"name": "August",
|
||||
"documentation": "https://www.home-assistant.io/components/august",
|
||||
"documentation": "https://www.home-assistant.io/integrations/august",
|
||||
"requirements": [
|
||||
"py-august==0.7.0"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"domain": "aurora",
|
||||
"name": "Aurora",
|
||||
"documentation": "https://www.home-assistant.io/components/aurora",
|
||||
"documentation": "https://www.home-assistant.io/integrations/aurora",
|
||||
"requirements": [],
|
||||
"dependencies": [],
|
||||
"codeowners": []
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue