forked from home-assistant/core
Compare commits
108 Commits
2021.3.0b3
...
2021.3.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a8844ff24a | ||
|
|
b80c2d426c | ||
|
|
b352c5840f | ||
|
|
9f6007b4e2 | ||
|
|
58573dc74d | ||
|
|
a51ad137a1 | ||
|
|
9601cb7445 | ||
|
|
96b266b2e8 | ||
|
|
3c1aac1034 | ||
|
|
0f115f6937 | ||
|
|
f1fc6c4b25 | ||
|
|
37f486941a | ||
|
|
69f63129aa | ||
|
|
56efae3cb5 | ||
|
|
a2e00324a8 | ||
|
|
e63f766c20 | ||
|
|
e7717694a3 | ||
|
|
ba2b62305b | ||
|
|
b25f846136 | ||
|
|
c1a5a18b53 | ||
|
|
3b05a12e62 | ||
|
|
1145c30c4b | ||
|
|
939da2403f | ||
|
|
ef79d24a8c | ||
|
|
55c1b67de4 | ||
|
|
90e0801c1b | ||
|
|
65859b4107 | ||
|
|
6c45a7d533 | ||
|
|
ddc6cd6da1 | ||
|
|
a4369fc352 | ||
|
|
d11da43551 | ||
|
|
f99ef25f88 | ||
|
|
9fa0de8600 | ||
|
|
91ac4554a2 | ||
|
|
d9542c2efe | ||
|
|
915ee2f4ee | ||
|
|
ff86f64806 | ||
|
|
25ff2e745d | ||
|
|
f53cff49d5 | ||
|
|
36a2521799 | ||
|
|
ee55a04b4b | ||
|
|
6724d86565 | ||
|
|
14dca8e783 | ||
|
|
1817147995 | ||
|
|
0bf3dea40c | ||
|
|
5685b4aa33 | ||
|
|
ef9b9663c5 | ||
|
|
d83ccdc97a | ||
|
|
c0840e22dc | ||
|
|
33c3566106 | ||
|
|
d175ac8e0d | ||
|
|
c2f7a38d09 | ||
|
|
e9785fcd3d | ||
|
|
b711686e10 | ||
|
|
584ad07567 | ||
|
|
a89ba0ed8e | ||
|
|
15c89ebada | ||
|
|
24919e99b8 | ||
|
|
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 |
@@ -46,7 +46,7 @@ homeassistant/components/arcam_fmj/* @elupus
|
||||
homeassistant/components/arduino/* @fabaff
|
||||
homeassistant/components/arest/* @fabaff
|
||||
homeassistant/components/arris_tg2492lg/* @vanbalken
|
||||
homeassistant/components/asuswrt/* @kennedyshead
|
||||
homeassistant/components/asuswrt/* @kennedyshead @ollo69
|
||||
homeassistant/components/atag/* @MatsNL
|
||||
homeassistant/components/aten_pe/* @mtdcr
|
||||
homeassistant/components/atome/* @baqs
|
||||
|
||||
@@ -14,7 +14,7 @@ schedules:
|
||||
always: true
|
||||
variables:
|
||||
- name: versionBuilder
|
||||
value: '2020.11.0'
|
||||
value: '2021.02.0'
|
||||
- group: docker
|
||||
- group: github
|
||||
- group: twine
|
||||
|
||||
@@ -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."
|
||||
},
|
||||
|
||||
19
homeassistant/components/aemet/translations/de.json
Normal file
19
homeassistant/components/aemet/translations/de.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -393,7 +393,7 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
|
||||
),
|
||||
ATTR_FORECAST_TEMP: self._get_temperature_day(day),
|
||||
ATTR_FORECAST_TEMP_LOW: self._get_temperature_low_day(day),
|
||||
ATTR_FORECAST_TIME: dt_util.as_utc(date),
|
||||
ATTR_FORECAST_TIME: dt_util.as_utc(date).isoformat(),
|
||||
ATTR_FORECAST_WIND_SPEED: self._get_wind_speed_day(day),
|
||||
ATTR_FORECAST_WIND_BEARING: self._get_wind_bearing_day(day),
|
||||
}
|
||||
@@ -412,7 +412,7 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
|
||||
day, hour
|
||||
),
|
||||
ATTR_FORECAST_TEMP: self._get_temperature(day, hour),
|
||||
ATTR_FORECAST_TIME: dt_util.as_utc(forecast_dt),
|
||||
ATTR_FORECAST_TIME: dt_util.as_utc(forecast_dt).isoformat(),
|
||||
ATTR_FORECAST_WIND_SPEED: self._get_wind_speed(day, hour),
|
||||
ATTR_FORECAST_WIND_BEARING: self._get_wind_bearing(day, hour),
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,7 @@ from .const import (
|
||||
DATA_COORDINATOR,
|
||||
DOMAIN,
|
||||
INTEGRATION_TYPE_GEOGRAPHY_COORDS,
|
||||
INTEGRATION_TYPE_GEOGRAPHY_NAME,
|
||||
INTEGRATION_TYPE_NODE_PRO,
|
||||
LOGGER,
|
||||
)
|
||||
@@ -142,12 +143,21 @@ def _standardize_geography_config_entry(hass, config_entry):
|
||||
if not config_entry.options:
|
||||
# If the config entry doesn't already have any options set, set defaults:
|
||||
entry_updates["options"] = {CONF_SHOW_ON_MAP: True}
|
||||
if CONF_INTEGRATION_TYPE not in config_entry.data:
|
||||
# If the config entry data doesn't contain the integration type, add it:
|
||||
entry_updates["data"] = {
|
||||
**config_entry.data,
|
||||
CONF_INTEGRATION_TYPE: INTEGRATION_TYPE_GEOGRAPHY_COORDS,
|
||||
}
|
||||
if config_entry.data.get(CONF_INTEGRATION_TYPE) not in [
|
||||
INTEGRATION_TYPE_GEOGRAPHY_COORDS,
|
||||
INTEGRATION_TYPE_GEOGRAPHY_NAME,
|
||||
]:
|
||||
# If the config entry data doesn't contain an integration type that we know
|
||||
# about, infer it from the data we have:
|
||||
entry_updates["data"] = {**config_entry.data}
|
||||
if CONF_CITY in config_entry.data:
|
||||
entry_updates["data"][
|
||||
CONF_INTEGRATION_TYPE
|
||||
] = INTEGRATION_TYPE_GEOGRAPHY_NAME
|
||||
else:
|
||||
entry_updates["data"][
|
||||
CONF_INTEGRATION_TYPE
|
||||
] = INTEGRATION_TYPE_GEOGRAPHY_COORDS
|
||||
|
||||
if not entry_updates:
|
||||
return
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"domain": "amcrest",
|
||||
"name": "Amcrest",
|
||||
"documentation": "https://www.home-assistant.io/integrations/amcrest",
|
||||
"requirements": ["amcrest==1.7.0"],
|
||||
"requirements": ["amcrest==1.7.1"],
|
||||
"dependencies": ["ffmpeg"],
|
||||
"codeowners": ["@pnbruckner"]
|
||||
}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -128,7 +128,7 @@ class AsusWrtFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
|
||||
conf_protocol = user_input[CONF_PROTOCOL]
|
||||
if conf_protocol == PROTOCOL_TELNET:
|
||||
await api.connection.disconnect()
|
||||
api.connection.disconnect()
|
||||
return RESULT_SUCCESS
|
||||
|
||||
async def async_step_user(self, user_input=None):
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/asuswrt",
|
||||
"requirements": ["aioasuswrt==1.3.1"],
|
||||
"codeowners": ["@kennedyshead"]
|
||||
"codeowners": ["@kennedyshead", "@ollo69"]
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ class AsusWrtRouter:
|
||||
"""Close the connection."""
|
||||
if self._api is not None:
|
||||
if self._protocol == PROTOCOL_TELNET:
|
||||
await self._api.connection.disconnect()
|
||||
self._api.connection.disconnect()
|
||||
self._api = None
|
||||
|
||||
for func in self._on_close:
|
||||
|
||||
24
homeassistant/components/asuswrt/translations/de.json
Normal file
24
homeassistant/components/asuswrt/translations/de.json
Normal file
@@ -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"
|
||||
},
|
||||
|
||||
@@ -102,7 +102,7 @@ class BondEntity(Entity):
|
||||
|
||||
async def _async_update_if_bpup_not_alive(self, *_):
|
||||
"""Fetch via the API if BPUP is not alive."""
|
||||
if self._bpup_subs.alive and self._initialized:
|
||||
if self._bpup_subs.alive and self._initialized and self._available:
|
||||
return
|
||||
|
||||
if self._update_lock.locked():
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -256,7 +256,8 @@ class ClimaCellEntity(CoordinatorEntity):
|
||||
"""Return device registry information."""
|
||||
return {
|
||||
"identifiers": {(DOMAIN, self._config_entry.data[CONF_API_KEY])},
|
||||
"name": self.name,
|
||||
"name": "ClimaCell",
|
||||
"manufacturer": "ClimaCell",
|
||||
"sw_version": "v3",
|
||||
"entry_type": "service",
|
||||
}
|
||||
|
||||
10
homeassistant/components/climacell/translations/af.json
Normal file
10
homeassistant/components/climacell/translations/af.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"title": "Update ClimaCell opties"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "ClimaCell"
|
||||
}
|
||||
34
homeassistant/components/climacell/translations/ca.json
Normal file
34
homeassistant/components/climacell/translations/ca.json
Normal file
@@ -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"
|
||||
}
|
||||
20
homeassistant/components/climacell/translations/cs.json
Normal file
20
homeassistant/components/climacell/translations/cs.json
Normal file
@@ -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"
|
||||
}
|
||||
19
homeassistant/components/climacell/translations/de.json
Normal file
19
homeassistant/components/climacell/translations/de.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
34
homeassistant/components/climacell/translations/en.json
Normal file
34
homeassistant/components/climacell/translations/en.json
Normal file
@@ -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"
|
||||
}
|
||||
30
homeassistant/components/climacell/translations/es.json
Normal file
30
homeassistant/components/climacell/translations/es.json
Normal file
@@ -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"
|
||||
}
|
||||
34
homeassistant/components/climacell/translations/et.json
Normal file
34
homeassistant/components/climacell/translations/et.json
Normal file
@@ -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"
|
||||
}
|
||||
34
homeassistant/components/climacell/translations/fr.json
Normal file
34
homeassistant/components/climacell/translations/fr.json
Normal file
@@ -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"
|
||||
}
|
||||
17
homeassistant/components/climacell/translations/he.json
Normal file
17
homeassistant/components/climacell/translations/he.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
34
homeassistant/components/climacell/translations/it.json
Normal file
34
homeassistant/components/climacell/translations/it.json
Normal file
@@ -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"
|
||||
}
|
||||
32
homeassistant/components/climacell/translations/nl.json
Normal file
32
homeassistant/components/climacell/translations/nl.json
Normal file
@@ -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"
|
||||
}
|
||||
34
homeassistant/components/climacell/translations/no.json
Normal file
34
homeassistant/components/climacell/translations/no.json
Normal file
@@ -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"
|
||||
}
|
||||
34
homeassistant/components/climacell/translations/ru.json
Normal file
34
homeassistant/components/climacell/translations/ru.json
Normal file
@@ -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"
|
||||
}
|
||||
34
homeassistant/components/climacell/translations/zh-Hant.json
Normal file
34
homeassistant/components/climacell/translations/zh-Hant.json
Normal file
@@ -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
|
||||
|
||||
@@ -21,7 +22,6 @@ from homeassistant.const import (
|
||||
LENGTH_MILES,
|
||||
PRESSURE_HPA,
|
||||
PRESSURE_INHG,
|
||||
TEMP_CELSIUS,
|
||||
TEMP_FAHRENHEIT,
|
||||
)
|
||||
from homeassistant.helpers.entity import Entity
|
||||
@@ -30,7 +30,6 @@ from homeassistant.helpers.typing import HomeAssistantType
|
||||
from homeassistant.util import dt as dt_util
|
||||
from homeassistant.util.distance import convert as distance_convert
|
||||
from homeassistant.util.pressure import convert as pressure_convert
|
||||
from homeassistant.util.temperature import convert as temp_convert
|
||||
|
||||
from . import ClimaCellDataUpdateCoordinator, ClimaCellEntity
|
||||
from .const import (
|
||||
@@ -80,7 +79,7 @@ def _translate_condition(
|
||||
|
||||
def _forecast_dict(
|
||||
hass: HomeAssistantType,
|
||||
time: str,
|
||||
forecast_dt: datetime,
|
||||
use_datetime: bool,
|
||||
condition: str,
|
||||
precipitation: Optional[float],
|
||||
@@ -92,10 +91,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)
|
||||
|
||||
@@ -104,15 +100,11 @@ def _forecast_dict(
|
||||
precipitation = (
|
||||
distance_convert(precipitation / 12, LENGTH_FEET, LENGTH_METERS) * 1000
|
||||
)
|
||||
if temp:
|
||||
temp = temp_convert(temp, TEMP_FAHRENHEIT, TEMP_CELSIUS)
|
||||
if temp_low:
|
||||
temp_low = temp_convert(temp_low, TEMP_FAHRENHEIT, TEMP_CELSIUS)
|
||||
if wind_speed:
|
||||
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 +238,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)
|
||||
@@ -260,6 +254,7 @@ class ClimaCellWeatherEntity(ClimaCellEntity, WeatherEntity):
|
||||
|
||||
if self.forecast_type == DAILY:
|
||||
use_datetime = False
|
||||
forecast_dt = dt_util.start_of_local_day(forecast_dt)
|
||||
precipitation = self._get_cc_value(
|
||||
forecast, CC_ATTR_PRECIPITATION_DAILY
|
||||
)
|
||||
@@ -290,7 +285,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": []
|
||||
}
|
||||
|
||||
21
homeassistant/components/econet/translations/de.json
Normal file
21
homeassistant/components/econet/translations/de.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
homeassistant/components/enocean/translations/nl.json
Normal file
7
homeassistant/components/enocean/translations/nl.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk."
|
||||
}
|
||||
}
|
||||
}
|
||||
21
homeassistant/components/faa_delays/translations/ca.json
Normal file
21
homeassistant/components/faa_delays/translations/ca.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8
homeassistant/components/faa_delays/translations/cs.json
Normal file
8
homeassistant/components/faa_delays/translations/cs.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit",
|
||||
"unknown": "Neo\u010dek\u00e1van\u00e1 chyba"
|
||||
}
|
||||
}
|
||||
}
|
||||
8
homeassistant/components/faa_delays/translations/de.json
Normal file
8
homeassistant/components/faa_delays/translations/de.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
19
homeassistant/components/faa_delays/translations/es.json
Normal file
19
homeassistant/components/faa_delays/translations/es.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
21
homeassistant/components/faa_delays/translations/et.json
Normal file
21
homeassistant/components/faa_delays/translations/et.json
Normal file
@@ -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": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
21
homeassistant/components/faa_delays/translations/fr.json
Normal file
21
homeassistant/components/faa_delays/translations/fr.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
18
homeassistant/components/faa_delays/translations/he.json
Normal file
18
homeassistant/components/faa_delays/translations/he.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
21
homeassistant/components/faa_delays/translations/it.json
Normal file
21
homeassistant/components/faa_delays/translations/it.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
21
homeassistant/components/faa_delays/translations/nl.json
Normal file
21
homeassistant/components/faa_delays/translations/nl.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
21
homeassistant/components/faa_delays/translations/no.json
Normal file
21
homeassistant/components/faa_delays/translations/no.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
21
homeassistant/components/faa_delays/translations/ru.json
Normal file
21
homeassistant/components/faa_delays/translations/ru.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -77,6 +77,7 @@ _NOT_SPEED_INTERVAL = "interval"
|
||||
_NOT_SPEED_IDLE = "idle"
|
||||
_NOT_SPEED_FAVORITE = "favorite"
|
||||
_NOT_SPEED_SLEEP = "sleep"
|
||||
_NOT_SPEED_SILENT = "silent"
|
||||
|
||||
_NOT_SPEEDS_FILTER = {
|
||||
_NOT_SPEED_OFF,
|
||||
@@ -85,6 +86,7 @@ _NOT_SPEEDS_FILTER = {
|
||||
_NOT_SPEED_SMART,
|
||||
_NOT_SPEED_INTERVAL,
|
||||
_NOT_SPEED_IDLE,
|
||||
_NOT_SPEED_SILENT,
|
||||
_NOT_SPEED_SLEEP,
|
||||
_NOT_SPEED_FAVORITE,
|
||||
}
|
||||
@@ -652,7 +654,7 @@ def speed_list_without_preset_modes(speed_list: List):
|
||||
output: ["1", "2", "3", "4", "5", "6", "7"]
|
||||
|
||||
input: ["Auto", "Silent", "Favorite", "Idle", "Medium", "High", "Strong"]
|
||||
output: ["Silent", "Medium", "High", "Strong"]
|
||||
output: ["Medium", "High", "Strong"]
|
||||
"""
|
||||
|
||||
return [speed for speed in speed_list if speed.lower() not in _NOT_SPEEDS_FILTER]
|
||||
@@ -674,7 +676,7 @@ def preset_modes_from_speed_list(speed_list: List):
|
||||
output: ["smart"]
|
||||
|
||||
input: ["Auto", "Silent", "Favorite", "Idle", "Medium", "High", "Strong"]
|
||||
output: ["Auto", "Favorite", "Idle"]
|
||||
output: ["Auto", "Silent", "Favorite", "Idle"]
|
||||
"""
|
||||
|
||||
return [
|
||||
|
||||
@@ -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": {
|
||||
|
||||
7
homeassistant/components/firmata/translations/nl.json
Normal file
7
homeassistant/components/firmata/translations/nl.json
Normal file
@@ -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==20210225.0"
|
||||
"home-assistant-frontend==20210302.6"
|
||||
],
|
||||
"dependencies": [
|
||||
"api",
|
||||
|
||||
@@ -35,6 +35,7 @@ from homeassistant.const import (
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.core import DOMAIN as HA_DOMAIN, CoreState, callback
|
||||
from homeassistant.exceptions import ConditionError
|
||||
from homeassistant.helpers import condition
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.event import (
|
||||
@@ -439,12 +440,16 @@ class GenericThermostat(ClimateEntity, RestoreEntity):
|
||||
current_state = STATE_ON
|
||||
else:
|
||||
current_state = HVAC_MODE_OFF
|
||||
long_enough = condition.state(
|
||||
self.hass,
|
||||
self.heater_entity_id,
|
||||
current_state,
|
||||
self.min_cycle_duration,
|
||||
)
|
||||
try:
|
||||
long_enough = condition.state(
|
||||
self.hass,
|
||||
self.heater_entity_id,
|
||||
current_state,
|
||||
self.min_cycle_duration,
|
||||
)
|
||||
except ConditionError:
|
||||
long_enough = False
|
||||
|
||||
if not long_enough:
|
||||
return
|
||||
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
17
homeassistant/components/habitica/translations/de.json
Normal file
17
homeassistant/components/habitica/translations/de.json
Normal file
@@ -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."""
|
||||
@@ -613,7 +616,7 @@ class HomeKit:
|
||||
self._async_register_bridge(dev_reg)
|
||||
await self._async_start(bridged_states)
|
||||
_LOGGER.debug("Driver start for %s", self._name)
|
||||
self.hass.add_job(self.driver.start_service)
|
||||
await self.driver.async_start()
|
||||
self.status = STATUS_RUNNING
|
||||
|
||||
@callback
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"name": "HomeKit",
|
||||
"documentation": "https://www.home-assistant.io/integrations/homekit",
|
||||
"requirements": [
|
||||
"HAP-python==3.3.0",
|
||||
"HAP-python==3.4.0",
|
||||
"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.",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user