homeassistant 2025.10.0b2__py3-none-any.whl → 2025.10.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.
Potentially problematic release.
This version of homeassistant might be problematic. Click here for more details.
- homeassistant/components/accuweather/translations/ga.json +16 -1
- homeassistant/components/airos/__init__.py +37 -2
- homeassistant/components/airos/config_flow.py +24 -3
- homeassistant/components/airos/const.py +5 -0
- homeassistant/components/airos/entity.py +8 -3
- homeassistant/components/airos/strings.json +12 -0
- homeassistant/components/airos/translations/de.json +12 -0
- homeassistant/components/airos/translations/en-GB.json +12 -0
- homeassistant/components/airos/translations/en.json +12 -0
- homeassistant/components/airzone/translations/es.json +10 -0
- homeassistant/components/airzone/translations/et.json +10 -0
- homeassistant/components/airzone/translations/ga.json +10 -0
- homeassistant/components/airzone/translations/pt.json +10 -0
- homeassistant/components/assist_pipeline/pipeline.py +43 -18
- homeassistant/components/assist_pipeline/translations/sv.json +1 -0
- homeassistant/components/blue_current/translations/es.json +44 -0
- homeassistant/components/blue_current/translations/et.json +44 -0
- homeassistant/components/blue_current/translations/ga.json +44 -0
- homeassistant/components/blue_current/translations/pt.json +44 -0
- homeassistant/components/cloud/translations/sk.json +1 -1
- homeassistant/components/comelit/config_flow.py +8 -4
- homeassistant/components/cync/translations/es.json +32 -0
- homeassistant/components/cync/translations/et.json +32 -0
- homeassistant/components/cync/translations/ga.json +32 -0
- homeassistant/components/cync/translations/pt.json +32 -0
- homeassistant/components/cync/translations/ru.json +32 -0
- homeassistant/components/ecovacs/translations/es.json +7 -1
- homeassistant/components/ecovacs/translations/et.json +7 -1
- homeassistant/components/ecovacs/translations/ga.json +6 -1
- homeassistant/components/ecovacs/translations/pt.json +4 -0
- homeassistant/components/ecovacs/translations/ru.json +4 -0
- homeassistant/components/edl21/translations/de.json +1 -1
- homeassistant/components/ekeybionyx/translations/es.json +66 -0
- homeassistant/components/ekeybionyx/translations/et.json +66 -0
- homeassistant/components/ekeybionyx/translations/ga.json +66 -0
- homeassistant/components/ekeybionyx/translations/pt.json +66 -0
- homeassistant/components/elvia/translations/de.json +3 -3
- homeassistant/components/esphome/manager.py +1 -1
- homeassistant/components/esphome/manifest.json +1 -1
- homeassistant/components/esphome/translations/sv.json +1 -1
- homeassistant/components/ezviz/entity.py +12 -6
- homeassistant/components/file/translations/es.json +31 -0
- homeassistant/components/file/translations/et.json +31 -0
- homeassistant/components/file/translations/ga.json +31 -0
- homeassistant/components/file/translations/pt.json +31 -0
- homeassistant/components/file/translations/ru.json +31 -0
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/geniushub/entity.py +4 -4
- homeassistant/components/google_generative_ai_conversation/translations/ga.json +6 -0
- homeassistant/components/habitica/translations/ga.json +24 -0
- homeassistant/components/hassio/translations/es.json +4 -0
- homeassistant/components/hassio/translations/et.json +4 -0
- homeassistant/components/hassio/translations/ga.json +4 -0
- homeassistant/components/hassio/translations/pt.json +4 -0
- homeassistant/components/hassio/translations/ru.json +4 -0
- homeassistant/components/here_travel_time/translations/es.json +6 -0
- homeassistant/components/here_travel_time/translations/et.json +6 -0
- homeassistant/components/here_travel_time/translations/ga.json +6 -0
- homeassistant/components/here_travel_time/translations/pt.json +6 -0
- homeassistant/components/irm_kmi/translations/ga.json +50 -0
- homeassistant/components/lamarzocco/__init__.py +1 -1
- homeassistant/components/lamarzocco/coordinator.py +10 -2
- homeassistant/components/lamarzocco/manifest.json +1 -1
- homeassistant/components/letpot/translations/es.json +10 -0
- homeassistant/components/letpot/translations/et.json +10 -0
- homeassistant/components/letpot/translations/ga.json +9 -0
- homeassistant/components/letpot/translations/pt.json +10 -0
- homeassistant/components/lg_thinq/translations/ga.json +9 -0
- homeassistant/components/logbook/translations/es.json +6 -1
- homeassistant/components/logbook/translations/et.json +6 -1
- homeassistant/components/logbook/translations/pl.json +3 -1
- homeassistant/components/logbook/translations/pt.json +6 -1
- homeassistant/components/logbook/translations/ru.json +6 -1
- homeassistant/components/mastodon/translations/ga.json +4 -0
- homeassistant/components/matter/translations/es.json +3 -0
- homeassistant/components/matter/translations/et.json +3 -0
- homeassistant/components/matter/translations/ga.json +3 -0
- homeassistant/components/matter/translations/pt.json +3 -0
- homeassistant/components/matter/translations/ru.json +3 -0
- homeassistant/components/miele/translations/ga.json +1 -0
- homeassistant/components/mqtt/translations/es.json +19 -0
- homeassistant/components/mqtt/translations/et.json +19 -0
- homeassistant/components/mqtt/translations/ga.json +26 -1
- homeassistant/components/mqtt/translations/pt.json +19 -0
- homeassistant/components/mqtt/translations/ru.json +19 -0
- homeassistant/components/nina/strings.json +2 -2
- homeassistant/components/nina/translations/ca.json +0 -2
- homeassistant/components/nina/translations/cs.json +0 -2
- homeassistant/components/nina/translations/de.json +3 -3
- homeassistant/components/nina/translations/el.json +0 -1
- homeassistant/components/nina/translations/en-GB.json +3 -3
- homeassistant/components/nina/translations/en.json +3 -3
- homeassistant/components/nina/translations/es.json +0 -2
- homeassistant/components/nina/translations/et.json +0 -2
- homeassistant/components/nina/translations/fi.json +0 -2
- homeassistant/components/nina/translations/ga.json +0 -2
- homeassistant/components/nina/translations/hu.json +0 -2
- homeassistant/components/nina/translations/id.json +0 -1
- homeassistant/components/nina/translations/it.json +0 -2
- homeassistant/components/nina/translations/ja.json +0 -2
- homeassistant/components/nina/translations/ko.json +0 -2
- homeassistant/components/nina/translations/lt.json +0 -2
- homeassistant/components/nina/translations/nl.json +0 -2
- homeassistant/components/nina/translations/pt-BR.json +0 -1
- homeassistant/components/nina/translations/pt.json +0 -2
- homeassistant/components/nina/translations/ro.json +0 -1
- homeassistant/components/nina/translations/ru.json +0 -2
- homeassistant/components/nina/translations/sk.json +0 -2
- homeassistant/components/nina/translations/sv.json +0 -2
- homeassistant/components/nina/translations/tr.json +0 -2
- homeassistant/components/nina/translations/uk.json +0 -1
- homeassistant/components/nina/translations/zh-Hans.json +0 -2
- homeassistant/components/nina/translations/zh-Hant.json +0 -2
- homeassistant/components/nordpool/translations/ga.json +6 -0
- homeassistant/components/pooldose/translations/ga.json +8 -1
- homeassistant/components/portainer/__init__.py +4 -3
- homeassistant/components/portainer/config_flow.py +3 -2
- homeassistant/components/portainer/strings.json +4 -2
- homeassistant/components/portainer/translations/de.json +4 -2
- homeassistant/components/portainer/translations/en-GB.json +4 -2
- homeassistant/components/portainer/translations/en.json +4 -2
- homeassistant/components/profiler/translations/es.json +4 -0
- homeassistant/components/profiler/translations/et.json +4 -0
- homeassistant/components/profiler/translations/ga.json +4 -0
- homeassistant/components/profiler/translations/pt.json +4 -0
- homeassistant/components/route_b_smart_meter/translations/es.json +42 -0
- homeassistant/components/route_b_smart_meter/translations/et.json +42 -0
- homeassistant/components/route_b_smart_meter/translations/ga.json +42 -0
- homeassistant/components/route_b_smart_meter/translations/pt.json +42 -0
- homeassistant/components/russound_rio/manifest.json +1 -1
- homeassistant/components/satel_integra/translations/et.json +1 -0
- homeassistant/components/shelly/translations/pl.json +4 -0
- homeassistant/components/smartthings/translations/es.json +21 -0
- homeassistant/components/smartthings/translations/et.json +21 -0
- homeassistant/components/smartthings/translations/ga.json +15 -0
- homeassistant/components/smartthings/translations/pt.json +21 -0
- homeassistant/components/thread/config_flow.py +11 -3
- homeassistant/components/thread/manifest.json +1 -0
- homeassistant/components/tolo/translations/es.json +2 -1
- homeassistant/components/tolo/translations/ga.json +2 -1
- homeassistant/components/tuya/translations/es.json +9 -0
- homeassistant/components/tuya/translations/et.json +9 -0
- homeassistant/components/tuya/translations/ga.json +9 -0
- homeassistant/components/tuya/translations/pt.json +9 -0
- homeassistant/components/usage_prediction/translations/et.json +3 -0
- homeassistant/components/valve/translations/pl.json +2 -1
- homeassistant/components/vesync/fan.py +3 -1
- homeassistant/components/voip/translations/sv.json +1 -1
- homeassistant/components/volvooncall/translations/ga.json +18 -1
- homeassistant/components/wyoming/translations/sv.json +1 -1
- homeassistant/components/zha/config_flow.py +37 -21
- homeassistant/components/zha/manifest.json +1 -1
- homeassistant/components/zha/translations/es.json +81 -3
- homeassistant/components/zha/translations/et.json +78 -0
- homeassistant/components/zha/translations/ga.json +74 -0
- homeassistant/components/zha/translations/pt.json +80 -2
- homeassistant/components/zha/translations/ru.json +8 -2
- homeassistant/components/zwave_js/config_flow.py +30 -11
- homeassistant/components/zwave_js/translations/es.json +1 -0
- homeassistant/components/zwave_js/translations/et.json +1 -0
- homeassistant/components/zwave_js/translations/ga.json +1 -0
- homeassistant/components/zwave_js/translations/pt.json +1 -0
- homeassistant/const.py +1 -1
- homeassistant/generated/integrations.json +2 -1
- homeassistant/package_constraints.txt +1 -1
- {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b4.dist-info}/METADATA +1 -1
- {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b4.dist-info}/RECORD +172 -157
- {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b4.dist-info}/WHEEL +0 -0
- {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b4.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b4.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b4.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.10.0b2.dist-info → homeassistant-2025.10.0b4.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"config": {
|
|
3
3
|
"abort": {
|
|
4
|
-
"already_configured": "T\u00e1 an su\u00edomh cumraithe cheana f\u00e9in"
|
|
4
|
+
"already_configured": "T\u00e1 an su\u00edomh cumraithe cheana f\u00e9in",
|
|
5
|
+
"reauth_successful": "D'\u00e9irigh leis an athfh\u00edordheimhni\u00fa"
|
|
5
6
|
},
|
|
6
7
|
"create_entry": {
|
|
7
8
|
"default": "N\u00ed bh\u00edonn roinnt braiteoir\u00ed cumasaithe de r\u00e9ir r\u00e9amhshocraithe. Is f\u00e9idir leat iad a chumas\u00fa sa chl\u00e1rlann eintiteas tar \u00e9is chumra\u00edocht an chomhth\u00e1thaithe."
|
|
@@ -12,12 +13,23 @@
|
|
|
12
13
|
"requests_exceeded": "T\u00e1 an l\u00edon ceadaithe iarratas chuig API AccuWeather s\u00e1raithe. Caithfidh t\u00fa fanacht n\u00f3 eochair an API a athr\u00fa."
|
|
13
14
|
},
|
|
14
15
|
"step": {
|
|
16
|
+
"reauth_confirm": {
|
|
17
|
+
"data": {
|
|
18
|
+
"api_key": "Eochair API"
|
|
19
|
+
},
|
|
20
|
+
"data_description": {
|
|
21
|
+
"api_key": "Eochair API ginte i dtairseach AccuWeather APIs."
|
|
22
|
+
}
|
|
23
|
+
},
|
|
15
24
|
"user": {
|
|
16
25
|
"data": {
|
|
17
26
|
"api_key": "Eochair API",
|
|
18
27
|
"latitude": "Domhanleithead",
|
|
19
28
|
"longitude": "Domhanfhad",
|
|
20
29
|
"name": "Ainm"
|
|
30
|
+
},
|
|
31
|
+
"data_description": {
|
|
32
|
+
"api_key": "Eochair API ginte i dtairseach AccuWeather APIs."
|
|
21
33
|
}
|
|
22
34
|
}
|
|
23
35
|
}
|
|
@@ -239,6 +251,9 @@
|
|
|
239
251
|
}
|
|
240
252
|
},
|
|
241
253
|
"exceptions": {
|
|
254
|
+
"auth_error": {
|
|
255
|
+
"message": "Theip ar fh\u00edordheimhni\u00fa do {entry}, nuashonraigh d'eochair API le do thoil"
|
|
256
|
+
},
|
|
242
257
|
"current_conditions_update_error": {
|
|
243
258
|
"message": "Tharla earr\u00e1id agus sonra\u00ed reatha aimsire \u00e1 n-aisghabh\u00e1il \u00f3 AccuWeather API: {error}"
|
|
244
259
|
},
|
|
@@ -4,10 +4,18 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from airos.airos8 import AirOS8
|
|
6
6
|
|
|
7
|
-
from homeassistant.const import
|
|
7
|
+
from homeassistant.const import (
|
|
8
|
+
CONF_HOST,
|
|
9
|
+
CONF_PASSWORD,
|
|
10
|
+
CONF_SSL,
|
|
11
|
+
CONF_USERNAME,
|
|
12
|
+
CONF_VERIFY_SSL,
|
|
13
|
+
Platform,
|
|
14
|
+
)
|
|
8
15
|
from homeassistant.core import HomeAssistant
|
|
9
16
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
|
10
17
|
|
|
18
|
+
from .const import DEFAULT_SSL, DEFAULT_VERIFY_SSL, SECTION_ADVANCED_SETTINGS
|
|
11
19
|
from .coordinator import AirOSConfigEntry, AirOSDataUpdateCoordinator
|
|
12
20
|
|
|
13
21
|
_PLATFORMS: list[Platform] = [
|
|
@@ -21,13 +29,16 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> boo
|
|
|
21
29
|
|
|
22
30
|
# By default airOS 8 comes with self-signed SSL certificates,
|
|
23
31
|
# with no option in the web UI to change or upload a custom certificate.
|
|
24
|
-
session = async_get_clientsession(
|
|
32
|
+
session = async_get_clientsession(
|
|
33
|
+
hass, verify_ssl=entry.data[SECTION_ADVANCED_SETTINGS][CONF_VERIFY_SSL]
|
|
34
|
+
)
|
|
25
35
|
|
|
26
36
|
airos_device = AirOS8(
|
|
27
37
|
host=entry.data[CONF_HOST],
|
|
28
38
|
username=entry.data[CONF_USERNAME],
|
|
29
39
|
password=entry.data[CONF_PASSWORD],
|
|
30
40
|
session=session,
|
|
41
|
+
use_ssl=entry.data[SECTION_ADVANCED_SETTINGS][CONF_SSL],
|
|
31
42
|
)
|
|
32
43
|
|
|
33
44
|
coordinator = AirOSDataUpdateCoordinator(hass, entry, airos_device)
|
|
@@ -40,6 +51,30 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> boo
|
|
|
40
51
|
return True
|
|
41
52
|
|
|
42
53
|
|
|
54
|
+
async def async_migrate_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> bool:
|
|
55
|
+
"""Migrate old config entry."""
|
|
56
|
+
|
|
57
|
+
if entry.version > 1:
|
|
58
|
+
# This means the user has downgraded from a future version
|
|
59
|
+
return False
|
|
60
|
+
|
|
61
|
+
if entry.version == 1 and entry.minor_version == 1:
|
|
62
|
+
new_data = {**entry.data}
|
|
63
|
+
advanced_data = {
|
|
64
|
+
CONF_SSL: DEFAULT_SSL,
|
|
65
|
+
CONF_VERIFY_SSL: DEFAULT_VERIFY_SSL,
|
|
66
|
+
}
|
|
67
|
+
new_data[SECTION_ADVANCED_SETTINGS] = advanced_data
|
|
68
|
+
|
|
69
|
+
hass.config_entries.async_update_entry(
|
|
70
|
+
entry,
|
|
71
|
+
data=new_data,
|
|
72
|
+
minor_version=2,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
return True
|
|
76
|
+
|
|
77
|
+
|
|
43
78
|
async def async_unload_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> bool:
|
|
44
79
|
"""Unload a config entry."""
|
|
45
80
|
return await hass.config_entries.async_unload_platforms(entry, _PLATFORMS)
|
|
@@ -15,10 +15,17 @@ from airos.exceptions import (
|
|
|
15
15
|
import voluptuous as vol
|
|
16
16
|
|
|
17
17
|
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
|
|
18
|
-
from homeassistant.const import
|
|
18
|
+
from homeassistant.const import (
|
|
19
|
+
CONF_HOST,
|
|
20
|
+
CONF_PASSWORD,
|
|
21
|
+
CONF_SSL,
|
|
22
|
+
CONF_USERNAME,
|
|
23
|
+
CONF_VERIFY_SSL,
|
|
24
|
+
)
|
|
25
|
+
from homeassistant.data_entry_flow import section
|
|
19
26
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
|
20
27
|
|
|
21
|
-
from .const import DOMAIN
|
|
28
|
+
from .const import DEFAULT_SSL, DEFAULT_VERIFY_SSL, DOMAIN, SECTION_ADVANCED_SETTINGS
|
|
22
29
|
from .coordinator import AirOS8
|
|
23
30
|
|
|
24
31
|
_LOGGER = logging.getLogger(__name__)
|
|
@@ -28,6 +35,15 @@ STEP_USER_DATA_SCHEMA = vol.Schema(
|
|
|
28
35
|
vol.Required(CONF_HOST): str,
|
|
29
36
|
vol.Required(CONF_USERNAME, default="ubnt"): str,
|
|
30
37
|
vol.Required(CONF_PASSWORD): str,
|
|
38
|
+
vol.Required(SECTION_ADVANCED_SETTINGS): section(
|
|
39
|
+
vol.Schema(
|
|
40
|
+
{
|
|
41
|
+
vol.Required(CONF_SSL, default=DEFAULT_SSL): bool,
|
|
42
|
+
vol.Required(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): bool,
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
{"collapsed": True},
|
|
46
|
+
),
|
|
31
47
|
}
|
|
32
48
|
)
|
|
33
49
|
|
|
@@ -36,6 +52,7 @@ class AirOSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
36
52
|
"""Handle a config flow for Ubiquiti airOS."""
|
|
37
53
|
|
|
38
54
|
VERSION = 1
|
|
55
|
+
MINOR_VERSION = 2
|
|
39
56
|
|
|
40
57
|
async def async_step_user(
|
|
41
58
|
self,
|
|
@@ -46,13 +63,17 @@ class AirOSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
46
63
|
if user_input is not None:
|
|
47
64
|
# By default airOS 8 comes with self-signed SSL certificates,
|
|
48
65
|
# with no option in the web UI to change or upload a custom certificate.
|
|
49
|
-
session = async_get_clientsession(
|
|
66
|
+
session = async_get_clientsession(
|
|
67
|
+
self.hass,
|
|
68
|
+
verify_ssl=user_input[SECTION_ADVANCED_SETTINGS][CONF_VERIFY_SSL],
|
|
69
|
+
)
|
|
50
70
|
|
|
51
71
|
airos_device = AirOS8(
|
|
52
72
|
host=user_input[CONF_HOST],
|
|
53
73
|
username=user_input[CONF_USERNAME],
|
|
54
74
|
password=user_input[CONF_PASSWORD],
|
|
55
75
|
session=session,
|
|
76
|
+
use_ssl=user_input[SECTION_ADVANCED_SETTINGS][CONF_SSL],
|
|
56
77
|
)
|
|
57
78
|
try:
|
|
58
79
|
await airos_device.login()
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from homeassistant.const import CONF_HOST
|
|
5
|
+
from homeassistant.const import CONF_HOST, CONF_SSL
|
|
6
6
|
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, DeviceInfo
|
|
7
7
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
|
8
8
|
|
|
9
|
-
from .const import DOMAIN, MANUFACTURER
|
|
9
|
+
from .const import DOMAIN, MANUFACTURER, SECTION_ADVANCED_SETTINGS
|
|
10
10
|
from .coordinator import AirOSDataUpdateCoordinator
|
|
11
11
|
|
|
12
12
|
|
|
@@ -20,9 +20,14 @@ class AirOSEntity(CoordinatorEntity[AirOSDataUpdateCoordinator]):
|
|
|
20
20
|
super().__init__(coordinator)
|
|
21
21
|
|
|
22
22
|
airos_data = self.coordinator.data
|
|
23
|
+
url_schema = (
|
|
24
|
+
"https"
|
|
25
|
+
if coordinator.config_entry.data[SECTION_ADVANCED_SETTINGS][CONF_SSL]
|
|
26
|
+
else "http"
|
|
27
|
+
)
|
|
23
28
|
|
|
24
29
|
configuration_url: str | None = (
|
|
25
|
-
f"
|
|
30
|
+
f"{url_schema}://{coordinator.config_entry.data[CONF_HOST]}"
|
|
26
31
|
)
|
|
27
32
|
|
|
28
33
|
self._attr_device_info = DeviceInfo(
|
|
@@ -12,6 +12,18 @@
|
|
|
12
12
|
"host": "IP address or hostname of the airOS device",
|
|
13
13
|
"username": "Administrator username for the airOS device, normally 'ubnt'",
|
|
14
14
|
"password": "Password configured through the UISP app or web interface"
|
|
15
|
+
},
|
|
16
|
+
"sections": {
|
|
17
|
+
"advanced_settings": {
|
|
18
|
+
"data": {
|
|
19
|
+
"ssl": "Use HTTPS",
|
|
20
|
+
"verify_ssl": "[%key:common::config_flow::data::verify_ssl%]"
|
|
21
|
+
},
|
|
22
|
+
"data_description": {
|
|
23
|
+
"ssl": "Whether the connection should be encrypted (required for most devices)",
|
|
24
|
+
"verify_ssl": "Whether the certificate should be verified when using HTTPS. This should be off for self-signed certificates"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
15
27
|
}
|
|
16
28
|
}
|
|
17
29
|
},
|
|
@@ -21,6 +21,18 @@
|
|
|
21
21
|
"host": "IP-Adresse oder Hostname des airOS-Ger\u00e4ts",
|
|
22
22
|
"password": "\u00dcber die UISP-App oder Weboberfl\u00e4che konfiguriertes Passwort",
|
|
23
23
|
"username": "Administrator-Benutzername f\u00fcr das airOS-Ger\u00e4t, normalerweise \u201eubnt\u201c"
|
|
24
|
+
},
|
|
25
|
+
"sections": {
|
|
26
|
+
"advanced_settings": {
|
|
27
|
+
"data": {
|
|
28
|
+
"ssl": "HTTPS verwenden",
|
|
29
|
+
"verify_ssl": "SSL-Zertifikat \u00fcberpr\u00fcfen"
|
|
30
|
+
},
|
|
31
|
+
"data_description": {
|
|
32
|
+
"ssl": "Ob die Verbindung verschl\u00fcsselt werden soll (f\u00fcr die meisten Ger\u00e4te erforderlich)",
|
|
33
|
+
"verify_ssl": "Ob das Zertifikat bei Verwendung von HTTPS \u00fcberpr\u00fcft werden soll. Bei selbstsignierten Zertifikaten sollte dies deaktiviert sein."
|
|
34
|
+
}
|
|
35
|
+
}
|
|
24
36
|
}
|
|
25
37
|
}
|
|
26
38
|
}
|
|
@@ -21,6 +21,18 @@
|
|
|
21
21
|
"host": "IP address or hostname of the airOS device",
|
|
22
22
|
"password": "Password configured through the UISP app or web interface",
|
|
23
23
|
"username": "Administrator username for the airOS device, normally 'ubnt'"
|
|
24
|
+
},
|
|
25
|
+
"sections": {
|
|
26
|
+
"advanced_settings": {
|
|
27
|
+
"data": {
|
|
28
|
+
"ssl": "Use HTTPS",
|
|
29
|
+
"verify_ssl": "Verify SSL certificate"
|
|
30
|
+
},
|
|
31
|
+
"data_description": {
|
|
32
|
+
"ssl": "Whether the connection should be encrypted (required for most devices)",
|
|
33
|
+
"verify_ssl": "Whether the certificate should be verified when using HTTPS. This should be off for self-signed certificates"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
24
36
|
}
|
|
25
37
|
}
|
|
26
38
|
}
|
|
@@ -21,6 +21,18 @@
|
|
|
21
21
|
"host": "IP address or hostname of the airOS device",
|
|
22
22
|
"password": "Password configured through the UISP app or web interface",
|
|
23
23
|
"username": "Administrator username for the airOS device, normally 'ubnt'"
|
|
24
|
+
},
|
|
25
|
+
"sections": {
|
|
26
|
+
"advanced_settings": {
|
|
27
|
+
"data": {
|
|
28
|
+
"ssl": "Use HTTPS",
|
|
29
|
+
"verify_ssl": "Verify SSL certificate"
|
|
30
|
+
},
|
|
31
|
+
"data_description": {
|
|
32
|
+
"ssl": "Whether the connection should be encrypted (required for most devices)",
|
|
33
|
+
"verify_ssl": "Whether the certificate should be verified when using HTTPS. This should be off for self-signed certificates"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
24
36
|
}
|
|
25
37
|
}
|
|
26
38
|
}
|
|
@@ -63,6 +63,16 @@
|
|
|
63
63
|
"stop": "Parada"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
+
"q_adapt": {
|
|
67
|
+
"name": "Q-Adapt",
|
|
68
|
+
"state": {
|
|
69
|
+
"maximum": "M\u00e1ximo",
|
|
70
|
+
"minimum": "M\u00ednimo",
|
|
71
|
+
"power": "Energ\u00eda",
|
|
72
|
+
"silence": "Silencio",
|
|
73
|
+
"standard": "Est\u00e1ndar"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
66
76
|
"sleep_times": {
|
|
67
77
|
"name": "Dormir",
|
|
68
78
|
"state": {
|
|
@@ -63,6 +63,16 @@
|
|
|
63
63
|
"stop": "Peata"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
+
"q_adapt": {
|
|
67
|
+
"name": "Q-Adapt",
|
|
68
|
+
"state": {
|
|
69
|
+
"maximum": "Maksimaalne",
|
|
70
|
+
"minimum": "Minimaalne",
|
|
71
|
+
"power": "V\u00f5imas",
|
|
72
|
+
"silence": "Vaikne",
|
|
73
|
+
"standard": "Tavaline"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
66
76
|
"sleep_times": {
|
|
67
77
|
"name": "Unere\u017eiim",
|
|
68
78
|
"state": {
|
|
@@ -63,6 +63,16 @@
|
|
|
63
63
|
"stop": "Stad"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
+
"q_adapt": {
|
|
67
|
+
"name": "Q-Adapt",
|
|
68
|
+
"state": {
|
|
69
|
+
"maximum": "Uasmh\u00e9id",
|
|
70
|
+
"minimum": "\u00cdosmh\u00e9id",
|
|
71
|
+
"power": "Cumhacht",
|
|
72
|
+
"silence": "Ci\u00fanas",
|
|
73
|
+
"standard": "Caighde\u00e1nach"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
66
76
|
"sleep_times": {
|
|
67
77
|
"name": "Codladh",
|
|
68
78
|
"state": {
|
|
@@ -63,6 +63,16 @@
|
|
|
63
63
|
"stop": "Parar"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
+
"q_adapt": {
|
|
67
|
+
"name": "Q-Adapt",
|
|
68
|
+
"state": {
|
|
69
|
+
"maximum": "M\u00e1ximo",
|
|
70
|
+
"minimum": "M\u00ednimo",
|
|
71
|
+
"power": "Energia",
|
|
72
|
+
"silence": "Sil\u00eancio",
|
|
73
|
+
"standard": "Padr\u00e3o"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
66
76
|
"sleep_times": {
|
|
67
77
|
"name": "Dormir",
|
|
68
78
|
"state": {
|
|
@@ -1308,7 +1308,9 @@ class PipelineRun:
|
|
|
1308
1308
|
# instead of a full response.
|
|
1309
1309
|
all_targets_in_satellite_area = (
|
|
1310
1310
|
self._get_all_targets_in_satellite_area(
|
|
1311
|
-
conversation_result.response,
|
|
1311
|
+
conversation_result.response,
|
|
1312
|
+
self._satellite_id,
|
|
1313
|
+
self._device_id,
|
|
1312
1314
|
)
|
|
1313
1315
|
)
|
|
1314
1316
|
|
|
@@ -1337,39 +1339,62 @@ class PipelineRun:
|
|
|
1337
1339
|
return (speech, all_targets_in_satellite_area)
|
|
1338
1340
|
|
|
1339
1341
|
def _get_all_targets_in_satellite_area(
|
|
1340
|
-
self,
|
|
1342
|
+
self,
|
|
1343
|
+
intent_response: intent.IntentResponse,
|
|
1344
|
+
satellite_id: str | None,
|
|
1345
|
+
device_id: str | None,
|
|
1341
1346
|
) -> bool:
|
|
1342
1347
|
"""Return true if all targeted entities were in the same area as the device."""
|
|
1343
1348
|
if (
|
|
1344
|
-
|
|
1345
|
-
or
|
|
1346
|
-
or (not device_id)
|
|
1349
|
+
intent_response.response_type != intent.IntentResponseType.ACTION_DONE
|
|
1350
|
+
or not intent_response.matched_states
|
|
1347
1351
|
):
|
|
1348
1352
|
return False
|
|
1349
1353
|
|
|
1354
|
+
entity_registry = er.async_get(self.hass)
|
|
1350
1355
|
device_registry = dr.async_get(self.hass)
|
|
1351
1356
|
|
|
1352
|
-
|
|
1353
|
-
|
|
1357
|
+
area_id: str | None = None
|
|
1358
|
+
|
|
1359
|
+
if (
|
|
1360
|
+
satellite_id is not None
|
|
1361
|
+
and (target_entity_entry := entity_registry.async_get(satellite_id))
|
|
1362
|
+
is not None
|
|
1354
1363
|
):
|
|
1355
|
-
|
|
1364
|
+
area_id = target_entity_entry.area_id
|
|
1365
|
+
device_id = target_entity_entry.device_id
|
|
1366
|
+
|
|
1367
|
+
if area_id is None:
|
|
1368
|
+
if device_id is None:
|
|
1369
|
+
return False
|
|
1370
|
+
|
|
1371
|
+
device_entry = device_registry.async_get(device_id)
|
|
1372
|
+
if device_entry is None:
|
|
1373
|
+
return False
|
|
1374
|
+
|
|
1375
|
+
area_id = device_entry.area_id
|
|
1376
|
+
if area_id is None:
|
|
1377
|
+
return False
|
|
1356
1378
|
|
|
1357
|
-
entity_registry = er.async_get(self.hass)
|
|
1358
1379
|
for state in intent_response.matched_states:
|
|
1359
|
-
|
|
1360
|
-
if
|
|
1380
|
+
target_entity_entry = entity_registry.async_get(state.entity_id)
|
|
1381
|
+
if target_entity_entry is None:
|
|
1361
1382
|
return False
|
|
1362
1383
|
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1384
|
+
target_area_id = target_entity_entry.area_id
|
|
1385
|
+
if target_area_id is None:
|
|
1386
|
+
if target_entity_entry.device_id is None:
|
|
1387
|
+
return False
|
|
1388
|
+
|
|
1389
|
+
target_device_entry = device_registry.async_get(
|
|
1390
|
+
target_entity_entry.device_id
|
|
1391
|
+
)
|
|
1392
|
+
if target_device_entry is None:
|
|
1368
1393
|
return False
|
|
1369
1394
|
|
|
1370
|
-
|
|
1395
|
+
target_area_id = target_device_entry.area_id
|
|
1371
1396
|
|
|
1372
|
-
if
|
|
1397
|
+
if target_area_id != area_id:
|
|
1373
1398
|
return False
|
|
1374
1399
|
|
|
1375
1400
|
return True
|
|
@@ -136,5 +136,49 @@
|
|
|
136
136
|
"name": "Enchufar y cargar"
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
+
},
|
|
140
|
+
"exceptions": {
|
|
141
|
+
"config_entry_not_loaded": {
|
|
142
|
+
"message": "Entrada de configuraci\u00f3n no cargada."
|
|
143
|
+
},
|
|
144
|
+
"invalid_device_id": {
|
|
145
|
+
"message": "Se ha proporcionado un ID de dispositivo no v\u00e1lido."
|
|
146
|
+
},
|
|
147
|
+
"no_config_entry": {
|
|
148
|
+
"message": "El dispositivo no tiene una entrada de configuraci\u00f3n blue_current v\u00e1lida."
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"options": {
|
|
152
|
+
"step": {
|
|
153
|
+
"init": {
|
|
154
|
+
"data": {
|
|
155
|
+
"card": "Tarjeta"
|
|
156
|
+
},
|
|
157
|
+
"description": "Selecciona la tarjeta de carga predeterminada que quieres utilizar"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"selector": {
|
|
162
|
+
"select_charging_card": {
|
|
163
|
+
"options": {
|
|
164
|
+
"without_charging_card": "Sin tarjeta de carga"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"services": {
|
|
169
|
+
"start_charge_session": {
|
|
170
|
+
"description": "Inicia una nueva sesi\u00f3n de carga en un punto de carga especificado.",
|
|
171
|
+
"fields": {
|
|
172
|
+
"charging_card_id": {
|
|
173
|
+
"description": "ID de la tarjeta de carga opcional que se usar\u00e1 para iniciar una sesi\u00f3n de carga. Si no se proporciona, no se usar\u00e1 la tarjeta de carga.",
|
|
174
|
+
"name": "ID de la tarjeta de carga"
|
|
175
|
+
},
|
|
176
|
+
"device_id": {
|
|
177
|
+
"description": "El ID del punto de carga de Blue Current.",
|
|
178
|
+
"name": "ID del dispositivo"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"name": "Iniciar sesi\u00f3n de carga"
|
|
182
|
+
}
|
|
139
183
|
}
|
|
140
184
|
}
|
|
@@ -136,5 +136,49 @@
|
|
|
136
136
|
"name": "\u00dchenda ja laadi"
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
+
},
|
|
140
|
+
"exceptions": {
|
|
141
|
+
"config_entry_not_loaded": {
|
|
142
|
+
"message": "Konfiguratsioonikirje pole laaditud."
|
|
143
|
+
},
|
|
144
|
+
"invalid_device_id": {
|
|
145
|
+
"message": "Esitatud on kehtetu seadme ID."
|
|
146
|
+
},
|
|
147
|
+
"no_config_entry": {
|
|
148
|
+
"message": "Seadmel puudub kehtiv blue_current konfiguratsioonikirje."
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"options": {
|
|
152
|
+
"step": {
|
|
153
|
+
"init": {
|
|
154
|
+
"data": {
|
|
155
|
+
"card": "Kaart"
|
|
156
|
+
},
|
|
157
|
+
"description": "Vali vaikimisi kasutatav laadimiskaart"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"selector": {
|
|
162
|
+
"select_charging_card": {
|
|
163
|
+
"options": {
|
|
164
|
+
"without_charging_card": "Ilma laadimiskaardita"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"services": {
|
|
169
|
+
"start_charge_session": {
|
|
170
|
+
"description": "Alustab m\u00e4\u00e4ratud laadimispunktis uut laadimisseanssi.",
|
|
171
|
+
"fields": {
|
|
172
|
+
"charging_card_id": {
|
|
173
|
+
"description": "Valikuline laadimiskaardi ID mida kasutatakse laadimisseansi alustamiseks. Kui seda ei esitata siis laadimiskaarti ei kasutata.",
|
|
174
|
+
"name": "Laadimiskaardi ID"
|
|
175
|
+
},
|
|
176
|
+
"device_id": {
|
|
177
|
+
"description": "Blue Current laadimispunkti ID.",
|
|
178
|
+
"name": "Seadme ID"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"name": "Alusta laadimist"
|
|
182
|
+
}
|
|
139
183
|
}
|
|
140
184
|
}
|
|
@@ -136,5 +136,49 @@
|
|
|
136
136
|
"name": "Breise\u00e1n & Muirear"
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
+
},
|
|
140
|
+
"exceptions": {
|
|
141
|
+
"config_entry_not_loaded": {
|
|
142
|
+
"message": "N\u00edor l\u00f3d\u00e1ileadh an iontr\u00e1il chumra\u00edochta."
|
|
143
|
+
},
|
|
144
|
+
"invalid_device_id": {
|
|
145
|
+
"message": "Tugadh aitheant\u00f3ir gl\u00e9is neamhbhail\u00ed."
|
|
146
|
+
},
|
|
147
|
+
"no_config_entry": {
|
|
148
|
+
"message": "N\u00edl iontr\u00e1il chumra\u00edochta blue_current bail\u00ed ag an ngl\u00e9as."
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"options": {
|
|
152
|
+
"step": {
|
|
153
|
+
"init": {
|
|
154
|
+
"data": {
|
|
155
|
+
"card": "C\u00e1rta"
|
|
156
|
+
},
|
|
157
|
+
"description": "Roghnaigh an c\u00e1rta muirir r\u00e9amhshocraithe is mian leat a \u00fas\u00e1id"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"selector": {
|
|
162
|
+
"select_charging_card": {
|
|
163
|
+
"options": {
|
|
164
|
+
"without_charging_card": "Gan c\u00e1rta muirir"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"services": {
|
|
169
|
+
"start_charge_session": {
|
|
170
|
+
"description": "Tosa\u00edonn s\u00e9 seisi\u00fan luchtaithe nua ag pointe luchtaithe sonraithe.",
|
|
171
|
+
"fields": {
|
|
172
|
+
"charging_card_id": {
|
|
173
|
+
"description": "Aitheantas c\u00e1rta muirir roghnach a \u00fas\u00e1idfear chun seisi\u00fan muirir a thos\u00fa. Mura gcuirtear ar f\u00e1il \u00e9, n\u00ed \u00fas\u00e1idfear c\u00e1rta muirir.",
|
|
174
|
+
"name": "Aitheantas c\u00e1rta muirir"
|
|
175
|
+
},
|
|
176
|
+
"device_id": {
|
|
177
|
+
"description": "Aitheantas phointe luchtaithe Blue Current.",
|
|
178
|
+
"name": "Aitheantas Gl\u00e9as"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"name": "Tosaigh seisi\u00fan muirir"
|
|
182
|
+
}
|
|
139
183
|
}
|
|
140
184
|
}
|
|
@@ -136,5 +136,49 @@
|
|
|
136
136
|
"name": "Ligar & Carregar"
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
+
},
|
|
140
|
+
"exceptions": {
|
|
141
|
+
"config_entry_not_loaded": {
|
|
142
|
+
"message": "Entrada de configura\u00e7\u00e3o n\u00e3o carregada."
|
|
143
|
+
},
|
|
144
|
+
"invalid_device_id": {
|
|
145
|
+
"message": "ID de dispositivo inv\u00e1lido fornecido."
|
|
146
|
+
},
|
|
147
|
+
"no_config_entry": {
|
|
148
|
+
"message": "O dispositivo n\u00e3o tem uma entrada de configura\u00e7\u00e3o blue_current v\u00e1lida."
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"options": {
|
|
152
|
+
"step": {
|
|
153
|
+
"init": {
|
|
154
|
+
"data": {
|
|
155
|
+
"card": "Cart\u00e3o"
|
|
156
|
+
},
|
|
157
|
+
"description": "Selecionar o cart\u00e3o de carregamento predefinido que pretende utilizar"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"selector": {
|
|
162
|
+
"select_charging_card": {
|
|
163
|
+
"options": {
|
|
164
|
+
"without_charging_card": "Sem cart\u00e3o de carregamento"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"services": {
|
|
169
|
+
"start_charge_session": {
|
|
170
|
+
"description": "Inicia uma nova sess\u00e3o de carregamento num ponto de carregamento especificado.",
|
|
171
|
+
"fields": {
|
|
172
|
+
"charging_card_id": {
|
|
173
|
+
"description": "ID opcional do cart\u00e3o de carregamento que ser\u00e1 utilizado para iniciar uma sess\u00e3o de carregamento. Se n\u00e3o for fornecido, n\u00e3o ser\u00e1 utilizado qualquer cart\u00e3o de carregamento.",
|
|
174
|
+
"name": "ID do cart\u00e3o de carregamento"
|
|
175
|
+
},
|
|
176
|
+
"device_id": {
|
|
177
|
+
"description": "O ID do ponto de carregamento de Blue Current.",
|
|
178
|
+
"name": "ID do dispositivo"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"name": "Iniciar sess\u00e3o de carregamento"
|
|
182
|
+
}
|
|
139
183
|
}
|
|
140
184
|
}
|