homeassistant 2025.9.0b3__py3-none-any.whl → 2025.9.0b5__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/ai_task/translations/pl.json +28 -0
- homeassistant/components/aladdin_connect/translations/he.json +28 -0
- homeassistant/components/alexa_devices/translations/ga.json +47 -0
- homeassistant/components/alexa_devices/translations/zh-Hans.json +40 -0
- homeassistant/components/august/translations/he.json +25 -1
- homeassistant/components/bayesian/translations/he.json +96 -0
- homeassistant/components/bayesian/translations/sv.json +7 -0
- homeassistant/components/binary_sensor/translations/sv.json +1 -1
- homeassistant/components/cloud/manifest.json +1 -1
- homeassistant/components/dsmr_reader/translations/ga.json +3 -0
- homeassistant/components/ecowitt/manifest.json +1 -1
- homeassistant/components/elkm1/translations/ga.json +18 -0
- homeassistant/components/energy/translations/ga.json +6 -1
- homeassistant/components/energyzero/translations/ga.json +25 -0
- homeassistant/components/environment_canada/translations/ga.json +5 -0
- homeassistant/components/escea/translations/ga.json +5 -0
- homeassistant/components/fireservicerota/translations/ga.json +17 -0
- homeassistant/components/flux_led/translations/ga.json +12 -1
- homeassistant/components/forked_daapd/translations/ga.json +32 -1
- homeassistant/components/foscam/translations/ga.json +10 -0
- homeassistant/components/fritzbox_callmonitor/translations/ga.json +1 -0
- homeassistant/components/fronius/translations/ga.json +15 -0
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/frontier_silicon/translations/ga.json +7 -1
- homeassistant/components/fully_kiosk/translations/ga.json +17 -1
- homeassistant/components/hassio/translations/he.json +4 -0
- homeassistant/components/homekit/translations/he.json +7 -0
- homeassistant/components/homekit/translations/zh-Hans.json +1 -0
- homeassistant/components/hue/translations/nl.json +1 -0
- homeassistant/components/hue/translations/zh-Hans.json +1 -0
- homeassistant/components/husqvarna_automower_ble/config_flow.py +24 -11
- homeassistant/components/husqvarna_automower_ble/manifest.json +1 -1
- homeassistant/components/husqvarna_automower_ble/translations/he.json +4 -0
- homeassistant/components/imeon_inverter/translations/zh-Hans.json +1 -0
- homeassistant/components/lifx/translations/de.json +6 -6
- homeassistant/components/matter/translations/he.json +48 -0
- homeassistant/components/media_player/translations/he.json +6 -1
- homeassistant/components/modbus/binary_sensor.py +4 -1
- homeassistant/components/modbus/sensor.py +6 -2
- homeassistant/components/mqtt/translations/fr.json +1 -0
- homeassistant/components/mqtt/translations/he.json +38 -0
- homeassistant/components/mqtt/translations/sv.json +1 -1
- homeassistant/components/niko_home_control/translations/he.json +7 -1
- homeassistant/components/pooldose/translations/he.json +48 -0
- homeassistant/components/random/translations/sv.json +1 -1
- homeassistant/components/smartthings/translations/he.json +13 -0
- homeassistant/components/somfy_mylink/translations/he.json +5 -0
- homeassistant/components/template/translations/he.json +149 -0
- homeassistant/components/template/translations/sv.json +1 -1
- homeassistant/components/uptimerobot/coordinator.py +4 -1
- homeassistant/components/uptimerobot/quality_scale.yaml +1 -3
- homeassistant/components/volvo/manifest.json +1 -1
- homeassistant/components/volvo/translations/he.json +3 -0
- homeassistant/components/yalexs_ble/translations/zh-Hans.json +16 -1
- homeassistant/const.py +1 -1
- homeassistant/helpers/area_registry.py +2 -4
- homeassistant/helpers/device_registry.py +16 -10
- homeassistant/helpers/entity_registry.py +29 -19
- homeassistant/helpers/floor_registry.py +2 -4
- homeassistant/package_constraints.txt +2 -2
- {homeassistant-2025.9.0b3.dist-info → homeassistant-2025.9.0b5.dist-info}/METADATA +2 -2
- {homeassistant-2025.9.0b3.dist-info → homeassistant-2025.9.0b5.dist-info}/RECORD +67 -64
- {homeassistant-2025.9.0b3.dist-info → homeassistant-2025.9.0b5.dist-info}/WHEEL +0 -0
- {homeassistant-2025.9.0b3.dist-info → homeassistant-2025.9.0b5.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.9.0b3.dist-info → homeassistant-2025.9.0b5.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.9.0b3.dist-info → homeassistant-2025.9.0b5.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.9.0b3.dist-info → homeassistant-2025.9.0b5.dist-info}/top_level.txt +0 -0
|
@@ -136,6 +136,32 @@
|
|
|
136
136
|
},
|
|
137
137
|
"title": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d9\u05e1\u05d5\u05d9"
|
|
138
138
|
},
|
|
139
|
+
"event": {
|
|
140
|
+
"data": {
|
|
141
|
+
"device_class": "\u05de\u05d7\u05dc\u05e7\u05ea \u05d4\u05ea\u05e7\u05df",
|
|
142
|
+
"device_id": "\u05d4\u05ea\u05e7\u05df",
|
|
143
|
+
"event_type": "\u05e1\u05d5\u05d2 \u05d0\u05d9\u05e8\u05d5\u05e2 \u05e9\u05d4\u05d5\u05e4\u05e2\u05dc \u05dc\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4",
|
|
144
|
+
"event_types": "\u05e1\u05d5\u05d2\u05d9 \u05d0\u05d9\u05e8\u05d5\u05e2\u05d9\u05dd",
|
|
145
|
+
"name": "\u05e9\u05dd"
|
|
146
|
+
},
|
|
147
|
+
"data_description": {
|
|
148
|
+
"device_id": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d4\u05ea\u05e7\u05df \u05dc\u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05d9\u05e9\u05d5\u05ea \u05d6\u05d5.",
|
|
149
|
+
"event_type": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e1\u05d5\u05d2 \u05d4\u05d0\u05d9\u05e8\u05d5\u05e2.",
|
|
150
|
+
"event_types": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e8\u05e9\u05d9\u05de\u05d4 \u05e9\u05dc \u05e1\u05d5\u05d2\u05d9 \u05d0\u05d9\u05e8\u05d5\u05e2\u05d9\u05dd \u05d6\u05de\u05d9\u05e0\u05d9\u05dd."
|
|
151
|
+
},
|
|
152
|
+
"sections": {
|
|
153
|
+
"advanced_options": {
|
|
154
|
+
"data": {
|
|
155
|
+
"availability": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05d6\u05de\u05d9\u05e0\u05d4"
|
|
156
|
+
},
|
|
157
|
+
"data_description": {
|
|
158
|
+
"availability": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d3\u05d9 \u05dc\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05de\u05e6\u05d1 '\u05d6\u05de\u05d9\u05df' \u05e9\u05dc \u05d4\u05d9\u05e9\u05d5\u05ea. \u05d0\u05dd \u05d4\u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05d0 \u05de\u05e6\u05dc\u05d9\u05d7\u05d4 \u05dc\u05e2\u05d1\u05d3 \u05d0\u05d5 \u05de\u05d7\u05d6\u05d9\u05e8\u05d4 'True', ''1'', 'true\"', 'yes\"', 'on\"', 'enable\"', \u05d0\u05d5 \u05de\u05e1\u05e4\u05e8 \u05e9\u05d0\u05d9\u05e0\u05d5 \u05d0\u05e4\u05e1, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05d4\u05d9\u05d4 '\u05d6\u05de\u05d9\u05e0\u05d4'. \u05d0\u05dd \u05d4\u05ea\u05d1\u05e0\u05d9\u05ea \u05de\u05d7\u05d6\u05d9\u05e8\u05d4 \u05e2\u05e8\u05da \u05d0\u05d7\u05e8, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05d4\u05d9\u05d4 '\u05dc\u05d0 \u05d6\u05de\u05d9\u05e0\u05d4'. \u05d0\u05dd \u05dc\u05d0 \u05de\u05d5\u05d2\u05d3\u05e8\u05ea, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05de\u05d9\u05d3 \u05ea\u05d4\u05d9\u05d4 '\u05d6\u05de\u05d9\u05e0\u05d4'. \u05d9\u05e9 \u05dc\u05e9\u05d9\u05dd \u05dc\u05d1 \u05e9\u05d4\u05e9\u05d5\u05d5\u05d0\u05ea \u05d4\u05de\u05d7\u05e8\u05d5\u05d6\u05d5\u05ea \u05d0\u05d9\u05e0\u05d4 \u05ea\u05dc\u05d5\u05d9\u05ea \u05e8\u05d9\u05e9\u05d9\u05d5\u05ea; \u05de\u05d5\u05ea\u05e8 'TrUe' \u05d5-''yEs'."
|
|
159
|
+
},
|
|
160
|
+
"name": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea"
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"title": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05d0\u05d9\u05e8\u05d5\u05e2"
|
|
164
|
+
},
|
|
139
165
|
"fan": {
|
|
140
166
|
"data": {
|
|
141
167
|
"device_id": "\u05d4\u05ea\u05e7\u05df",
|
|
@@ -378,6 +404,48 @@
|
|
|
378
404
|
},
|
|
379
405
|
"title": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05de\u05ea\u05d2"
|
|
380
406
|
},
|
|
407
|
+
"update": {
|
|
408
|
+
"data": {
|
|
409
|
+
"backup": "\u05d2\u05d9\u05d1\u05d5\u05d9",
|
|
410
|
+
"device_class": "\u05de\u05d7\u05dc\u05e7\u05ea \u05d4\u05ea\u05e7\u05df",
|
|
411
|
+
"device_id": "\u05d4\u05ea\u05e7\u05df",
|
|
412
|
+
"in_progress": "\u05d1\u05ea\u05d4\u05dc\u05d9\u05da",
|
|
413
|
+
"install": "\u05e4\u05e2\u05d5\u05dc\u05d5\u05ea \u05d1\u05d4\u05ea\u05e7\u05e0\u05d4",
|
|
414
|
+
"installed_version": "\u05d2\u05d9\u05e8\u05e1\u05d4 \u05de\u05d5\u05ea\u05e7\u05e0\u05ea",
|
|
415
|
+
"latest_version": "\u05d4\u05d2\u05d9\u05e8\u05e1\u05d4 \u05d4\u05e2\u05d3\u05db\u05e0\u05d9\u05ea",
|
|
416
|
+
"name": "\u05e9\u05dd",
|
|
417
|
+
"release_summary": "\u05ea\u05e7\u05e6\u05d9\u05e8 \u05e9\u05d7\u05e8\u05d5\u05e8",
|
|
418
|
+
"release_url": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05e9\u05dc \u05e9\u05d7\u05e8\u05d5\u05e8",
|
|
419
|
+
"specific_version": "\u05d2\u05e8\u05e1\u05d4 \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05ea",
|
|
420
|
+
"title": "\u05db\u05d5\u05ea\u05e8\u05ea",
|
|
421
|
+
"update_percent": "\u05d0\u05d7\u05d5\u05d6 \u05d4\u05e2\u05d3\u05db\u05d5\u05df"
|
|
422
|
+
},
|
|
423
|
+
"data_description": {
|
|
424
|
+
"backup": "\u05d4\u05e4\u05e2\u05dc\u05d4 \u05d0\u05d5 \u05d4\u05e9\u05d1\u05ea\u05d4 \u05e9\u05dc \u05d4\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea `\u05d2\u05d9\u05d1\u05d5\u05d9 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9 \u05dc\u05e4\u05e0\u05d9 \u05e2\u05d3\u05db\u05d5\u05df` \u05d1\u05ea\u05d9\u05e7\u05d5\u05df \u05d4\u05e2\u05d3\u05db\u05d5\u05e0\u05d9\u05dd. \u05db\u05d0\u05e9\u05e8 \u05d4\u05d5\u05d0 \u05de\u05d5\u05e9\u05d1\u05ea, \u05d4\u05de\u05e9\u05ea\u05e0\u05d4 `backup` \u05ea\u05de\u05d9\u05d3 \u05d9\u05e1\u05e4\u05e7 `False` \u05d1\u05de\u05d4\u05dc\u05da \u05e4\u05e2\u05d5\u05dc\u05ea `install` \u05d5\u05d4\u05d5\u05d0 \u05dc\u05d0 \u05d9\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea `backup`.",
|
|
425
|
+
"device_id": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d4\u05ea\u05e7\u05df \u05dc\u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05d9\u05e9\u05d5\u05ea \u05d6\u05d5.",
|
|
426
|
+
"in_progress": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d3\u05d9 \u05dc\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05de\u05e6\u05d1 \u05e9\u05de\u05ea\u05d1\u05e6\u05e2.",
|
|
427
|
+
"install": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05e4\u05e2\u05d5\u05dc\u05d5\u05ea \u05dc\u05d4\u05e4\u05e2\u05dc\u05d4 \u05d1\u05e2\u05ea \u05d4\u05ea\u05e7\u05e0\u05ea \u05d4\u05e2\u05d3\u05db\u05d5\u05df. \u05de\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05de\u05e9\u05ea\u05e0\u05d9\u05dd `specific_version` \u05d5`backup` \u05db\u05d0\u05e9\u05e8 \u05d4\u05d5\u05d0 \u05de\u05d5\u05e4\u05e2\u05dc.",
|
|
428
|
+
"installed_version": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05d4\u05d2\u05e8\u05e1\u05d4 \u05d4\u05de\u05d5\u05ea\u05e7\u05e0\u05ea.",
|
|
429
|
+
"latest_version": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05d4\u05d2\u05e8\u05e1\u05d4 \u05d4\u05e2\u05d3\u05db\u05e0\u05d9\u05ea \u05d1\u05d9\u05d5\u05ea\u05e8.",
|
|
430
|
+
"release_summary": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05e1\u05d9\u05db\u05d5\u05dd \u05d4\u05e9\u05d7\u05e8\u05d5\u05e8.",
|
|
431
|
+
"release_url": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05dc\u05e9\u05d7\u05e8\u05d5\u05e8.",
|
|
432
|
+
"specific_version": "\u05d4\u05e4\u05e2\u05dc\u05d4 \u05d0\u05d5 \u05d4\u05e9\u05d1\u05ea\u05d4 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e9\u05ea\u05e0\u05d4 `version` \u05e2\u05dd \u05d4\u05e4\u05e2\u05d5\u05dc\u05d4 `install`. \u05db\u05d0\u05e9\u05e8 \u05d4\u05d5\u05d0 \u05de\u05d5\u05e9\u05d1\u05ea, \u05d4\u05de\u05e9\u05ea\u05e0\u05d4 `specific_version` \u05ea\u05de\u05d9\u05d3 \u05d9\u05e1\u05e4\u05e7 `None` \u05d1\u05e4\u05e2\u05d5\u05dc\u05d5\u05ea `install`.",
|
|
433
|
+
"title": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05db\u05d5\u05ea\u05e8\u05ea \u05d4\u05e2\u05d3\u05db\u05d5\u05df.",
|
|
434
|
+
"update_percent": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d3\u05d9 \u05dc\u05e7\u05d1\u05dc \u05d0\u05ea \u05d0\u05d7\u05d5\u05d6 \u05d4\u05e9\u05dc\u05de\u05ea \u05d4\u05e2\u05d3\u05db\u05d5\u05df."
|
|
435
|
+
},
|
|
436
|
+
"sections": {
|
|
437
|
+
"advanced_options": {
|
|
438
|
+
"data": {
|
|
439
|
+
"availability": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05d6\u05de\u05d9\u05e0\u05d4"
|
|
440
|
+
},
|
|
441
|
+
"data_description": {
|
|
442
|
+
"availability": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d3\u05d9 \u05dc\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05de\u05e6\u05d1 '\u05d6\u05de\u05d9\u05df' \u05e9\u05dc \u05d4\u05d9\u05e9\u05d5\u05ea. \u05d0\u05dd \u05d4\u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05d0 \u05de\u05e6\u05dc\u05d9\u05d7\u05d4 \u05dc\u05e2\u05d1\u05d3 \u05d0\u05d5 \u05de\u05d7\u05d6\u05d9\u05e8\u05d4 'True', ''1'', 'true\"', 'yes\"', 'on\"', 'enable\"', \u05d0\u05d5 \u05de\u05e1\u05e4\u05e8 \u05e9\u05d0\u05d9\u05e0\u05d5 \u05d0\u05e4\u05e1, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05d4\u05d9\u05d4 '\u05d6\u05de\u05d9\u05e0\u05d4'. \u05d0\u05dd \u05d4\u05ea\u05d1\u05e0\u05d9\u05ea \u05de\u05d7\u05d6\u05d9\u05e8\u05d4 \u05e2\u05e8\u05da \u05d0\u05d7\u05e8, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05d4\u05d9\u05d4 '\u05dc\u05d0 \u05d6\u05de\u05d9\u05e0\u05d4'. \u05d0\u05dd \u05dc\u05d0 \u05de\u05d5\u05d2\u05d3\u05e8\u05ea, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05de\u05d9\u05d3 \u05ea\u05d4\u05d9\u05d4 '\u05d6\u05de\u05d9\u05e0\u05d4'. \u05d9\u05e9 \u05dc\u05e9\u05d9\u05dd \u05dc\u05d1 \u05e9\u05d4\u05e9\u05d5\u05d5\u05d0\u05ea \u05d4\u05de\u05d7\u05e8\u05d5\u05d6\u05d5\u05ea \u05d0\u05d9\u05e0\u05d4 \u05ea\u05dc\u05d5\u05d9\u05ea \u05e8\u05d9\u05e9\u05d9\u05d5\u05ea; \u05de\u05d5\u05ea\u05e8 'TrUe' \u05d5-''yEs'."
|
|
443
|
+
},
|
|
444
|
+
"name": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea"
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
"title": "\u05e2\u05d3\u05db\u05d5\u05df \u05ea\u05d1\u05e0\u05d9\u05ea"
|
|
448
|
+
},
|
|
381
449
|
"user": {
|
|
382
450
|
"description": "\u05e2\u05d5\u05d6\u05e8 \u05d6\u05d4 \u05de\u05d0\u05e4\u05e9\u05e8 \u05dc\u05da \u05dc\u05d9\u05e6\u05d5\u05e8 \u05d9\u05e9\u05d5\u05d9\u05d5\u05ea \u05e2\u05d5\u05d6\u05e8\u05d5\u05ea \u05e9\u05de\u05d2\u05d3\u05d9\u05e8\u05d5\u05ea \u05d0\u05ea \u05de\u05e6\u05d1\u05df \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05ea\u05d1\u05e0\u05d9\u05ea.",
|
|
383
451
|
"menu_options": {
|
|
@@ -385,6 +453,7 @@
|
|
|
385
453
|
"binary_sensor": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05d7\u05d9\u05d9\u05e9\u05df \u05d1\u05d9\u05e0\u05d0\u05e8\u05d9",
|
|
386
454
|
"button": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05d7\u05e6\u05df",
|
|
387
455
|
"cover": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d9\u05e1\u05d5\u05d9",
|
|
456
|
+
"event": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05d0\u05d9\u05e8\u05d5\u05e2",
|
|
388
457
|
"fan": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05de\u05d0\u05d5\u05d5\u05e8\u05e8",
|
|
389
458
|
"image": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05ea\u05de\u05d5\u05e0\u05d4",
|
|
390
459
|
"light": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05ea\u05d0\u05d5\u05e8\u05d4",
|
|
@@ -393,6 +462,7 @@
|
|
|
393
462
|
"select": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05d1\u05d7\u05d9\u05e8\u05d4",
|
|
394
463
|
"sensor": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05d7\u05d9\u05d9\u05e9\u05df",
|
|
395
464
|
"switch": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05de\u05ea\u05d2",
|
|
465
|
+
"update": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05e2\u05d3\u05db\u05d5\u05df",
|
|
396
466
|
"vacuum": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05e9\u05d5\u05d0\u05d1"
|
|
397
467
|
},
|
|
398
468
|
"title": "\u05de\u05e1\u05d9\u05d9\u05e2 \u05ea\u05d1\u05e0\u05d9\u05d5\u05ea"
|
|
@@ -569,6 +639,31 @@
|
|
|
569
639
|
},
|
|
570
640
|
"title": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d9\u05e1\u05d5\u05d9"
|
|
571
641
|
},
|
|
642
|
+
"event": {
|
|
643
|
+
"data": {
|
|
644
|
+
"device_id": "\u05d4\u05ea\u05e7\u05df",
|
|
645
|
+
"event_type": "\u05e1\u05d5\u05d2 \u05d0\u05d9\u05e8\u05d5\u05e2 \u05e9\u05d4\u05d5\u05e4\u05e2\u05dc \u05dc\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4",
|
|
646
|
+
"event_types": "\u05e1\u05d5\u05d2\u05d9 \u05d0\u05d9\u05e8\u05d5\u05e2\u05d9\u05dd",
|
|
647
|
+
"name": "\u05e9\u05dd"
|
|
648
|
+
},
|
|
649
|
+
"data_description": {
|
|
650
|
+
"device_id": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d4\u05ea\u05e7\u05df \u05dc\u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05d9\u05e9\u05d5\u05ea \u05d6\u05d5.",
|
|
651
|
+
"event_type": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e1\u05d5\u05d2 \u05d4\u05d0\u05d9\u05e8\u05d5\u05e2.",
|
|
652
|
+
"event_types": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e8\u05e9\u05d9\u05de\u05d4 \u05e9\u05dc \u05e1\u05d5\u05d2\u05d9 \u05d0\u05d9\u05e8\u05d5\u05e2\u05d9\u05dd \u05d6\u05de\u05d9\u05e0\u05d9\u05dd."
|
|
653
|
+
},
|
|
654
|
+
"sections": {
|
|
655
|
+
"advanced_options": {
|
|
656
|
+
"data": {
|
|
657
|
+
"availability": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05d6\u05de\u05d9\u05e0\u05d4"
|
|
658
|
+
},
|
|
659
|
+
"data_description": {
|
|
660
|
+
"availability": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d3\u05d9 \u05dc\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05de\u05e6\u05d1 '\u05d6\u05de\u05d9\u05df' \u05e9\u05dc \u05d4\u05d9\u05e9\u05d5\u05ea. \u05d0\u05dd \u05d4\u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05d0 \u05de\u05e6\u05dc\u05d9\u05d7\u05d4 \u05dc\u05e2\u05d1\u05d3 \u05d0\u05d5 \u05de\u05d7\u05d6\u05d9\u05e8\u05d4 'True', ''1'', 'true\"', 'yes\"', 'on\"', 'enable\"', \u05d0\u05d5 \u05de\u05e1\u05e4\u05e8 \u05e9\u05d0\u05d9\u05e0\u05d5 \u05d0\u05e4\u05e1, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05d4\u05d9\u05d4 '\u05d6\u05de\u05d9\u05e0\u05d4'. \u05d0\u05dd \u05d4\u05ea\u05d1\u05e0\u05d9\u05ea \u05de\u05d7\u05d6\u05d9\u05e8\u05d4 \u05e2\u05e8\u05da \u05d0\u05d7\u05e8, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05d4\u05d9\u05d4 '\u05dc\u05d0 \u05d6\u05de\u05d9\u05e0\u05d4'. \u05d0\u05dd \u05dc\u05d0 \u05de\u05d5\u05d2\u05d3\u05e8\u05ea, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05de\u05d9\u05d3 \u05ea\u05d4\u05d9\u05d4 '\u05d6\u05de\u05d9\u05e0\u05d4'. \u05d9\u05e9 \u05dc\u05e9\u05d9\u05dd \u05dc\u05d1 \u05e9\u05d4\u05e9\u05d5\u05d5\u05d0\u05ea \u05d4\u05de\u05d7\u05e8\u05d5\u05d6\u05d5\u05ea \u05d0\u05d9\u05e0\u05d4 \u05ea\u05dc\u05d5\u05d9\u05ea \u05e8\u05d9\u05e9\u05d9\u05d5\u05ea; \u05de\u05d5\u05ea\u05e8 'TrUe' \u05d5-''yEs'."
|
|
661
|
+
},
|
|
662
|
+
"name": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea"
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
"title": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05d0\u05d9\u05e8\u05d5\u05e2"
|
|
666
|
+
},
|
|
572
667
|
"fan": {
|
|
573
668
|
"data": {
|
|
574
669
|
"device_id": "\u05d4\u05ea\u05e7\u05df",
|
|
@@ -805,6 +900,48 @@
|
|
|
805
900
|
},
|
|
806
901
|
"title": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05de\u05ea\u05d2"
|
|
807
902
|
},
|
|
903
|
+
"update": {
|
|
904
|
+
"data": {
|
|
905
|
+
"backup": "\u05d2\u05d9\u05d1\u05d5\u05d9",
|
|
906
|
+
"device_class": "\u05de\u05d7\u05dc\u05e7\u05ea \u05d4\u05ea\u05e7\u05df",
|
|
907
|
+
"device_id": "\u05d4\u05ea\u05e7\u05df",
|
|
908
|
+
"in_progress": "\u05d1\u05ea\u05d4\u05dc\u05d9\u05da",
|
|
909
|
+
"install": "\u05e4\u05e2\u05d5\u05dc\u05d5\u05ea \u05d1\u05d4\u05ea\u05e7\u05e0\u05d4",
|
|
910
|
+
"installed_version": "\u05d2\u05d9\u05e8\u05e1\u05d4 \u05de\u05d5\u05ea\u05e7\u05e0\u05ea",
|
|
911
|
+
"latest_version": "\u05d4\u05d2\u05d9\u05e8\u05e1\u05d4 \u05d4\u05e2\u05d3\u05db\u05e0\u05d9\u05ea",
|
|
912
|
+
"name": "\u05e9\u05dd",
|
|
913
|
+
"release_summary": "\u05ea\u05e7\u05e6\u05d9\u05e8 \u05e9\u05d7\u05e8\u05d5\u05e8",
|
|
914
|
+
"release_url": "\u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05e9\u05dc \u05e9\u05d7\u05e8\u05d5\u05e8",
|
|
915
|
+
"specific_version": "\u05d2\u05e8\u05e1\u05d4 \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05ea",
|
|
916
|
+
"title": "\u05db\u05d5\u05ea\u05e8\u05ea",
|
|
917
|
+
"update_percent": "\u05d0\u05d7\u05d5\u05d6 \u05d4\u05e2\u05d3\u05db\u05d5\u05df"
|
|
918
|
+
},
|
|
919
|
+
"data_description": {
|
|
920
|
+
"backup": "\u05d4\u05e4\u05e2\u05dc\u05d4 \u05d0\u05d5 \u05d4\u05e9\u05d1\u05ea\u05d4 \u05e9\u05dc \u05d4\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea `\u05d2\u05d9\u05d1\u05d5\u05d9 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9 \u05dc\u05e4\u05e0\u05d9 \u05e2\u05d3\u05db\u05d5\u05df` \u05d1\u05ea\u05d9\u05e7\u05d5\u05df \u05d4\u05e2\u05d3\u05db\u05d5\u05e0\u05d9\u05dd. \u05db\u05d0\u05e9\u05e8 \u05d4\u05d5\u05d0 \u05de\u05d5\u05e9\u05d1\u05ea, \u05d4\u05de\u05e9\u05ea\u05e0\u05d4 `backup` \u05ea\u05de\u05d9\u05d3 \u05d9\u05e1\u05e4\u05e7 `False` \u05d1\u05de\u05d4\u05dc\u05da \u05e4\u05e2\u05d5\u05dc\u05ea `install` \u05d5\u05d4\u05d5\u05d0 \u05dc\u05d0 \u05d9\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea `backup`.",
|
|
921
|
+
"device_id": "\u05d1\u05d7\u05d9\u05e8\u05ea \u05d4\u05ea\u05e7\u05df \u05dc\u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05d9\u05e9\u05d5\u05ea \u05d6\u05d5.",
|
|
922
|
+
"in_progress": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d3\u05d9 \u05dc\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05de\u05e6\u05d1 \u05e9\u05de\u05ea\u05d1\u05e6\u05e2.",
|
|
923
|
+
"install": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05e4\u05e2\u05d5\u05dc\u05d5\u05ea \u05dc\u05d4\u05e4\u05e2\u05dc\u05d4 \u05d1\u05e2\u05ea \u05d4\u05ea\u05e7\u05e0\u05ea \u05d4\u05e2\u05d3\u05db\u05d5\u05df. \u05de\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05de\u05e9\u05ea\u05e0\u05d9\u05dd `specific_version` \u05d5`backup` \u05db\u05d0\u05e9\u05e8 \u05d4\u05d5\u05d0 \u05de\u05d5\u05e4\u05e2\u05dc.",
|
|
924
|
+
"installed_version": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05d4\u05d2\u05e8\u05e1\u05d4 \u05d4\u05de\u05d5\u05ea\u05e7\u05e0\u05ea.",
|
|
925
|
+
"latest_version": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05d4\u05d2\u05e8\u05e1\u05d4 \u05d4\u05e2\u05d3\u05db\u05e0\u05d9\u05ea \u05d1\u05d9\u05d5\u05ea\u05e8.",
|
|
926
|
+
"release_summary": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05e1\u05d9\u05db\u05d5\u05dd \u05d4\u05e9\u05d7\u05e8\u05d5\u05e8.",
|
|
927
|
+
"release_url": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05ea\u05e8 \u05dc\u05e9\u05d7\u05e8\u05d5\u05e8.",
|
|
928
|
+
"specific_version": "\u05d4\u05e4\u05e2\u05dc\u05d4 \u05d0\u05d5 \u05d4\u05e9\u05d1\u05ea\u05d4 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e9\u05ea\u05e0\u05d4 `version` \u05e2\u05dd \u05d4\u05e4\u05e2\u05d5\u05dc\u05d4 `install`. \u05db\u05d0\u05e9\u05e8 \u05d4\u05d5\u05d0 \u05de\u05d5\u05e9\u05d1\u05ea, \u05d4\u05de\u05e9\u05ea\u05e0\u05d4 `specific_version` \u05ea\u05de\u05d9\u05d3 \u05d9\u05e1\u05e4\u05e7 `None` \u05d1\u05e4\u05e2\u05d5\u05dc\u05d5\u05ea `install`.",
|
|
929
|
+
"title": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05e7\u05d1\u05dc\u05ea \u05db\u05d5\u05ea\u05e8\u05ea \u05d4\u05e2\u05d3\u05db\u05d5\u05df.",
|
|
930
|
+
"update_percent": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d3\u05d9 \u05dc\u05e7\u05d1\u05dc \u05d0\u05ea \u05d0\u05d7\u05d5\u05d6 \u05d4\u05e9\u05dc\u05de\u05ea \u05d4\u05e2\u05d3\u05db\u05d5\u05df."
|
|
931
|
+
},
|
|
932
|
+
"sections": {
|
|
933
|
+
"advanced_options": {
|
|
934
|
+
"data": {
|
|
935
|
+
"availability": "\u05ea\u05d1\u05e0\u05d9\u05ea \u05d6\u05de\u05d9\u05e0\u05d4"
|
|
936
|
+
},
|
|
937
|
+
"data_description": {
|
|
938
|
+
"availability": "\u05de\u05d2\u05d3\u05d9\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea \u05db\u05d3\u05d9 \u05dc\u05e7\u05d1\u05dc \u05d0\u05ea \u05d4\u05de\u05e6\u05d1 '\u05d6\u05de\u05d9\u05df' \u05e9\u05dc \u05d4\u05d9\u05e9\u05d5\u05ea. \u05d0\u05dd \u05d4\u05ea\u05d1\u05e0\u05d9\u05ea \u05dc\u05d0 \u05de\u05e6\u05dc\u05d9\u05d7\u05d4 \u05dc\u05e2\u05d1\u05d3 \u05d0\u05d5 \u05de\u05d7\u05d6\u05d9\u05e8\u05d4 'True', ''1'', 'true\"', 'yes\"', 'on\"', 'enable\"', \u05d0\u05d5 \u05de\u05e1\u05e4\u05e8 \u05e9\u05d0\u05d9\u05e0\u05d5 \u05d0\u05e4\u05e1, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05d4\u05d9\u05d4 '\u05d6\u05de\u05d9\u05e0\u05d4'. \u05d0\u05dd \u05d4\u05ea\u05d1\u05e0\u05d9\u05ea \u05de\u05d7\u05d6\u05d9\u05e8\u05d4 \u05e2\u05e8\u05da \u05d0\u05d7\u05e8, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05d4\u05d9\u05d4 '\u05dc\u05d0 \u05d6\u05de\u05d9\u05e0\u05d4'. \u05d0\u05dd \u05dc\u05d0 \u05de\u05d5\u05d2\u05d3\u05e8\u05ea, \u05d4\u05d9\u05e9\u05d5\u05ea \u05ea\u05de\u05d9\u05d3 \u05ea\u05d4\u05d9\u05d4 '\u05d6\u05de\u05d9\u05e0\u05d4'. \u05d9\u05e9 \u05dc\u05e9\u05d9\u05dd \u05dc\u05d1 \u05e9\u05d4\u05e9\u05d5\u05d5\u05d0\u05ea \u05d4\u05de\u05d7\u05e8\u05d5\u05d6\u05d5\u05ea \u05d0\u05d9\u05e0\u05d4 \u05ea\u05dc\u05d5\u05d9\u05ea \u05e8\u05d9\u05e9\u05d9\u05d5\u05ea; \u05de\u05d5\u05ea\u05e8 'TrUe' \u05d5-''yEs'."
|
|
939
|
+
},
|
|
940
|
+
"name": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea"
|
|
941
|
+
}
|
|
942
|
+
},
|
|
943
|
+
"title": "\u05e2\u05d3\u05db\u05d5\u05df \u05ea\u05d1\u05e0\u05d9\u05ea"
|
|
944
|
+
},
|
|
808
945
|
"vacuum": {
|
|
809
946
|
"data": {
|
|
810
947
|
"clean_spot": "\u05e4\u05e2\u05d5\u05dc\u05d5\u05ea \u05d1\u05e0\u05d9\u05e7\u05d5\u05d9 \u05e0\u05e7\u05d5\u05d3\u05d4",
|
|
@@ -909,6 +1046,13 @@
|
|
|
909
1046
|
"window": "\u05d7\u05dc\u05d5\u05df"
|
|
910
1047
|
}
|
|
911
1048
|
},
|
|
1049
|
+
"event_device_class": {
|
|
1050
|
+
"options": {
|
|
1051
|
+
"button": "\u05dc\u05d7\u05e6\u05df",
|
|
1052
|
+
"doorbell": "\u05e4\u05e2\u05de\u05d5\u05df \u05d3\u05dc\u05ea",
|
|
1053
|
+
"motion": "\u05ea\u05e0\u05d5\u05e2\u05d4"
|
|
1054
|
+
}
|
|
1055
|
+
},
|
|
912
1056
|
"sensor_device_class": {
|
|
913
1057
|
"options": {
|
|
914
1058
|
"absolute_humidity": "\u05dc\u05d7\u05d5\u05ea \u05de\u05d5\u05d7\u05dc\u05d8\u05ea",
|
|
@@ -982,6 +1126,11 @@
|
|
|
982
1126
|
"options": {
|
|
983
1127
|
"none": "\u05d0\u05d9\u05df \u05d9\u05d7\u05d9\u05d3\u05ea \u05de\u05d9\u05d3\u05d4"
|
|
984
1128
|
}
|
|
1129
|
+
},
|
|
1130
|
+
"update_device_class": {
|
|
1131
|
+
"options": {
|
|
1132
|
+
"firmware": "\u05e7\u05d5\u05e9\u05d7\u05d4"
|
|
1133
|
+
}
|
|
985
1134
|
}
|
|
986
1135
|
},
|
|
987
1136
|
"services": {
|
|
@@ -65,7 +65,10 @@ class UptimeRobotDataUpdateCoordinator(DataUpdateCoordinator[list[UptimeRobotMon
|
|
|
65
65
|
if device := device_registry.async_get_device(
|
|
66
66
|
identifiers={(DOMAIN, monitor_id)}
|
|
67
67
|
):
|
|
68
|
-
device_registry.
|
|
68
|
+
device_registry.async_update_device(
|
|
69
|
+
device_id=device.id,
|
|
70
|
+
remove_config_entry_id=self.config_entry.entry_id,
|
|
71
|
+
)
|
|
69
72
|
|
|
70
73
|
# If there are new monitors, we should reload the config entry so we can
|
|
71
74
|
# create new devices and entities.
|
|
@@ -74,9 +74,7 @@ rules:
|
|
|
74
74
|
repair-issues:
|
|
75
75
|
status: exempt
|
|
76
76
|
comment: no known use cases for repair issues or flows, yet
|
|
77
|
-
stale-devices:
|
|
78
|
-
status: todo
|
|
79
|
-
comment: We should remove the config entry from the device rather than remove the device
|
|
77
|
+
stale-devices: done
|
|
80
78
|
|
|
81
79
|
# Platinum
|
|
82
80
|
async-dependency: done
|
|
@@ -19,10 +19,25 @@
|
|
|
19
19
|
"integration_discovery_confirm": {
|
|
20
20
|
"description": "\u60a8\u8981\u4f7f\u7528\u84dd\u7259\u5730\u5740 {address} \u8bbe\u7f6e{name}\u5417 \uff1f"
|
|
21
21
|
},
|
|
22
|
+
"key_slot": {
|
|
23
|
+
"data": {
|
|
24
|
+
"key": "\u79bb\u7ebf\u5bc6\u94a5\uff0832 \u5b57\u8282\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff09",
|
|
25
|
+
"slot": "\u79bb\u7ebf\u5bc6\u94a5\u69fd\uff080-255 \u4e4b\u95f4\u7684\u6574\u6570\uff09"
|
|
26
|
+
},
|
|
27
|
+
"description": "\u8f93\u5165\u5730\u5740\u4e3a {address} \u7684{title}\u9501\u7684\u5bc6\u94a5\u3002\u5982\u679c\u60a8\u4f7f\u7528 August \u6216 Yale \u4e91\u96c6\u6210\u83b7\u53d6\u5bc6\u94a5\uff0c\u5219\u53ef\u4ee5\u5728\u9501\u5904\u4e8e\u84dd\u7259\u8303\u56f4\u5185\u65f6\u91cd\u65b0\u52a0\u8f7d August \u6216 Yale \u4e91\u96c6\u6210\uff0c\u4ee5\u907f\u514d\u6b64\u624b\u52a8\u8bbe\u7f6e\u3002"
|
|
28
|
+
},
|
|
29
|
+
"reauth_validate": {
|
|
30
|
+
"data": {
|
|
31
|
+
"key": "\u79bb\u7ebf\u5bc6\u94a5\uff0832 \u5b57\u8282\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff09",
|
|
32
|
+
"slot": "\u79bb\u7ebf\u5bc6\u94a5\u69fd\uff080-255 \u4e4b\u95f4\u7684\u6574\u6570\uff09"
|
|
33
|
+
},
|
|
34
|
+
"description": "\u8f93\u5165\u5730\u5740\u4e3a {address} \u7684{title}\u9501\u7684\u66f4\u65b0\u5bc6\u94a5\u3002\u5982\u679c\u60a8\u4f7f\u7528 August \u6216 Yale \u4e91\u96c6\u6210\u83b7\u53d6\u5bc6\u94a5\uff0c\u5219\u53ef\u4ee5\u5728\u9501\u5904\u4e8e\u84dd\u7259\u8303\u56f4\u5185\u65f6\u91cd\u65b0\u52a0\u8f7d August \u6216 Yale \u4e91\u96c6\u6210\uff0c\u4ee5\u907f\u514d\u624b\u52a8\u91cd\u65b0\u9a8c\u8bc1\u3002"
|
|
35
|
+
},
|
|
22
36
|
"user": {
|
|
23
37
|
"data": {
|
|
24
38
|
"address": "\u84dd\u7259\u5730\u5740"
|
|
25
|
-
}
|
|
39
|
+
},
|
|
40
|
+
"description": "\u9009\u62e9\u60a8\u60f3\u8981\u901a\u8fc7\u84dd\u7259\u8bbe\u7f6e\u7684\u8bbe\u5907\u3002"
|
|
26
41
|
}
|
|
27
42
|
}
|
|
28
43
|
},
|
homeassistant/const.py
CHANGED
|
@@ -25,7 +25,7 @@ if TYPE_CHECKING:
|
|
|
25
25
|
APPLICATION_NAME: Final = "HomeAssistant"
|
|
26
26
|
MAJOR_VERSION: Final = 2025
|
|
27
27
|
MINOR_VERSION: Final = 9
|
|
28
|
-
PATCH_VERSION: Final = "
|
|
28
|
+
PATCH_VERSION: Final = "0b5"
|
|
29
29
|
__short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}"
|
|
30
30
|
__version__: Final = f"{__short_version__}.{PATCH_VERSION}"
|
|
31
31
|
REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 13, 2)
|
|
@@ -179,8 +179,7 @@ class AreaRegistryItems(NormalizedNameBaseRegistryItems[AreaEntry]):
|
|
|
179
179
|
self._floors_index[entry.floor_id][key] = True
|
|
180
180
|
for label in entry.labels:
|
|
181
181
|
self._labels_index[label][key] = True
|
|
182
|
-
for alias in entry.aliases:
|
|
183
|
-
normalized_alias = normalize_name(alias)
|
|
182
|
+
for normalized_alias in {normalize_name(alias) for alias in entry.aliases}:
|
|
184
183
|
self._aliases_index[normalized_alias][key] = True
|
|
185
184
|
|
|
186
185
|
def _unindex_entry(
|
|
@@ -190,8 +189,7 @@ class AreaRegistryItems(NormalizedNameBaseRegistryItems[AreaEntry]):
|
|
|
190
189
|
super()._unindex_entry(key, replacement_entry)
|
|
191
190
|
entry = self.data[key]
|
|
192
191
|
if aliases := entry.aliases:
|
|
193
|
-
for alias in aliases:
|
|
194
|
-
normalized_alias = normalize_name(alias)
|
|
192
|
+
for normalized_alias in {normalize_name(alias) for alias in aliases}:
|
|
195
193
|
self._unindex_entry_value(key, normalized_alias, self._aliases_index)
|
|
196
194
|
if labels := entry.labels:
|
|
197
195
|
for label in labels:
|
|
@@ -9,7 +9,7 @@ from enum import StrEnum
|
|
|
9
9
|
from functools import lru_cache
|
|
10
10
|
import logging
|
|
11
11
|
import time
|
|
12
|
-
from typing import TYPE_CHECKING, Any,
|
|
12
|
+
from typing import TYPE_CHECKING, Any, Literal, TypedDict
|
|
13
13
|
|
|
14
14
|
import attr
|
|
15
15
|
from yarl import URL
|
|
@@ -57,7 +57,7 @@ EVENT_DEVICE_REGISTRY_UPDATED: EventType[EventDeviceRegistryUpdatedData] = Event
|
|
|
57
57
|
)
|
|
58
58
|
STORAGE_KEY = "core.device_registry"
|
|
59
59
|
STORAGE_VERSION_MAJOR = 1
|
|
60
|
-
STORAGE_VERSION_MINOR =
|
|
60
|
+
STORAGE_VERSION_MINOR = 12
|
|
61
61
|
|
|
62
62
|
CLEANUP_DELAY = 10
|
|
63
63
|
|
|
@@ -68,8 +68,6 @@ CONNECTION_ZIGBEE = "zigbee"
|
|
|
68
68
|
|
|
69
69
|
ORPHANED_DEVICE_KEEP_SECONDS = 86400 * 30
|
|
70
70
|
|
|
71
|
-
UNDEFINED_STR: Final = "UNDEFINED"
|
|
72
|
-
|
|
73
71
|
# Can be removed when suggested_area is removed from DeviceEntry
|
|
74
72
|
RUNTIME_ONLY_ATTRS = {"suggested_area"}
|
|
75
73
|
|
|
@@ -528,7 +526,8 @@ class DeletedDeviceEntry:
|
|
|
528
526
|
"created_at": self.created_at,
|
|
529
527
|
"disabled_by": self.disabled_by
|
|
530
528
|
if self.disabled_by is not UNDEFINED
|
|
531
|
-
else
|
|
529
|
+
else None,
|
|
530
|
+
"disabled_by_undefined": self.disabled_by is UNDEFINED,
|
|
532
531
|
"identifiers": list(self.identifiers),
|
|
533
532
|
"id": self.id,
|
|
534
533
|
"labels": list(self.labels),
|
|
@@ -616,7 +615,7 @@ class DeviceRegistryStore(storage.Store[dict[str, list[dict[str, Any]]]]):
|
|
|
616
615
|
# Introduced in 2025.6
|
|
617
616
|
for device in old_data["deleted_devices"]:
|
|
618
617
|
device["area_id"] = None
|
|
619
|
-
device["disabled_by"] =
|
|
618
|
+
device["disabled_by"] = None
|
|
620
619
|
device["labels"] = []
|
|
621
620
|
device["name_by_user"] = None
|
|
622
621
|
if old_minor_version < 11:
|
|
@@ -629,6 +628,11 @@ class DeviceRegistryStore(storage.Store[dict[str, list[dict[str, Any]]]]):
|
|
|
629
628
|
device["connections"] = _normalize_connections(
|
|
630
629
|
device["connections"]
|
|
631
630
|
)
|
|
631
|
+
if old_minor_version < 12:
|
|
632
|
+
# Version 1.12 adds undefined flags to deleted devices, this is a bugfix
|
|
633
|
+
# of version 1.10
|
|
634
|
+
for device in old_data["deleted_devices"]:
|
|
635
|
+
device["disabled_by_undefined"] = old_minor_version < 10
|
|
632
636
|
|
|
633
637
|
if old_major_version > 2:
|
|
634
638
|
raise NotImplementedError
|
|
@@ -1456,13 +1460,13 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
|
|
1456
1460
|
|
|
1457
1461
|
# Introduced in 0.111
|
|
1458
1462
|
def get_optional_enum[_EnumT: StrEnum](
|
|
1459
|
-
cls: type[_EnumT], value: str | None
|
|
1463
|
+
cls: type[_EnumT], value: str | None, undefined: bool
|
|
1460
1464
|
) -> _EnumT | UndefinedType | None:
|
|
1461
1465
|
"""Convert string to the passed enum, UNDEFINED or None."""
|
|
1466
|
+
if undefined:
|
|
1467
|
+
return UNDEFINED
|
|
1462
1468
|
if value is None:
|
|
1463
1469
|
return None
|
|
1464
|
-
if value == UNDEFINED_STR:
|
|
1465
|
-
return UNDEFINED
|
|
1466
1470
|
try:
|
|
1467
1471
|
return cls(value)
|
|
1468
1472
|
except ValueError:
|
|
@@ -1481,7 +1485,9 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
|
|
1481
1485
|
connections={tuple(conn) for conn in device["connections"]},
|
|
1482
1486
|
created_at=datetime.fromisoformat(device["created_at"]),
|
|
1483
1487
|
disabled_by=get_optional_enum(
|
|
1484
|
-
DeviceEntryDisabler,
|
|
1488
|
+
DeviceEntryDisabler,
|
|
1489
|
+
device["disabled_by"],
|
|
1490
|
+
device["disabled_by_undefined"],
|
|
1485
1491
|
),
|
|
1486
1492
|
identifiers={tuple(iden) for iden in device["identifiers"]},
|
|
1487
1493
|
id=device["id"],
|
|
@@ -16,7 +16,7 @@ from datetime import datetime, timedelta
|
|
|
16
16
|
from enum import StrEnum
|
|
17
17
|
import logging
|
|
18
18
|
import time
|
|
19
|
-
from typing import TYPE_CHECKING, Any,
|
|
19
|
+
from typing import TYPE_CHECKING, Any, Literal, NotRequired, TypedDict
|
|
20
20
|
|
|
21
21
|
import attr
|
|
22
22
|
import voluptuous as vol
|
|
@@ -79,14 +79,12 @@ EVENT_ENTITY_REGISTRY_UPDATED: EventType[EventEntityRegistryUpdatedData] = Event
|
|
|
79
79
|
_LOGGER = logging.getLogger(__name__)
|
|
80
80
|
|
|
81
81
|
STORAGE_VERSION_MAJOR = 1
|
|
82
|
-
STORAGE_VERSION_MINOR =
|
|
82
|
+
STORAGE_VERSION_MINOR = 19
|
|
83
83
|
STORAGE_KEY = "core.entity_registry"
|
|
84
84
|
|
|
85
85
|
CLEANUP_INTERVAL = 3600 * 24
|
|
86
86
|
ORPHANED_ENTITY_KEEP_SECONDS = 3600 * 24 * 30
|
|
87
87
|
|
|
88
|
-
UNDEFINED_STR: Final = "UNDEFINED"
|
|
89
|
-
|
|
90
88
|
ENTITY_CATEGORY_VALUE_TO_INDEX: dict[EntityCategory | None, int] = {
|
|
91
89
|
val: idx for idx, val in enumerate(EntityCategory)
|
|
92
90
|
}
|
|
@@ -462,19 +460,20 @@ class DeletedRegistryEntry:
|
|
|
462
460
|
"device_class": self.device_class,
|
|
463
461
|
"disabled_by": self.disabled_by
|
|
464
462
|
if self.disabled_by is not UNDEFINED
|
|
465
|
-
else
|
|
463
|
+
else None,
|
|
464
|
+
"disabled_by_undefined": self.disabled_by is UNDEFINED,
|
|
466
465
|
"entity_id": self.entity_id,
|
|
467
466
|
"hidden_by": self.hidden_by
|
|
468
467
|
if self.hidden_by is not UNDEFINED
|
|
469
|
-
else
|
|
468
|
+
else None,
|
|
469
|
+
"hidden_by_undefined": self.hidden_by is UNDEFINED,
|
|
470
470
|
"icon": self.icon,
|
|
471
471
|
"id": self.id,
|
|
472
472
|
"labels": list(self.labels),
|
|
473
473
|
"modified_at": self.modified_at,
|
|
474
474
|
"name": self.name,
|
|
475
|
-
"options": self.options
|
|
476
|
-
|
|
477
|
-
else UNDEFINED_STR,
|
|
475
|
+
"options": self.options if self.options is not UNDEFINED else {},
|
|
476
|
+
"options_undefined": self.options is UNDEFINED,
|
|
478
477
|
"orphaned_timestamp": self.orphaned_timestamp,
|
|
479
478
|
"platform": self.platform,
|
|
480
479
|
"unique_id": self.unique_id,
|
|
@@ -605,12 +604,20 @@ class EntityRegistryStore(storage.Store[dict[str, list[dict[str, Any]]]]):
|
|
|
605
604
|
entity["area_id"] = None
|
|
606
605
|
entity["categories"] = {}
|
|
607
606
|
entity["device_class"] = None
|
|
608
|
-
entity["disabled_by"] =
|
|
609
|
-
entity["hidden_by"] =
|
|
607
|
+
entity["disabled_by"] = None
|
|
608
|
+
entity["hidden_by"] = None
|
|
610
609
|
entity["icon"] = None
|
|
611
610
|
entity["labels"] = []
|
|
612
611
|
entity["name"] = None
|
|
613
|
-
entity["options"] =
|
|
612
|
+
entity["options"] = {}
|
|
613
|
+
if old_minor_version < 19:
|
|
614
|
+
# Version 1.19 adds undefined flags to deleted entities, this is a bugfix
|
|
615
|
+
# of version 1.18
|
|
616
|
+
set_to_undefined = old_minor_version < 18
|
|
617
|
+
for entity in data["deleted_entities"]:
|
|
618
|
+
entity["disabled_by_undefined"] = set_to_undefined
|
|
619
|
+
entity["hidden_by_undefined"] = set_to_undefined
|
|
620
|
+
entity["options_undefined"] = set_to_undefined
|
|
614
621
|
|
|
615
622
|
if old_major_version > 1:
|
|
616
623
|
raise NotImplementedError
|
|
@@ -1557,13 +1564,13 @@ class EntityRegistry(BaseRegistry):
|
|
|
1557
1564
|
)
|
|
1558
1565
|
|
|
1559
1566
|
def get_optional_enum[_EnumT: StrEnum](
|
|
1560
|
-
cls: type[_EnumT], value: str | None
|
|
1567
|
+
cls: type[_EnumT], value: str | None, undefined: bool
|
|
1561
1568
|
) -> _EnumT | UndefinedType | None:
|
|
1562
1569
|
"""Convert string to the passed enum, UNDEFINED or None."""
|
|
1570
|
+
if undefined:
|
|
1571
|
+
return UNDEFINED
|
|
1563
1572
|
if value is None:
|
|
1564
1573
|
return None
|
|
1565
|
-
if value == UNDEFINED_STR:
|
|
1566
|
-
return UNDEFINED
|
|
1567
1574
|
try:
|
|
1568
1575
|
return cls(value)
|
|
1569
1576
|
except ValueError:
|
|
@@ -1586,7 +1593,6 @@ class EntityRegistry(BaseRegistry):
|
|
|
1586
1593
|
entity["platform"],
|
|
1587
1594
|
entity["unique_id"],
|
|
1588
1595
|
)
|
|
1589
|
-
|
|
1590
1596
|
deleted_entities[key] = DeletedRegistryEntry(
|
|
1591
1597
|
aliases=set(entity["aliases"]),
|
|
1592
1598
|
area_id=entity["area_id"],
|
|
@@ -1596,11 +1602,15 @@ class EntityRegistry(BaseRegistry):
|
|
|
1596
1602
|
created_at=datetime.fromisoformat(entity["created_at"]),
|
|
1597
1603
|
device_class=entity["device_class"],
|
|
1598
1604
|
disabled_by=get_optional_enum(
|
|
1599
|
-
RegistryEntryDisabler,
|
|
1605
|
+
RegistryEntryDisabler,
|
|
1606
|
+
entity["disabled_by"],
|
|
1607
|
+
entity["disabled_by_undefined"],
|
|
1600
1608
|
),
|
|
1601
1609
|
entity_id=entity["entity_id"],
|
|
1602
1610
|
hidden_by=get_optional_enum(
|
|
1603
|
-
RegistryEntryHider,
|
|
1611
|
+
RegistryEntryHider,
|
|
1612
|
+
entity["hidden_by"],
|
|
1613
|
+
entity["hidden_by_undefined"],
|
|
1604
1614
|
),
|
|
1605
1615
|
icon=entity["icon"],
|
|
1606
1616
|
id=entity["id"],
|
|
@@ -1608,7 +1618,7 @@ class EntityRegistry(BaseRegistry):
|
|
|
1608
1618
|
modified_at=datetime.fromisoformat(entity["modified_at"]),
|
|
1609
1619
|
name=entity["name"],
|
|
1610
1620
|
options=entity["options"]
|
|
1611
|
-
if entity["
|
|
1621
|
+
if not entity["options_undefined"]
|
|
1612
1622
|
else UNDEFINED,
|
|
1613
1623
|
orphaned_timestamp=entity["orphaned_timestamp"],
|
|
1614
1624
|
platform=entity["platform"],
|
|
@@ -105,8 +105,7 @@ class FloorRegistryItems(NormalizedNameBaseRegistryItems[FloorEntry]):
|
|
|
105
105
|
def _index_entry(self, key: str, entry: FloorEntry) -> None:
|
|
106
106
|
"""Index an entry."""
|
|
107
107
|
super()._index_entry(key, entry)
|
|
108
|
-
for alias in entry.aliases:
|
|
109
|
-
normalized_alias = normalize_name(alias)
|
|
108
|
+
for normalized_alias in {normalize_name(alias) for alias in entry.aliases}:
|
|
110
109
|
self._aliases_index[normalized_alias][key] = True
|
|
111
110
|
|
|
112
111
|
def _unindex_entry(
|
|
@@ -116,8 +115,7 @@ class FloorRegistryItems(NormalizedNameBaseRegistryItems[FloorEntry]):
|
|
|
116
115
|
super()._unindex_entry(key, replacement_entry)
|
|
117
116
|
entry = self.data[key]
|
|
118
117
|
if aliases := entry.aliases:
|
|
119
|
-
for alias in aliases:
|
|
120
|
-
normalized_alias = normalize_name(alias)
|
|
118
|
+
for normalized_alias in {normalize_name(alias) for alias in aliases}:
|
|
121
119
|
self._unindex_entry_value(key, normalized_alias, self._aliases_index)
|
|
122
120
|
|
|
123
121
|
def get_floors_for_alias(self, alias: str) -> list[FloorEntry]:
|
|
@@ -35,10 +35,10 @@ fnv-hash-fast==1.5.0
|
|
|
35
35
|
go2rtc-client==0.2.1
|
|
36
36
|
ha-ffmpeg==3.2.2
|
|
37
37
|
habluetooth==5.3.0
|
|
38
|
-
hass-nabucasa==1.
|
|
38
|
+
hass-nabucasa==1.1.0
|
|
39
39
|
hassil==3.2.0
|
|
40
40
|
home-assistant-bluetooth==1.13.1
|
|
41
|
-
home-assistant-frontend==
|
|
41
|
+
home-assistant-frontend==20250903.1
|
|
42
42
|
home-assistant-intents==2025.8.29
|
|
43
43
|
httpx==0.28.1
|
|
44
44
|
ifaddr==0.2.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: homeassistant
|
|
3
|
-
Version: 2025.9.
|
|
3
|
+
Version: 2025.9.0b5
|
|
4
4
|
Summary: Open-source home automation platform running on Python 3.
|
|
5
5
|
Author-email: The Home Assistant Authors <hello@home-assistant.io>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -40,7 +40,7 @@ Requires-Dist: certifi>=2021.5.30
|
|
|
40
40
|
Requires-Dist: ciso8601==2.3.2
|
|
41
41
|
Requires-Dist: cronsim==2.6
|
|
42
42
|
Requires-Dist: fnv-hash-fast==1.5.0
|
|
43
|
-
Requires-Dist: hass-nabucasa==1.
|
|
43
|
+
Requires-Dist: hass-nabucasa==1.1.0
|
|
44
44
|
Requires-Dist: httpx==0.28.1
|
|
45
45
|
Requires-Dist: home-assistant-bluetooth==1.13.1
|
|
46
46
|
Requires-Dist: ifaddr==0.2.0
|