homeassistant 2025.9.0b2__py3-none-any.whl → 2025.9.0b4__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/airgradient/translations/lt.json +2 -1
- homeassistant/components/aladdin_connect/translations/he.json +28 -0
- homeassistant/components/alexa_devices/translations/cs.json +50 -0
- homeassistant/components/alexa_devices/translations/ga.json +47 -0
- homeassistant/components/alexa_devices/translations/lt.json +47 -0
- homeassistant/components/alexa_devices/translations/nl.json +17 -0
- homeassistant/components/alexa_devices/translations/pt.json +50 -0
- homeassistant/components/alexa_devices/translations/sk.json +50 -0
- homeassistant/components/alexa_devices/translations/zh-Hans.json +40 -0
- homeassistant/components/august/translations/he.json +25 -1
- homeassistant/components/bang_olufsen/translations/lt.json +4 -0
- homeassistant/components/bayesian/strings.json +1 -1
- homeassistant/components/bayesian/translations/he.json +96 -0
- homeassistant/components/bayesian/translations/lt.json +23 -4
- homeassistant/components/bayesian/translations/sv.json +7 -0
- homeassistant/components/binary_sensor/translations/sv.json +1 -1
- homeassistant/components/bosch_alarm/translations/lt.json +3 -0
- homeassistant/components/bsblan/climate.py +4 -0
- homeassistant/components/bsblan/config_flow.py +1 -1
- homeassistant/components/bsblan/sensor.py +23 -3
- homeassistant/components/bsblan/water_heater.py +22 -2
- homeassistant/components/button/translations/lt.json +1 -0
- homeassistant/components/devolo_home_network/translations/lt.json +4 -0
- homeassistant/components/dominos/translations/lt.json +2 -0
- homeassistant/components/dsmr/translations/lt.json +2 -1
- homeassistant/components/dsmr_reader/translations/ga.json +3 -0
- homeassistant/components/dsmr_reader/translations/lt.json +1 -0
- 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/fritz/translations/lt.json +3 -0
- homeassistant/components/fritzbox/translations/lt.json +3 -1
- homeassistant/components/fritzbox_callmonitor/translations/ga.json +1 -0
- homeassistant/components/fritzbox_callmonitor/translations/lt.json +2 -1
- 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/google_travel_time/translations/lt.json +3 -2
- homeassistant/components/govee_light_local/__init__.py +6 -1
- homeassistant/components/govee_light_local/config_flow.py +7 -12
- homeassistant/components/govee_light_local/coordinator.py +2 -3
- homeassistant/components/habitica/translations/lt.json +2 -1
- homeassistant/components/hassio/translations/he.json +4 -0
- homeassistant/components/hassio/translations/lt.json +25 -0
- homeassistant/components/homekit/__init__.py +2 -3
- homeassistant/components/homekit/services.yaml +7 -3
- homeassistant/components/homekit/strings.json +7 -1
- homeassistant/components/homekit/translations/cs.json +7 -1
- homeassistant/components/homekit/translations/de.json +6 -0
- homeassistant/components/homekit/translations/el.json +0 -1
- homeassistant/components/homekit/translations/en-GB.json +7 -1
- homeassistant/components/homekit/translations/en.json +7 -1
- homeassistant/components/homekit/translations/es.json +0 -1
- homeassistant/components/homekit/translations/et.json +7 -1
- homeassistant/components/homekit/translations/ga.json +0 -1
- homeassistant/components/homekit/translations/he.json +7 -0
- homeassistant/components/homekit/translations/hu.json +0 -1
- homeassistant/components/homekit/translations/it.json +6 -0
- homeassistant/components/homekit/translations/ja.json +0 -1
- homeassistant/components/homekit/translations/lt.json +7 -1
- homeassistant/components/homekit/translations/nl.json +5 -0
- homeassistant/components/homekit/translations/pt.json +6 -0
- homeassistant/components/homekit/translations/ru.json +0 -1
- homeassistant/components/homekit/translations/sk.json +6 -0
- homeassistant/components/homekit/translations/sv.json +0 -1
- homeassistant/components/homekit/translations/tr.json +0 -1
- homeassistant/components/homekit/translations/vi.json +0 -1
- homeassistant/components/homekit/translations/zh-Hans.json +7 -1
- homeassistant/components/homekit/translations/zh-Hant.json +6 -0
- homeassistant/components/hue/translations/ar.json +0 -5
- homeassistant/components/hue/translations/bg.json +0 -1
- homeassistant/components/hue/translations/ca.json +0 -1
- homeassistant/components/hue/translations/cs.json +1 -1
- homeassistant/components/hue/translations/cy.json +0 -1
- homeassistant/components/hue/translations/da.json +0 -1
- homeassistant/components/hue/translations/de.json +1 -1
- homeassistant/components/hue/translations/el.json +1 -1
- homeassistant/components/hue/translations/en-GB.json +1 -1
- homeassistant/components/hue/translations/en.json +1 -1
- homeassistant/components/hue/translations/es-419.json +0 -1
- homeassistant/components/hue/translations/es.json +0 -1
- homeassistant/components/hue/translations/et.json +1 -1
- homeassistant/components/hue/translations/fi.json +0 -1
- homeassistant/components/hue/translations/fr.json +0 -1
- homeassistant/components/hue/translations/ga.json +0 -1
- homeassistant/components/hue/translations/he.json +0 -1
- homeassistant/components/hue/translations/hu.json +0 -1
- homeassistant/components/hue/translations/id.json +0 -1
- homeassistant/components/hue/translations/it.json +0 -1
- homeassistant/components/hue/translations/ja.json +0 -1
- homeassistant/components/hue/translations/ko.json +0 -1
- homeassistant/components/hue/translations/lb.json +0 -1
- homeassistant/components/hue/translations/lt.json +1 -1
- homeassistant/components/hue/translations/nb.json +0 -1
- homeassistant/components/hue/translations/nl.json +1 -1
- homeassistant/components/hue/translations/nn.json +0 -1
- homeassistant/components/hue/translations/pl.json +0 -1
- homeassistant/components/hue/translations/pt-BR.json +0 -1
- homeassistant/components/hue/translations/pt.json +1 -1
- homeassistant/components/hue/translations/ro.json +0 -1
- homeassistant/components/hue/translations/ru.json +0 -1
- homeassistant/components/hue/translations/sk.json +1 -1
- homeassistant/components/hue/translations/sl.json +0 -1
- homeassistant/components/hue/translations/sv.json +0 -1
- homeassistant/components/hue/translations/tr.json +0 -1
- homeassistant/components/hue/translations/uk.json +0 -1
- homeassistant/components/hue/translations/vi.json +0 -1
- homeassistant/components/hue/translations/zh-Hans.json +1 -1
- homeassistant/components/hue/translations/zh-Hant.json +1 -1
- homeassistant/components/hue/v2/group.py +67 -12
- 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/hydrawise/translations/lt.json +2 -1
- homeassistant/components/imeon_inverter/const.py +1 -1
- homeassistant/components/imeon_inverter/translations/cs.json +1 -0
- homeassistant/components/imeon_inverter/translations/de.json +1 -0
- homeassistant/components/imeon_inverter/translations/el.json +5 -0
- homeassistant/components/imeon_inverter/translations/en-GB.json +1 -0
- homeassistant/components/imeon_inverter/translations/et.json +1 -0
- homeassistant/components/imeon_inverter/translations/it.json +5 -0
- homeassistant/components/imeon_inverter/translations/lt.json +13 -0
- homeassistant/components/imeon_inverter/translations/pt.json +1 -0
- homeassistant/components/imeon_inverter/translations/sk.json +1 -0
- homeassistant/components/imeon_inverter/translations/zh-Hans.json +1 -0
- homeassistant/components/imeon_inverter/translations/zh-Hant.json +1 -0
- homeassistant/components/insteon/translations/lt.json +6 -2
- homeassistant/components/iskra/manifest.json +1 -1
- homeassistant/components/lcn/translations/lt.json +2 -0
- homeassistant/components/leaone/translations/lt.json +2 -1
- homeassistant/components/lg_thinq/translations/lt.json +4 -0
- homeassistant/components/lifx/translations/de.json +6 -6
- homeassistant/components/luftdaten/translations/lt.json +7 -0
- homeassistant/components/matter/translations/he.json +48 -0
- homeassistant/components/matter/translations/lt.json +3 -0
- homeassistant/components/mealie/manifest.json +1 -1
- homeassistant/components/media_player/translations/he.json +6 -1
- homeassistant/components/miele/climate.py +20 -10
- homeassistant/components/miele/translations/lt.json +3 -0
- homeassistant/components/mqtt/translations/fr.json +1 -0
- homeassistant/components/mqtt/translations/he.json +38 -0
- homeassistant/components/mqtt/translations/lt.json +8 -2
- homeassistant/components/mqtt/translations/sv.json +1 -1
- homeassistant/components/music_assistant/media_browser.py +8 -8
- homeassistant/components/music_assistant/translations/lt.json +2 -1
- homeassistant/components/niko_home_control/translations/he.json +7 -1
- homeassistant/components/onkyo/config_flow.py +1 -1
- homeassistant/components/openweathermap/translations/lt.json +2 -1
- homeassistant/components/opower/translations/lt.json +1 -0
- homeassistant/components/pooldose/entity.py +1 -4
- homeassistant/components/pooldose/manifest.json +1 -1
- homeassistant/components/pooldose/quality_scale.yaml +13 -27
- homeassistant/components/pooldose/translations/he.json +48 -0
- homeassistant/components/qnap/translations/lt.json +1 -0
- homeassistant/components/random/translations/lt.json +1 -1
- homeassistant/components/random/translations/sv.json +1 -1
- homeassistant/components/risco/translations/lt.json +8 -0
- homeassistant/components/scrape/translations/lt.json +2 -1
- homeassistant/components/sensibo/translations/lt.json +5 -0
- homeassistant/components/sensor/translations/lt.json +5 -0
- homeassistant/components/smartthings/translations/he.json +13 -0
- homeassistant/components/somfy_mylink/translations/he.json +5 -0
- homeassistant/components/somfy_mylink/translations/lt.json +4 -2
- homeassistant/components/sql/translations/lt.json +2 -1
- homeassistant/components/switchbot/translations/lt.json +3 -1
- homeassistant/components/tellduslive/translations/lt.json +4 -0
- homeassistant/components/template/translations/he.json +149 -0
- homeassistant/components/template/translations/lt.json +40 -10
- homeassistant/components/template/translations/sv.json +1 -1
- homeassistant/components/teslemetry/translations/lt.json +1 -0
- homeassistant/components/tuya/translations/lt.json +5 -2
- homeassistant/components/unifiprotect/translations/lt.json +3 -0
- 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/waze_travel_time/translations/lt.json +8 -0
- homeassistant/components/waze_travel_time/translations/nl.json +3 -0
- homeassistant/components/whois/translations/lt.json +1 -0
- homeassistant/components/xiaomi_ble/translations/lt.json +2 -1
- homeassistant/components/yalexs_ble/translations/cs.json +16 -1
- homeassistant/components/yalexs_ble/translations/el.json +11 -0
- homeassistant/components/yalexs_ble/translations/et.json +16 -1
- homeassistant/components/yalexs_ble/translations/lt.json +16 -1
- homeassistant/components/yalexs_ble/translations/pt.json +16 -1
- homeassistant/components/yalexs_ble/translations/sk.json +16 -1
- homeassistant/components/yalexs_ble/translations/zh-Hans.json +16 -1
- homeassistant/components/zwave_js/translations/lt.json +2 -0
- homeassistant/const.py +1 -1
- homeassistant/generated/config_flows.py +0 -1
- homeassistant/generated/integrations.json +0 -6
- homeassistant/helpers/device_registry.py +15 -9
- homeassistant/helpers/entity_registry.py +29 -19
- homeassistant/package_constraints.txt +1 -1
- {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/METADATA +1 -1
- {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/RECORD +209 -250
- homeassistant/components/vulcan/__init__.py +0 -48
- homeassistant/components/vulcan/calendar.py +0 -176
- homeassistant/components/vulcan/config_flow.py +0 -327
- homeassistant/components/vulcan/const.py +0 -3
- homeassistant/components/vulcan/fetch_data.py +0 -98
- homeassistant/components/vulcan/manifest.json +0 -9
- homeassistant/components/vulcan/register.py +0 -12
- homeassistant/components/vulcan/strings.json +0 -62
- homeassistant/components/vulcan/translations/bg.json +0 -37
- homeassistant/components/vulcan/translations/ca.json +0 -59
- homeassistant/components/vulcan/translations/cs.json +0 -62
- homeassistant/components/vulcan/translations/de.json +0 -62
- homeassistant/components/vulcan/translations/el.json +0 -61
- homeassistant/components/vulcan/translations/en-GB.json +0 -62
- homeassistant/components/vulcan/translations/en.json +0 -62
- homeassistant/components/vulcan/translations/es.json +0 -62
- homeassistant/components/vulcan/translations/et.json +0 -62
- homeassistant/components/vulcan/translations/fi.json +0 -59
- homeassistant/components/vulcan/translations/fr.json +0 -61
- homeassistant/components/vulcan/translations/ga.json +0 -9
- homeassistant/components/vulcan/translations/gl.json +0 -7
- homeassistant/components/vulcan/translations/he.json +0 -29
- homeassistant/components/vulcan/translations/hu.json +0 -62
- homeassistant/components/vulcan/translations/id.json +0 -59
- homeassistant/components/vulcan/translations/it.json +0 -60
- homeassistant/components/vulcan/translations/ja.json +0 -62
- homeassistant/components/vulcan/translations/ko.json +0 -59
- homeassistant/components/vulcan/translations/lt.json +0 -62
- homeassistant/components/vulcan/translations/mk.json +0 -11
- homeassistant/components/vulcan/translations/nb.json +0 -59
- homeassistant/components/vulcan/translations/nl.json +0 -60
- homeassistant/components/vulcan/translations/pl.json +0 -57
- homeassistant/components/vulcan/translations/pt-BR.json +0 -58
- homeassistant/components/vulcan/translations/pt.json +0 -62
- homeassistant/components/vulcan/translations/ro.json +0 -45
- homeassistant/components/vulcan/translations/ru.json +0 -62
- homeassistant/components/vulcan/translations/sk.json +0 -62
- homeassistant/components/vulcan/translations/sl.json +0 -21
- homeassistant/components/vulcan/translations/sv.json +0 -62
- homeassistant/components/vulcan/translations/tr.json +0 -62
- homeassistant/components/vulcan/translations/uk.json +0 -52
- homeassistant/components/vulcan/translations/vi.json +0 -15
- homeassistant/components/vulcan/translations/zh-Hans.json +0 -62
- homeassistant/components/vulcan/translations/zh-Hant.json +0 -62
- {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/WHEEL +0 -0
- {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.9.0b2.dist-info → homeassistant-2025.9.0b4.dist-info}/top_level.txt +0 -0
|
@@ -19,10 +19,25 @@
|
|
|
19
19
|
"integration_discovery_confirm": {
|
|
20
20
|
"description": "Ar norite nustatyti {name} per \u201eBluetooth\u201c su adresu {address} ?"
|
|
21
21
|
},
|
|
22
|
+
"key_slot": {
|
|
23
|
+
"data": {
|
|
24
|
+
"key": "Neprisijungus veikiantis raktas (32 bait\u0173 \u0161e\u0161ioliktain\u0117 eilut\u0117)",
|
|
25
|
+
"slot": "Neprisijungusio rakto lizdas (sveikasis skai\u010dius nuo 0 iki 255)"
|
|
26
|
+
},
|
|
27
|
+
"description": "\u012eveskite {title} spynos rakt\u0105, kurio adresas {address}. Jei raktui gauti naudojate August arba Yale debesies integracij\u0105, galite i\u0161vengti \u0161io rankinio nustatymo i\u0161 naujo \u012fkeldami August arba Yale debesies integracij\u0105, kai spyna yra Bluetooth diapazone."
|
|
28
|
+
},
|
|
29
|
+
"reauth_validate": {
|
|
30
|
+
"data": {
|
|
31
|
+
"key": "Neprisijungus veikiantis raktas (32 bait\u0173 \u0161e\u0161ioliktain\u0117 eilut\u0117)",
|
|
32
|
+
"slot": "Neprisijungusio rakto lizdas (sveikasis skai\u010dius nuo 0 iki 255)"
|
|
33
|
+
},
|
|
34
|
+
"description": "\u012eveskite atnaujint\u0105 {title} spynos, kurios adresas yra {address}. Jei raktui gauti naudojate August arba Yale debesies integracij\u0105, galite i\u0161vengti rankinio pakartotinio autentifikavimo i\u0161 naujo \u012fkeldami August arba Yale debesies integracij\u0105, kai spyna yra Bluetooth diapazone."
|
|
35
|
+
},
|
|
22
36
|
"user": {
|
|
23
37
|
"data": {
|
|
24
38
|
"address": "Bluetooth adresas"
|
|
25
|
-
}
|
|
39
|
+
},
|
|
40
|
+
"description": "Pasirinkite \u012frengin\u012f, kur\u012f norite nustatyti per Bluetooth."
|
|
26
41
|
}
|
|
27
42
|
}
|
|
28
43
|
},
|
|
@@ -19,10 +19,25 @@
|
|
|
19
19
|
"integration_discovery_confirm": {
|
|
20
20
|
"description": "Deseja configurar {name} por Bluetooth com endere\u00e7o {address}?"
|
|
21
21
|
},
|
|
22
|
+
"key_slot": {
|
|
23
|
+
"data": {
|
|
24
|
+
"key": "Chave offline (sequ\u00eancia hexadecimal de 32 bytes)",
|
|
25
|
+
"slot": "Slot de chave offline (inteiro entre 0 e 255)"
|
|
26
|
+
},
|
|
27
|
+
"description": "Introduza a chave da fechadura {title} com o endere\u00e7o {address}. Se estiver a utilizar a integra\u00e7\u00e3o na nuvem August ou Yale para obter a chave, poder\u00e1 evitar esta configura\u00e7\u00e3o manual recarregando a integra\u00e7\u00e3o na nuvem August ou Yale enquanto a fechadura estiver ao alcance do Bluetooth."
|
|
28
|
+
},
|
|
29
|
+
"reauth_validate": {
|
|
30
|
+
"data": {
|
|
31
|
+
"key": "Chave offline (sequ\u00eancia hexadecimal de 32 bytes)",
|
|
32
|
+
"slot": "Slot de chave offline (inteiro entre 0 e 255)"
|
|
33
|
+
},
|
|
34
|
+
"description": "Introduza a chave atualizada da fechadura {title} com o endere\u00e7o {address}. Se estiver a utilizar a integra\u00e7\u00e3o na nuvem August ou Yale para obter a chave, poder\u00e1 evitar a reautentica\u00e7\u00e3o manual recarregando a integra\u00e7\u00e3o na nuvem August ou Yale enquanto a fechadura estiver ao alcance do Bluetooth."
|
|
35
|
+
},
|
|
22
36
|
"user": {
|
|
23
37
|
"data": {
|
|
24
38
|
"address": "Endere\u00e7o Bluetooth"
|
|
25
|
-
}
|
|
39
|
+
},
|
|
40
|
+
"description": "Selecione o dispositivo que pretende configurar atrav\u00e9s de Bluetooth."
|
|
26
41
|
}
|
|
27
42
|
}
|
|
28
43
|
},
|
|
@@ -19,10 +19,25 @@
|
|
|
19
19
|
"integration_discovery_confirm": {
|
|
20
20
|
"description": "Chcete nastavi\u0165 {name} cez Bluetooth s adresou {address}?"
|
|
21
21
|
},
|
|
22
|
+
"key_slot": {
|
|
23
|
+
"data": {
|
|
24
|
+
"key": "Offline k\u013e\u00fa\u010d (32-bajtov\u00fd hexadecim\u00e1lny re\u0165azec)",
|
|
25
|
+
"slot": "Offline Key Slot (Cel\u00e9 \u010d\u00edslo od 0 do 255)"
|
|
26
|
+
},
|
|
27
|
+
"description": "Zadajte k\u013e\u00fa\u010d pre z\u00e1mok {title} s adresou {address}. Ak na z\u00edskanie k\u013e\u00fa\u010da pou\u017e\u00edvate cloudov\u00fa integr\u00e1ciu August alebo Yale, m\u00f4\u017eete sa vyhn\u00fa\u0165 tomuto manu\u00e1lnemu nastaveniu na\u010d\u00edtan\u00edm cloudovej integr\u00e1cie August alebo Yale, ke\u010f je z\u00e1mok v dosahu Bluetooth."
|
|
28
|
+
},
|
|
29
|
+
"reauth_validate": {
|
|
30
|
+
"data": {
|
|
31
|
+
"key": "Offline k\u013e\u00fa\u010d (32-bajtov\u00fd hexadecim\u00e1lny re\u0165azec)",
|
|
32
|
+
"slot": "Offline Key Slot (Cel\u00e9 \u010d\u00edslo od 0 do 255)"
|
|
33
|
+
},
|
|
34
|
+
"description": "Zadajte aktualizovan\u00fd k\u013e\u00fa\u010d pre z\u00e1mok {title} s adresou {address}. Ak na z\u00edskanie k\u013e\u00fa\u010da pou\u017e\u00edvate cloudov\u00fa integr\u00e1ciu August alebo Yale, m\u00f4\u017eete sa vyhn\u00fa\u0165 ru\u010dn\u00e9mu op\u00e4tovn\u00e9mu overeniu t\u00fdm, \u017ee znovu na\u010d\u00edtate cloudov\u00fa integr\u00e1ciu August alebo Yale, ke\u010f je z\u00e1mok v dosahu Bluetooth."
|
|
35
|
+
},
|
|
22
36
|
"user": {
|
|
23
37
|
"data": {
|
|
24
38
|
"address": "Adresa Bluetooth"
|
|
25
|
-
}
|
|
39
|
+
},
|
|
40
|
+
"description": "Vyberte zariadenie, ktor\u00e9 chcete nastavi\u0165 cez Bluetooth."
|
|
26
41
|
}
|
|
27
42
|
}
|
|
28
43
|
},
|
|
@@ -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
|
},
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
"addon_get_discovery_info_failed": "Nepavyko gauti Z-Wave priedo atradimo informacijos.",
|
|
5
5
|
"addon_info_failed": "Nepavyko gauti Z-Wave priedo informacijos.",
|
|
6
6
|
"addon_install_failed": "Nepavyko \u012fdiegti Z-Wave priedo.",
|
|
7
|
+
"addon_required": "Z-Wave perk\u0117limo srautui reikia sukonfig\u016bruoti integracij\u0105 naudojant Z-Wave Supervisor pried\u0105. Jei naudojate Z-Wave JS vartotojo s\u0105saj\u0105, vadovaukit\u0117s m\u016bs\u0173 [migracijos instrukcijomis]( {zwave_js_ui_migration} ).",
|
|
7
8
|
"addon_set_config_failed": "Nepavyko nustatyti Z-Wave konfig\u016bracijos.",
|
|
8
9
|
"addon_start_failed": "Nepavyko paleisti Z-Wave priedo.",
|
|
9
10
|
"addon_stop_failed": "Nepavyko sustabdyti Z-Wave papildinio.",
|
|
@@ -291,6 +292,7 @@
|
|
|
291
292
|
},
|
|
292
293
|
"step": {
|
|
293
294
|
"init": {
|
|
295
|
+
"description": "\u012erenginio {device_name} konfig\u016bracijos failas pasikeit\u0117. \n \n Z-Wave aptinka daug \u012frenginio metaduomen\u0173 apklausdama \u012frengin\u012f. Ta\u010diau dal\u012f informacijos reikia \u012fkelti i\u0161 konfig\u016bracijos failo. Dalis \u0161ios informacijos \u012fvertinama tik vien\u0105 kart\u0105, \u012frenginio apklausos metu. \n \n Atnaujinus \u012frenginio konfig\u016bracijos fail\u0105, \u0161i informacija gali b\u016bti pasenusi ir \u012frengin\u012f reikia apklausti i\u0161 naujo, kad pakeitimai b\u016bt\u0173 i\u0161saugoti. \n \n Tai n\u0117ra b\u016btina operacija, ir pakartotin\u0117s apklausos metu bus paveiktos \u012frenginio funkcijos, ta\u010diau jam pasibaigus, galite pasteb\u0117ti \u012frenginio patobulinim\u0173. \n \n Jei nuspr\u0119site t\u0119sti pakartotin\u0119 apklaus\u0105, ji vyks fone. \n \n Pastaba: Baterijomis maitinamus miego re\u017eimu veikian\u010dius \u012frenginius reikia pa\u017eadinti pakartotin\u0117s apklausos metu, kad jie veikt\u0173. Kaip pa\u017eadinti \u012frengin\u012f, priklauso nuo konkretaus \u012frenginio ir paprastai paai\u0161kinama \u012frenginio vadove.",
|
|
294
296
|
"menu_options": {
|
|
295
297
|
"confirm": "Pakartotinis apklausos prietaisas",
|
|
296
298
|
"ignore": "Nepaisykite prietaiso konfig\u016bracijos atnaujinimo"
|
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 = "0b4"
|
|
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)
|
|
@@ -7306,12 +7306,6 @@
|
|
|
7306
7306
|
"config_flow": true,
|
|
7307
7307
|
"iot_class": "cloud_polling"
|
|
7308
7308
|
},
|
|
7309
|
-
"vulcan": {
|
|
7310
|
-
"name": "Uonet+ Vulcan",
|
|
7311
|
-
"integration_type": "hub",
|
|
7312
|
-
"config_flow": true,
|
|
7313
|
-
"iot_class": "cloud_polling"
|
|
7314
|
-
},
|
|
7315
7309
|
"vultr": {
|
|
7316
7310
|
"name": "Vultr",
|
|
7317
7311
|
"integration_type": "hub",
|
|
@@ -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
|
|
@@ -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"],
|