Compare commits

...

123 Commits

Author SHA1 Message Date
Paulus Schoutsen 22f16759e5 Merge pull request #42874 from home-assistant/rc 2020-11-05 16:33:21 +01:00
rikroe 8895c65dd4 Bump bimmer_connected to 0.7.12 (#42875)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2020-11-05 15:32:12 +00:00
Paulus Schoutsen dfed834617 Bumped version to 0.117.5 2020-11-05 13:45:58 +00:00
Andreas Billmeier 7d0f5fa31a Revert "Fix broken maxcube component" (#42859)
This reverts commit 898f50386f.
2020-11-05 13:45:43 +00:00
cgtobi b65c92ce91 Fix Netatmo public weather sensor bug (#42858) 2020-11-05 13:45:42 +00:00
Aaron Bach 7c084975b7 Fix missing/incorrect SimpliSafe entities (#42846)
* Entity types

* Don't overdo it

* Fix missing/incorrect SimpliSafe entities
2020-11-05 13:44:57 +00:00
Aaron Bach 943cc243b5 Fix missing sensor exceptions in SimpliSafe (#42845)
* Fix missing sensor exceptions in SimpliSafe

* Entity types

* Don't overdo it
2020-11-05 13:44:56 +00:00
Aaron Bach ba48fd6c51 Clean up SimpliSafe binary sensor implementation (#42841)
* Clean up SimpliSafe binary sensor implementation

* Cleanup

* Constant name
2020-11-05 13:44:55 +00:00
Erik Montnemery 2f1d30fa85 Bump hatasmota to 0.0.25.1 (#42850) 2020-11-04 21:59:08 +01:00
Paulus Schoutsen 7a96f8a4eb Merge pull request #42836 from home-assistant/rc 2020-11-04 17:20:54 +01:00
Paulus Schoutsen df6ee2e51f Bumped version to 0.117.4 2020-11-04 15:47:28 +00:00
Maciej Bieniek 6bacda3cee Call coordinator.shutdown() when ConfigEntryNotReady (#42833) 2020-11-04 15:47:11 +00:00
Rob Bierbooms d4b68454a3 Cleanup dispatchers when unloading rfxtrx (#42803)
* Cleanup dispatchers

* Fix name

* Refactor code

* Fix typo in function description

* Fix pylint error

* Change function definition

* Move cleanup_callbacks data to domain
2020-11-04 15:47:11 +00:00
Clifford Roche 36b099592e Update greeclimate to 0.9.5 (#42796)
Provides better discovery across subnets in some cases
2020-11-04 15:47:09 +00:00
Paulus Schoutsen d156e95f8a Merge pull request #42824 from home-assistant/rc 2020-11-04 12:22:18 +01:00
Paulus Schoutsen f3c7b77afa Bumped version to 0.117.3 2020-11-04 09:24:41 +00:00
Paulus Schoutsen 45dbd49852 Fix evohome scheduling coroutines (#42821) 2020-11-04 09:24:33 +00:00
J. Nick Koston e4f88a02f7 Fix rest sensors with resource templates (#42818) 2020-11-04 09:24:32 +00:00
Rob Bierbooms 32652fde48 Filter rfxtrx replace devices in option flow on existing config entry (#42800)
* Fix function _can_replace_device

* Rearrange
2020-11-04 09:24:31 +00:00
rikroe 0dc926a131 Bump bimmer_connected to 0.7.11 (#42788) 2020-11-04 09:24:30 +00:00
Michael 43486917bf Fix broken 2fa authentication in synology_dsm (#42775) 2020-11-04 09:24:30 +00:00
cgtobi d967ecc8c6 Bump pyatmo to 4.2.0 (#42774) 2020-11-04 09:24:29 +00:00
Erik Montnemery a7bdd2aafe Force color or white mode exclusivity for Tasmota lights (#42772) 2020-11-04 09:24:28 +00:00
Aaron Bach e6cc35cff2 Fix incorrect property usage for SimpliSafe (#42770) 2020-11-04 09:24:27 +00:00
Aaron Bach b7d0a21a8b Bump pyairvisual to 5.0.4 (#42760) 2020-11-04 09:24:26 +00:00
rikroe beaaa1478c Bump bimmer_connected to 0.7.10: fix login issues, add (PH)EV services (#42747)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2020-11-04 09:24:25 +00:00
Raman Gupta 74d8569aab Fix Vizio host string for zeroconf discovery (#42738) 2020-11-04 09:24:25 +00:00
Andreas Billmeier dc0d27ec18 Fix broken maxcube component (#42674) 2020-11-04 09:24:24 +00:00
Andreas Billmeier 64707d89dd Please set exact cryptography version cryptography==3.2 (#42611) 2020-11-04 09:24:23 +00:00
Paulus Schoutsen 6c51ff63ad Merge pull request #42724 from home-assistant/rc 2020-11-01 21:29:21 +01:00
Paulus Schoutsen aecc3476e8 Bumped version to 0.117.2 2020-11-01 20:00:21 +00:00
Matthew Donoughe 43a990350b Use pylutron_caseta 0.7.1 (#42701) 2020-11-01 19:59:52 +00:00
Chris Talkington 769c5c1779 Fix canary camera entity inheritance (#42691) 2020-11-01 19:59:51 +00:00
Alexei Chetroi a93ae418a2 Bump up ZHA dependencies (#42679)
* Bump up ZHA dependencies

* Fix tests because of zigpy request signature change
2020-11-01 19:59:51 +00:00
Jason Hunter 562ccbbe25 attempt to renew subscription immediately to stop endless loop if it fails after setup (#42651) 2020-11-01 19:59:50 +00:00
Erik Montnemery 5f28c82837 Make sure Tasmota status sensors are disabled (#42643) 2020-11-01 19:59:49 +00:00
Joakim Sørensen 92f9a77770 Bump pycfdns to 1.2.1 (#42634) 2020-11-01 19:59:49 +00:00
Malte Franken 2430c5ea22 Fix geo_rss_events import statement (#42629)
* bump integration library version

* fix import statement
2020-11-01 19:59:48 +00:00
airthusiast 6d54ed14b4 Fix Fibaro HC2 climate device missing temperature (#42627) 2020-11-01 19:59:47 +00:00
Sören Oldag faf73e304a Bump pwmled to v1.6.6 (#42607) 2020-11-01 19:59:47 +00:00
Paulus Schoutsen e902cfcbf0 Merge pull request #42624 from home-assistant/rc 2020-10-30 10:11:50 +01:00
Paulus Schoutsen 750bb11895 Fix broken time trigger test (#42606) 2020-10-30 08:50:34 +00:00
Paulus Schoutsen 2dcd57bf38 Bumped version to 0.117.1 2020-10-30 08:31:58 +00:00
Clifford Roche 26766d68aa Update greeclimate to 0.9.2 (#42616)
Fixes issue with erroneous await in UDP recv queue
2020-10-30 08:30:57 +00:00
Erik Montnemery d26bceb110 Bump hatasmota to 0.0.25 (#42605) 2020-10-30 08:30:56 +00:00
Erik Montnemery aa52ade5a0 Fix MQTT template light (#42598) 2020-10-30 08:30:56 +00:00
Bram Kragten c57d697df5 Update frontend to 20201021.4 (#42590) 2020-10-30 08:30:55 +00:00
cgtobi c604595f98 Fix RMV giving wrong data and ignoring given parameters (#42561) 2020-10-30 08:30:54 +00:00
Jc2k 1ab2d55a7a Bump aiohomekit to 0.2.54 (#42532) 2020-10-30 08:30:53 +00:00
Rob Bierbooms 048db9cb7d Enable polling for DSMR derivative entity (#42524) 2020-10-30 08:30:53 +00:00
Michael 0959777b81 Fix adding Virtual DSM system in synology_dsm (#42523) 2020-10-30 08:30:52 +00:00
Franck Nijhof 9c0a2d69ff Merge pull request #42516 from home-assistant/rc 2020-10-28 20:01:21 +01:00
Franck Nijhof 529b849efe Bumped version to 0.117.0 2020-10-28 18:08:23 +01:00
Paulus Schoutsen a34d06e363 Default legacy templates to true (#42511)
* Default legacy templates to true

* Disable legacy_templates in tests

Co-authored-by: Franck Nijhof <git@frenck.dev>
2020-10-28 18:08:04 +01:00
Paulus Schoutsen 5b85776566 Fix string representation of template result wrappers (#42494) 2020-10-28 18:08:00 +01:00
Angelo Gagliano 68d2938c6b Move async_add_entities back to event loop for tplink component (#42454) 2020-10-28 18:07:55 +01:00
Paulus Schoutsen 5a460e609f Bumped version to 0.117.0b6 2020-10-27 22:26:04 +00:00
Erik Montnemery a88e011bba Fix race in Tasmota discovery (#42492) 2020-10-27 22:25:57 +00:00
Paulus Schoutsen 40be42299d Improve mqtt test (#42490) 2020-10-27 22:25:56 +00:00
Paulus Schoutsen 7dcebbe89d Bump cryptography to 3.2 (#42489) 2020-10-27 22:25:55 +00:00
Paulus Schoutsen cb453d3ae1 Make result wrappers more robust (#42488) 2020-10-27 22:25:55 +00:00
Bram Kragten 2effbb6604 Update frontend to 20201021.3 (#42486) 2020-10-27 22:25:54 +00:00
Erik Montnemery ba6acc286c Bump hatasmota to 0.0.24 (#42472) 2020-10-27 22:25:53 +00:00
Paulus Schoutsen 45c1c2acac Fix initial state of pi4ioe (#42459) 2020-10-27 22:25:53 +00:00
Quentame 1962a7c7ce Fix DSM Surveillance Station when only home mode is enabled (#42456) 2020-10-27 22:25:51 +00:00
Pascal Vizeli 8da732a89d Fix hassio-version (#42449) 2020-10-27 22:25:51 +00:00
João Gabriel 2697056ba9 Add device info default values to Panasonic Viera (#42441) 2020-10-27 22:25:50 +00:00
rajlaud 91e8593fb6 Improve Squeezebox media browser performance (#42439)
* Bump pysqueezebox version to better handle large libraries for media browser

* Merge changes into requirements
2020-10-27 22:25:49 +00:00
Aaron Bach 9fa97473cb Bump simplisafe-python to 9.6.0 (#42437) 2020-10-27 22:25:48 +00:00
Jason Hunter 29e7aa753c Remove title string from Xbox translations (#42431) 2020-10-27 22:25:47 +00:00
Tsvi Mostovicz af31aa7995 Fix DLNA DMR media receiver when using Python 3.9 (#42430) 2020-10-27 22:25:47 +00:00
Robert Svensson e3d29429d3 Make sure to clean up httpx session on failed connection to Axis device (#42428) 2020-10-27 22:25:46 +00:00
Angelo Gagliano 93e71ef218 Add retry for unavailable static tplink devices after HA starts (#42247) 2020-10-27 22:25:45 +00:00
Paulus Schoutsen 2893972c69 Bumped version to 0.117.0b5 2020-10-26 19:30:18 +00:00
Franck Nijhof 13b8bc6290 Add missing config flow translation key for Nest (#42423) 2020-10-26 19:29:44 +00:00
Franck Nijhof 326d36d303 Skip template result parsing in several places (#42408)
* Skip template result parsing in several places

* Adjust alert integration

* Adjust Alexa integration

* Adjust apns integration

* Adjust arest integration

* Adjust dialogflow integration

* Adjust generic camera integration

* Adjust imap email content  integration

* Adjust InfluxDB integration

* Adjust intent integration

* Adjust logbook integration

* Adjust HP ILO integration

* Adjust manual alarm control panel integration

* Adjust manual mqtt alarm control panel integration

* Adjust minio integration

* Adjust mqtt integration

* Adjust notify integration

* Adjust persistent notification integration

* Adjust rest integration

* Adjust rss feed template integration

* Adjust slack integration

* Adjust Xiaomi integration

* Adjust TCP integration

* Adjust Telegram Bot integration

* Bump CI cache version

* Revert "Bump CI cache version"

This reverts commit 875efe58cf165d84ce68aa8867b99a169fad4ea5.

* Adjust demo tests
2020-10-26 19:28:21 +00:00
Paulus Schoutsen 287b33eef3 Do not set up DSM when setting up Nest legacy (#42406) 2020-10-26 19:28:20 +00:00
Paulus Schoutsen 3ec83dc29e Catch ValueError in google_translate (#42405) 2020-10-26 19:28:20 +00:00
Franck Nijhof f716b7714b Allow skip parsing template result (#42401) 2020-10-26 19:28:19 +00:00
Paulus Schoutsen b7c958719e Fix MQTT publish from a script with templates (#42398) 2020-10-26 19:28:18 +00:00
Paulus Schoutsen 934ac73ae5 Fix CI (#42397) 2020-10-26 19:28:17 +00:00
Tsvi Mostovicz bcd2ae78a0 Bump libhdate depndency (#42396)
* Bump libhdate depndency

This version fixes an important bug found by @amitfin in py-libhdate/py-libhdate#78

* Update reqs

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-10-26 19:28:17 +00:00
Erik Montnemery c00ab762d3 Bump hatasmota to 0.0.23 (#42394) 2020-10-26 19:28:16 +00:00
Paulus Schoutsen 1fb18580b2 Store original result on template results (#42391)
* Store original result on template results

* Fix shell command test
2020-10-26 19:28:15 +00:00
Maksym D 9c6351c1b3 Change AfterShip polling interval from 5m to 15m (#42360)
This change will prevent reaching API requests limit of AfterShip free-tier account.
2020-10-26 19:28:14 +00:00
Paulus Schoutsen 4eacf3f6c0 Bumped version to 0.117.0b4 2020-10-25 22:54:50 +00:00
J. Nick Koston 35d2badb24 Ensure config entry platforms are excluded from reload (#42367) 2020-10-25 22:54:40 +00:00
Andre Lengwenus 331d5ba7ef Fix parameter issue in LCN cover close/stop (#42342) 2020-10-25 22:54:40 +00:00
mezz64 a2c157b5e9 Bump pyhik to 0.2.8 (#42322) 2020-10-25 22:54:39 +00:00
Jörg Thalheim 883fb8c168 Fix iCloud matching accounts (#42303)
`name` is no longer defined but `username`.
Fixes #38393
2020-10-25 22:54:38 +00:00
airthusiast 2e7ce63cbc Fix for Fibaro HC3 support, climate temp sensor and target temp (#42300) 2020-10-25 22:54:38 +00:00
Franck Nijhof b925ae39cb Upgrade spotipy to 2.16.1 (#42293) 2020-10-25 22:54:37 +00:00
Erik Montnemery 5c608eb1bc Fix reconfiguring of Tasmota lights (#42288) 2020-10-25 22:54:36 +00:00
Erik Montnemery 3032f9280c Fix Tasmota CT light (#42287) 2020-10-25 22:54:35 +00:00
uvjustin 00284a87d0 Fix AVError and allow more missing DTS packets in stream (#42277)
* Fix AVError and allow more missing DTS in stream init

* Avoid recreating container demux iterator

* Relax missing dts requirement

* Fix spelling error

* Fix error message count

* Add timeout to av.open read

* Increase STREAM_TIMEOUT to 30
2020-10-25 22:54:35 +00:00
Alan Tse 21917e86c9 Fix Tesla attribute refreshing (#42257)
* Fix Tesla attribute refreshing

* Remove extraneous copy
2020-10-25 22:54:34 +00:00
Allen Porter b6994689b1 Update nest integration with fixes from initial PR (#42250) 2020-10-25 22:54:33 +00:00
Teemu R 0c1c7d797c Only log xiaomi_miio update exceptions once (#41226)
* xiaomi_miio: only log update exceptions once

Replaces #37695

* add som more missed exception logger cases + do not change the control flow as pointed out by @cgtobi

* Use patch&MagickMock from tests.async_mock

* Fix linting for alarm_control_panel

* update the test to verify that the warning on update is only logged when the device was previously available
2020-10-25 22:54:33 +00:00
Paulus Schoutsen 9c60195780 Bumped version to 0.117.0b3 2020-10-23 15:45:06 +00:00
J. Nick Koston d8fea1c582 Ensure event listener integrations do the queue insert as a callback (#42265) 2020-10-23 15:44:56 +00:00
Erik Montnemery 84ab40c57d Fix Tasmota relay acting as on/off light (#42259) 2020-10-23 15:44:56 +00:00
Alan Tse aace9dce38 Fix is_on test for Tesla Charger switch (#42251)
closes #41755
2020-10-23 15:44:55 +00:00
TheJulianJES f6f95d0422 Fix polling of color for ZHA lights not updating (#42248) 2020-10-23 15:44:54 +00:00
BrianWithAHat e0466d4ac8 Fix MaryTTS filename extensions (#42228)
Co-authored-by: Brian Laferriere <BrianWithAHat@users.noreply.github.com>
2020-10-23 15:44:53 +00:00
Paulus Schoutsen 8e4a325fdb Bumped version to 0.117.0b2 2020-10-22 23:33:34 +00:00
Alexei Chetroi 868b14f151 Update ZHA dependencies (#42245) 2020-10-22 23:33:22 +00:00
Bram Kragten e660577e43 Update frontend to 20201021.2 (#42242) 2020-10-22 23:33:21 +00:00
J. Nick Koston 69cace1d41 Ensure websocket event serializer cache is effective if subscription iden differs (#42226)
Since someone websocket subscriptions will use an iden of 2 for
state_changed event (most comment), and some will use another
number for all events, the cache would not be used because the
iden number was different.  We now cache only the event and
use a fast replace to insert the iden number into the serailized
response.
2020-10-22 23:33:20 +00:00
Anders Melchiorsen 4f908bc58c Refresh now() templates on second=0 (#42225) 2020-10-22 23:33:20 +00:00
rikroe d00ca7bf03 Bump bimmer-connected to 0.7.8 to fix login issue (#42215)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2020-10-22 23:33:19 +00:00
Tom Harris 65eb5ea55f Fix issue in python > 3.8.2 (#42213) 2020-10-22 23:33:18 +00:00
Niccolo Zapponi 3586e0c5e4 Fix bug for SimpliSafe 2 systems repeatedly saying "your settings have been synchronised" (#42197)
* Fix bug for SimpliSafe 2 systems

* Improved loop and logging for SimpliSafe 2
2020-10-22 23:33:18 +00:00
Raman Gupta e0621d2e5f Set Vizio unique ID for discovery flow early and abort if configured to prevent duplicate discovery flows (#42194) 2020-10-22 23:33:17 +00:00
Erik Montnemery 1fb1bb0c08 Support reloading Tasmota config entries (#42097) 2020-10-22 23:33:16 +00:00
cgtobi 6c5e2af379 Add Netatmo sensor enable default (#41928) 2020-10-22 23:33:15 +00:00
Guido Schmitz fcbe90cb80 Fix precision of climate devices in devolo Home Control (#41832) 2020-10-22 23:33:15 +00:00
HomeAssistant Azure 3eece977f8 [ci skip] Translation update 2020-10-22 09:21:20 +02:00
Bram Kragten f1de6bf6b4 Bumped version to 0.117.0b1 2020-10-22 00:24:25 +02:00
Aaron Bach a8342d9395 Bump simplisafe-python to 9.5.1 (#42179) 2020-10-22 00:22:21 +02:00
J. Nick Koston 66453429b0 Avoid overloading the executor with service.yaml loads (#42172) 2020-10-22 00:22:19 +02:00
uvjustin a83a5a2603 Remove duplicated finalize_stream code in stream (#42171) 2020-10-22 00:22:19 +02:00
Bram Kragten bfd943c5dc Updated frontend to 20201021.1 (#42185) 2020-10-22 00:20:31 +02:00
Aaron Bach 1ea103f090 Remove coordinator success from SimpliSafe availability calculation (#42180) 2020-10-22 00:20:30 +02:00
336 changed files with 3521 additions and 950 deletions
-1
View File
@@ -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
+2 -2
View File
@@ -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"
}
}
}
}
}
+1 -1
View File
@@ -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"
}
}
}
}
}
+3 -3
View File
@@ -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)
+1 -1
View File
@@ -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"
}
}
}
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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 = ""
+1 -1
View File
@@ -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"
+3
View File
@@ -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"
}
}
}
}
}
+10
View File
@@ -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"
}
}
}
+1 -1
View File
@@ -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": {
+11 -1
View File
@@ -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"
}
}
}
}
}
+2 -2
View File
@@ -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",
+2 -2
View File
@@ -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.",
+3 -1
View File
@@ -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"
}
}
}
}
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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"
+1 -1
View File
@@ -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