mirror of
https://github.com/home-assistant/core.git
synced 2026-05-05 20:34:52 +02:00
Compare commits
67 Commits
2021.3.0b1
...
2021.3.0b7
| Author | SHA1 | Date | |
|---|---|---|---|
| da2c7dc743 | |||
| f74b88a29c | |||
| eb981fb007 | |||
| 39b9ad0ca0 | |||
| ebb9008c27 | |||
| 4b9c148989 | |||
| b8bc0a7fe9 | |||
| 7a6edf9725 | |||
| 6c5c3233f1 | |||
| d7f4416421 | |||
| 23049955f8 | |||
| d88ee3bf4a | |||
| dddf28b138 | |||
| 13516aa90c | |||
| d81155327a | |||
| 3b459cd59a | |||
| be4de15a10 | |||
| ab5173c4cf | |||
| ec95474604 | |||
| 3117e47e1b | |||
| bd29d82728 | |||
| 88d29bcf20 | |||
| 3ebe31e172 | |||
| 8cf0fcc7f3 | |||
| 118c996a9f | |||
| c411f0dcdc | |||
| 30ccd33e7f | |||
| acdad8a28c | |||
| c28903103d | |||
| b2a3c35e3a | |||
| ea65f612cc | |||
| 819738a15c | |||
| f192b3c1e5 | |||
| b9edd0d7ad | |||
| 4907c12964 | |||
| 62e224ecb0 | |||
| 0e951f288b | |||
| aa9b445856 | |||
| 8513250628 | |||
| 6887474ddc | |||
| e93868f85b | |||
| db098d90dd | |||
| 552da0327e | |||
| 104d5c510f | |||
| d9d979d50e | |||
| e65b2231ba | |||
| 2b0f6716b3 | |||
| dd4f8bf4b4 | |||
| 505ca07c4e | |||
| 807bf15ff3 | |||
| cdf7372fd8 | |||
| 0969cc985b | |||
| 5e2bafca56 | |||
| 1d1be8ad1a | |||
| d55f0df09a | |||
| 96e118ccfe | |||
| 255b6faa7f | |||
| 4cd40d0f9f | |||
| c12769213d | |||
| 6a850a1481 | |||
| 101897c260 | |||
| 6cdd6c3f44 | |||
| 2c30579a11 | |||
| ae0d301fd9 | |||
| a7a66e8ddb | |||
| 5228bbd43c | |||
| 35bce434cc |
@@ -14,7 +14,7 @@ schedules:
|
||||
always: true
|
||||
variables:
|
||||
- name: versionBuilder
|
||||
value: '2020.11.0'
|
||||
value: '2021.02.0'
|
||||
- group: docker
|
||||
- group: github
|
||||
- group: twine
|
||||
@@ -114,10 +114,12 @@ stages:
|
||||
pool:
|
||||
vmImage: 'ubuntu-latest'
|
||||
strategy:
|
||||
maxParallel: 15
|
||||
maxParallel: 17
|
||||
matrix:
|
||||
qemux86-64:
|
||||
buildMachine: 'qemux86-64'
|
||||
generic-x86-64:
|
||||
buildMachine: 'generic-x86-64'
|
||||
intel-nuc:
|
||||
buildMachine: 'intel-nuc'
|
||||
qemux86:
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Kan geen verbinding maken",
|
||||
"invalid_api_key": "API-sleutel",
|
||||
"requests_exceeded": "Het toegestane aantal verzoeken aan de Accuweather API is overschreden. U moet wachten of de API-sleutel wijzigen."
|
||||
},
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Standort ist bereits konfiguriert"
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API-Schl\u00fcssel",
|
||||
"latitude": "Breitengrad",
|
||||
"longitude": "L\u00e4ngengrad"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,9 @@
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Servidor d'Airly accessible"
|
||||
"can_reach_server": "Servidor d'Airly accessible",
|
||||
"requests_per_day": "Sol\u00b7licituds per dia permeses",
|
||||
"requests_remaining": "Sol\u00b7licituds permeses restants"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,9 @@
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Reach Airly server"
|
||||
"can_reach_server": "Reach Airly server",
|
||||
"requests_per_day": "Allowed requests per day",
|
||||
"requests_remaining": "Remaining allowed requests"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,9 @@
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u00dchendus Airly serveriga"
|
||||
"can_reach_server": "\u00dchendus Airly serveriga",
|
||||
"requests_per_day": "Lubatud taotlusi p\u00e4evas",
|
||||
"requests_remaining": "J\u00e4\u00e4nud lubatud taotlusi"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,9 @@
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 Airly"
|
||||
"can_reach_server": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 Airly",
|
||||
"requests_per_day": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0434\u0435\u043d\u044c",
|
||||
"requests_remaining": "\u0421\u0447\u0451\u0442\u0447\u0438\u043a \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,9 @@
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u9023\u7dda Airly \u4f3a\u670d\u5668"
|
||||
"can_reach_server": "\u9023\u7dda Airly \u4f3a\u670d\u5668",
|
||||
"requests_per_day": "\u6bcf\u65e5\u5141\u8a31\u7684\u8acb\u6c42",
|
||||
"requests_remaining": "\u5176\u9918\u5141\u8a31\u7684\u8acb\u6c42"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,8 @@
|
||||
"error": {
|
||||
"cannot_connect": "Feeler beim verbannen",
|
||||
"general_error": "Onerwaarte Feeler",
|
||||
"invalid_api_key": "Ong\u00ebltegen API Schl\u00ebssel"
|
||||
"invalid_api_key": "Ong\u00ebltegen API Schl\u00ebssel",
|
||||
"location_not_found": "Standuert net fonnt."
|
||||
},
|
||||
"step": {
|
||||
"geography": {
|
||||
@@ -19,6 +20,12 @@
|
||||
"description": "Benotz Airvisual cloud API fir eng geografescher Lag z'iwwerwaachen.",
|
||||
"title": "Geografie ariichten"
|
||||
},
|
||||
"geography_by_name": {
|
||||
"data": {
|
||||
"city": "Stad",
|
||||
"country": "Land"
|
||||
}
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "Host",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"domain": "alarmdecoder",
|
||||
"name": "AlarmDecoder",
|
||||
"documentation": "https://www.home-assistant.io/integrations/alarmdecoder",
|
||||
"requirements": ["adext==0.3"],
|
||||
"requirements": ["adext==0.4.1"],
|
||||
"codeowners": ["@ajschmidt8"],
|
||||
"config_flow": true
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "AlarmDecoder-apparaat is al geconfigureerd."
|
||||
"already_configured": "Apparaat is al geconfigureerd"
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "Succesvol verbonden met AlarmDecoder."
|
||||
|
||||
@@ -73,10 +73,7 @@ async def async_enable_proactive_mode(hass, smart_home_config):
|
||||
if not should_report and interface.properties_proactively_reported():
|
||||
should_report = True
|
||||
|
||||
if (
|
||||
interface.name() == "Alexa.DoorbellEventSource"
|
||||
and new_state.state == STATE_ON
|
||||
):
|
||||
if interface.name() == "Alexa.DoorbellEventSource":
|
||||
should_doorbell = True
|
||||
break
|
||||
|
||||
@@ -84,27 +81,22 @@ async def async_enable_proactive_mode(hass, smart_home_config):
|
||||
return
|
||||
|
||||
if should_doorbell:
|
||||
should_report = False
|
||||
if new_state.state == STATE_ON:
|
||||
await async_send_doorbell_event_message(
|
||||
hass, smart_home_config, alexa_changed_entity
|
||||
)
|
||||
return
|
||||
|
||||
if should_report:
|
||||
alexa_properties = list(alexa_changed_entity.serialize_properties())
|
||||
else:
|
||||
alexa_properties = None
|
||||
alexa_properties = list(alexa_changed_entity.serialize_properties())
|
||||
|
||||
if not checker.async_is_significant_change(
|
||||
new_state, extra_arg=alexa_properties
|
||||
):
|
||||
return
|
||||
|
||||
if should_report:
|
||||
await async_send_changereport_message(
|
||||
hass, smart_home_config, alexa_changed_entity, alexa_properties
|
||||
)
|
||||
|
||||
elif should_doorbell:
|
||||
await async_send_doorbell_event_message(
|
||||
hass, smart_home_config, alexa_changed_entity
|
||||
)
|
||||
await async_send_changereport_message(
|
||||
hass, smart_home_config, alexa_changed_entity, alexa_properties
|
||||
)
|
||||
|
||||
return hass.helpers.event.async_track_state_change(
|
||||
MATCH_ALL, async_entity_state_listener
|
||||
@@ -246,7 +238,7 @@ async def async_send_delete_message(hass, config, entity_ids):
|
||||
async def async_send_doorbell_event_message(hass, config, alexa_entity):
|
||||
"""Send a DoorbellPress event message for an Alexa entity.
|
||||
|
||||
https://developer.amazon.com/docs/smarthome/send-events-to-the-alexa-event-gateway.html
|
||||
https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-doorbelleventsource.html
|
||||
"""
|
||||
token = await config.async_get_access_token()
|
||||
|
||||
|
||||
@@ -178,7 +178,6 @@ class APIDiscoveryView(HomeAssistantView):
|
||||
requires_auth = False
|
||||
url = URL_API_DISCOVERY_INFO
|
||||
name = "api:discovery"
|
||||
cors_allowed = True
|
||||
|
||||
async def get(self, request):
|
||||
"""Get discovery information."""
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Apparaat is al geconfigureerd",
|
||||
"already_in_progress": "De configuratiestroom is al aan de gang",
|
||||
"cannot_connect": "Kan geen verbinding maken"
|
||||
},
|
||||
"error": {
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Verbindung fehlgeschlagen",
|
||||
"invalid_host": "Ung\u00fcltiger Hostname oder IP-Adresse",
|
||||
"unknown": "Unerwarteter Fehler"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"mode": "Modus",
|
||||
"name": "Name",
|
||||
"password": "Passwort",
|
||||
"port": "Port",
|
||||
"username": "Benutzername"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
"error": {
|
||||
"cannot_connect": "Kan geen verbinding maken",
|
||||
"invalid_host": "Ongeldige hostnaam of IP-adres",
|
||||
"ssh_not_file": "SSH-sleutelbestand niet gevonden",
|
||||
"unknown": "Onverwachte fout"
|
||||
},
|
||||
"step": {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Account al geconfigureerd"
|
||||
"already_configured": "Account al geconfigureerd",
|
||||
"reauth_successful": "Herauthenticatie was succesvol"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Verbinding mislukt, probeer het opnieuw",
|
||||
|
||||
@@ -6,23 +6,23 @@
|
||||
"reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f"
|
||||
},
|
||||
"error": {
|
||||
"invalid_access_token": "\u5b58\u53d6\u5bc6\u9470\u7121\u6548",
|
||||
"invalid_access_token": "\u5b58\u53d6\u6b0a\u6756\u7121\u6548",
|
||||
"unknown": "\u672a\u9810\u671f\u932f\u8aa4"
|
||||
},
|
||||
"step": {
|
||||
"reauth": {
|
||||
"data": {
|
||||
"access_token": "\u5b58\u53d6\u5bc6\u9470",
|
||||
"access_token": "\u5b58\u53d6\u6b0a\u6756",
|
||||
"email": "\u96fb\u5b50\u90f5\u4ef6"
|
||||
},
|
||||
"description": "\u8acb\u91cd\u65b0\u8f38\u5165 Awair \u958b\u767c\u8005\u5b58\u53d6\u5bc6\u9470\u3002"
|
||||
"description": "\u8acb\u91cd\u65b0\u8f38\u5165 Awair \u958b\u767c\u8005\u5b58\u53d6\u6b0a\u6756\u3002"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"access_token": "\u5b58\u53d6\u5bc6\u9470",
|
||||
"access_token": "\u5b58\u53d6\u6b0a\u6756",
|
||||
"email": "\u96fb\u5b50\u90f5\u4ef6"
|
||||
},
|
||||
"description": "\u5fc5\u9808\u5148\u8a3b\u518a Awair \u958b\u767c\u8005\u5b58\u53d6\u5bc6\u9470\uff1ahttps://developer.getawair.com/onboard/login"
|
||||
"description": "\u5fc5\u9808\u5148\u8a3b\u518a Awair \u958b\u767c\u8005\u5b58\u53d6\u6b0a\u6756\uff1ahttps://developer.getawair.com/onboard/login"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Account is al geconfigureerd"
|
||||
"already_configured": "Account is al geconfigureerd",
|
||||
"reauth_successful": "Herauthenticatie was succesvol"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Kan geen verbinding maken",
|
||||
"invalid_auth": "Ongeldige authenticatie"
|
||||
"invalid_auth": "Ongeldige authenticatie",
|
||||
"project_error": "Kon geen projectinformatie ophalen."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"organization": "Organisatie",
|
||||
"project": "Project"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
"already_configured": "Apparaat is al geconfigureerd"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Kan geen verbinding maken",
|
||||
"invalid_access_token": "Ongeldig toegangstoken",
|
||||
"invalid_auth": "Ongeldige authenticatie",
|
||||
"unknown": "Onverwachte fout"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u9023\u7dda\u5931\u6557",
|
||||
"invalid_access_token": "\u5b58\u53d6\u5bc6\u9470\u7121\u6548",
|
||||
"invalid_access_token": "\u5b58\u53d6\u6b0a\u6756\u7121\u6548",
|
||||
"invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548",
|
||||
"unknown": "\u672a\u9810\u671f\u932f\u8aa4"
|
||||
},
|
||||
|
||||
@@ -122,7 +122,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
||||
|
||||
def _update_all() -> None:
|
||||
"""Update all BMW accounts."""
|
||||
for entry in hass.data[DOMAIN][DATA_ENTRIES].values():
|
||||
for entry in hass.data[DOMAIN][DATA_ENTRIES].copy().values():
|
||||
entry[CONF_ACCOUNT].update()
|
||||
|
||||
# Add update listener for config entry changes (options)
|
||||
|
||||
@@ -42,12 +42,12 @@ class BMWDeviceTracker(BMWConnectedDriveBaseEntity, TrackerEntity):
|
||||
@property
|
||||
def latitude(self):
|
||||
"""Return latitude value of the device."""
|
||||
return self._location[0]
|
||||
return self._location[0] if self._location else None
|
||||
|
||||
@property
|
||||
def longitude(self):
|
||||
"""Return longitude value of the device."""
|
||||
return self._location[1]
|
||||
return self._location[1] if self._location else None
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"domain": "bmw_connected_drive",
|
||||
"name": "BMW Connected Drive",
|
||||
"documentation": "https://www.home-assistant.io/integrations/bmw_connected_drive",
|
||||
"requirements": ["bimmer_connected==0.7.14"],
|
||||
"requirements": ["bimmer_connected==0.7.15"],
|
||||
"codeowners": ["@gerard33", "@rikroe"],
|
||||
"config_flow": true
|
||||
}
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
"old_firmware": "Hi ha un programari antic i no compatible al dispositiu Bond - actualitza'l abans de continuar",
|
||||
"unknown": "Error inesperat"
|
||||
},
|
||||
"flow_title": "Bond: {bond_id} ({host})",
|
||||
"flow_title": "Bond: {name} ({host})",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"access_token": "Token d'acc\u00e9s"
|
||||
},
|
||||
"description": "Vols configurar {bond_id}?"
|
||||
"description": "Vols configurar {name}?"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"data": {
|
||||
"access_token": "P\u0159\u00edstupov\u00fd token"
|
||||
},
|
||||
"description": "Chcete nastavit {bond_id} ?"
|
||||
"description": "Chcete nastavit {name}?"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
"old_firmware": "Bondi seadme ei toeta vana p\u00fcsivara - uuenda enne j\u00e4tkamist",
|
||||
"unknown": "Tundmatu viga"
|
||||
},
|
||||
"flow_title": "Bond: {bond_id} ( {host} )",
|
||||
"flow_title": "Bond: {name} ( {host} )",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"access_token": "Juurdep\u00e4\u00e4sut\u00f5end"
|
||||
},
|
||||
"description": "Kas soovid seadistada teenuse {bond_id} ?"
|
||||
"description": "Kas soovid seadistada teenust {name} ?"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
"old_firmware": "Ancien micrologiciel non pris en charge sur l'appareil Bond - veuillez mettre \u00e0 niveau avant de continuer",
|
||||
"unknown": "Erreur inattendue"
|
||||
},
|
||||
"flow_title": "Bond : {bond_id} ({h\u00f4te})",
|
||||
"flow_title": "Lien : {name} ({host})",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"access_token": "Jeton d'acc\u00e8s"
|
||||
},
|
||||
"description": "Voulez-vous configurer {bond_id} ?"
|
||||
"description": "Voulez-vous configurer {name}?"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
"old_firmware": "Firmware precedente non supportato sul dispositivo Bond - si prega di aggiornare prima di continuare",
|
||||
"unknown": "Errore imprevisto"
|
||||
},
|
||||
"flow_title": "Bond: {bond_id} ({host})",
|
||||
"flow_title": "Bond: {name} ({host})",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"access_token": "Token di accesso"
|
||||
},
|
||||
"description": "Vuoi configurare {bond_id}?"
|
||||
"description": "Vuoi configurare {name}?"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -10,8 +10,14 @@
|
||||
},
|
||||
"flow_title": "Bond: {bond_id} ({host})",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"access_token": "Toegangstoken"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"access_token": "Toegangstoken",
|
||||
"host": "Host"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
"old_firmware": "Gammel fastvare som ikke st\u00f8ttes p\u00e5 Bond-enheten \u2013 vennligst oppgrader f\u00f8r du fortsetter",
|
||||
"unknown": "Uventet feil"
|
||||
},
|
||||
"flow_title": "",
|
||||
"flow_title": "Obligasjon: {name} ({host})",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"access_token": "Tilgangstoken"
|
||||
},
|
||||
"description": "Vil du konfigurere {bond_id}?"
|
||||
"description": "Vil du konfigurere {name}?"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
"old_firmware": "Stare, nieobs\u0142ugiwane oprogramowanie na urz\u0105dzeniu Bond - zaktualizuj przed kontynuowaniem",
|
||||
"unknown": "Nieoczekiwany b\u0142\u0105d"
|
||||
},
|
||||
"flow_title": "Bond: {bond_id} ({host})",
|
||||
"flow_title": "Bond: {name} ({host})",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"access_token": "Token dost\u0119pu"
|
||||
},
|
||||
"description": "Czy chcesz skonfigurowa\u0107 {bond_id}?"
|
||||
"description": "Czy chcesz skonfigurowa\u0107 {name}?"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
"old_firmware": "\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0430 \u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439.",
|
||||
"unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430."
|
||||
},
|
||||
"flow_title": "Bond {bond_id} ({host})",
|
||||
"flow_title": "Bond: {name} ({host})",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"access_token": "\u0422\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430"
|
||||
},
|
||||
"description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c {bond_id}?"
|
||||
"description": "\u0425\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c {name}?"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -9,17 +9,17 @@
|
||||
"old_firmware": "Bond \u88dd\u7f6e\u4f7f\u7528\u4e0d\u652f\u63f4\u7684\u820a\u7248\u672c\u97cc\u9ad4 - \u8acb\u66f4\u65b0\u5f8c\u518d\u7e7c\u7e8c",
|
||||
"unknown": "\u672a\u9810\u671f\u932f\u8aa4"
|
||||
},
|
||||
"flow_title": "Bond\uff1a{bond_id} ({host})",
|
||||
"flow_title": "Bond\uff1a{name} ({host})",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"access_token": "\u5b58\u53d6\u5bc6\u9470"
|
||||
"access_token": "\u5b58\u53d6\u6b0a\u6756"
|
||||
},
|
||||
"description": "\u662f\u5426\u8981\u8a2d\u5b9a {bond_id}\uff1f"
|
||||
"description": "\u662f\u5426\u8981\u8a2d\u5b9a {name}\uff1f"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"access_token": "\u5b58\u53d6\u5bc6\u9470",
|
||||
"access_token": "\u5b58\u53d6\u6b0a\u6756",
|
||||
"host": "\u4e3b\u6a5f\u7aef"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Apparaat is al geconfigureerd",
|
||||
"already_in_progress": "De configuratiestroom is al aan de gang",
|
||||
"cannot_connect": "Kon niet verbinden",
|
||||
"invalid_host": "Ongeldige hostnaam of IP-adres",
|
||||
"not_supported": "Apparaat wordt niet ondersteund",
|
||||
@@ -17,6 +18,15 @@
|
||||
"finish": {
|
||||
"data": {
|
||||
"name": "Naam"
|
||||
},
|
||||
"title": "Kies een naam voor het apparaat"
|
||||
},
|
||||
"reset": {
|
||||
"title": "Ontgrendel het apparaat"
|
||||
},
|
||||
"unlock": {
|
||||
"data": {
|
||||
"unlock": "Ja, doe het."
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"name": "Google Cast",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/cast",
|
||||
"requirements": ["pychromecast==8.1.0"],
|
||||
"requirements": ["pychromecast==8.1.2"],
|
||||
"after_dependencies": ["cloud", "http", "media_source", "plex", "tts", "zeroconf"],
|
||||
"zeroconf": ["_googlecast._tcp.local."],
|
||||
"codeowners": ["@emontnemery"]
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"title": "Update ClimaCell opties"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Ha fallat la connexi\u00f3",
|
||||
"invalid_api_key": "Clau API inv\u00e0lida",
|
||||
"rate_limited": "Freq\u00fc\u00e8ncia limitada temporalment, torna-ho a provar m\u00e9s tard.",
|
||||
"unknown": "Error inesperat"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "Clau API",
|
||||
"latitude": "Latitud",
|
||||
"longitude": "Longitud",
|
||||
"name": "Nom"
|
||||
},
|
||||
"description": "Si no es proporcionen la Latitud i Longitud, s'utilitzaran els valors per defecte de la configuraci\u00f3 de Home Assistant. Es crear\u00e0 una entitat per a cada tipus de previsi\u00f3, per\u00f2 nom\u00e9s s'habilitaran les que seleccionis."
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "Tipus de previsi\u00f3",
|
||||
"timestep": "Minuts entre previsions NowCast"
|
||||
},
|
||||
"description": "Si decideixes activar l'entitat de predicci\u00f3 \"nowcast\", podr\u00e0s configurar l'interval en minuts entre cada previsi\u00f3. El nombre de previsions proporcionades dep\u00e8n d'aquest interval de minuts.",
|
||||
"title": "Actualitzaci\u00f3 de les opcions de ClimaCell"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit",
|
||||
"invalid_api_key": "Neplatn\u00fd kl\u00ed\u010d API",
|
||||
"unknown": "Neo\u010dek\u00e1van\u00e1 chyba"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "Kl\u00ed\u010d API",
|
||||
"latitude": "Zem\u011bpisn\u00e1 \u0161\u00ed\u0159ka",
|
||||
"longitude": "Zem\u011bpisn\u00e1 d\u00e9lka",
|
||||
"name": "Jm\u00e9no"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Verbindung fehlgeschlagen",
|
||||
"invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel",
|
||||
"unknown": "Unerwarteter Fehler"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API-Schl\u00fcssel",
|
||||
"latitude": "Breitengrad",
|
||||
"longitude": "L\u00e4ngengrad",
|
||||
"name": "Name"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Failed to connect",
|
||||
"invalid_api_key": "Invalid API key",
|
||||
"rate_limited": "Currently rate limited, please try again later.",
|
||||
"unknown": "Unexpected error"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API Key",
|
||||
"latitude": "Latitude",
|
||||
"longitude": "Longitude",
|
||||
"name": "Name"
|
||||
},
|
||||
"description": "If Latitude and Longitude are not provided, the default values in the Home Assistant configuration will be used. An entity will be created for each forecast type but only the ones you select will be enabled by default."
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "Forecast Type(s)",
|
||||
"timestep": "Min. Between NowCast Forecasts"
|
||||
},
|
||||
"description": "If you choose to enable the `nowcast` forecast entity, you can configure the number of minutes between each forecast. The number of forecasts provided depends on the number of minutes chosen between forecasts.",
|
||||
"title": "Update ClimaCell Options"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"rate_limited": "Actualmente la tarifa est\u00e1 limitada, por favor int\u00e9ntelo m\u00e1s tarde."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"latitude": "Latitud",
|
||||
"longitude": "Longitud",
|
||||
"name": "Nombre"
|
||||
},
|
||||
"description": "Si no se proporcionan Latitud y Longitud , se utilizar\u00e1n los valores predeterminados en la configuraci\u00f3n de Home Assistant. Se crear\u00e1 una entidad para cada tipo de pron\u00f3stico, pero solo las que seleccione estar\u00e1n habilitadas de forma predeterminada."
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "Tipo(s) de pron\u00f3stico",
|
||||
"timestep": "Min. Entre pron\u00f3sticos de NowCast"
|
||||
},
|
||||
"description": "Si elige habilitar la entidad de pron\u00f3stico \"nowcast\", puede configurar el n\u00famero de minutos entre cada pron\u00f3stico. El n\u00famero de pron\u00f3sticos proporcionados depende del n\u00famero de minutos elegidos entre los pron\u00f3sticos.",
|
||||
"title": "Actualizar las opciones ClimaCell"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u00dchendamine nurjus",
|
||||
"invalid_api_key": "Vale API v\u00f5ti",
|
||||
"rate_limited": "Hetkel on p\u00e4ringud piiratud, proovi hiljem uuesti.",
|
||||
"unknown": "Tundmatu t\u00f5rge"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API v\u00f5ti",
|
||||
"latitude": "Laiuskraad",
|
||||
"longitude": "Pikkuskraad",
|
||||
"name": "Nimi"
|
||||
},
|
||||
"description": "Kui [%key:component::climacell::config::step::user::d ata::latitude%] ja [%key:component::climacell::config::step::user::d ata::longitude%] andmed pole sisestatud kasutatakse Home Assistanti vaikev\u00e4\u00e4rtusi. Olem luuakse iga prognoosit\u00fc\u00fcbi jaoks kuid vaikimisi lubatakse ainult need, mille valid."
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "Prognoosi t\u00fc\u00fcp (t\u00fc\u00fcbid)",
|
||||
"timestep": "Minuteid NowCasti prognooside vahel"
|
||||
},
|
||||
"description": "Kui otsustad lubada \"nowcast\" prognoosi\u00fcksuse, saad seadistada minutite arvu iga prognoosi vahel. Esitatavate prognooside arv s\u00f5ltub prognooside vahel valitud minutite arvust.",
|
||||
"title": "V\u00e4rskenda ClimaCell suvandeid"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u00c9chec de connexion",
|
||||
"invalid_api_key": "Cl\u00e9 API invalide",
|
||||
"rate_limited": "Currently rate limited, please try again later.",
|
||||
"unknown": "Erreur inattendue"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "Cl\u00e9 d'API",
|
||||
"latitude": "Latitude",
|
||||
"longitude": "Longitude",
|
||||
"name": "Nom"
|
||||
},
|
||||
"description": "Si Latitude et Longitude ne sont pas fournis, les valeurs par d\u00e9faut de la configuration de Home Assistant seront utilis\u00e9es. Une entit\u00e9 sera cr\u00e9\u00e9e pour chaque type de pr\u00e9vision, mais seules celles que vous s\u00e9lectionnez seront activ\u00e9es par d\u00e9faut."
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "Type(s) de pr\u00e9vision",
|
||||
"timestep": "Min. Entre les pr\u00e9visions NowCast"
|
||||
},
|
||||
"description": "Si vous choisissez d'activer l'entit\u00e9 de pr\u00e9vision \u00abnowcast\u00bb, vous pouvez configurer le nombre de minutes entre chaque pr\u00e9vision. Le nombre de pr\u00e9visions fournies d\u00e9pend du nombre de minutes choisies entre les pr\u00e9visions.",
|
||||
"title": "Mettre \u00e0 jour les options de ClimaCell"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "\u05de\u05e4\u05ea\u05d7 API",
|
||||
"latitude": "\u05e7\u05d5 \u05e8\u05d5\u05d7\u05d1",
|
||||
"longitude": "\u05e7\u05d5 \u05d0\u05d5\u05e8\u05da",
|
||||
"name": "\u05e9\u05dd"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Impossibile connettersi",
|
||||
"invalid_api_key": "Chiave API non valida",
|
||||
"rate_limited": "Al momento la tariffa \u00e8 limitata, riprova pi\u00f9 tardi.",
|
||||
"unknown": "Errore imprevisto"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "Chiave API",
|
||||
"latitude": "Latitudine",
|
||||
"longitude": "Logitudine",
|
||||
"name": "Nome"
|
||||
},
|
||||
"description": "Se Latitudine e Logitudine non vengono forniti, verranno utilizzati i valori predefiniti nella configurazione di Home Assistant. Verr\u00e0 creata un'entit\u00e0 per ogni tipo di previsione, ma solo quelli selezionati saranno abilitati per impostazione predefinita."
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "Tipo(i) di previsione",
|
||||
"timestep": "Minuti tra le previsioni di NowCast"
|
||||
},
|
||||
"description": "Se scegli di abilitare l'entit\u00e0 di previsione `nowcast`, puoi configurare il numero di minuti tra ogni previsione. Il numero di previsioni fornite dipende dal numero di minuti scelti tra le previsioni.",
|
||||
"title": "Aggiorna le opzioni di ClimaCell"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Kan geen verbinding maken",
|
||||
"invalid_api_key": "Ongeldige API-sleutel",
|
||||
"unknown": "Onverwachte fout"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API-sleutel",
|
||||
"latitude": "Breedtegraad",
|
||||
"longitude": "Lengtegraad",
|
||||
"name": "Naam"
|
||||
},
|
||||
"description": "Indien Breedtegraad en Lengtegraad niet worden opgegeven, worden de standaardwaarden in de Home Assistant-configuratie gebruikt. Er wordt een entiteit gemaakt voor elk voorspellingstype maar alleen degene die u selecteert worden standaard ingeschakeld."
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "Voorspellingstype(n)"
|
||||
},
|
||||
"description": "Als u ervoor kiest om de `nowcast` voorspellingsentiteit in te schakelen, kan u het aantal minuten tussen elke voorspelling configureren. Het aantal voorspellingen hangt af van het aantal gekozen minuten tussen de voorspellingen.",
|
||||
"title": "Update ClimaCell Opties"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Tilkobling mislyktes",
|
||||
"invalid_api_key": "Ugyldig API-n\u00f8kkel",
|
||||
"rate_limited": "Prisen er for \u00f8yeblikket begrenset. Pr\u00f8v igjen senere.",
|
||||
"unknown": "Uventet feil"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API-n\u00f8kkel",
|
||||
"latitude": "Breddegrad",
|
||||
"longitude": "Lengdegrad",
|
||||
"name": "Navn"
|
||||
},
|
||||
"description": "Hvis Breddegrad og Lengdegrad ikke er oppgitt, vil standardverdiene i Home Assistant-konfigurasjonen bli brukt. Det blir opprettet en enhet for hver prognosetype, men bare de du velger blir aktivert som standard."
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "Prognosetype(r)",
|
||||
"timestep": "Min. mellom NowCast prognoser"
|
||||
},
|
||||
"description": "Hvis du velger \u00e5 aktivere \u00abnowcast\u00bb -varselenheten, kan du konfigurere antall minutter mellom hver prognose. Antall angitte prognoser avhenger av antall minutter som er valgt mellom prognosene.",
|
||||
"title": "Oppdater ClimaCell Alternativer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.",
|
||||
"invalid_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API.",
|
||||
"rate_limited": "\u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.",
|
||||
"unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430."
|
||||
},
|
||||
"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": "\u0415\u0441\u043b\u0438 \u0428\u0438\u0440\u043e\u0442\u0430 \u0438 \u0414\u043e\u043b\u0433\u043e\u0442\u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Home Assistant. \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430, \u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0412\u0430\u043c\u0438."
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "\u0422\u0438\u043f(\u044b) \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430",
|
||||
"timestep": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f (\u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445)"
|
||||
},
|
||||
"description": "\u0415\u0441\u043b\u0438 \u0412\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 'nowcast', \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430.",
|
||||
"title": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 ClimaCell"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u9023\u7dda\u5931\u6557",
|
||||
"invalid_api_key": "API \u5bc6\u9470\u7121\u6548",
|
||||
"rate_limited": "\u9054\u5230\u9650\u5236\u983b\u7387\u3001\u8acb\u7a0d\u5019\u518d\u8a66\u3002",
|
||||
"unknown": "\u672a\u9810\u671f\u932f\u8aa4"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API \u5bc6\u9470",
|
||||
"latitude": "\u7def\u5ea6",
|
||||
"longitude": "\u7d93\u5ea6",
|
||||
"name": "\u540d\u7a31"
|
||||
},
|
||||
"description": "\u5047\u5982\u672a\u63d0\u4f9b\u7def\u5ea6\u8207\u7d93\u5ea6\uff0c\u5c07\u6703\u4f7f\u7528 Home Assistant \u8a2d\u5b9a\u4f5c\u70ba\u9810\u8a2d\u503c\u3002\u6bcf\u4e00\u500b\u9810\u5831\u985e\u578b\u90fd\u6703\u7522\u751f\u4e00\u7d44\u5be6\u9ad4\uff0c\u6216\u8005\u9810\u8a2d\u70ba\u6240\u9078\u64c7\u555f\u7528\u7684\u9810\u5831\u3002"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast_types": "\u9810\u5831\u985e\u578b",
|
||||
"timestep": "NowCast \u9810\u5831\u9593\u9694\u5206\u9418"
|
||||
},
|
||||
"description": "\u5047\u5982\u9078\u64c7\u958b\u555f `nowcast` \u9810\u5831\u5be6\u9ad4\u3001\u5c07\u53ef\u4ee5\u8a2d\u5b9a\u9810\u5831\u983b\u7387\u9593\u9694\u5206\u9418\u6578\u3002\u6839\u64da\u6240\u8f38\u5165\u7684\u9593\u9694\u6642\u9593\u5c07\u6c7a\u5b9a\u9810\u5831\u7684\u6578\u76ee\u3002",
|
||||
"title": "\u66f4\u65b0 ClimaCell \u9078\u9805"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
"""Weather component that handles meteorological data for your location."""
|
||||
from datetime import datetime
|
||||
import logging
|
||||
from typing import Any, Callable, Dict, List, Optional
|
||||
|
||||
@@ -80,7 +81,7 @@ def _translate_condition(
|
||||
|
||||
def _forecast_dict(
|
||||
hass: HomeAssistantType,
|
||||
time: str,
|
||||
forecast_dt: datetime,
|
||||
use_datetime: bool,
|
||||
condition: str,
|
||||
precipitation: Optional[float],
|
||||
@@ -92,10 +93,7 @@ def _forecast_dict(
|
||||
) -> Dict[str, Any]:
|
||||
"""Return formatted Forecast dict from ClimaCell forecast data."""
|
||||
if use_datetime:
|
||||
translated_condition = _translate_condition(
|
||||
condition,
|
||||
is_up(hass, dt_util.as_utc(dt_util.parse_datetime(time))),
|
||||
)
|
||||
translated_condition = _translate_condition(condition, is_up(hass, forecast_dt))
|
||||
else:
|
||||
translated_condition = _translate_condition(condition, True)
|
||||
|
||||
@@ -112,7 +110,7 @@ def _forecast_dict(
|
||||
wind_speed = distance_convert(wind_speed, LENGTH_MILES, LENGTH_KILOMETERS)
|
||||
|
||||
data = {
|
||||
ATTR_FORECAST_TIME: time,
|
||||
ATTR_FORECAST_TIME: forecast_dt.isoformat(),
|
||||
ATTR_FORECAST_CONDITION: translated_condition,
|
||||
ATTR_FORECAST_PRECIPITATION: precipitation,
|
||||
ATTR_FORECAST_PRECIPITATION_PROBABILITY: precipitation_probability,
|
||||
@@ -246,7 +244,9 @@ class ClimaCellWeatherEntity(ClimaCellEntity, WeatherEntity):
|
||||
# Set default values (in cases where keys don't exist), None will be
|
||||
# returned. Override properties per forecast type as needed
|
||||
for forecast in self.coordinator.data[FORECASTS][self.forecast_type]:
|
||||
timestamp = self._get_cc_value(forecast, CC_ATTR_TIMESTAMP)
|
||||
forecast_dt = dt_util.parse_datetime(
|
||||
self._get_cc_value(forecast, CC_ATTR_TIMESTAMP)
|
||||
)
|
||||
use_datetime = True
|
||||
condition = self._get_cc_value(forecast, CC_ATTR_CONDITION)
|
||||
precipitation = self._get_cc_value(forecast, CC_ATTR_PRECIPITATION)
|
||||
@@ -290,7 +290,7 @@ class ClimaCellWeatherEntity(ClimaCellEntity, WeatherEntity):
|
||||
forecasts.append(
|
||||
_forecast_dict(
|
||||
self.hass,
|
||||
timestamp,
|
||||
forecast_dt,
|
||||
use_datetime,
|
||||
condition,
|
||||
precipitation,
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "API \u5bc6\u9470"
|
||||
"api_token": "API \u6b0a\u6756"
|
||||
},
|
||||
"description": "\u6b64\u6574\u5408\u9700\u8981\u5e33\u865f\u4e2d\u6240\u6709\u5340\u57df Zone:Zone:Read \u8207 Zone:DNS:Edit \u6b0a\u9650 API \u5bc6\u9470\u3002",
|
||||
"description": "\u6b64\u6574\u5408\u9700\u8981\u5e33\u865f\u4e2d\u6240\u6709\u5340\u57df Zone:Zone:Read \u8207 Zone:DNS:Edit \u6b0a\u9650 API \u6b0a\u6756\u3002",
|
||||
"title": "\u9023\u7dda\u81f3 Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
"open": "Open {entity_name}",
|
||||
"open_tilt": "Open de kanteling {entity_name}",
|
||||
"set_position": "Stel de positie van {entity_name} in",
|
||||
"set_tilt_position": "Stel de {entity_name} kantelpositie in"
|
||||
"set_tilt_position": "Stel de {entity_name} kantelpositie in",
|
||||
"stop": "Stop {entity_name}"
|
||||
},
|
||||
"condition_type": {
|
||||
"is_closed": "{entity_name} is gesloten",
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"cannot_connect": "Kon niet verbinden"
|
||||
},
|
||||
"error": {
|
||||
"invalid_auth": "Ongeldige authenticatie"
|
||||
"cannot_connect": "Kan geen verbinding maken",
|
||||
"invalid_auth": "Ongeldige authenticatie",
|
||||
"unknown": "Onverwachte fout"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
"domain": "doods",
|
||||
"name": "DOODS - Dedicated Open Object Detection Service",
|
||||
"documentation": "https://www.home-assistant.io/integrations/doods",
|
||||
"requirements": ["pydoods==1.0.2", "pillow==8.1.0"],
|
||||
"requirements": ["pydoods==1.0.2", "pillow==8.1.1"],
|
||||
"codeowners": []
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Ger\u00e4t ist bereits konfiguriert",
|
||||
"cannot_connect": "Verbindung fehlgeschlagen",
|
||||
"invalid_auth": "Ung\u00fcltige Authentifizierung"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Verbindung fehlgeschlagen",
|
||||
"invalid_auth": "Ung\u00fcltige Authentifizierung"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"email": "E-Mail",
|
||||
"password": "Passwort"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Aeroport ja est\u00e0 configurat."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Ha fallat la connexi\u00f3",
|
||||
"invalid_airport": "Codi d'aeroport inv\u00e0lid",
|
||||
"unknown": "Error inesperat"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "Aeroport"
|
||||
},
|
||||
"description": "Introdueix codi d'un aeroport dels EUA en format IATA",
|
||||
"title": "FAA Delays"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit",
|
||||
"unknown": "Neo\u010dek\u00e1van\u00e1 chyba"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Verbindung fehlgeschlagen",
|
||||
"unknown": "Unerwarteter Fehler"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,16 +4,18 @@
|
||||
"already_configured": "This airport is already configured."
|
||||
},
|
||||
"error": {
|
||||
"invalid_airport": "Airport code is not valid"
|
||||
"cannot_connect": "Failed to connect",
|
||||
"invalid_airport": "Airport code is not valid",
|
||||
"unknown": "Unexpected error"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"title": "FAA Delays",
|
||||
"description": "Enter a US Airport Code in IATA Format",
|
||||
"data": {
|
||||
"id": "Airport"
|
||||
}
|
||||
},
|
||||
"description": "Enter a US Airport Code in IATA Format",
|
||||
"title": "FAA Delays"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Este aeropuerto ya est\u00e1 configurado."
|
||||
},
|
||||
"error": {
|
||||
"invalid_airport": "El c\u00f3digo del aeropuerto no es v\u00e1lido"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "Aeropuerto"
|
||||
},
|
||||
"description": "Introduzca un c\u00f3digo de aeropuerto estadounidense en formato IATA",
|
||||
"title": "Retrasos de la FAA"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "See lennujaam on juba seadistatud."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u00dchendumine nurjus",
|
||||
"invalid_airport": "Lennujaama kood ei sobi",
|
||||
"unknown": "Ootamatu t\u00f5rge"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "Lennujaam"
|
||||
},
|
||||
"description": "Sisesta USA lennujaama kood IATA vormingus",
|
||||
"title": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Cet a\u00e9roport est d\u00e9j\u00e0 configur\u00e9."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u00c9chec de connexion",
|
||||
"invalid_airport": "Le code de l'a\u00e9roport n'est pas valide",
|
||||
"unknown": "Erreur inattendue"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "A\u00e9roport"
|
||||
},
|
||||
"description": "Entrez un code d'a\u00e9roport am\u00e9ricain au format IATA",
|
||||
"title": "D\u00e9lais FAA"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u05e0\u05de\u05dc \u05ea\u05e2\u05d5\u05e4\u05d4 \u05d6\u05d4 \u05db\u05d1\u05e8 \u05de\u05d5\u05d2\u05d3\u05e8"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4",
|
||||
"unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "\u05e0\u05de\u05dc \u05ea\u05e2\u05d5\u05e4\u05d4"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Questo aeroporto \u00e8 gi\u00e0 configurato."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Impossibile connettersi",
|
||||
"invalid_airport": "Il codice dell'aeroporto non \u00e8 valido",
|
||||
"unknown": "Errore imprevisto"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "Aeroporto"
|
||||
},
|
||||
"description": "Immettere un codice aeroporto statunitense in formato IATA",
|
||||
"title": "Ritardi FAA"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Deze luchthaven is al geconfigureerd."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Kan geen verbinding maken",
|
||||
"invalid_airport": "Luchthavencode is ongeldig",
|
||||
"unknown": "Onverwachte fout"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "Luchthaven"
|
||||
},
|
||||
"description": "Voer een Amerikaanse luchthavencode in IATA-indeling in",
|
||||
"title": "FAA-vertragingen"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Denne flyplassen er allerede konfigurert"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Tilkobling mislyktes",
|
||||
"invalid_airport": "Flyplasskoden er ikke gyldig",
|
||||
"unknown": "Uventet feil"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "Flyplass"
|
||||
},
|
||||
"description": "Skriv inn en amerikansk flyplasskode i IATA-format",
|
||||
"title": "FAA forsinkelser"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u044d\u0440\u043e\u043f\u043e\u0440\u0442\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.",
|
||||
"invalid_airport": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0430\u044d\u0440\u043e\u043f\u043e\u0440\u0442\u0430.",
|
||||
"unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "\u0410\u044d\u0440\u043e\u043f\u043e\u0440\u0442"
|
||||
},
|
||||
"description": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0430\u044d\u0440\u043e\u043f\u043e\u0440\u0442\u0430 \u0421\u0428\u0410 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 IATA.",
|
||||
"title": "FAA Delays"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u6b64\u6a5f\u5834\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u9023\u7dda\u5931\u6557",
|
||||
"invalid_airport": "\u6a5f\u5834\u4ee3\u78bc\u7121\u6548",
|
||||
"unknown": "\u672a\u9810\u671f\u932f\u8aa4"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "\u6a5f\u5834"
|
||||
},
|
||||
"description": "\u8f38\u5165\u7f8e\u570b\u6a5f\u5834 IATA \u4ee3\u78bc",
|
||||
"title": "FAA \u822a\u73ed\u5ef6\u8aa4"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,8 @@
|
||||
"reauth": {
|
||||
"data": {
|
||||
"password": "Wachtwoord"
|
||||
}
|
||||
},
|
||||
"description": "Authenticatietokens zijn ongeldig geworden, log in om ze opnieuw te maken."
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"data": {
|
||||
"password": "Passord"
|
||||
},
|
||||
"description": "Godkjenningstokener ble ugyldige, logg inn for \u00e5 gjenopprette dem"
|
||||
"description": "Autentiseringstokener ble ugyldige, logg inn for \u00e5 gjenskape dem."
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"data": {
|
||||
"password": "\u5bc6\u78bc"
|
||||
},
|
||||
"description": "\u8a8d\u8b49\u5bc6\u9470\u5df2\u7d93\u5931\u6548\uff0c\u8acb\u767b\u5165\u91cd\u65b0\u65b0\u589e\u3002"
|
||||
"description": "\u8a8d\u8b49\u6b0a\u6756\u5df2\u7d93\u5931\u6548\uff0c\u8acb\u767b\u5165\u91cd\u65b0\u65b0\u589e\u3002"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"cannot_connect": "Kan geen verbinding maken"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,9 @@
|
||||
"abort": {
|
||||
"already_configured": "Deze co\u00f6rdinaten zijn al geregistreerd."
|
||||
},
|
||||
"error": {
|
||||
"unknown": "Onverwachte fout"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"password": "Passwort",
|
||||
"username": "Benutzername"
|
||||
},
|
||||
"description": "Aktualisiere deine Anmeldeinformationen f\u00fcr {name} ."
|
||||
"description": "Aktualisiere deine Anmeldeinformationen f\u00fcr {name}."
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"abort": {
|
||||
"already_configured": "Deze AVM FRITZ!Box is al geconfigureerd.",
|
||||
"already_in_progress": "AVM FRITZ!Box configuratie is al bezig.",
|
||||
"no_devices_found": "Geen apparaten gevonden op het netwerk",
|
||||
"not_supported": "Verbonden met AVM FRITZ! Box, maar het kan geen Smart Home-apparaten bedienen.",
|
||||
"reauth_successful": "Herauthenticatie was succesvol"
|
||||
},
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"name": "Home Assistant Frontend",
|
||||
"documentation": "https://www.home-assistant.io/integrations/frontend",
|
||||
"requirements": [
|
||||
"home-assistant-frontend==20210224.0"
|
||||
"home-assistant-frontend==20210302.0"
|
||||
],
|
||||
"dependencies": [
|
||||
"api",
|
||||
|
||||
@@ -228,18 +228,25 @@ class GitHubData:
|
||||
self.stargazers = repo.stargazers_count
|
||||
self.forks = repo.forks_count
|
||||
|
||||
open_issues = repo.get_issues(state="open", sort="created")
|
||||
if open_issues is not None:
|
||||
self.open_issue_count = open_issues.totalCount
|
||||
if open_issues.totalCount > 0:
|
||||
self.latest_open_issue_url = open_issues[0].html_url
|
||||
|
||||
open_pull_requests = repo.get_pulls(state="open", sort="created")
|
||||
if open_pull_requests is not None:
|
||||
self.pull_request_count = open_pull_requests.totalCount
|
||||
if open_pull_requests.totalCount > 0:
|
||||
self.latest_open_pr_url = open_pull_requests[0].html_url
|
||||
|
||||
open_issues = repo.get_issues(state="open", sort="created")
|
||||
if open_issues is not None:
|
||||
if self.pull_request_count is None:
|
||||
self.open_issue_count = open_issues.totalCount
|
||||
else:
|
||||
# pull requests are treated as issues too so we need to reduce the received count
|
||||
self.open_issue_count = (
|
||||
open_issues.totalCount - self.pull_request_count
|
||||
)
|
||||
|
||||
if open_issues.totalCount > 0:
|
||||
self.latest_open_issue_url = open_issues[0].html_url
|
||||
|
||||
latest_commit = repo.get_commits()[0]
|
||||
self.latest_commit_sha = latest_commit.sha
|
||||
self.latest_commit_message = latest_commit.commit.message
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Host",
|
||||
"name": "Naam"
|
||||
},
|
||||
"description": "Eerst moet u de Goal Zero-app downloaden: https://www.goalzero.com/product-features/yeti-app/ \n\n Volg de instructies om je Yeti te verbinden met je wifi-netwerk. Haal dan de host-ip van uw router. DHCP moet zijn ingesteld in uw routerinstellingen voor het apparaat om ervoor te zorgen dat het host-ip niet verandert. Raadpleeg de gebruikershandleiding van uw router."
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"username": "Gebruikersnaam"
|
||||
},
|
||||
"description": "Geef hieronder de vereiste informatie op.",
|
||||
"title": "Stel GogoGate2 in"
|
||||
"title": "Stel GogoGate2 of iSmartGate in"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"invalid_credentials": "Ung\u00fcltige Authentifizierung",
|
||||
"unknown": "Unerwarteter Fehler"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API-Schl\u00fcssel",
|
||||
"url": "URL"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Habitica"
|
||||
}
|
||||
@@ -22,17 +22,8 @@ class HarmonyData(HarmonySubscriberMixin):
|
||||
self._name = name
|
||||
self._unique_id = unique_id
|
||||
self._available = False
|
||||
|
||||
callbacks = {
|
||||
"config_updated": self._config_updated,
|
||||
"connect": self._connected,
|
||||
"disconnect": self._disconnected,
|
||||
"new_activity_starting": self._activity_starting,
|
||||
"new_activity": self._activity_started,
|
||||
}
|
||||
self._client = HarmonyClient(
|
||||
ip_address=address, callbacks=ClientCallbackType(**callbacks)
|
||||
)
|
||||
self._client = None
|
||||
self._address = address
|
||||
|
||||
@property
|
||||
def activities(self):
|
||||
@@ -105,6 +96,18 @@ class HarmonyData(HarmonySubscriberMixin):
|
||||
async def connect(self) -> bool:
|
||||
"""Connect to the Harmony Hub."""
|
||||
_LOGGER.debug("%s: Connecting", self._name)
|
||||
|
||||
callbacks = {
|
||||
"config_updated": self._config_updated,
|
||||
"connect": self._connected,
|
||||
"disconnect": self._disconnected,
|
||||
"new_activity_starting": self._activity_starting,
|
||||
"new_activity": self._activity_started,
|
||||
}
|
||||
self._client = HarmonyClient(
|
||||
ip_address=self._address, callbacks=ClientCallbackType(**callbacks)
|
||||
)
|
||||
|
||||
try:
|
||||
if not await self._client.connect():
|
||||
_LOGGER.warning("%s: Unable to connect to HUB", self._name)
|
||||
@@ -113,6 +116,7 @@ class HarmonyData(HarmonySubscriberMixin):
|
||||
except aioexc.TimeOut:
|
||||
_LOGGER.warning("%s: Connection timed-out", self._name)
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
async def shutdown(self):
|
||||
@@ -159,10 +163,12 @@ class HarmonyData(HarmonySubscriberMixin):
|
||||
)
|
||||
return
|
||||
|
||||
await self.async_lock_start_activity()
|
||||
try:
|
||||
await self._client.start_activity(activity_id)
|
||||
except aioexc.TimeOut:
|
||||
_LOGGER.error("%s: Starting activity %s timed-out", self.name, activity)
|
||||
self.async_unlock_start_activity()
|
||||
|
||||
async def async_power_off(self):
|
||||
"""Start the PowerOff activity."""
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
"""Mixin class for handling harmony callback subscriptions."""
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
from typing import Any, Callable, NamedTuple, Optional
|
||||
|
||||
@@ -29,6 +30,17 @@ class HarmonySubscriberMixin:
|
||||
super().__init__()
|
||||
self._hass = hass
|
||||
self._subscriptions = []
|
||||
self._activity_lock = asyncio.Lock()
|
||||
|
||||
async def async_lock_start_activity(self):
|
||||
"""Acquire the lock."""
|
||||
await self._activity_lock.acquire()
|
||||
|
||||
@callback
|
||||
def async_unlock_start_activity(self):
|
||||
"""Release the lock."""
|
||||
if self._activity_lock.locked():
|
||||
self._activity_lock.release()
|
||||
|
||||
@callback
|
||||
def async_subscribe(self, update_callbacks: HarmonyCallback) -> Callable:
|
||||
@@ -51,11 +63,13 @@ class HarmonySubscriberMixin:
|
||||
|
||||
def _connected(self, _=None) -> None:
|
||||
_LOGGER.debug("connected")
|
||||
self.async_unlock_start_activity()
|
||||
self._available = True
|
||||
self._call_callbacks("connected")
|
||||
|
||||
def _disconnected(self, _=None) -> None:
|
||||
_LOGGER.debug("disconnected")
|
||||
self.async_unlock_start_activity()
|
||||
self._available = False
|
||||
self._call_callbacks("disconnected")
|
||||
|
||||
@@ -65,6 +79,7 @@ class HarmonySubscriberMixin:
|
||||
|
||||
def _activity_started(self, activity_info: tuple) -> None:
|
||||
_LOGGER.debug("activity %s started", activity_info)
|
||||
self.async_unlock_start_activity()
|
||||
self._call_callbacks("activity_started", activity_info)
|
||||
|
||||
def _call_callbacks(self, callback_func_name: str, argument: tuple = None):
|
||||
|
||||
@@ -169,6 +169,18 @@ async def async_uninstall_addon(hass: HomeAssistantType, slug: str) -> dict:
|
||||
return await hassio.send_command(command, timeout=60)
|
||||
|
||||
|
||||
@bind_hass
|
||||
@api_data
|
||||
async def async_update_addon(hass: HomeAssistantType, slug: str) -> dict:
|
||||
"""Update add-on.
|
||||
|
||||
The caller of the function should handle HassioAPIError.
|
||||
"""
|
||||
hassio = hass.data[DOMAIN]
|
||||
command = f"/addons/{slug}/update"
|
||||
return await hassio.send_command(command, timeout=None)
|
||||
|
||||
|
||||
@bind_hass
|
||||
@api_data
|
||||
async def async_start_addon(hass: HomeAssistantType, slug: str) -> dict:
|
||||
@@ -218,6 +230,21 @@ async def async_get_addon_discovery_info(
|
||||
return next((addon for addon in discovered_addons if addon["addon"] == slug), None)
|
||||
|
||||
|
||||
@bind_hass
|
||||
@api_data
|
||||
async def async_create_snapshot(
|
||||
hass: HomeAssistantType, payload: dict, partial: bool = False
|
||||
) -> dict:
|
||||
"""Create a full or partial snapshot.
|
||||
|
||||
The caller of the function should handle HassioAPIError.
|
||||
"""
|
||||
hassio = hass.data[DOMAIN]
|
||||
snapshot_type = "partial" if partial else "full"
|
||||
command = f"/snapshots/new/{snapshot_type}"
|
||||
return await hassio.send_command(command, payload=payload, timeout=None)
|
||||
|
||||
|
||||
@callback
|
||||
@bind_hass
|
||||
def get_info(hass):
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"already_configured": "Apparaat is al geconfigureerd"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Kan geen verbinding maken",
|
||||
"invalid_auth": "Ongeldige authenticatie",
|
||||
"unknown": "Onverwachte fout"
|
||||
},
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"missing_configuration": "Het component is niet geconfigureerd. Volg de documentatie."
|
||||
"missing_configuration": "Het component is niet geconfigureerd. Volg de documentatie.",
|
||||
"no_url_available": "Geen URL beschikbaar. Voor informatie over deze fout, [check de helpsectie]({docs_url})"
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "Succesvol geverifieerd"
|
||||
|
||||
@@ -491,8 +491,11 @@ class HomeKit:
|
||||
# as pyhap uses a random one until state is restored
|
||||
if os.path.exists(persist_file):
|
||||
self.driver.load()
|
||||
else:
|
||||
self.driver.persist()
|
||||
self.driver.state.config_version += 1
|
||||
if self.driver.state.config_version > 65535:
|
||||
self.driver.state.config_version = 1
|
||||
|
||||
self.driver.persist()
|
||||
|
||||
def reset_accessories(self, entity_ids):
|
||||
"""Reset the accessory to load the latest configuration."""
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"name": "HomeKit",
|
||||
"documentation": "https://www.home-assistant.io/integrations/homekit",
|
||||
"requirements": [
|
||||
"HAP-python==3.3.0",
|
||||
"HAP-python==3.3.2",
|
||||
"fnvhash==0.1.0",
|
||||
"PyQRCode==1.2.1",
|
||||
"base36==0.1.1",
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"title": "Selecciona els dominis a incloure"
|
||||
},
|
||||
"pairing": {
|
||||
"description": "Tan aviat com {name} estigui llest, la vinculaci\u00f3 estar\u00e0 disponible a \"Notificacions\" com a \"Configuraci\u00f3 de l'enlla\u00e7 HomeKit\".",
|
||||
"description": "Per completar la vinculaci\u00f3, segueix les instruccions a \"Configuraci\u00f3 de l'enlla\u00e7 HomeKit\" sota \"Notificacions\".",
|
||||
"title": "Vinculaci\u00f3 HomeKit"
|
||||
},
|
||||
"user": {
|
||||
@@ -28,8 +28,8 @@
|
||||
"include_domains": "Dominis a incloure",
|
||||
"mode": "Mode"
|
||||
},
|
||||
"description": "La integraci\u00f3 HomeKit et permetr\u00e0 l'acc\u00e9s a les teves entitats de Home Assistant a HomeKit. En mode enlla\u00e7, els enlla\u00e7os HomeKit estan limitats a un m\u00e0xim de 150 accessoris per inst\u00e0ncia (incl\u00f2s el propi enlla\u00e7). Si volguessis enlla\u00e7ar m\u00e9s accessoris que el m\u00e0xim perm\u00e8s, \u00e9s recomanable que utilitzis diferents enlla\u00e7os HomeKit per a dominis diferents. La configuraci\u00f3 avan\u00e7ada d'entitat nom\u00e9s est\u00e0 disponible en YAML. Per obtenir el millor rendiment i evitar errors de disponibilitat inesperats , crea i vincula una inst\u00e0ncia HomeKit en mode accessori per a cada repoductor multim\u00e8dia/TV i c\u00e0mera.",
|
||||
"title": "Activaci\u00f3 de HomeKit"
|
||||
"description": "Selecciona els dominis a incloure. S'inclouran totes les entitats del domini compatibles. Es crear\u00e0 una inst\u00e0ncia HomeKit en mode accessori per a cada repoductor multim\u00e8dia/TV i c\u00e0mera.",
|
||||
"title": "Selecciona els dominis a incloure"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -55,7 +55,7 @@
|
||||
"entities": "Entitats",
|
||||
"mode": "Mode"
|
||||
},
|
||||
"description": "Tria les entitats que vulguis incloure. En mode accessori, nom\u00e9s s'inclou una sola entitat. En mode enlla\u00e7 inclusiu, s'exposaran totes les entitats del domini tret de que se'n seleccionin algunes en concret. En mode enlla\u00e7 excusiu, s'inclouran totes les entitats del domini excepte les entitats excloses. Per obtenir el millor rendiment i evitar errors de disponibilitat inesperats , crea i vincula una inst\u00e0ncia HomeKit en mode accessori per a cada repoductor multim\u00e8dia/TV i c\u00e0mera.",
|
||||
"description": "Tria les entitats que vulguis incloure. En mode accessori, nom\u00e9s s'inclou una sola entitat. En mode enlla\u00e7 inclusiu, s'exposaran totes les entitats del domini tret de que se'n seleccionin algunes en concret. En mode enlla\u00e7 excusiu, s'inclouran totes les entitats del domini excepte les entitats excloses. Per obtenir el millor rendiment, es crea una inst\u00e0ncia HomeKit per a cada repoductor multim\u00e8dia/TV i c\u00e0mera.",
|
||||
"title": "Selecciona les entitats a incloure"
|
||||
},
|
||||
"init": {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"include_domains": "Dom\u00e9ny, kter\u00e9 maj\u00ed b\u00fdt zahrnuty",
|
||||
"mode": "Re\u017eim"
|
||||
},
|
||||
"title": "Aktivace HomeKit"
|
||||
"title": "Vyberte dom\u00e9ny, kter\u00e9 chcete zahrnout"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4,13 +4,29 @@
|
||||
"port_name_in_use": "An accessory or bridge with the same name or port is already configured."
|
||||
},
|
||||
"step": {
|
||||
"accessory_mode": {
|
||||
"data": {
|
||||
"entity_id": "Entity"
|
||||
},
|
||||
"description": "Choose the entity to be included. In accessory mode, only a single entity is included.",
|
||||
"title": "Select entity to be included"
|
||||
},
|
||||
"bridge_mode": {
|
||||
"data": {
|
||||
"include_domains": "Domains to include"
|
||||
},
|
||||
"description": "Choose the domains to be included. All supported entities in the domain will be included.",
|
||||
"title": "Select domains to be included"
|
||||
},
|
||||
"pairing": {
|
||||
"description": "To complete pairing following the instructions in \u201cNotifications\u201d under \u201cHomeKit Pairing\u201d.",
|
||||
"title": "Pair HomeKit"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"include_domains": "Domains to include"
|
||||
"auto_start": "Autostart (disable if using Z-Wave or other delayed start system)",
|
||||
"include_domains": "Domains to include",
|
||||
"mode": "Mode"
|
||||
},
|
||||
"description": "Choose the domains to be included. All supported entities in the domain will be included. A separate HomeKit instance in accessory mode will be created for each tv media player and camera.",
|
||||
"title": "Select domains to be included"
|
||||
@@ -21,7 +37,8 @@
|
||||
"step": {
|
||||
"advanced": {
|
||||
"data": {
|
||||
"auto_start": "Autostart (disable if you are calling the homekit.start service manually)"
|
||||
"auto_start": "Autostart (disable if you are calling the homekit.start service manually)",
|
||||
"safe_mode": "Safe Mode (enable only if pairing fails)"
|
||||
},
|
||||
"description": "These settings only need to be adjusted if HomeKit is not functional.",
|
||||
"title": "Advanced Configuration"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"title": "Vali kaasatavad domeenid"
|
||||
},
|
||||
"pairing": {
|
||||
"description": "Niipea kui {name} on valmis, on sidumine saadaval jaotises \"Notifications\" kui \"HomeKit Bridge Setup\".",
|
||||
"description": "Sidumise l\u00f5puleviimiseks j\u00e4rgi jaotises \"HomeKiti sidumine\" toodud juhiseid alajaotises \"Teatised\".",
|
||||
"title": "HomeKiti sidumine"
|
||||
},
|
||||
"user": {
|
||||
@@ -28,8 +28,8 @@
|
||||
"include_domains": "Kaasatavad domeenid",
|
||||
"mode": "Re\u017eiim"
|
||||
},
|
||||
"description": "HomeKiti integreerimine v\u00f5imaldab teil p\u00e4\u00e4seda juurde HomeKiti \u00fcksustele Home Assistant. Sildire\u017eiimis on HomeKit Bridges piiratud 150 lisaseadmega, sealhulgas sild ise. Kui soovid \u00fchendada rohkem lisatarvikuid, on soovitatav kasutada erinevate domeenide jaoks mitut HomeKiti silda. \u00dcksuse \u00fcksikasjalik konfiguratsioon on esmase silla jaoks saadaval ainult YAML-i kaudu. Parema tulemuse saavutamiseks ja ootamatute seadmete kadumise v\u00e4ltimiseks loo ja seo eraldi HomeKiti seade tarviku re\u017eiimis kga meediaesitaja ja kaamera jaoks.",
|
||||
"title": "Aktiveeri HomeKit"
|
||||
"description": "Vali kaasatavad domeenid. Kaasatakse k\u00f5ik domeenis toetatud olemid. Iga telemeedia pleieri ja kaamera jaoks luuakse eraldi HomeKiti eksemplar tarvikure\u017eiimis.",
|
||||
"title": "Vali kaasatavad domeenid"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -55,12 +55,12 @@
|
||||
"entities": "Olemid",
|
||||
"mode": "Re\u017eiim"
|
||||
},
|
||||
"description": "Vali kaasatavad olemid. Tarvikute re\u017eiimis on kaasatav ainult \u00fcks olem. Silla re\u017eiimis, kuvatakse k\u00f5ik domeeni olemid, v\u00e4lja arvatud juhul, kui valitud on kindlad olemid. Silla v\u00e4listamisre\u017eiimis kaasatakse k\u00f5ik domeeni olemid, v\u00e4lja arvatud v\u00e4listatud olemid.",
|
||||
"description": "Vali kaasatavad olemid. Tarvikute re\u017eiimis on kaasatav ainult \u00fcks olem. Silla re\u017eiimis, kuvatakse k\u00f5ik domeeni olemid, v\u00e4lja arvatud juhul, kui valitud on kindlad olemid. Silla v\u00e4listamisre\u017eiimis kaasatakse k\u00f5ik domeeni olemid, v\u00e4lja arvatud v\u00e4listatud olemid. Parima kasutuskogemuse jaoks on eraldi HomeKit seadmed iga meediumim\u00e4ngija ja kaamera jaoks.",
|
||||
"title": "Vali kaasatavd olemid"
|
||||
},
|
||||
"init": {
|
||||
"data": {
|
||||
"include_domains": "Kaasatavad domeenid",
|
||||
"include_domains": "Kaasatud domeenid",
|
||||
"mode": "Re\u017eiim"
|
||||
},
|
||||
"description": "HomeKiti saab seadistada silla v\u00f5i \u00fche lisaseadme avaldamiseks. Lisare\u017eiimis saab kasutada ainult \u00fchte \u00fcksust. Teleriseadmete klassiga meediumipleierite n\u00f5uetekohaseks toimimiseks on vaja lisare\u017eiimi. \u201eKaasatavate domeenide\u201d \u00fcksused puutuvad kokku HomeKitiga. J\u00e4rgmisel ekraanil saad valida, millised \u00fcksused sellesse loendisse lisada v\u00f5i sellest v\u00e4lja j\u00e4tta.",
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"title": "S\u00e9lectionnez les domaines \u00e0 inclure"
|
||||
},
|
||||
"pairing": {
|
||||
"description": "D\u00e8s que le pont {name} est pr\u00eat, l'appairage sera disponible dans \"Notifications\" sous \"Configuration de la Passerelle HomeKit\".",
|
||||
"description": "Pour compl\u00e9ter l'appariement, suivez les instructions dans les \"Notifications\" sous \"Appariement HomeKit\".",
|
||||
"title": "Appairage de la Passerelle Homekit"
|
||||
},
|
||||
"user": {
|
||||
@@ -28,8 +28,8 @@
|
||||
"include_domains": "Domaines \u00e0 inclure",
|
||||
"mode": "Mode"
|
||||
},
|
||||
"description": "La passerelle HomeKit vous permettra d'acc\u00e9der \u00e0 vos entit\u00e9s Home Assistant dans HomeKit. Les passerelles HomeKit sont limit\u00e9es \u00e0 150 accessoires par instance, y compris la passerelle elle-m\u00eame. Si vous souhaitez connecter plus que le nombre maximum d'accessoires, il est recommand\u00e9 d'utiliser plusieurs passerelles HomeKit pour diff\u00e9rents domaines. La configuration d\u00e9taill\u00e9e des entit\u00e9s est uniquement disponible via YAML pour la passerelle principale.",
|
||||
"title": "Activer la Passerelle HomeKit"
|
||||
"description": "Choisissez les domaines \u00e0 inclure. Toutes les entit\u00e9s prises en charge dans le domaine seront incluses. Une instance HomeKit distincte en mode accessoire sera cr\u00e9\u00e9e pour chaque lecteur multim\u00e9dia TV et cam\u00e9ra.",
|
||||
"title": "S\u00e9lectionnez les domaines \u00e0 inclure"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -60,7 +60,7 @@
|
||||
},
|
||||
"init": {
|
||||
"data": {
|
||||
"include_domains": "Domaine \u00e0 inclure",
|
||||
"include_domains": "Domaines \u00e0 inclure",
|
||||
"mode": "Mode"
|
||||
},
|
||||
"description": "Les entit\u00e9s des \u00abdomaines \u00e0 inclure\u00bb seront pont\u00e9es vers HomeKit. Vous pourrez s\u00e9lectionner les entit\u00e9s \u00e0 exclure de cette liste sur l'\u00e9cran suivant.",
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
{
|
||||
"options": {
|
||||
"step": {
|
||||
"include_exclude": {
|
||||
"data": {
|
||||
"mode": "\u05de\u05e6\u05d1"
|
||||
}
|
||||
},
|
||||
"init": {
|
||||
"data": {
|
||||
"mode": "\u05de\u05e6\u05d1"
|
||||
}
|
||||
},
|
||||
"yaml": {
|
||||
"description": "\u05d9\u05e9\u05d5\u05ea \u05d6\u05d5 \u05e0\u05e9\u05dc\u05d8\u05ea \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea YAML"
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"title": "Seleziona i domini da includere"
|
||||
},
|
||||
"pairing": {
|
||||
"description": "Non appena il {name} \u00e8 pronto, l'associazione sar\u00e0 disponibile in \"Notifiche\" come \"Configurazione HomeKit Bridge\".",
|
||||
"description": "Per completare l'associazione, seguire le istruzioni in \"Notifiche\" sotto \"Associazione HomeKit\".",
|
||||
"title": "Associa HomeKit"
|
||||
},
|
||||
"user": {
|
||||
@@ -28,8 +28,8 @@
|
||||
"include_domains": "Domini da includere",
|
||||
"mode": "Modalit\u00e0"
|
||||
},
|
||||
"description": "L'integrazione di HomeKit ti consentir\u00e0 di accedere alle entit\u00e0 di Home Assistant in HomeKit. In modalit\u00e0 bridge, i bridge HomeKit sono limitati a 150 accessori per istanza, incluso il bridge stesso. Se desideri eseguire il bridge di un numero di accessori superiore a quello massimo, si consiglia di utilizzare pi\u00f9 bridge HomeKit per domini diversi. La configurazione dettagliata dell'entit\u00e0 \u00e8 disponibile solo tramite YAML per il bridge principale.",
|
||||
"title": "Attiva HomeKit"
|
||||
"description": "Scegli i domini da includere. Verranno incluse tutte le entit\u00e0 supportate nel dominio. Verr\u00e0 creata un'istanza HomeKit separata in modalit\u00e0 accessorio per ogni lettore multimediale TV e telecamera.",
|
||||
"title": "Seleziona i domini da includere"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -55,7 +55,7 @@
|
||||
"entities": "Entit\u00e0",
|
||||
"mode": "Modalit\u00e0"
|
||||
},
|
||||
"description": "Scegliere le entit\u00e0 da includere. In modalit\u00e0 accessorio, \u00e8 inclusa una sola entit\u00e0. In modalit\u00e0 di inclusione bridge, tutte le entit\u00e0 nel dominio saranno incluse, a meno che non siano selezionate entit\u00e0 specifiche. In modalit\u00e0 di esclusione bridge, tutte le entit\u00e0 nel dominio saranno incluse, ad eccezione delle entit\u00e0 escluse. Per prestazioni ottimali e per evitare una indisponibilit\u00e0 imprevista, creare e associare un'istanza HomeKit separata in modalit\u00e0 accessorio per ogni lettore multimediale, TV e videocamera.",
|
||||
"description": "Scegliere le entit\u00e0 da includere. In modalit\u00e0 accessorio, \u00e8 inclusa una sola entit\u00e0. In modalit\u00e0 di inclusione bridge, tutte le entit\u00e0 nel dominio saranno incluse, a meno che non siano selezionate entit\u00e0 specifiche. In modalit\u00e0 di esclusione bridge, tutte le entit\u00e0 nel dominio saranno incluse, ad eccezione delle entit\u00e0 escluse. Per prestazioni ottimali, ci sar\u00e0 una HomeKit separata in modalit\u00e0 accessorio per ogni lettore multimediale, TV e videocamera.",
|
||||
"title": "Seleziona le entit\u00e0 da includere"
|
||||
},
|
||||
"init": {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
},
|
||||
"pairing": {
|
||||
"description": "Zodra de {name} klaar is, is het koppelen beschikbaar in \"Meldingen\" als \"HomeKit Bridge Setup\".",
|
||||
"title": "Koppel HomeKit Bridge"
|
||||
"title": "Koppel HomeKit"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
@@ -20,7 +20,7 @@
|
||||
"mode": "Mode"
|
||||
},
|
||||
"description": "De HomeKit-integratie geeft u toegang tot uw Home Assistant-entiteiten in HomeKit. In bridge-modus zijn HomeKit-bruggen beperkt tot 150 accessoires per exemplaar, inclusief de brug zelf. Als u meer dan het maximale aantal accessoires wilt overbruggen, is het aan te raden om meerdere HomeKit-bridges voor verschillende domeinen te gebruiken. Gedetailleerde entiteitsconfiguratie is alleen beschikbaar via YAML voor de primaire bridge.",
|
||||
"title": "Activeer HomeKit Bridge"
|
||||
"title": "Selecteer domeinen die u wilt opnemen"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -57,7 +57,7 @@
|
||||
},
|
||||
"yaml": {
|
||||
"description": "Deze invoer wordt beheerd via YAML",
|
||||
"title": "Pas de HomeKit Bridge-opties aan"
|
||||
"title": "Pas de HomeKit-opties aan"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"title": "Velg domener som skal inkluderes"
|
||||
},
|
||||
"pairing": {
|
||||
"description": "S\u00e5 snart {name} er klart, vil sammenkobling v\u00e6re tilgjengelig i \"Notifications\" som \"HomeKit Bridge Setup\".",
|
||||
"description": "For \u00e5 fullf\u00f8re sammenkoblingen ved \u00e5 f\u00f8lge instruksjonene i \"Varsler\" under \"Sammenkobling av HomeKit\".",
|
||||
"title": "Koble sammen HomeKit"
|
||||
},
|
||||
"user": {
|
||||
@@ -28,8 +28,8 @@
|
||||
"include_domains": "Domener \u00e5 inkludere",
|
||||
"mode": "Modus"
|
||||
},
|
||||
"description": "HomeKit-integrasjonen gir deg tilgang til Home Assistant-enhetene dine i HomeKit. I bromodus er HomeKit Bridges begrenset til 150 tilbeh\u00f8r per forekomst inkludert selve broen. Hvis du \u00f8nsker \u00e5 bygge bro over maksimalt antall tilbeh\u00f8r, anbefales det at du bruker flere HomeKit-broer for forskjellige domener. Detaljert enhetskonfigurasjon er bare tilgjengelig via YAML. For best ytelse og for \u00e5 forhindre uventet utilgjengelighet, opprett og par sammen en egen HomeKit-forekomst i tilbeh\u00f8rsmodus for hver tv-mediaspiller og kamera.",
|
||||
"title": "Aktiver HomeKit"
|
||||
"description": "Velg domenene som skal inkluderes. Alle st\u00f8ttede enheter i domenet vil bli inkludert. Det opprettes en egen HomeKit-forekomst i tilbeh\u00f8rsmodus for hver tv-mediaspiller og kamera.",
|
||||
"title": "Velg domener som skal inkluderes"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -55,7 +55,7 @@
|
||||
"entities": "Entiteter",
|
||||
"mode": "Modus"
|
||||
},
|
||||
"description": "Velg enhetene som skal inkluderes. I tilbeh\u00f8rsmodus er bare \u00e9n enkelt enhet inkludert. I bridge include-modus inkluderes alle enheter i domenet med mindre bestemte enheter er valgt. I brounnlatingsmodus inkluderes alle enheter i domenet, med unntak av de utelatte enhetene. For best mulig ytelse, og for \u00e5 forhindre uventet utilgjengelighet, opprett og par en separat HomeKit-forekomst i tilbeh\u00f8rsmodus for hver tv-mediespiller og kamera.",
|
||||
"description": "Velg enhetene som skal inkluderes. I tilbeh\u00f8rsmodus er bare en enkelt enhet inkludert. I bridge-inkluderingsmodus vil alle enheter i domenet bli inkludert, med mindre spesifikke enheter er valgt. I bridge-ekskluderingsmodus vil alle enheter i domenet bli inkludert, bortsett fra de ekskluderte enhetene. For best ytelse vil et eget HomeKit-tilbeh\u00f8r v\u00e6re TV-mediaspiller og kamera.",
|
||||
"title": "Velg enheter som skal inkluderes"
|
||||
},
|
||||
"init": {
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"title": "Wybierz uwzgl\u0119dniane domeny"
|
||||
},
|
||||
"pairing": {
|
||||
"description": "Gdy tylko {name} b\u0119dzie gotowy, opcja parowania b\u0119dzie dost\u0119pna w \u201ePowiadomieniach\u201d jako \u201eKonfiguracja mostka HomeKit\u201d.",
|
||||
"description": "Aby doko\u0144czy\u0107 parowanie, post\u0119puj wg instrukcji \u201eParowanie HomeKit\u201d w \u201ePowiadomieniach\u201d.",
|
||||
"title": "Parowanie z HomeKit"
|
||||
},
|
||||
"user": {
|
||||
@@ -28,8 +28,8 @@
|
||||
"include_domains": "Domeny do uwzgl\u0119dnienia",
|
||||
"mode": "Tryb"
|
||||
},
|
||||
"description": "Integracja HomeKit pozwala na dost\u0119p do Twoich encji Home Assistant w HomeKit. W trybie \"Mostka\", mostki HomeKit s\u0105 ograniczone do 150 urz\u0105dze\u0144, w\u0142\u0105czaj\u0105c w to sam mostek. Je\u015bli chcesz wi\u0119cej ni\u017c dozwolona maksymalna liczba urz\u0105dze\u0144, zaleca si\u0119 u\u017cywanie wielu most\u00f3w HomeKit dla r\u00f3\u017cnych domen. Szczeg\u00f3\u0142owa konfiguracja encji jest dost\u0119pna tylko w trybie YAML dla g\u0142\u00f3wnego mostka. Dla najlepszej wydajno\u015bci oraz by zapobiec nieprzewidzianej niedost\u0119pno\u015bci urz\u0105dzenia, utw\u00f3rz i sparuj oddzieln\u0105 instancj\u0119 HomeKit w trybie akcesorium dla ka\u017cdego media playera oraz kamery.",
|
||||
"title": "Aktywacja HomeKit"
|
||||
"description": "Wybierz domeny do uwzgl\u0119dnienia. Wszystkie wspierane encje w danej domenie b\u0119d\u0105 uwzgl\u0119dnione. W trybie akcesorium, oddzielna instancja HomeKit zostanie utworzona dla ka\u017cdego tv media playera oraz kamery.",
|
||||
"title": "Wybierz uwzgl\u0119dniane domeny"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -55,7 +55,7 @@
|
||||
"entities": "Encje",
|
||||
"mode": "Tryb"
|
||||
},
|
||||
"description": "Wybierz encje, kt\u00f3re maj\u0105 by\u0107 uwzgl\u0119dnione. W trybie \"Akcesorium\" tylko jedna encja jest uwzgl\u0119dniona. W trybie \"Uwzgl\u0119dnij mostek\", wszystkie encje w danej domenie b\u0119d\u0105 uwzgl\u0119dnione, chyba \u017ce wybrane s\u0105 tylko konkretne encje. W trybie \"Wyklucz mostek\", wszystkie encje b\u0119d\u0105 uwzgl\u0119dnione, z wyj\u0105tkiem tych wybranych. Dla najlepszej wydajno\u015bci oraz by zapobiec nieprzewidzianej niedost\u0119pno\u015bci urz\u0105dzenia, utw\u00f3rz i sparuj oddzieln\u0105 instancj\u0119 HomeKit w trybie akcesorium dla ka\u017cdego media playera oraz kamery.",
|
||||
"description": "Wybierz encje, kt\u00f3re maj\u0105 by\u0107 uwzgl\u0119dnione. W trybie \"Akcesorium\" tylko jedna encja jest uwzgl\u0119dniona. W trybie \"Uwzgl\u0119dnij mostek\", wszystkie encje w danej domenie b\u0119d\u0105 uwzgl\u0119dnione, chyba \u017ce wybrane s\u0105 tylko konkretne encje. W trybie \"Wyklucz mostek\", wszystkie encje b\u0119d\u0105 uwzgl\u0119dnione, z wyj\u0105tkiem tych wybranych. Dla najlepszej wydajno\u015bci, zostanie utworzone oddzielne akcesorium HomeKit dla ka\u017cdego tv media playera oraz kamery.",
|
||||
"title": "Wybierz encje, kt\u00f3re maj\u0105 by\u0107 uwzgl\u0119dnione"
|
||||
},
|
||||
"init": {
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"title": "\u0412\u044b\u0431\u043e\u0440 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 HomeKit"
|
||||
},
|
||||
"pairing": {
|
||||
"description": "\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e {name} \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e, \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \"\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\u0445\" \u043a\u0430\u043a \"HomeKit Bridge Setup\".",
|
||||
"description": "\u0414\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u0432 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0438 \"HomeKit Pairing\".",
|
||||
"title": "\u0421\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0441 HomeKit"
|
||||
},
|
||||
"user": {
|
||||
@@ -28,8 +28,8 @@
|
||||
"include_domains": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u044b",
|
||||
"mode": "\u0420\u0435\u0436\u0438\u043c"
|
||||
},
|
||||
"description": "\u042d\u0442\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c Home Assistant \u0447\u0435\u0440\u0435\u0437 HomeKit. HomeKit Bridge \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d 150 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u0430\u043c\u0438 \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0430\u043c \u0431\u0440\u0438\u0434\u0436. \u0415\u0441\u043b\u0438 \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e HomeKit Bridge \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432. \u0414\u0435\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 YAML. \u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430\u043f\u043b\u0435\u0435\u0440\u0430 \u0438\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u044b.",
|
||||
"title": "HomeKit"
|
||||
"description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u043e\u043c\u0435\u043d\u044b. \u0411\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432\u0441\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u0437 \u0434\u043e\u043c\u0435\u043d\u0430. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430\u043f\u043b\u0435\u0435\u0440\u0430 \u0438\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u0430.",
|
||||
"title": "\u0412\u044b\u0431\u043e\u0440 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 HomeKit"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -55,7 +55,7 @@
|
||||
"entities": "\u041e\u0431\u044a\u0435\u043a\u0442\u044b",
|
||||
"mode": "\u0420\u0435\u0436\u0438\u043c"
|
||||
},
|
||||
"description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 HomeKit. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u0441\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u0443, \u043a\u0440\u043e\u043c\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430\u043f\u043b\u0435\u0435\u0440\u0430 \u0438\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u044b.",
|
||||
"description": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 HomeKit. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u0441\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u0443, \u043a\u0440\u043e\u043c\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430\u043f\u043b\u0435\u0435\u0440\u0430 \u0438\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u044b.",
|
||||
"title": "\u0412\u044b\u0431\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 HomeKit"
|
||||
},
|
||||
"init": {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user