homeassistant 2025.12.0b5__py3-none-any.whl → 2025.12.0b8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- homeassistant/components/airobot/translations/el.json +5 -1
- homeassistant/components/airobot/translations/en-GB.json +5 -1
- homeassistant/components/airobot/translations/lt.json +5 -1
- homeassistant/components/airobot/translations/sk.json +5 -1
- homeassistant/components/alarm_control_panel/translations/cs.json +3 -1
- homeassistant/components/alarm_control_panel/translations/de.json +1 -1
- homeassistant/components/alarm_control_panel/translations/en-GB.json +21 -7
- homeassistant/components/alarm_control_panel/translations/es.json +13 -7
- homeassistant/components/alarm_control_panel/translations/lt.json +21 -7
- homeassistant/components/alarm_control_panel/translations/sk.json +21 -7
- homeassistant/components/anglian_water/translations/en-GB.json +2 -1
- homeassistant/components/anglian_water/translations/lt.json +2 -1
- homeassistant/components/anglian_water/translations/sk.json +2 -1
- homeassistant/components/assist_satellite/manifest.json +1 -1
- homeassistant/components/assist_satellite/translations/en-GB.json +12 -4
- homeassistant/components/assist_satellite/translations/es.json +12 -4
- homeassistant/components/assist_satellite/translations/lt.json +12 -4
- homeassistant/components/assist_satellite/translations/sk.json +12 -4
- homeassistant/components/automation/manifest.json +2 -0
- homeassistant/components/automation/translations/en-GB.json +8 -0
- homeassistant/components/automation/translations/es.json +8 -0
- homeassistant/components/automation/translations/fr.json +8 -0
- homeassistant/components/automation/translations/lt.json +8 -0
- homeassistant/components/automation/translations/sk.json +8 -0
- homeassistant/components/binary_sensor/strings.json +4 -4
- homeassistant/components/binary_sensor/translations/de.json +3 -3
- homeassistant/components/binary_sensor/translations/en-GB.json +36 -1
- homeassistant/components/binary_sensor/translations/en.json +4 -4
- homeassistant/components/binary_sensor/translations/es.json +36 -1
- homeassistant/components/binary_sensor/translations/et.json +0 -4
- homeassistant/components/binary_sensor/translations/lt.json +36 -1
- homeassistant/components/binary_sensor/translations/sk.json +4 -4
- homeassistant/components/binary_sensor/translations/zh-Hant.json +3 -3
- homeassistant/components/binary_sensor/triggers.yaml +2 -2
- homeassistant/components/camera/__init__.py +1 -1
- homeassistant/components/climate/translations/en-GB.json +15 -5
- homeassistant/components/climate/translations/es.json +11 -5
- homeassistant/components/climate/translations/lt.json +15 -5
- homeassistant/components/climate/translations/sk.json +15 -5
- homeassistant/components/cloud/client.py +9 -5
- homeassistant/components/cloud/http_api.py +21 -0
- homeassistant/components/conversation/manifest.json +1 -1
- homeassistant/components/esphome/translations/lt.json +1 -0
- homeassistant/components/fan/translations/en-GB.json +6 -2
- homeassistant/components/fan/translations/es.json +2 -1
- homeassistant/components/fan/translations/lt.json +6 -2
- homeassistant/components/fan/translations/sk.json +6 -2
- homeassistant/components/google_air_quality/translations/en-GB.json +154 -1
- homeassistant/components/group/notify.py +28 -5
- homeassistant/components/hassio/const.py +1 -0
- homeassistant/components/hassio/strings.json +1 -1
- homeassistant/components/hassio/translations/cs.json +0 -1
- homeassistant/components/hassio/translations/de.json +1 -1
- homeassistant/components/hassio/translations/el.json +0 -1
- homeassistant/components/hassio/translations/en-GB.json +1 -1
- homeassistant/components/hassio/translations/en.json +1 -1
- homeassistant/components/hassio/translations/es.json +1 -1
- homeassistant/components/hassio/translations/et.json +0 -1
- homeassistant/components/hassio/translations/fr.json +0 -1
- homeassistant/components/hassio/translations/fy.json +0 -3
- homeassistant/components/hassio/translations/ga.json +0 -1
- homeassistant/components/hassio/translations/he.json +0 -1
- homeassistant/components/hassio/translations/id.json +0 -1
- homeassistant/components/hassio/translations/lt.json +1 -1
- homeassistant/components/hassio/translations/mk.json +0 -1
- homeassistant/components/hassio/translations/nl.json +0 -1
- homeassistant/components/hassio/translations/pt.json +0 -1
- homeassistant/components/hassio/translations/ru.json +0 -1
- homeassistant/components/hassio/translations/sk.json +1 -1
- homeassistant/components/hassio/translations/sv.json +0 -1
- homeassistant/components/hassio/translations/tr.json +0 -1
- homeassistant/components/hassio/translations/zh-Hans.json +0 -1
- homeassistant/components/hassio/translations/zh-Hant.json +1 -1
- homeassistant/components/homeassistant_connect_zbt2/config_flow.py +0 -17
- homeassistant/components/homeassistant_connect_zbt2/const.py +0 -58
- homeassistant/components/homeassistant_hardware/firmware_config_flow.py +0 -5
- homeassistant/components/hue_ble/translations/en-GB.json +2 -1
- homeassistant/components/hue_ble/translations/lt.json +2 -1
- homeassistant/components/hue_ble/translations/sk.json +2 -1
- homeassistant/components/iometer/manifest.json +1 -1
- homeassistant/components/lawn_mower/translations/en-GB.json +12 -4
- homeassistant/components/lawn_mower/translations/es.json +4 -4
- homeassistant/components/lawn_mower/translations/lt.json +12 -4
- homeassistant/components/lawn_mower/translations/sk.json +12 -4
- homeassistant/components/letpot/manifest.json +1 -1
- homeassistant/components/libre_hardware_monitor/coordinator.py +26 -18
- homeassistant/components/light/translations/en-GB.json +6 -2
- homeassistant/components/light/translations/es.json +2 -2
- homeassistant/components/light/translations/lt.json +6 -2
- homeassistant/components/light/translations/sk.json +6 -2
- homeassistant/components/media_player/translations/en-GB.json +3 -1
- homeassistant/components/media_player/translations/es.json +1 -1
- homeassistant/components/media_player/translations/lt.json +3 -1
- homeassistant/components/media_player/translations/sk.json +3 -1
- homeassistant/components/miele/translations/en-GB.json +1 -0
- homeassistant/components/miele/translations/lt.json +1 -0
- homeassistant/components/mqtt/translations/en-GB.json +3 -1
- homeassistant/components/mqtt/translations/es.json +1 -1
- homeassistant/components/mqtt/translations/lt.json +5 -1
- homeassistant/components/mqtt/translations/sk.json +3 -1
- homeassistant/components/music_assistant/__init__.py +2 -1
- homeassistant/components/music_assistant/config_flow.py +23 -5
- homeassistant/components/nest/manifest.json +1 -1
- homeassistant/components/nordpool/manifest.json +1 -1
- homeassistant/components/oralb/manifest.json +1 -0
- homeassistant/components/ping/helpers.py +1 -1
- homeassistant/components/plugwise/translations/en-GB.json +1 -1
- homeassistant/components/roborock/manifest.json +1 -1
- homeassistant/components/roborock/roborock_storage.py +29 -10
- homeassistant/components/tedee/manifest.json +1 -0
- homeassistant/components/text/translations/en-GB.json +7 -1
- homeassistant/components/text/translations/es.json +1 -1
- homeassistant/components/text/translations/lt.json +7 -1
- homeassistant/components/text/translations/sk.json +7 -1
- homeassistant/components/unifiprotect/translations/el.json +6 -0
- homeassistant/components/unifiprotect/translations/lt.json +10 -0
- homeassistant/components/vacuum/translations/en-GB.json +12 -4
- homeassistant/components/vacuum/translations/es.json +3 -3
- homeassistant/components/vacuum/translations/lt.json +12 -4
- homeassistant/components/vacuum/translations/sk.json +12 -4
- homeassistant/components/wled/config_flow.py +5 -1
- homeassistant/components/wled/coordinator.py +9 -0
- homeassistant/components/wled/strings.json +10 -2
- homeassistant/components/wled/translations/de.json +10 -2
- homeassistant/components/wled/translations/en-GB.json +10 -2
- homeassistant/components/wled/translations/en.json +10 -2
- homeassistant/components/wled/translations/es.json +10 -2
- homeassistant/components/wled/translations/lt.json +10 -2
- homeassistant/components/wled/translations/sk.json +10 -2
- homeassistant/components/wled/translations/zh-Hant.json +10 -2
- homeassistant/components/wled/update.py +1 -1
- homeassistant/components/zha/config_flow.py +2 -6
- homeassistant/components/zha/radio_manager.py +2 -2
- homeassistant/const.py +1 -1
- homeassistant/generated/integrations.json +2 -2
- homeassistant/generated/labs.py +2 -2
- homeassistant/package_constraints.txt +1 -1
- {homeassistant-2025.12.0b5.dist-info → homeassistant-2025.12.0b8.dist-info}/METADATA +1 -1
- {homeassistant-2025.12.0b5.dist-info → homeassistant-2025.12.0b8.dist-info}/RECORD +144 -144
- {homeassistant-2025.12.0b5.dist-info → homeassistant-2025.12.0b8.dist-info}/WHEEL +0 -0
- {homeassistant-2025.12.0b5.dist-info → homeassistant-2025.12.0b8.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.12.0b5.dist-info → homeassistant-2025.12.0b8.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.12.0b5.dist-info → homeassistant-2025.12.0b8.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.12.0b5.dist-info → homeassistant-2025.12.0b8.dist-info}/top_level.txt +0 -0
|
@@ -121,7 +121,6 @@
|
|
|
121
121
|
"title": "Red\u00e9marrage(s) n\u00e9cessaire(s)"
|
|
122
122
|
},
|
|
123
123
|
"issue_system_free_space": {
|
|
124
|
-
"description": "Le disque de donn\u00e9es ne dispose plus que de {free_space}\u00a0Go d'espace libre. Cela peut entra\u00eener des probl\u00e8mes de stabilit\u00e9 du syst\u00e8me et perturber des fonctionnalit\u00e9s telles que les sauvegardes et les mises \u00e0 jour. Consultez [vider le stockage]({more_info_free_space}) pour obtenir des conseils sur la lib\u00e9ration d'espace.",
|
|
125
124
|
"title": "Le disque de donn\u00e9es manque d'espace libre"
|
|
126
125
|
},
|
|
127
126
|
"issue_system_multiple_data_disks": {
|
|
@@ -41,9 +41,6 @@
|
|
|
41
41
|
"issue_system_docker_config": {
|
|
42
42
|
"title": "Werstart fereaske"
|
|
43
43
|
},
|
|
44
|
-
"issue_system_free_space": {
|
|
45
|
-
"description": "De data-disk hat noch mar {free_space}GB frije romte beskikber. Dit kin swierrichheden feroarsaakje mei de stabiliteit fan it systeem en ynfloed hawwe op funksjonaliteit lykas reservekopyen en updates. Sjoch [opslach opr\u00eade] ({more_info_free_space}) foar tips hoe't mear romte frijmakke wurde kin."
|
|
46
|
-
},
|
|
47
44
|
"unsupported_connectivity_check": {
|
|
48
45
|
"title": "Net-stipe systeem - Konnektivit\u00e4tskontr\u00f4le \u00fatskeakele"
|
|
49
46
|
},
|
|
@@ -124,7 +124,6 @@
|
|
|
124
124
|
"title": "Atos\u00fa riachtanach"
|
|
125
125
|
},
|
|
126
126
|
"issue_system_free_space": {
|
|
127
|
-
"description": "N\u00edl ach {free_space}GB de sp\u00e1s saor f\u00e1gtha ar an diosca sonra\u00ed. D\u2019fh\u00e9adfadh s\u00e9 seo fadhbanna a chruth\u00fa le cobhsa\u00edocht an ch\u00f3rais agus cur isteach ar fheidhmi\u00falacht amhail c\u00faltaca\u00ed agus nuashonruithe. F\u00e9ach [glan suas st\u00f3r\u00e1il]({more_info_free_space}) le haghaidh leideanna maidir le conas sp\u00e1s a shaoradh.",
|
|
128
127
|
"title": "T\u00e1 an diosca sonra\u00ed ag rith gann ar sp\u00e1s saor"
|
|
129
128
|
},
|
|
130
129
|
"issue_system_multiple_data_disks": {
|
|
@@ -114,7 +114,6 @@
|
|
|
114
114
|
"title": "\u05e0\u05d3\u05e8\u05e9\u05d5\u05ea \u05d4\u05e4\u05e2\u05dc\u05d4 \u05de\u05d7\u05d3\u05e9"
|
|
115
115
|
},
|
|
116
116
|
"issue_system_free_space": {
|
|
117
|
-
"description": "\u05d1\u05d3\u05d9\u05e1\u05e7 \u05d4\u05e0\u05ea\u05d5\u05e0\u05d9\u05dd \u05e0\u05d5\u05ea\u05e8\u05d5 \u05e8\u05e7 {free_space} \u05d2'\u05d9\u05d2\u05d4-\u05d1\u05d9\u05d9\u05d8 \u05e9\u05dc \u05e9\u05d8\u05d7 \u05e4\u05e0\u05d5\u05d9. \u05d4\u05d3\u05d1\u05e8 \u05e2\u05dc\u05d5\u05dc \u05dc\u05d2\u05e8\u05d5\u05dd \u05dc\u05d1\u05e2\u05d9\u05d5\u05ea \u05d1\u05d9\u05e6\u05d9\u05d1\u05d5\u05ea \u05d4\u05de\u05e2\u05e8\u05db\u05ea \u05d5\u05dc\u05d4\u05e4\u05e8\u05d9\u05e2 \u05dc\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05db\u05d2\u05d5\u05df \u05d2\u05d9\u05d1\u05d5\u05d9\u05d9\u05dd \u05d5\u05e2\u05d3\u05db\u05d5\u05e0\u05d9\u05dd. \u05d9\u05e9 \u05dc\u05e8\u05d0\u05d5\u05ea \u05d0\u05ea [\u05e0\u05d9\u05e7\u05d5\u05d9 \u05d0\u05d7\u05e1\u05d5\u05df]({more_info_free_space}) \u05dc\u05e7\u05d1\u05dc\u05ea \u05d8\u05d9\u05e4\u05d9\u05dd \u05db\u05d9\u05e6\u05d3 \u05dc\u05e4\u05e0\u05d5\u05ea \u05de\u05e7\u05d5\u05dd.",
|
|
118
117
|
"title": "\u05d4\u05e9\u05d8\u05d7 \u05d4\u05e4\u05e0\u05d5\u05d9 \u05d1\u05d3\u05d9\u05e1\u05e7 \u05d4\u05e0\u05ea\u05d5\u05e0\u05d9\u05dd \u05d4\u05d5\u05dc\u05da \u05d5\u05d0\u05d5\u05d6\u05dc"
|
|
119
118
|
},
|
|
120
119
|
"issue_system_multiple_data_disks": {
|
|
@@ -105,7 +105,6 @@
|
|
|
105
105
|
"title": "Diperlukan mulai ulang"
|
|
106
106
|
},
|
|
107
107
|
"issue_system_free_space": {
|
|
108
|
-
"description": "Disk data hanya memiliki ruang kosong sebesar {free_space}GB yang tersisa. Hal ini dapat menyebabkan masalah pada stabilitas sistem dan mengganggu fungsionalitas seperti pencadangan dan pembaruan. Lihat [kosongkan penyimpanan]({more_info_free_space}) untuk tips tentang cara mengosongkan ruang.",
|
|
109
108
|
"title": "Disk data hampir kehabisan ruang kosong"
|
|
110
109
|
},
|
|
111
110
|
"issue_system_multiple_data_disks": {
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
"title": "Reikia paleisti i\u0161 naujo"
|
|
131
131
|
},
|
|
132
132
|
"issue_system_free_space": {
|
|
133
|
-
"description": "Duomen\u0173 diske
|
|
133
|
+
"description": "Duomen\u0173 diske yra tik {free_space}Liko GB laisvos vietos. Tai gali sukelti sistemos stabilumo problem\u0173 ir trukdyti tokioms funkcijoms kaip atsargini\u0173 kopij\u0173 k\u016brimas ir atnaujinimai. Eikite \u012f [saugykla]({storage_url}), kad pamatytum\u0117te, kas u\u017eima viet\u0105, arba [i\u0161valyti saugykl\u0105]({more_info_free_space}) patarim\u0173, kaip atlaisvinti vietos.",
|
|
134
134
|
"title": "Duomen\u0173 diske tr\u016bksta laisvos vietos"
|
|
135
135
|
},
|
|
136
136
|
"issue_system_multiple_data_disks": {
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
"title": "\u041f\u043e\u0442\u0440\u0435\u0431\u043d\u043e \u0435 \u0440\u0435\u0441\u0442\u0430\u0440\u0442(\u0438)"
|
|
31
31
|
},
|
|
32
32
|
"issue_system_free_space": {
|
|
33
|
-
"description": "\u041d\u0430 \u0434\u0438\u0441\u043a\u043e\u0442 \u0441\u043e \u043f\u043e\u0434\u0430\u0442\u043e\u0446\u0438 \u0438\u043c\u0430 \u0441\u0430\u043c\u043e {free_space} GB \u0441\u043b\u043e\u0431\u043e\u0434\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e\u0440. \u041e\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043f\u0440\u0435\u0434\u0438\u0437\u0432\u0438\u043a\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0438 \u0441\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u043d\u043e\u0441\u0442\u0430 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0442 \u0438 \u0434\u0430 \u0441\u0435 \u043c\u0435\u0448\u0430 \u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043d\u043e\u0441\u0442\u0438\u0442\u0435 \u043a\u0430\u043a\u043e \u0448\u0442\u043e \u0441\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0438 \u043a\u043e\u043f\u0438\u0438 \u0438 \u0430\u0436\u0443\u0440\u0438\u0440\u0430\u045a\u0430. \u0412\u0438\u0434\u0435\u0442\u0435 [\u0438\u0441\u0447\u0438\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0440]( {more_info_free_space} ) \u0437\u0430 \u0441\u043e\u0432\u0435\u0442\u0438 \u043a\u0430\u043a\u043e \u0434\u0430 \u043e\u0441\u043b\u043e\u0431\u043e\u0434\u0438\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0440.",
|
|
34
33
|
"title": "\u0414\u0438\u0441\u043a\u043e\u0442 \u0441\u043e \u043f\u043e\u0434\u0430\u0442\u043e\u0446\u0438 \u0438\u043c\u0430 \u043c\u0430\u043b\u043a\u0443 \u0441\u043b\u043e\u0431\u043e\u0434\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e\u0440"
|
|
35
34
|
}
|
|
36
35
|
}
|
|
@@ -105,7 +105,6 @@
|
|
|
105
105
|
"title": "Herstart vereist"
|
|
106
106
|
},
|
|
107
107
|
"issue_system_free_space": {
|
|
108
|
-
"description": "De data-disk heeft nog maar {free_space}GB vrije ruimte beschikbaar. Dit kan problemen veroorzaken met de stabiliteit van het systeem en invloed hebben op functionaliteit zoals backups en updates. Zie [opslag opruimen]({more_info_free_space}) voor tips hoe meer ruimte kan worden vrijgemaakt.",
|
|
109
108
|
"title": "De data-disk begint vol te raken"
|
|
110
109
|
},
|
|
111
110
|
"issue_system_multiple_data_disks": {
|
|
@@ -130,7 +130,6 @@
|
|
|
130
130
|
"title": "Rein\u00edcio(s) necess\u00e1rio(s)"
|
|
131
131
|
},
|
|
132
132
|
"issue_system_free_space": {
|
|
133
|
-
"description": "O disco de dados tem apenas {free_space}GB de espa\u00e7o livre. Isto pode causar problemas com a estabilidade do sistema e interferir com funcionalidades como c\u00f3pias de seguran\u00e7a e atualiza\u00e7\u00f5es. Consulte [limpar o armazenamento]({more_info_free_space}) para obter sugest\u00f5es sobre como libertar espa\u00e7o.",
|
|
134
133
|
"title": "O disco de dados est\u00e1 a ficar com pouco espa\u00e7o livre"
|
|
135
134
|
},
|
|
136
135
|
"issue_system_multiple_data_disks": {
|
|
@@ -114,7 +114,6 @@
|
|
|
114
114
|
"title": "\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430"
|
|
115
115
|
},
|
|
116
116
|
"issue_system_free_space": {
|
|
117
|
-
"description": "\u041d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e {free_space} \u0413\u0411 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0435 \u0442\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u0430\u043a \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u0421\u043c. [\u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u043c\u0435\u0441\u0442\u043e]({more_info_free_space}) \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u043c\u0435\u0441\u0442\u043e.",
|
|
118
117
|
"title": "\u041d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e"
|
|
119
118
|
},
|
|
120
119
|
"issue_system_multiple_data_disks": {
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
"title": "Po\u017eadovan\u00fd re\u0161tart(y)"
|
|
131
131
|
},
|
|
132
132
|
"issue_system_free_space": {
|
|
133
|
-
"description": "Na d\u00e1tovom disku zost\u00e1va u\u017e len {free_space}GB vo\u013en\u00e9ho miesta. To m\u00f4\u017ee sp\u00f4sobi\u0165 probl\u00e9my so stabilitou syst\u00e9mu a naru\u0161i\u0165 funkcie, ako s\u00fa z\u00e1lohovanie a aktualiz\u00e1cie.
|
|
133
|
+
"description": "Na d\u00e1tovom disku zost\u00e1va u\u017e len {free_space}GB vo\u013en\u00e9ho miesta. To m\u00f4\u017ee sp\u00f4sobi\u0165 probl\u00e9my so stabilitou syst\u00e9mu a naru\u0161i\u0165 funkcie, ako s\u00fa z\u00e1lohovanie a aktualiz\u00e1cie. Prejdite na str\u00e1nku [storage]({storage_url}), aby ste zistili, \u010do zaber\u00e1 miesto, alebo si pozrite [clear up storage]({more_info_free_space}), kde n\u00e1jdete tipy, ako uvo\u013eni\u0165 miesto.",
|
|
134
134
|
"title": "Na d\u00e1tovom disku je m\u00e1lo vo\u013en\u00e9ho miesta"
|
|
135
135
|
},
|
|
136
136
|
"issue_system_multiple_data_disks": {
|
|
@@ -122,7 +122,6 @@
|
|
|
122
122
|
"title": "Omstart(er) kr\u00e4vs"
|
|
123
123
|
},
|
|
124
124
|
"issue_system_free_space": {
|
|
125
|
-
"description": "Datadisken har bara {free_space} GB ledigt utrymme kvar. Detta kan orsaka problem med systemstabiliteten och st\u00f6ra funktioner som s\u00e4kerhetskopiering och uppdateringar. Se [frig\u00f6r lagringsutrymme]({more_info_free_space}) f\u00f6r tips om hur du frig\u00f6r utrymme.",
|
|
126
125
|
"title": "Datadisken har n\u00e4stan slut p\u00e5 ledigt utrymme"
|
|
127
126
|
},
|
|
128
127
|
"issue_system_multiple_data_disks": {
|
|
@@ -111,7 +111,6 @@
|
|
|
111
111
|
"title": "Yeniden ba\u015flatma(lar) gerekli"
|
|
112
112
|
},
|
|
113
113
|
"issue_system_free_space": {
|
|
114
|
-
"description": "Veri diski yaln\u0131zca {free_space}GB bo\u015f alan kald\u0131. Bu durum sistem kararl\u0131l\u0131\u011f\u0131yla ilgili sorunlara yol a\u00e7abilir ve yedekleme ve g\u00fcncelleme gibi i\u015flevleri etkileyebilir. [Depolama alan\u0131n\u0131 temizleme] b\u00f6l\u00fcm\u00fcne bak\u0131n.{more_info_free_space}) yer a\u00e7ma ipu\u00e7lar\u0131 i\u00e7in.",
|
|
115
114
|
"title": "Veri diskinde bo\u015f alan azal\u0131yor"
|
|
116
115
|
},
|
|
117
116
|
"issue_system_multiple_data_disks": {
|
|
@@ -130,7 +130,6 @@
|
|
|
130
130
|
"title": "\u9700\u8981\u91cd\u65b0\u542f\u52a8"
|
|
131
131
|
},
|
|
132
132
|
"issue_system_free_space": {
|
|
133
|
-
"description": "\u6570\u636e\u78c1\u76d8\u4ec5\u5269 {free_space} GB \u53ef\u7528\u7a7a\u95f4\u3002\u8fd9\u53ef\u80fd\u4f1a\u5bfc\u81f4\u7cfb\u7edf\u7a33\u5b9a\u6027\u95ee\u9898\uff0c\u5e76\u5f71\u54cd\u5907\u4efd\u548c\u66f4\u65b0\u7b49\u529f\u80fd\u3002\u8bf7\u53c2\u9605\u3010\u6e05\u7406\u5b58\u50a8\u7a7a\u95f4\u3011({more_info_free_space}) \uff0c\u4e86\u89e3\u5982\u4f55\u91ca\u653e\u7a7a\u95f4\u3002",
|
|
134
133
|
"title": "\u6570\u636e\u78c1\u76d8\u53ef\u7528\u7a7a\u95f4\u4e0d\u8db3"
|
|
135
134
|
},
|
|
136
135
|
"issue_system_multiple_data_disks": {
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
"title": "\u9700\u8981\u91cd\u555f"
|
|
131
131
|
},
|
|
132
132
|
"issue_system_free_space": {
|
|
133
|
-
"description": "\u8cc7\u6599\u78c1\u789f\u50c5\u5269 {free_space}GB \u53ef\u7528\u7a7a\u9593\u3002\u53ef\u80fd\u6703\u5c0e\u81f4\u7cfb\u7d71\u7a69\u5b9a\u6027\u554f\u984c\uff0c\u4e26\u5f71\u97ff\u5099\u4efd\u548c\u66f4\u65b0\u7b49\u529f\u80fd\u3002\u8acb\u53c3\u95b1[\u6e05\u7406\u5132\u5b58\u7a7a\u9593]({more_info_free_space})\u4ee5\u4e86\u89e3\u5982\u4f55\u91cb\u653e\u7a7a\u9593\u3002",
|
|
133
|
+
"description": "\u8cc7\u6599\u78c1\u789f\u50c5\u5269 {free_space}GB \u53ef\u7528\u7a7a\u9593\u3002\u53ef\u80fd\u6703\u5c0e\u81f4\u7cfb\u7d71\u7a69\u5b9a\u6027\u554f\u984c\uff0c\u4e26\u5f71\u97ff\u5099\u4efd\u548c\u66f4\u65b0\u7b49\u529f\u80fd\u3002\u524d\u5f80[\u5132\u5b58\u7a7a\u9593]({storage_url})\u67e5\u770b\u4f54\u7528\u60c5\u6cc1\uff0c\u6216\u8acb\u53c3\u95b1[\u6e05\u7406\u5132\u5b58\u7a7a\u9593]({more_info_free_space})\u4ee5\u4e86\u89e3\u5982\u4f55\u91cb\u653e\u7a7a\u9593\u3002",
|
|
134
134
|
"title": "\u8cc7\u6599\u78c1\u789f\u53ef\u7528\u7a7a\u9593\u4e0d\u8db3"
|
|
135
135
|
},
|
|
136
136
|
"issue_system_multiple_data_disks": {
|
|
@@ -39,8 +39,6 @@ from .const import (
|
|
|
39
39
|
NABU_CASA_FIRMWARE_RELEASES_URL,
|
|
40
40
|
PID,
|
|
41
41
|
PRODUCT,
|
|
42
|
-
RADIO_TX_POWER_DBM_BY_COUNTRY,
|
|
43
|
-
RADIO_TX_POWER_DBM_DEFAULT,
|
|
44
42
|
SERIAL_NUMBER,
|
|
45
43
|
VID,
|
|
46
44
|
)
|
|
@@ -114,21 +112,6 @@ class ZBT2FirmwareMixin(ConfigEntryBaseFlow, FirmwareInstallFlowProtocol):
|
|
|
114
112
|
next_step_id="finish_thread_installation",
|
|
115
113
|
)
|
|
116
114
|
|
|
117
|
-
def _extra_zha_hardware_options(self) -> dict[str, Any]:
|
|
118
|
-
"""Return extra ZHA hardware options."""
|
|
119
|
-
country = self.hass.config.country
|
|
120
|
-
|
|
121
|
-
if country is None:
|
|
122
|
-
tx_power = RADIO_TX_POWER_DBM_DEFAULT
|
|
123
|
-
else:
|
|
124
|
-
tx_power = RADIO_TX_POWER_DBM_BY_COUNTRY.get(
|
|
125
|
-
country, RADIO_TX_POWER_DBM_DEFAULT
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
return {
|
|
129
|
-
"tx_power": tx_power,
|
|
130
|
-
}
|
|
131
|
-
|
|
132
115
|
|
|
133
116
|
class HomeAssistantConnectZBT2ConfigFlow(
|
|
134
117
|
ZBT2FirmwareMixin,
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"""Constants for the Home Assistant Connect ZBT-2 integration."""
|
|
2
2
|
|
|
3
|
-
from homeassistant.generated.countries import COUNTRIES
|
|
4
|
-
|
|
5
3
|
DOMAIN = "homeassistant_connect_zbt2"
|
|
6
4
|
|
|
7
5
|
NABU_CASA_FIRMWARE_RELEASES_URL = (
|
|
@@ -19,59 +17,3 @@ VID = "vid"
|
|
|
19
17
|
DEVICE = "device"
|
|
20
18
|
|
|
21
19
|
HARDWARE_NAME = "Home Assistant Connect ZBT-2"
|
|
22
|
-
|
|
23
|
-
RADIO_TX_POWER_DBM_DEFAULT = 8
|
|
24
|
-
RADIO_TX_POWER_DBM_BY_COUNTRY = {
|
|
25
|
-
# EU Member States
|
|
26
|
-
"AT": 10,
|
|
27
|
-
"BE": 10,
|
|
28
|
-
"BG": 10,
|
|
29
|
-
"HR": 10,
|
|
30
|
-
"CY": 10,
|
|
31
|
-
"CZ": 10,
|
|
32
|
-
"DK": 10,
|
|
33
|
-
"EE": 10,
|
|
34
|
-
"FI": 10,
|
|
35
|
-
"FR": 10,
|
|
36
|
-
"DE": 10,
|
|
37
|
-
"GR": 10,
|
|
38
|
-
"HU": 10,
|
|
39
|
-
"IE": 10,
|
|
40
|
-
"IT": 10,
|
|
41
|
-
"LV": 10,
|
|
42
|
-
"LT": 10,
|
|
43
|
-
"LU": 10,
|
|
44
|
-
"MT": 10,
|
|
45
|
-
"NL": 10,
|
|
46
|
-
"PL": 10,
|
|
47
|
-
"PT": 10,
|
|
48
|
-
"RO": 10,
|
|
49
|
-
"SK": 10,
|
|
50
|
-
"SI": 10,
|
|
51
|
-
"ES": 10,
|
|
52
|
-
"SE": 10,
|
|
53
|
-
# EEA Members
|
|
54
|
-
"IS": 10,
|
|
55
|
-
"LI": 10,
|
|
56
|
-
"NO": 10,
|
|
57
|
-
# Standards harmonized with RED or ETSI
|
|
58
|
-
"CH": 10,
|
|
59
|
-
"GB": 10,
|
|
60
|
-
"TR": 10,
|
|
61
|
-
"AL": 10,
|
|
62
|
-
"BA": 10,
|
|
63
|
-
"GE": 10,
|
|
64
|
-
"MD": 10,
|
|
65
|
-
"ME": 10,
|
|
66
|
-
"MK": 10,
|
|
67
|
-
"RS": 10,
|
|
68
|
-
"UA": 10,
|
|
69
|
-
# Other CEPT nations
|
|
70
|
-
"AD": 10,
|
|
71
|
-
"AZ": 10,
|
|
72
|
-
"MC": 10,
|
|
73
|
-
"SM": 10,
|
|
74
|
-
"VA": 10,
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
assert set(RADIO_TX_POWER_DBM_BY_COUNTRY) <= COUNTRIES
|
|
@@ -457,10 +457,6 @@ class BaseFirmwareInstallFlow(ConfigEntryBaseFlow, ABC):
|
|
|
457
457
|
# This step is necessary to prevent `user_input` from being passed through
|
|
458
458
|
return await self.async_step_continue_zigbee()
|
|
459
459
|
|
|
460
|
-
def _extra_zha_hardware_options(self) -> dict[str, Any]:
|
|
461
|
-
"""Return extra ZHA hardware options."""
|
|
462
|
-
return {}
|
|
463
|
-
|
|
464
460
|
async def async_step_continue_zigbee(
|
|
465
461
|
self, user_input: dict[str, Any] | None = None
|
|
466
462
|
) -> ConfigFlowResult:
|
|
@@ -483,7 +479,6 @@ class BaseFirmwareInstallFlow(ConfigEntryBaseFlow, ABC):
|
|
|
483
479
|
},
|
|
484
480
|
"radio_type": "ezsp",
|
|
485
481
|
"flow_strategy": self._zigbee_flow_strategy,
|
|
486
|
-
**self._extra_zha_hardware_options(),
|
|
487
482
|
},
|
|
488
483
|
)
|
|
489
484
|
return self._continue_zha_flow(result)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"config": {
|
|
3
3
|
"abort": {
|
|
4
|
-
"already_configured": "Device is already configured"
|
|
4
|
+
"already_configured": "Device is already configured",
|
|
5
|
+
"not_implemented": "This integration can only be set up via discovery."
|
|
5
6
|
},
|
|
6
7
|
"error": {
|
|
7
8
|
"cannot_connect": "Failed to connect",
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"config": {
|
|
3
3
|
"abort": {
|
|
4
|
-
"already_configured": "Prietaisas jau sukonfig\u016bruotas"
|
|
4
|
+
"already_configured": "Prietaisas jau sukonfig\u016bruotas",
|
|
5
|
+
"not_implemented": "\u0160i\u0105 integracij\u0105 galima nustatyti tik naudojant aptikimo funkcij\u0105."
|
|
5
6
|
},
|
|
6
7
|
"error": {
|
|
7
8
|
"cannot_connect": "Nepavyko prisijungti",
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"config": {
|
|
3
3
|
"abort": {
|
|
4
|
-
"already_configured": "Zariadenie u\u017e je nakonfigurovan\u00e9"
|
|
4
|
+
"already_configured": "Zariadenie u\u017e je nakonfigurovan\u00e9",
|
|
5
|
+
"not_implemented": "T\u00fato integr\u00e1ciu je mo\u017en\u00e9 nastavi\u0165 iba prostredn\u00edctvom vyh\u013ead\u00e1vania."
|
|
5
6
|
},
|
|
6
7
|
"error": {
|
|
7
8
|
"cannot_connect": "Nepodarilo sa pripoji\u0165",
|
|
@@ -41,36 +41,44 @@
|
|
|
41
41
|
"title": "Lawn mower",
|
|
42
42
|
"triggers": {
|
|
43
43
|
"docked": {
|
|
44
|
+
"description": "Triggers after one or more lawn mowers return to dock.",
|
|
44
45
|
"fields": {
|
|
45
46
|
"behavior": {
|
|
46
47
|
"description": "The behaviour of the targeted lawn mowers to trigger on.",
|
|
47
48
|
"name": "Behaviour"
|
|
48
49
|
}
|
|
49
|
-
}
|
|
50
|
+
},
|
|
51
|
+
"name": "Lawn mower returned to dock"
|
|
50
52
|
},
|
|
51
53
|
"errored": {
|
|
54
|
+
"description": "Triggers after one or more lawn mowers encounter an error.",
|
|
52
55
|
"fields": {
|
|
53
56
|
"behavior": {
|
|
54
57
|
"description": "The behaviour of the targeted lawn mowers to trigger on.",
|
|
55
58
|
"name": "Behaviour"
|
|
56
59
|
}
|
|
57
|
-
}
|
|
60
|
+
},
|
|
61
|
+
"name": "Lawn mower encountered an error"
|
|
58
62
|
},
|
|
59
63
|
"paused_mowing": {
|
|
64
|
+
"description": "Triggers after one or more lawn mowers pause mowing.",
|
|
60
65
|
"fields": {
|
|
61
66
|
"behavior": {
|
|
62
67
|
"description": "The behaviour of the targeted lawn mowers to trigger on.",
|
|
63
68
|
"name": "Behaviour"
|
|
64
69
|
}
|
|
65
|
-
}
|
|
70
|
+
},
|
|
71
|
+
"name": "Lawn mower paused mowing"
|
|
66
72
|
},
|
|
67
73
|
"started_mowing": {
|
|
74
|
+
"description": "Triggers after one or more lawn mowers start mowing.",
|
|
68
75
|
"fields": {
|
|
69
76
|
"behavior": {
|
|
70
77
|
"description": "The behaviour of the targeted lawn mowers to trigger on.",
|
|
71
78
|
"name": "Behaviour"
|
|
72
79
|
}
|
|
73
|
-
}
|
|
80
|
+
},
|
|
81
|
+
"name": "Lawn mower started mowing"
|
|
74
82
|
}
|
|
75
83
|
}
|
|
76
84
|
}
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"title": "Cortac\u00e9sped",
|
|
42
42
|
"triggers": {
|
|
43
43
|
"docked": {
|
|
44
|
-
"description": "Se dispara
|
|
44
|
+
"description": "Se dispara despu\u00e9s de que uno m\u00e1s cortac\u00e9spedes se acoplan a la base.",
|
|
45
45
|
"fields": {
|
|
46
46
|
"behavior": {
|
|
47
47
|
"description": "El comportamiento del cortac\u00e9sped objetivo para que se dispare.",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"name": "El cortac\u00e9sped se acopl\u00f3 a la base"
|
|
52
52
|
},
|
|
53
53
|
"errored": {
|
|
54
|
-
"description": "Se dispara
|
|
54
|
+
"description": "Se dispara despu\u00e9s de que uno o m\u00e1s cortac\u00e9spedes detectan un error",
|
|
55
55
|
"fields": {
|
|
56
56
|
"behavior": {
|
|
57
57
|
"description": "El comportamiento del cortac\u00e9sped objetivo para que se dispare.",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"name": "El cortac\u00e9sped ha encontrado un error"
|
|
62
62
|
},
|
|
63
63
|
"paused_mowing": {
|
|
64
|
-
"description": "Se dispara
|
|
64
|
+
"description": "Se dispara despu\u00e9s de que uno o m\u00e1s cortac\u00e9spedes pausan cortar el c\u00e9sped.",
|
|
65
65
|
"fields": {
|
|
66
66
|
"behavior": {
|
|
67
67
|
"description": "El comportamiento del cortac\u00e9sped objetivo para que se dispare.",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"name": "Cortac\u00e9sped en pausa"
|
|
72
72
|
},
|
|
73
73
|
"started_mowing": {
|
|
74
|
-
"description": "Se dispara
|
|
74
|
+
"description": "Se dispara despu\u00e9s de que uno o m\u00e1s cortac\u00e9spedes empiezan a cortar.",
|
|
75
75
|
"fields": {
|
|
76
76
|
"behavior": {
|
|
77
77
|
"description": "El comportamiento del cortac\u00e9sped objetivo para que se dispare.",
|
|
@@ -41,36 +41,44 @@
|
|
|
41
41
|
"title": "\u017doliapjov\u0117",
|
|
42
42
|
"triggers": {
|
|
43
43
|
"docked": {
|
|
44
|
+
"description": "Suveikia, kai viena ar kelios vejapjov\u0117s gr\u012f\u017eta \u012f dok\u0105.",
|
|
44
45
|
"fields": {
|
|
45
46
|
"behavior": {
|
|
46
47
|
"description": "Tikslini\u0173 vejapjovi\u0173 su\u017eadinimo elgsena.",
|
|
47
48
|
"name": "Elgesys"
|
|
48
49
|
}
|
|
49
|
-
}
|
|
50
|
+
},
|
|
51
|
+
"name": "Vejapjov\u0117 gr\u0105\u017einta \u012f dok\u0105"
|
|
50
52
|
},
|
|
51
53
|
"errored": {
|
|
54
|
+
"description": "Suveikia, kai viena ar kelios vejapjov\u0117s aptinka klaid\u0105.",
|
|
52
55
|
"fields": {
|
|
53
56
|
"behavior": {
|
|
54
57
|
"description": "Tikslini\u0173 vejapjovi\u0173 su\u017eadinimo elgsena.",
|
|
55
58
|
"name": "Elgesys"
|
|
56
59
|
}
|
|
57
|
-
}
|
|
60
|
+
},
|
|
61
|
+
"name": "Vejapjov\u0117 aptiko klaid\u0105"
|
|
58
62
|
},
|
|
59
63
|
"paused_mowing": {
|
|
64
|
+
"description": "Suveikia po to, kai viena ar kelios vejapjov\u0117s sustabdo pjovim\u0105.",
|
|
60
65
|
"fields": {
|
|
61
66
|
"behavior": {
|
|
62
67
|
"description": "Tikslini\u0173 vejapjovi\u0173 su\u017eadinimo elgsena.",
|
|
63
68
|
"name": "Elgesys"
|
|
64
69
|
}
|
|
65
|
-
}
|
|
70
|
+
},
|
|
71
|
+
"name": "Vejapjov\u0117 pristabd\u0117 pjovim\u0105"
|
|
66
72
|
},
|
|
67
73
|
"started_mowing": {
|
|
74
|
+
"description": "Suveikia po to, kai viena ar kelios vejapjov\u0117s pradeda pjauti.",
|
|
68
75
|
"fields": {
|
|
69
76
|
"behavior": {
|
|
70
77
|
"description": "Tikslini\u0173 vejapjovi\u0173 su\u017eadinimo elgsena.",
|
|
71
78
|
"name": "Elgesys"
|
|
72
79
|
}
|
|
73
|
-
}
|
|
80
|
+
},
|
|
81
|
+
"name": "Vejapjov\u0117 prad\u0117jo pjauti"
|
|
74
82
|
}
|
|
75
83
|
}
|
|
76
84
|
}
|
|
@@ -41,36 +41,44 @@
|
|
|
41
41
|
"title": "Kosa\u010dka na tr\u00e1vu",
|
|
42
42
|
"triggers": {
|
|
43
43
|
"docked": {
|
|
44
|
+
"description": "Spust\u00ed sa po tom, ako sa jedna alebo viac kosa\u010diek na tr\u00e1vu vr\u00e1ti do doku.",
|
|
44
45
|
"fields": {
|
|
45
46
|
"behavior": {
|
|
46
47
|
"description": "Spr\u00e1vanie cielen\u00fdch kosa\u010diek na tr\u00e1vu pri spusten\u00ed.",
|
|
47
48
|
"name": "Spr\u00e1vanie"
|
|
48
49
|
}
|
|
49
|
-
}
|
|
50
|
+
},
|
|
51
|
+
"name": "Kosa\u010dka na tr\u00e1vu vr\u00e1ten\u00e1 do doku"
|
|
50
52
|
},
|
|
51
53
|
"errored": {
|
|
54
|
+
"description": "Spust\u00ed sa po tom, \u010do jedna alebo viac kosa\u010diek na tr\u00e1vu naraz\u00ed na chybu.",
|
|
52
55
|
"fields": {
|
|
53
56
|
"behavior": {
|
|
54
57
|
"description": "Spr\u00e1vanie cielen\u00fdch kosa\u010diek na tr\u00e1vu pri spusten\u00ed.",
|
|
55
58
|
"name": "Spr\u00e1vanie"
|
|
56
59
|
}
|
|
57
|
-
}
|
|
60
|
+
},
|
|
61
|
+
"name": "Kosa\u010dka na tr\u00e1vu zaznamenala chybu"
|
|
58
62
|
},
|
|
59
63
|
"paused_mowing": {
|
|
64
|
+
"description": "Spust\u00ed sa po tom, \u010do jedna alebo viac kosa\u010diek na tr\u00e1vu pozastav\u00ed kosenie.",
|
|
60
65
|
"fields": {
|
|
61
66
|
"behavior": {
|
|
62
67
|
"description": "Spr\u00e1vanie cielen\u00fdch kosa\u010diek na tr\u00e1vu pri spusten\u00ed.",
|
|
63
68
|
"name": "Spr\u00e1vanie"
|
|
64
69
|
}
|
|
65
|
-
}
|
|
70
|
+
},
|
|
71
|
+
"name": "Kosa\u010dka na tr\u00e1vu pozastavila kosenie"
|
|
66
72
|
},
|
|
67
73
|
"started_mowing": {
|
|
74
|
+
"description": "Spust\u00ed sa po tom, \u010do jedna alebo viac kosa\u010diek na tr\u00e1vu za\u010dne kosi\u0165.",
|
|
68
75
|
"fields": {
|
|
69
76
|
"behavior": {
|
|
70
77
|
"description": "Spr\u00e1vanie cielen\u00fdch kosa\u010diek na tr\u00e1vu pri spusten\u00ed.",
|
|
71
78
|
"name": "Spr\u00e1vanie"
|
|
72
79
|
}
|
|
73
|
-
}
|
|
80
|
+
},
|
|
81
|
+
"name": "Kosa\u010dka na tr\u00e1vu za\u010dala kosi\u0165"
|
|
74
82
|
}
|
|
75
83
|
}
|
|
76
84
|
}
|
|
@@ -4,7 +4,6 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from datetime import timedelta
|
|
6
6
|
import logging
|
|
7
|
-
from types import MappingProxyType
|
|
8
7
|
|
|
9
8
|
from librehardwaremonitor_api import (
|
|
10
9
|
LibreHardwareMonitorClient,
|
|
@@ -55,15 +54,11 @@ class LibreHardwareMonitorCoordinator(DataUpdateCoordinator[LibreHardwareMonitor
|
|
|
55
54
|
device_entries: list[DeviceEntry] = dr.async_entries_for_config_entry(
|
|
56
55
|
registry=dr.async_get(self.hass), config_entry_id=config_entry.entry_id
|
|
57
56
|
)
|
|
58
|
-
self._previous_devices:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if device.identifiers and device.name
|
|
64
|
-
}
|
|
65
|
-
)
|
|
66
|
-
)
|
|
57
|
+
self._previous_devices: dict[DeviceId, DeviceName] = {
|
|
58
|
+
DeviceId(next(iter(device.identifiers))[1]): DeviceName(device.name)
|
|
59
|
+
for device in device_entries
|
|
60
|
+
if device.identifiers and device.name
|
|
61
|
+
}
|
|
67
62
|
|
|
68
63
|
async def _async_update_data(self) -> LibreHardwareMonitorData:
|
|
69
64
|
try:
|
|
@@ -75,7 +70,9 @@ class LibreHardwareMonitorCoordinator(DataUpdateCoordinator[LibreHardwareMonitor
|
|
|
75
70
|
except LibreHardwareMonitorNoDevicesError as err:
|
|
76
71
|
raise UpdateFailed("No sensor data available, will retry") from err
|
|
77
72
|
|
|
78
|
-
await self._async_handle_changes_in_devices(
|
|
73
|
+
await self._async_handle_changes_in_devices(
|
|
74
|
+
dict(lhm_data.main_device_ids_and_names)
|
|
75
|
+
)
|
|
79
76
|
|
|
80
77
|
return lhm_data
|
|
81
78
|
|
|
@@ -92,18 +89,21 @@ class LibreHardwareMonitorCoordinator(DataUpdateCoordinator[LibreHardwareMonitor
|
|
|
92
89
|
)
|
|
93
90
|
|
|
94
91
|
async def _async_handle_changes_in_devices(
|
|
95
|
-
self, detected_devices:
|
|
92
|
+
self, detected_devices: dict[DeviceId, DeviceName]
|
|
96
93
|
) -> None:
|
|
97
94
|
"""Handle device changes by deleting devices from / adding devices to Home Assistant."""
|
|
95
|
+
detected_devices = {
|
|
96
|
+
DeviceId(f"{self.config_entry.entry_id}_{detected_id}"): device_name
|
|
97
|
+
for detected_id, device_name in detected_devices.items()
|
|
98
|
+
}
|
|
99
|
+
|
|
98
100
|
previous_device_ids = set(self._previous_devices.keys())
|
|
99
101
|
detected_device_ids = set(detected_devices.keys())
|
|
100
102
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
+
_LOGGER.debug("Previous device_ids: %s", previous_device_ids)
|
|
104
|
+
_LOGGER.debug("Detected device_ids: %s", detected_device_ids)
|
|
103
105
|
|
|
104
|
-
if
|
|
105
|
-
# initial update during integration startup
|
|
106
|
-
self._previous_devices = detected_devices # type: ignore[unreachable]
|
|
106
|
+
if previous_device_ids == detected_device_ids:
|
|
107
107
|
return
|
|
108
108
|
|
|
109
109
|
if orphaned_devices := previous_device_ids - detected_device_ids:
|
|
@@ -114,13 +114,21 @@ class LibreHardwareMonitorCoordinator(DataUpdateCoordinator[LibreHardwareMonitor
|
|
|
114
114
|
device_registry = dr.async_get(self.hass)
|
|
115
115
|
for device_id in orphaned_devices:
|
|
116
116
|
if device := device_registry.async_get_device(
|
|
117
|
-
identifiers={(DOMAIN,
|
|
117
|
+
identifiers={(DOMAIN, device_id)}
|
|
118
118
|
):
|
|
119
|
+
_LOGGER.debug(
|
|
120
|
+
"Removing device: %s", self._previous_devices[device_id]
|
|
121
|
+
)
|
|
119
122
|
device_registry.async_update_device(
|
|
120
123
|
device_id=device.id,
|
|
121
124
|
remove_config_entry_id=self.config_entry.entry_id,
|
|
122
125
|
)
|
|
123
126
|
|
|
127
|
+
if self.data is None:
|
|
128
|
+
# initial update during integration startup
|
|
129
|
+
self._previous_devices = detected_devices # type: ignore[unreachable]
|
|
130
|
+
return
|
|
131
|
+
|
|
124
132
|
if new_devices := detected_device_ids - previous_device_ids:
|
|
125
133
|
_LOGGER.warning(
|
|
126
134
|
"New Device(s) detected, reload integration to add them to Home Assistant: %s",
|
|
@@ -509,20 +509,24 @@
|
|
|
509
509
|
"title": "Light",
|
|
510
510
|
"triggers": {
|
|
511
511
|
"turned_off": {
|
|
512
|
+
"description": "Triggers after one or more lights turn off.",
|
|
512
513
|
"fields": {
|
|
513
514
|
"behavior": {
|
|
514
515
|
"description": "The behaviour of the targeted lights to trigger on.",
|
|
515
516
|
"name": "Behaviour"
|
|
516
517
|
}
|
|
517
|
-
}
|
|
518
|
+
},
|
|
519
|
+
"name": "Light turned off"
|
|
518
520
|
},
|
|
519
521
|
"turned_on": {
|
|
522
|
+
"description": "Triggers after one or more lights turn on.",
|
|
520
523
|
"fields": {
|
|
521
524
|
"behavior": {
|
|
522
525
|
"description": "The behaviour of the targeted lights to trigger on.",
|
|
523
526
|
"name": "Behaviour"
|
|
524
527
|
}
|
|
525
|
-
}
|
|
528
|
+
},
|
|
529
|
+
"name": "Light turned on"
|
|
526
530
|
}
|
|
527
531
|
}
|
|
528
532
|
}
|