forked from home-assistant/core
Compare commits
123 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 22f16759e5 | |||
| 8895c65dd4 | |||
| dfed834617 | |||
| 7d0f5fa31a | |||
| b65c92ce91 | |||
| 7c084975b7 | |||
| 943cc243b5 | |||
| ba48fd6c51 | |||
| 2f1d30fa85 | |||
| 7a96f8a4eb | |||
| df6ee2e51f | |||
| 6bacda3cee | |||
| d4b68454a3 | |||
| 36b099592e | |||
| d156e95f8a | |||
| f3c7b77afa | |||
| 45dbd49852 | |||
| e4f88a02f7 | |||
| 32652fde48 | |||
| 0dc926a131 | |||
| 43486917bf | |||
| d967ecc8c6 | |||
| a7bdd2aafe | |||
| e6cc35cff2 | |||
| b7d0a21a8b | |||
| beaaa1478c | |||
| 74d8569aab | |||
| dc0d27ec18 | |||
| 64707d89dd | |||
| 6c51ff63ad | |||
| aecc3476e8 | |||
| 43a990350b | |||
| 769c5c1779 | |||
| a93ae418a2 | |||
| 562ccbbe25 | |||
| 5f28c82837 | |||
| 92f9a77770 | |||
| 2430c5ea22 | |||
| 6d54ed14b4 | |||
| faf73e304a | |||
| e902cfcbf0 | |||
| 750bb11895 | |||
| 2dcd57bf38 | |||
| 26766d68aa | |||
| d26bceb110 | |||
| aa52ade5a0 | |||
| c57d697df5 | |||
| c604595f98 | |||
| 1ab2d55a7a | |||
| 048db9cb7d | |||
| 0959777b81 | |||
| 9c0a2d69ff | |||
| 529b849efe | |||
| a34d06e363 | |||
| 5b85776566 | |||
| 68d2938c6b | |||
| 5a460e609f | |||
| a88e011bba | |||
| 40be42299d | |||
| 7dcebbe89d | |||
| cb453d3ae1 | |||
| 2effbb6604 | |||
| ba6acc286c | |||
| 45c1c2acac | |||
| 1962a7c7ce | |||
| 8da732a89d | |||
| 2697056ba9 | |||
| 91e8593fb6 | |||
| 9fa97473cb | |||
| 29e7aa753c | |||
| af31aa7995 | |||
| e3d29429d3 | |||
| 93e71ef218 | |||
| 2893972c69 | |||
| 13b8bc6290 | |||
| 326d36d303 | |||
| 287b33eef3 | |||
| 3ec83dc29e | |||
| f716b7714b | |||
| b7c958719e | |||
| 934ac73ae5 | |||
| bcd2ae78a0 | |||
| c00ab762d3 | |||
| 1fb18580b2 | |||
| 9c6351c1b3 | |||
| 4eacf3f6c0 | |||
| 35d2badb24 | |||
| 331d5ba7ef | |||
| a2c157b5e9 | |||
| 883fb8c168 | |||
| 2e7ce63cbc | |||
| b925ae39cb | |||
| 5c608eb1bc | |||
| 3032f9280c | |||
| 00284a87d0 | |||
| 21917e86c9 | |||
| b6994689b1 | |||
| 0c1c7d797c | |||
| 9c60195780 | |||
| d8fea1c582 | |||
| 84ab40c57d | |||
| aace9dce38 | |||
| f6f95d0422 | |||
| e0466d4ac8 | |||
| 8e4a325fdb | |||
| 868b14f151 | |||
| e660577e43 | |||
| 69cace1d41 | |||
| 4f908bc58c | |||
| d00ca7bf03 | |||
| 65eb5ea55f | |||
| 3586e0c5e4 | |||
| e0621d2e5f | |||
| 1fb1bb0c08 | |||
| 6c5e2af379 | |||
| fcbe90cb80 | |||
| 3eece977f8 | |||
| f1de6bf6b4 | |||
| a8342d9395 | |||
| 66453429b0 | |||
| a83a5a2603 | |||
| bfd943c5dc | |||
| 1ea103f090 |
@@ -161,7 +161,6 @@ homeassistant/components/goalzero/* @tkdrob
|
||||
homeassistant/components/gogogate2/* @vangorra
|
||||
homeassistant/components/google_assistant/* @home-assistant/cloud
|
||||
homeassistant/components/google_cloud/* @lufton
|
||||
homeassistant/components/google_translate/* @awarecan
|
||||
homeassistant/components/gpsd/* @fabaff
|
||||
homeassistant/components/gree/* @cmroche
|
||||
homeassistant/components/greeneye_monitor/* @jkeljo
|
||||
|
||||
@@ -143,8 +143,8 @@ stages:
|
||||
|
||||
version="$(homeassistantRelease)"
|
||||
|
||||
git clone https://github.com/home-assistant/hassio-version
|
||||
cd hassio-version
|
||||
git clone https://github.com/home-assistant/version
|
||||
cd version
|
||||
|
||||
dev_version="$(jq --raw-output '.homeassistant.default' dev.json)"
|
||||
beta_version="$(jq --raw-output '.homeassistant.default' beta.json)"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"data": {
|
||||
"forecast": "Prognoza pogody"
|
||||
},
|
||||
"description": "Ze wzgl\u0119du na ograniczenia darmowej wersji klucza API AccuWeather po w\u0142\u0105czeniu prognozy pogody aktualizacje danych b\u0119d\u0105 wykonywane co 64 minut zamiast co 32 minut.",
|
||||
"description": "Ze wzgl\u0119du na ograniczenia darmowej wersji klucza API AccuWeather po w\u0142\u0105czeniu prognozy pogody aktualizacje danych b\u0119d\u0105 wykonywane co 64 minuty zamiast co 32 minuty.",
|
||||
"title": "Opcje AccuWeather"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
"abort": {
|
||||
"existing_instance_updated": "\u66f4\u65b0\u4e86\u73b0\u6709\u914d\u7f6e\u3002"
|
||||
},
|
||||
"error": {
|
||||
"connection_error": "\u8fde\u63a5\u5931\u8d25\u3002"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"ip_address": "IP\u5730\u5740"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,7 @@ UPDATE_TOPIC = f"{DOMAIN}_update"
|
||||
|
||||
ICON = "mdi:package-variant-closed"
|
||||
|
||||
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=5)
|
||||
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15)
|
||||
|
||||
SERVICE_ADD_TRACKING = "add_tracking"
|
||||
SERVICE_REMOVE_TRACKING = "remove_tracking"
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,6 @@
|
||||
"name": "AirVisual",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/airvisual",
|
||||
"requirements": ["pyairvisual==5.0.3"],
|
||||
"requirements": ["pyairvisual==5.0.4"],
|
||||
"codeowners": ["@bachya"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
"step": {
|
||||
"protocol": {
|
||||
"data": {
|
||||
"device_path": "Ger\u00e4tepfad",
|
||||
"host": "Host",
|
||||
"port": "Port"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"step": {
|
||||
"protocol": {
|
||||
"data": {
|
||||
"port": "\u7aef\u53e3"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -276,7 +276,7 @@ class Alert(ToggleEntity):
|
||||
self._send_done_message = True
|
||||
|
||||
if self._message_template is not None:
|
||||
message = self._message_template.async_render()
|
||||
message = self._message_template.async_render(parse_result=False)
|
||||
else:
|
||||
message = self._name
|
||||
|
||||
@@ -291,7 +291,7 @@ class Alert(ToggleEntity):
|
||||
if self._done_message_template is None:
|
||||
return
|
||||
|
||||
message = self._done_message_template.async_render()
|
||||
message = self._done_message_template.async_render(parse_result=False)
|
||||
|
||||
await self._send_notification_message(message)
|
||||
|
||||
@@ -300,7 +300,7 @@ class Alert(ToggleEntity):
|
||||
msg_payload = {ATTR_MESSAGE: message}
|
||||
|
||||
if self._title_template is not None:
|
||||
title = self._title_template.async_render()
|
||||
title = self._title_template.async_render(parse_result=False)
|
||||
msg_payload.update({ATTR_TITLE: title})
|
||||
if self._data:
|
||||
msg_payload.update({ATTR_DATA: self._data})
|
||||
|
||||
@@ -80,13 +80,17 @@ class AlexaFlashBriefingView(http.HomeAssistantView):
|
||||
output = {}
|
||||
if item.get(CONF_TITLE) is not None:
|
||||
if isinstance(item.get(CONF_TITLE), template.Template):
|
||||
output[ATTR_TITLE_TEXT] = item[CONF_TITLE].async_render()
|
||||
output[ATTR_TITLE_TEXT] = item[CONF_TITLE].async_render(
|
||||
parse_result=False
|
||||
)
|
||||
else:
|
||||
output[ATTR_TITLE_TEXT] = item.get(CONF_TITLE)
|
||||
|
||||
if item.get(CONF_TEXT) is not None:
|
||||
if isinstance(item.get(CONF_TEXT), template.Template):
|
||||
output[ATTR_MAIN_TEXT] = item[CONF_TEXT].async_render()
|
||||
output[ATTR_MAIN_TEXT] = item[CONF_TEXT].async_render(
|
||||
parse_result=False
|
||||
)
|
||||
else:
|
||||
output[ATTR_MAIN_TEXT] = item.get(CONF_TEXT)
|
||||
|
||||
@@ -97,13 +101,17 @@ class AlexaFlashBriefingView(http.HomeAssistantView):
|
||||
|
||||
if item.get(CONF_AUDIO) is not None:
|
||||
if isinstance(item.get(CONF_AUDIO), template.Template):
|
||||
output[ATTR_STREAM_URL] = item[CONF_AUDIO].async_render()
|
||||
output[ATTR_STREAM_URL] = item[CONF_AUDIO].async_render(
|
||||
parse_result=False
|
||||
)
|
||||
else:
|
||||
output[ATTR_STREAM_URL] = item.get(CONF_AUDIO)
|
||||
|
||||
if item.get(CONF_DISPLAY_URL) is not None:
|
||||
if isinstance(item.get(CONF_DISPLAY_URL), template.Template):
|
||||
output[ATTR_REDIRECTION_URL] = item[CONF_DISPLAY_URL].async_render()
|
||||
output[ATTR_REDIRECTION_URL] = item[CONF_DISPLAY_URL].async_render(
|
||||
parse_result=False
|
||||
)
|
||||
else:
|
||||
output[ATTR_REDIRECTION_URL] = item.get(CONF_DISPLAY_URL)
|
||||
|
||||
|
||||
@@ -271,7 +271,7 @@ class AlexaResponse:
|
||||
|
||||
self.reprompt = {
|
||||
"type": speech_type.value,
|
||||
key: text.async_render(self.variables),
|
||||
key: text.async_render(self.variables, parse_result=False),
|
||||
}
|
||||
|
||||
def as_dict(self):
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u8d26\u53f7\u5df2\u7ecf\u8bbe\u7f6e\u5b8c\u6210",
|
||||
"missing_configuration": "\u7ec4\u4ef6\u5c1a\u672a\u914d\u7f6e\u3002\u8bf7\u53c2\u89c2\u6587\u4ef6\u8bf4\u660e\u3002"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -410,7 +410,7 @@ class APITemplateView(HomeAssistantView):
|
||||
try:
|
||||
data = await request.json()
|
||||
tpl = template.Template(data["template"], request.app["hass"])
|
||||
return str(tpl.async_render(data.get("variables")))
|
||||
return tpl.async_render(variables=data.get("variables"), parse_result=False)
|
||||
except (ValueError, TemplateError) as ex:
|
||||
return self.json_message(
|
||||
f"Error rendering template: {ex}", HTTP_BAD_REQUEST
|
||||
|
||||
@@ -229,7 +229,7 @@ class ApnsNotificationService(BaseNotificationService):
|
||||
if isinstance(message, str):
|
||||
rendered_message = message
|
||||
elif isinstance(message, template_helper.Template):
|
||||
rendered_message = message.render()
|
||||
rendered_message = message.render(parse_result=False)
|
||||
else:
|
||||
rendered_message = ""
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||
|
||||
def _render(value):
|
||||
try:
|
||||
return value_template.async_render({"value": value})
|
||||
return value_template.async_render({"value": value}, parse_result=False)
|
||||
except TemplateError:
|
||||
_LOGGER.exception("Error parsing value")
|
||||
return value
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czona",
|
||||
"on": "w\u0142\u0105czona"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Automatyzacja"
|
||||
|
||||
@@ -280,12 +280,15 @@ async def get_device(hass, host, port, username, password):
|
||||
|
||||
except axis.Unauthorized as err:
|
||||
LOGGER.warning("Connected to device at %s but not registered.", host)
|
||||
await device.vapix.close()
|
||||
raise AuthenticationRequired from err
|
||||
|
||||
except (asyncio.TimeoutError, axis.RequestError) as err:
|
||||
LOGGER.error("Error connecting to the Axis device at %s", host)
|
||||
await device.vapix.close()
|
||||
raise CannotConnect from err
|
||||
|
||||
except axis.AxisException as err:
|
||||
LOGGER.exception("Unknown Axis communication error occurred")
|
||||
await device.vapix.close()
|
||||
raise AuthenticationRequired from err
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"reauth": {
|
||||
"title": "Erneute Authentifizierung"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"organization": "Organisation",
|
||||
"project": "Projekt"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,8 +91,8 @@
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
},
|
||||
"battery": {
|
||||
"off": "na\u0142adowana",
|
||||
|
||||
@@ -48,7 +48,12 @@
|
||||
"connected": "{entity_name} \u5df2\u8fde\u63a5",
|
||||
"gas": "{entity_name} \u5f00\u59cb\u68c0\u6d4b\u5230\u71c3\u6c14\u6cc4\u6f0f",
|
||||
"hot": "{entity_name} \u53d8\u70ed",
|
||||
"light": "{entity_name} \u5f00\u59cb\u68c0\u6d4b\u5230\u5149\u7ebf"
|
||||
"light": "{entity_name} \u5f00\u59cb\u68c0\u6d4b\u5230\u5149\u7ebf",
|
||||
"motion": "{entity_name} \u68c0\u6d4b\u5230\u6709\u4eba",
|
||||
"no_motion": "{entity_name} \u672a\u68c0\u6d4b\u5230\u6709\u4eba",
|
||||
"not_opened": "{entity_name}\u5df2\u5173\u95ed",
|
||||
"turned_off": "{entity_name} \u88ab\u5173\u95ed",
|
||||
"turned_on": "{entity_name} \u88ab\u6253\u5f00"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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.7"],
|
||||
"requirements": ["bimmer_connected==0.7.12"],
|
||||
"dependencies": [],
|
||||
"codeowners": ["@gerard33", "@rikroe"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"description": "\u8bbe\u7f6eSony Bravia\u7535\u89c6\u96c6\u6210\u3002\u5982\u679c\u60a8\u5728\u914d\u7f6e\u65b9\u9762\u9047\u5230\u95ee\u9898\uff0c\u8bf7\u8bbf\u95ee\uff1ahttps://www.home-assistant.io/integrations/braviatv\n\u786e\u4fdd\u7535\u89c6\u5df2\u6253\u5f00\u3002"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"not_supported": "Ger\u00e4t nicht unterst\u00fctzt"
|
||||
},
|
||||
"step": {
|
||||
"auth": {
|
||||
"title": "Authentifiziere dich beim Ger\u00e4t"
|
||||
},
|
||||
"finish": {
|
||||
"data": {
|
||||
"name": "Name"
|
||||
}
|
||||
},
|
||||
"title": "W\u00e4hle einen Namen f\u00fcr das Ger\u00e4t"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
||||
@@ -34,6 +34,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
||||
await coordinator.async_refresh()
|
||||
|
||||
if not coordinator.last_update_success:
|
||||
coordinator.shutdown()
|
||||
raise ConfigEntryNotReady
|
||||
|
||||
hass.data.setdefault(DOMAIN, {})
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25",
|
||||
"snmp_error": "SNMP\u670d\u52a1\u5668\u5df2\u5173\u95ed\u6216\u4e0d\u652f\u6301\u6253\u5370\u3002"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Kalendarz"
|
||||
|
||||
@@ -78,6 +78,7 @@ class CanaryCamera(CoordinatorEntity, Camera):
|
||||
def __init__(self, hass, coordinator, location_id, device, timeout, ffmpeg_args):
|
||||
"""Initialize a Canary security camera."""
|
||||
super().__init__(coordinator)
|
||||
Camera.__init__(self)
|
||||
self._ffmpeg = hass.data[DATA_FFMPEG]
|
||||
self._ffmpeg_arguments = ffmpeg_args
|
||||
self._location_id = location_id
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "\u5bc6\u7801",
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"domain": "cloudflare",
|
||||
"name": "Cloudflare",
|
||||
"documentation": "https://www.home-assistant.io/integrations/cloudflare",
|
||||
"requirements": ["pycfdns==1.1.1"],
|
||||
"requirements": ["pycfdns==1.2.1"],
|
||||
"codeowners": ["@ludeeus", "@ctalkington"],
|
||||
"config_flow": true
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3.",
|
||||
"unknown": "Error inesperat"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Ha fallat la connexi\u00f3",
|
||||
"invalid_auth": "Autenticaci\u00f3 inv\u00e0lida",
|
||||
"invalid_zone": "Zona inv\u00e0lida"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Registres"
|
||||
},
|
||||
"title": "Selecciona els registres a actualitzar"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "Token d'API"
|
||||
},
|
||||
"description": "Aquesta integraci\u00f3 necessita un token d'API creat amb permisos d'edici\u00f3 Zone:Zone:Read i Zone:DNS:Edit per a totes les zones del teu compte.",
|
||||
"title": "Connexi\u00f3 amb Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Zona"
|
||||
},
|
||||
"title": "Selecciona la zona a actualitzar"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace.",
|
||||
"unknown": "Neo\u010dek\u00e1van\u00e1 chyba"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit",
|
||||
"invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed",
|
||||
"invalid_zone": "Neplatn\u00e1 z\u00f3na"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Z\u00e1znamy"
|
||||
},
|
||||
"title": "Vyberte z\u00e1znamy, kter\u00e9 chcete aktualizovat"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "API token"
|
||||
},
|
||||
"title": "P\u0159ipojen\u00ed ke Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Z\u00f3na"
|
||||
},
|
||||
"title": "Vyberte z\u00f3nu, kter\u00e1 m\u00e1 b\u00fdt aktualizov\u00e1na"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Already configured. Only a single configuration possible.",
|
||||
"unknown": "Unexpected error"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Failed to connect",
|
||||
"invalid_auth": "Invalid authentication",
|
||||
"invalid_zone": "Invalid zone"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Records"
|
||||
},
|
||||
"title": "Choose the Records to Update"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "API Token"
|
||||
},
|
||||
"description": "This integration requires an API Token created with Zone:Zone:Read and Zone:DNS:Edit permissions for all zones in your account.",
|
||||
"title": "Connect to Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Zone"
|
||||
},
|
||||
"title": "Choose the Zone to Update"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"unknown": "Tundmatu viga"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u00dchendus nurjus",
|
||||
"invalid_auth": "Tuvastamise viga",
|
||||
"invalid_zone": "Sobimatu ala"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Kirjed"
|
||||
},
|
||||
"title": "Vali v\u00e4rskendatavad kirjed"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "Api v\u00f5ti"
|
||||
},
|
||||
"description": "Selle sidumise jaoks on vaja API tokenit, mis on loodud Zone: Zone: Read ja Zone: DNS: Edit k\u00f5igi oma konto alade \u00f5igusi.!?",
|
||||
"title": "Loo \u00fchendus Cloudflare'iga"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Ala"
|
||||
},
|
||||
"title": "Vali v\u00e4rskendatav ala"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja.",
|
||||
"unknown": "Nieoczekiwany b\u0142\u0105d"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia",
|
||||
"invalid_auth": "Niepoprawne uwierzytelnienie",
|
||||
"invalid_zone": "Nieprawid\u0142owa strefa"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "Rekordy"
|
||||
},
|
||||
"title": "Wybierz rekordy do uaktualnienia"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "Token API"
|
||||
},
|
||||
"description": "Ta integracja wymaga tokena API utworzonego z uprawnieniami \"Zone:Zone:Read\" oraz \"Zone:DNS:Edit\" dla wszystkich stref na Twoim koncie.",
|
||||
"title": "Po\u0142\u0105czenie z Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "Strefa"
|
||||
},
|
||||
"title": "Wybierz stref\u0119 do uaktualnienia"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.",
|
||||
"unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\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_auth": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.",
|
||||
"invalid_zone": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0437\u043e\u043d\u0430"
|
||||
},
|
||||
"flow_title": "Cloudflare: {name}",
|
||||
"step": {
|
||||
"records": {
|
||||
"data": {
|
||||
"records": "\u0417\u0430\u043f\u0438\u0441\u0438"
|
||||
},
|
||||
"title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"api_token": "\u0422\u043e\u043a\u0435\u043d API"
|
||||
},
|
||||
"description": "\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043a\u0435\u043d API, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 Zone:Zone:Read \u0438 Zone:DNS:Edit \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u043e\u043d \u0432 \u0412\u0430\u0448\u0435\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.",
|
||||
"title": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a Cloudflare"
|
||||
},
|
||||
"zone": {
|
||||
"data": {
|
||||
"zone": "\u0417\u043e\u043d\u0430"
|
||||
},
|
||||
"title": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u043e\u043d\u0443 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"configure": "skonfiguruj",
|
||||
"configure": "konfiguruj",
|
||||
"configured": "skonfigurowany"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"off": "\u53ef\u4ee5\u5173\u95ed"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,12 @@
|
||||
{
|
||||
"device_automation": {
|
||||
"condition_type": {
|
||||
"is_closed": "{entity_name} \u5df2\u5173\u95ed"
|
||||
},
|
||||
"trigger_type": {
|
||||
"closed": "{entity_name}\u5df2\u5173\u95ed"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"closed": "\u5df2\u5173\u95ed",
|
||||
|
||||
@@ -4,9 +4,14 @@
|
||||
"already_configured": "\u8bbe\u5907\u5df2\u914d\u7f6e\u5b8c\u6210",
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25",
|
||||
"invalid_auth": "\u9a8c\u8bc1\u7801\u9519\u8bef"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "API\u5bc6\u7801",
|
||||
"host": "\u4e3b\u673a"
|
||||
},
|
||||
"description": "\u8f93\u5165\u60a8\u7684 Daikin \u7a7a\u8c03\u7684 IP \u5730\u5740\u3002",
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
"side_3": "\u7b2c 3 \u9762",
|
||||
"side_4": "\u7b2c 4 \u9762",
|
||||
"side_5": "\u7b2c 5 \u9762",
|
||||
"side_6": "\u7b2c 6 \u9762"
|
||||
"side_6": "\u7b2c 6 \u9762",
|
||||
"turn_off": "\u5173\u95ed"
|
||||
},
|
||||
"trigger_type": {
|
||||
"remote_awakened": "\u8bbe\u5907\u5524\u9192",
|
||||
|
||||
@@ -9,7 +9,7 @@ from homeassistant.components.climate import (
|
||||
ClimateEntity,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import PRECISION_HALVES
|
||||
from homeassistant.const import PRECISION_HALVES, PRECISION_TENTHS
|
||||
from homeassistant.helpers.typing import HomeAssistantType
|
||||
|
||||
from .const import DOMAIN
|
||||
@@ -60,9 +60,14 @@ class DevoloClimateDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, ClimateEntit
|
||||
|
||||
@property
|
||||
def target_temperature(self) -> Optional[float]:
|
||||
"""Return the current temperature."""
|
||||
"""Return the target temperature."""
|
||||
return self._value
|
||||
|
||||
@property
|
||||
def target_temperature_step(self) -> float:
|
||||
"""Return the precision of the target temperature."""
|
||||
return PRECISION_HALVES
|
||||
|
||||
@property
|
||||
def hvac_mode(self) -> str:
|
||||
"""Return the supported HVAC mode."""
|
||||
@@ -86,7 +91,7 @@ class DevoloClimateDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, ClimateEntit
|
||||
@property
|
||||
def precision(self) -> float:
|
||||
"""Return the precision of the set temperature."""
|
||||
return PRECISION_HALVES
|
||||
return PRECISION_TENTHS
|
||||
|
||||
@property
|
||||
def supported_features(self):
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
"config": {
|
||||
"error": {
|
||||
"account_error": "\u8ba4\u8bc1\u65e0\u6548",
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25",
|
||||
"session_error": "\u8fde\u63a5\u5931\u8d25",
|
||||
"unknown": "\u672a\u77e5\u9519\u8bef"
|
||||
},
|
||||
@@ -9,7 +10,8 @@
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "\u5bc6\u7801",
|
||||
"server": "\u670d\u52a1\u5668"
|
||||
"server": "\u670d\u52a1\u5668",
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ class DialogflowResponse:
|
||||
assert self.speech is None
|
||||
|
||||
if isinstance(text, template.Template):
|
||||
text = text.async_render(self.parameters)
|
||||
text = text.async_render(self.parameters, parse_result=False)
|
||||
|
||||
self.speech = text
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ async def async_setup_platform(
|
||||
requester = AiohttpSessionRequester(session, True)
|
||||
|
||||
# ensure event handler has been started
|
||||
with await hass.data[DLNA_DMR_DATA]["lock"]:
|
||||
async with hass.data[DLNA_DMR_DATA]["lock"]:
|
||||
server_host = config.get(CONF_LISTEN_IP)
|
||||
if server_host is None:
|
||||
server_host = get_local_ip()
|
||||
@@ -220,7 +220,7 @@ class DlnaDmrDevice(MediaPlayerEntity):
|
||||
|
||||
async def _async_on_hass_stop(self, event):
|
||||
"""Event handler on Home Assistant stop."""
|
||||
with await self.hass.data[DLNA_DMR_DATA]["lock"]:
|
||||
async with self.hass.data[DLNA_DMR_DATA]["lock"]:
|
||||
await self._device.async_unsubscribe_services()
|
||||
|
||||
async def async_update(self):
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -320,6 +320,16 @@ class DerivativeDSMREntity(DSMREntity):
|
||||
"""Return the calculated current hourly rate."""
|
||||
return self._state
|
||||
|
||||
@property
|
||||
def force_update(self):
|
||||
"""Disable force update."""
|
||||
return False
|
||||
|
||||
@property
|
||||
def should_poll(self):
|
||||
"""Enable polling."""
|
||||
return True
|
||||
|
||||
async def async_update(self):
|
||||
"""Recalculate hourly rate if timestamp has changed.
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -431,7 +431,7 @@ class EvoBroker:
|
||||
return
|
||||
|
||||
if refresh:
|
||||
self.hass.helpers.event.async_call_later(1, self.async_update())
|
||||
self.hass.helpers.event.async_call_later(1, self.async_update)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Wentylator"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"trigger_type": {
|
||||
"turned_off": "{entity_name} \u88ab\u5173\u95ed",
|
||||
"turned_on": "{entity_name} \u88ab\u5f00\u542f"
|
||||
"turned_on": "{entity_name} \u88ab\u6253\u5f00"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
|
||||
@@ -132,7 +132,10 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
elif (
|
||||
self._temp_sensor_device is None
|
||||
and "unit" in device.properties
|
||||
and "value" in device.properties
|
||||
and (
|
||||
"value" in device.properties
|
||||
or "heatingThermostatSetpoint" in device.properties
|
||||
)
|
||||
and (device.properties.unit == "C" or device.properties.unit == "F")
|
||||
):
|
||||
self._temp_sensor_device = FibaroDevice(device)
|
||||
@@ -141,6 +144,7 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
if (
|
||||
"setTargetLevel" in device.actions
|
||||
or "setThermostatSetpoint" in device.actions
|
||||
or "setHeatingThermostatSetpoint" in device.actions
|
||||
):
|
||||
self._target_temp_device = FibaroDevice(device)
|
||||
self._support_flags |= SUPPORT_TARGET_TEMPERATURE
|
||||
@@ -317,6 +321,8 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
"""Return the current temperature."""
|
||||
if self._temp_sensor_device:
|
||||
device = self._temp_sensor_device.fibaro_device
|
||||
if "heatingThermostatSetpoint" in device.properties:
|
||||
return float(device.properties.heatingThermostatSetpoint)
|
||||
return float(device.properties.value)
|
||||
return None
|
||||
|
||||
@@ -325,6 +331,8 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
"""Return the temperature we try to reach."""
|
||||
if self._target_temp_device:
|
||||
device = self._target_temp_device.fibaro_device
|
||||
if "heatingThermostatSetpointFuture" in device.properties:
|
||||
return float(device.properties.heatingThermostatSetpointFuture)
|
||||
return float(device.properties.targetLevel)
|
||||
return None
|
||||
|
||||
@@ -335,5 +343,7 @@ class FibaroThermostat(FibaroDevice, ClimateEntity):
|
||||
if temperature is not None:
|
||||
if "setThermostatSetpoint" in target.fibaro_device.actions:
|
||||
target.action("setThermostatSetpoint", self.fibaro_op_mode, temperature)
|
||||
elif "setHeatingThermostatSetpoint" in target.fibaro_device.actions:
|
||||
target.action("setHeatingThermostatSetpoint", temperature)
|
||||
else:
|
||||
target.action("setTargetLevel", temperature)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"auth_failed": "\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef"
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"domain": "frontend",
|
||||
"name": "Home Assistant Frontend",
|
||||
"documentation": "https://www.home-assistant.io/integrations/frontend",
|
||||
"requirements": ["home-assistant-frontend==20201021.0"],
|
||||
"requirements": ["home-assistant-frontend==20201021.4"],
|
||||
"dependencies": [
|
||||
"api",
|
||||
"auth",
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -121,7 +121,7 @@ class GenericCamera(Camera):
|
||||
async def async_camera_image(self):
|
||||
"""Return a still image response from the camera."""
|
||||
try:
|
||||
url = self._still_image_url.async_render()
|
||||
url = self._still_image_url.async_render(parse_result=False)
|
||||
except TemplateError as err:
|
||||
_LOGGER.error("Error parsing template %s: %s", self._still_image_url, err)
|
||||
return self._last_image
|
||||
@@ -178,7 +178,7 @@ class GenericCamera(Camera):
|
||||
return None
|
||||
|
||||
try:
|
||||
return self._stream_source.async_render()
|
||||
return self._stream_source.async_render(parse_result=False)
|
||||
except TemplateError as err:
|
||||
_LOGGER.error("Error parsing template %s: %s", self._stream_source, err)
|
||||
return None
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
"domain": "geo_rss_events",
|
||||
"name": "GeoRSS",
|
||||
"documentation": "https://www.home-assistant.io/integrations/geo_rss_events",
|
||||
"requirements": ["georss_generic_client==0.3"],
|
||||
"requirements": ["georss_generic_client==0.4"],
|
||||
"codeowners": ["@exxamalte"]
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ from datetime import timedelta
|
||||
import logging
|
||||
|
||||
from georss_client import UPDATE_OK, UPDATE_OK_NO_DATA
|
||||
from georss_client.generic_feed import GenericFeed
|
||||
from georss_generic_client import GenericFeed
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,5 +3,5 @@
|
||||
"name": "Google Translate Text-to-Speech",
|
||||
"documentation": "https://www.home-assistant.io/integrations/google_translate",
|
||||
"requirements": ["gTTS-token==1.1.3"],
|
||||
"codeowners": ["@awarecan"]
|
||||
"codeowners": []
|
||||
}
|
||||
|
||||
@@ -123,9 +123,14 @@ class GoogleProvider(Provider):
|
||||
|
||||
data = b""
|
||||
for idx, part in enumerate(message_parts):
|
||||
part_token = await self.hass.async_add_executor_job(
|
||||
token.calculate_token, part
|
||||
)
|
||||
try:
|
||||
part_token = await self.hass.async_add_executor_job(
|
||||
token.calculate_token, part
|
||||
)
|
||||
except ValueError as err:
|
||||
# If token seed fetching fails.
|
||||
_LOGGER.warning(err)
|
||||
return None, None
|
||||
|
||||
url_param = {
|
||||
"ie": "UTF-8",
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
"name": "Gree Climate",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/gree",
|
||||
"requirements": ["greeclimate==0.9.0"],
|
||||
"requirements": ["greeclimate==0.9.5"],
|
||||
"codeowners": ["@cmroche"]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"title": "\u683c\u529b\u7a7a\u8c03"
|
||||
}
|
||||
@@ -5,9 +5,9 @@
|
||||
"home": "w domu",
|
||||
"locked": "Zablokowane",
|
||||
"not_home": "poza domem",
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"off": "wy\u0142.",
|
||||
"ok": "ok",
|
||||
"on": "w\u0142\u0105czony",
|
||||
"on": "w\u0142.",
|
||||
"open": "otwarte",
|
||||
"problem": "problem",
|
||||
"unlocked": "Odblokowany"
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,6 @@
|
||||
"domain": "hikvision",
|
||||
"name": "Hikvision",
|
||||
"documentation": "https://www.home-assistant.io/integrations/hikvision",
|
||||
"requirements": ["pyhik==0.2.7"],
|
||||
"requirements": ["pyhik==0.2.8"],
|
||||
"codeowners": ["@mezz64"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,10 @@
|
||||
"options": {
|
||||
"step": {
|
||||
"advanced": {
|
||||
"data": {
|
||||
"safe_mode": "Veilige modus (alleen inschakelen als het koppelen mislukt)"
|
||||
},
|
||||
"description": "Deze instellingen hoeven alleen te worden aangepast als HomeKit niet functioneert.",
|
||||
"title": "Geavanceerde configuratie"
|
||||
},
|
||||
"exclude": {
|
||||
@@ -30,9 +34,11 @@
|
||||
"init": {
|
||||
"data": {
|
||||
"include_domains": "Op te nemen domeinen"
|
||||
}
|
||||
},
|
||||
"title": "Selecteer domeinen om zichtbaar te maken."
|
||||
},
|
||||
"yaml": {
|
||||
"description": "Deze invoer wordt beheerd via YAML",
|
||||
"title": "Pas de HomeKit Bridge-opties aan"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/homekit_controller",
|
||||
"requirements": [
|
||||
"aiohomekit==0.2.53"
|
||||
"aiohomekit==0.2.54"
|
||||
],
|
||||
"zeroconf": [
|
||||
"_hap._tcp.local."
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"unknown": "Ein unbekannter Fehler ist aufgetreten."
|
||||
},
|
||||
"error": {
|
||||
"invalid_pin": "Ung\u00fcltige PIN, bitte versuche es erneut.",
|
||||
"invalid_sgtin_or_pin": "Ung\u00fcltige PIN, bitte versuche es erneut.",
|
||||
"press_the_button": "Bitte dr\u00fccke die blaue Taste.",
|
||||
"register_failed": "Registrierung fehlgeschlagen, bitte versuche es erneut.",
|
||||
|
||||
@@ -157,7 +157,9 @@ class HpIloSensor(Entity):
|
||||
ilo_data = getattr(self.hp_ilo_data.data, self._ilo_function)()
|
||||
|
||||
if self._sensor_value_template is not None:
|
||||
ilo_data = self._sensor_value_template.render(ilo_data=ilo_data)
|
||||
ilo_data = self._sensor_value_template.render(
|
||||
ilo_data=ilo_data, parse_result=False
|
||||
)
|
||||
|
||||
self._state = ilo_data
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"connection_failed": "\u8fde\u63a5\u5931\u8d25",
|
||||
"incorrect_username": "\u7528\u6237\u540d\u9519\u8bef",
|
||||
"incorrect_username_or_password": "\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@
|
||||
"data": {
|
||||
"host": ""
|
||||
},
|
||||
"title": "Valige Hue sild"
|
||||
"title": "Vali Hue sild"
|
||||
},
|
||||
"link": {
|
||||
"description": "Vajutage silla nuppu, et registreerida Philips Hue Home Assistant abil. \n\n ! [Nupu asukoht sillal] (/ static / images / config_philips_hue.jpg)",
|
||||
|
||||
@@ -25,5 +25,10 @@
|
||||
"title": "\u8fde\u63a5\u4e2d\u67a2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"device_automation": {
|
||||
"trigger_subtype": {
|
||||
"turn_off": "\u5173\u95ed"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,8 +20,8 @@
|
||||
},
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Nawil\u017cacz"
|
||||
|
||||
@@ -6,6 +6,13 @@
|
||||
"toggle": "\u5207\u6362 {entity_name} \u5f00\u5173",
|
||||
"turn_off": "\u5173\u95ed {entity_name}",
|
||||
"turn_on": "\u6253\u5f00 {entity_name}"
|
||||
},
|
||||
"condition_type": {
|
||||
"is_off": "{entity_name} \u5df2\u5173\u95ed"
|
||||
},
|
||||
"trigger_type": {
|
||||
"turned_off": "{entity_name} \u88ab\u5173\u95ed",
|
||||
"turned_on": "{entity_name} \u88ab\u6253\u5f00"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"connection_failure": "\u65e0\u6cd5\u8fde\u63a5\u5230iAqualink\u3002\u68c0\u67e5\u60a8\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\u3002"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"description": "\u8bf7\u8f93\u5165\u60a8\u7684iAqualink\u5e10\u6237\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\u3002"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -187,7 +187,7 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool
|
||||
icloud_account = hass.data[DOMAIN].get(account_identifier)
|
||||
if icloud_account is None:
|
||||
for account in hass.data[DOMAIN].values():
|
||||
if account.name == account_identifier:
|
||||
if account.username == account_identifier:
|
||||
icloud_account = account
|
||||
|
||||
if icloud_account is None:
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
"validate_verification_code": "\u65e0\u6cd5\u9a8c\u8bc1\u9a8c\u8bc1\u7801\uff0c\u8bf7\u9009\u62e9\u53d7\u4fe1\u4efb\u7684\u8bbe\u5907\u5e76\u91cd\u65b0\u5f00\u59cb\u9a8c\u8bc1"
|
||||
},
|
||||
"step": {
|
||||
"reauth": {
|
||||
"data": {
|
||||
"password": "\u5bc6\u7801"
|
||||
}
|
||||
},
|
||||
"trusted_device": {
|
||||
"data": {
|
||||
"trusted_device": "\u53d7\u4fe1\u4efb\u7684\u8bbe\u5907"
|
||||
@@ -18,7 +23,8 @@
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "\u5bc6\u7801"
|
||||
"password": "\u5bc6\u7801",
|
||||
"username": "\u90ae\u7bb1"
|
||||
},
|
||||
"description": "\u8bf7\u8f93\u5165\u51ed\u636e",
|
||||
"title": "iCloud \u51ed\u636e"
|
||||
|
||||
@@ -183,7 +183,7 @@ class EmailContentSensor(Entity):
|
||||
ATTR_DATE: email_message["Date"],
|
||||
ATTR_BODY: EmailContentSensor.get_msg_text(email_message),
|
||||
}
|
||||
return self._value_template.render(variables)
|
||||
return self._value_template.render(variables, parse_result=False)
|
||||
|
||||
def sender_allowed(self, email_message):
|
||||
"""Check if the sender is in the allowed senders list."""
|
||||
|
||||
@@ -26,6 +26,7 @@ from homeassistant.const import (
|
||||
STATE_UNAVAILABLE,
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers import event as event_helper, state as state_helper
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity_values import EntityValues
|
||||
@@ -500,6 +501,7 @@ class InfluxThread(threading.Thread):
|
||||
self.shutdown = False
|
||||
hass.bus.listen(EVENT_STATE_CHANGED, self._event_listener)
|
||||
|
||||
@callback
|
||||
def _event_listener(self, event):
|
||||
"""Listen for new messages on the bus and queue them for Influx."""
|
||||
item = (time.monotonic(), event)
|
||||
|
||||
@@ -268,7 +268,7 @@ class InfluxFluxSensorData:
|
||||
"""Get the latest data by querying influx."""
|
||||
_LOGGER.debug(RENDERING_QUERY_MESSAGE, self.query)
|
||||
try:
|
||||
rendered_query = self.query.render()
|
||||
rendered_query = self.query.render(parse_result=False)
|
||||
except TemplateError as ex:
|
||||
_LOGGER.error(RENDERING_QUERY_ERROR_MESSAGE, ex)
|
||||
return
|
||||
@@ -312,7 +312,7 @@ class InfluxQLSensorData:
|
||||
"""Get the latest data with a shell command."""
|
||||
_LOGGER.debug(RENDERING_WHERE_MESSAGE, self.where)
|
||||
try:
|
||||
where_clause = self.where.render()
|
||||
where_clause = self.where.render(parse_result=False)
|
||||
except TemplateError as ex:
|
||||
_LOGGER.error(RENDERING_WHERE_ERROR_MESSAGE, ex)
|
||||
return
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"state": {
|
||||
"_": {
|
||||
"off": "wy\u0142\u0105czony",
|
||||
"on": "w\u0142\u0105czony"
|
||||
"off": "wy\u0142.",
|
||||
"on": "w\u0142."
|
||||
}
|
||||
},
|
||||
"title": "Pole warto\u015bci logicznej"
|
||||
|
||||
@@ -159,7 +159,7 @@ async def async_setup_entry(hass, entry):
|
||||
identifiers={(DOMAIN, str(devices.modem.address))},
|
||||
manufacturer="Smart Home",
|
||||
name=f"{devices.modem.description} {devices.modem.address}",
|
||||
model=f"{devices.modem.model} (0x{devices.modem.cat:02x}, 0x{devices.modem.subcat:02x})",
|
||||
model=f"{devices.modem.model} ({devices.modem.cat!r}, 0x{devices.modem.subcat:02x})",
|
||||
sw_version=f"{devices.modem.firmware:02x} Engine Version: {devices.modem.engine_version}",
|
||||
)
|
||||
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"error": {
|
||||
"select_single": "W\u00e4hle eine Option aus."
|
||||
},
|
||||
"step": {
|
||||
"add_override": {
|
||||
"title": "Insteon"
|
||||
|
||||
@@ -60,7 +60,8 @@
|
||||
"already_configured": "Insteoni modemi \u00fchendus on juba seadistatud"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u00dchendamine nurjus"
|
||||
"cannot_connect": "\u00dchendamine nurjus",
|
||||
"input_error": "Vigane sisestus, kontrolli andmeid"
|
||||
},
|
||||
"step": {
|
||||
"add_override": {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"hub2": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
},
|
||||
"hubv2": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -87,13 +87,14 @@ class ScriptIntentHandler(intent.IntentHandler):
|
||||
|
||||
if speech is not None:
|
||||
response.async_set_speech(
|
||||
speech[CONF_TEXT].async_render(slots), speech[CONF_TYPE]
|
||||
speech[CONF_TEXT].async_render(slots, parse_result=False),
|
||||
speech[CONF_TYPE],
|
||||
)
|
||||
|
||||
if card is not None:
|
||||
response.async_set_card(
|
||||
card[CONF_TITLE].async_render(slots),
|
||||
card[CONF_CONTENT].async_render(slots),
|
||||
card[CONF_TITLE].async_render(slots, parse_result=False),
|
||||
card[CONF_CONTENT].async_render(slots, parse_result=False),
|
||||
card[CONF_TYPE],
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user