From a26a46d00392df9398f2c49c7a5f01dae37d7c9a Mon Sep 17 00:00:00 2001 From: Hans Oischinger Date: Sun, 2 Oct 2022 13:23:27 +0200 Subject: [PATCH] Sync with upstream dev branch --- custom_components/vicare/__init__.py | 8 +++ custom_components/vicare/button.py | 43 ++++++++++--- custom_components/vicare/climate.py | 4 +- custom_components/vicare/sensor.py | 64 +++++++++++++++++++ custom_components/vicare/translations/af.json | 12 ++++ custom_components/vicare/translations/bg.json | 21 ++++++ custom_components/vicare/translations/ca.json | 23 +++++++ custom_components/vicare/translations/cs.json | 21 ++++++ custom_components/vicare/translations/de.json | 23 +++++++ custom_components/vicare/translations/el.json | 23 +++++++ custom_components/vicare/translations/en.json | 3 +- custom_components/vicare/translations/es.json | 23 +++++++ custom_components/vicare/translations/et.json | 23 +++++++ custom_components/vicare/translations/fr.json | 23 +++++++ custom_components/vicare/translations/he.json | 21 ++++++ custom_components/vicare/translations/hu.json | 23 +++++++ custom_components/vicare/translations/id.json | 23 +++++++ custom_components/vicare/translations/it.json | 23 +++++++ custom_components/vicare/translations/ja.json | 23 +++++++ custom_components/vicare/translations/nl.json | 23 +++++++ custom_components/vicare/translations/no.json | 23 +++++++ custom_components/vicare/translations/pl.json | 23 +++++++ .../vicare/translations/pt-BR.json | 23 +++++++ custom_components/vicare/translations/pt.json | 18 ++++++ custom_components/vicare/translations/ru.json | 23 +++++++ custom_components/vicare/translations/sk.json | 15 +++++ custom_components/vicare/translations/sv.json | 23 +++++++ custom_components/vicare/translations/tr.json | 23 +++++++ .../vicare/translations/zh-Hant.json | 23 +++++++ 29 files changed, 631 insertions(+), 13 deletions(-) create mode 100644 custom_components/vicare/translations/af.json create mode 100644 custom_components/vicare/translations/bg.json create mode 100644 custom_components/vicare/translations/ca.json create mode 100644 custom_components/vicare/translations/cs.json create mode 100644 custom_components/vicare/translations/de.json create mode 100644 custom_components/vicare/translations/el.json create mode 100644 custom_components/vicare/translations/es.json create mode 100644 custom_components/vicare/translations/et.json create mode 100644 custom_components/vicare/translations/fr.json create mode 100644 custom_components/vicare/translations/he.json create mode 100644 custom_components/vicare/translations/hu.json create mode 100644 custom_components/vicare/translations/id.json create mode 100644 custom_components/vicare/translations/it.json create mode 100644 custom_components/vicare/translations/ja.json create mode 100644 custom_components/vicare/translations/nl.json create mode 100644 custom_components/vicare/translations/no.json create mode 100644 custom_components/vicare/translations/pl.json create mode 100644 custom_components/vicare/translations/pt-BR.json create mode 100644 custom_components/vicare/translations/pt.json create mode 100644 custom_components/vicare/translations/ru.json create mode 100644 custom_components/vicare/translations/sk.json create mode 100644 custom_components/vicare/translations/sv.json create mode 100644 custom_components/vicare/translations/tr.json create mode 100644 custom_components/vicare/translations/zh-Hant.json diff --git a/custom_components/vicare/__init__.py b/custom_components/vicare/__init__.py index 20d237e..b177a4c 100644 --- a/custom_components/vicare/__init__.py +++ b/custom_components/vicare/__init__.py @@ -34,6 +34,14 @@ class ViCareRequiredKeysMixin: value_getter: Callable[[Device], bool] +@dataclass() +class ViCareRequiredKeysMixinWithSet: + """Mixin for required keys with setter.""" + + value_getter: Callable[[Device], bool] + value_setter: Callable[[Device], bool] + + async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up from config entry.""" _LOGGER.debug("Setting up ViCare component") diff --git a/custom_components/vicare/button.py b/custom_components/vicare/button.py index b691c01..95be680 100644 --- a/custom_components/vicare/button.py +++ b/custom_components/vicare/button.py @@ -1,4 +1,4 @@ -"""Viessmann ViCare sensor device.""" +"""Viessmann ViCare button device.""" from __future__ import annotations from contextlib import suppress @@ -18,7 +18,7 @@ from homeassistant.helpers.entity import DeviceInfo, EntityCategory from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import ViCareRequiredKeysMixin +from . import ViCareRequiredKeysMixinWithSet from .const import DOMAIN, VICARE_API, VICARE_DEVICE_CONFIG, VICARE_NAME _LOGGER = logging.getLogger(__name__) @@ -27,8 +27,10 @@ @dataclass -class ViCareButtonEntityDescription(ButtonEntityDescription, ViCareRequiredKeysMixin): - """Describes ViCare button sensor entity.""" +class ViCareButtonEntityDescription( + ButtonEntityDescription, ViCareRequiredKeysMixinWithSet +): + """Describes ViCare button entity.""" BUTTON_DESCRIPTIONS: tuple[ViCareButtonEntityDescription, ...] = ( @@ -37,24 +39,47 @@ class ViCareButtonEntityDescription(ButtonEntityDescription, ViCareRequiredKeysM name="Activate one-time charge", icon="mdi:shower-head", entity_category=EntityCategory.CONFIG, - value_getter=lambda api: api.activateOneTimeCharge(), + value_getter=lambda api: api.getOneTimeCharge(), + value_setter=lambda api: api.activateOneTimeCharge(), ), ) +def _build_entity(name, vicare_api, device_config, description): + """Create a ViCare button entity.""" + _LOGGER.debug("Found device %s", name) + try: + description.value_getter(vicare_api) + _LOGGER.debug("Found entity %s", name) + except PyViCareNotSupportedFeatureError: + _LOGGER.info("Feature not supported %s", name) + return None + except AttributeError: + _LOGGER.debug("Attribute Error %s", name) + return None + + return ViCareButton( + name, + vicare_api, + device_config, + description, + ) + + async def async_setup_entry( hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddEntitiesCallback, ) -> None: - """Create the ViCare binary sensor devices.""" + """Create the ViCare button entities.""" name = VICARE_NAME api = hass.data[DOMAIN][config_entry.entry_id][VICARE_API] entities = [] for description in BUTTON_DESCRIPTIONS: - entity = ViCareButton( + entity = await hass.async_add_executor_job( + _build_entity, f"{name} {description.name}", api, hass.data[DOMAIN][config_entry.entry_id][VICARE_DEVICE_CONFIG], @@ -74,7 +99,7 @@ class ViCareButton(ButtonEntity): def __init__( self, name, api, device_config, description: ViCareButtonEntityDescription ): - """Initialize the sensor.""" + """Initialize the button.""" self.entity_description = description self._device_config = device_config self._api = api @@ -83,7 +108,7 @@ def press(self) -> None: """Handle the button press.""" try: with suppress(PyViCareNotSupportedFeatureError): - self.entity_description.value_getter(self._api) + self.entity_description.value_setter(self._api) except requests.exceptions.ConnectionError: _LOGGER.error("Unable to retrieve data from ViCare server") except ValueError: diff --git a/custom_components/vicare/climate.py b/custom_components/vicare/climate.py index 44b73dd..9d507ab 100644 --- a/custom_components/vicare/climate.py +++ b/custom_components/vicare/climate.py @@ -13,11 +13,11 @@ import requests import voluptuous as vol -from homeassistant.components.climate import ClimateEntity -from homeassistant.components.climate.const import ( +from homeassistant.components.climate import ( PRESET_COMFORT, PRESET_ECO, PRESET_NONE, + ClimateEntity, ClimateEntityFeature, HVACAction, HVACMode, diff --git a/custom_components/vicare/sensor.py b/custom_components/vicare/sensor.py index e1deef0..cd8e4dd 100644 --- a/custom_components/vicare/sensor.py +++ b/custom_components/vicare/sensor.py @@ -86,6 +86,38 @@ class ViCareSensorEntityDescription(SensorEntityDescription, ViCareRequiredKeysM device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, ), + ViCareSensorEntityDescription( + key="primary_circuit_supply_temperature", + name="Primary Circuit Supply Temperature", + native_unit_of_measurement=TEMP_CELSIUS, + value_getter=lambda api: api.getSupplyTemperaturePrimaryCircuit(), + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + ViCareSensorEntityDescription( + key="primary_circuit_return_temperature", + name="Primary Circuit Return Temperature", + native_unit_of_measurement=TEMP_CELSIUS, + value_getter=lambda api: api.getReturnTemperaturePrimaryCircuit(), + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + ViCareSensorEntityDescription( + key="secondary_circuit_supply_temperature", + name="Secondary Circuit Supply Temperature", + native_unit_of_measurement=TEMP_CELSIUS, + value_getter=lambda api: api.getSupplyTemperatureSecondaryCircuit(), + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + ViCareSensorEntityDescription( + key="secondary_circuit_return_temperature", + name="Secondary Circuit Return Temperature", + native_unit_of_measurement=TEMP_CELSIUS, + value_getter=lambda api: api.getReturnTemperatureSecondaryCircuit(), + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), ViCareSensorEntityDescription( key="hotwater_out_temperature", name="Hot Water Out Temperature", @@ -94,6 +126,22 @@ class ViCareSensorEntityDescription(SensorEntityDescription, ViCareRequiredKeysM device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, ), + ViCareSensorEntityDescription( + key="hotwater_max_temperature", + name="Hot Water Max Temperature", + native_unit_of_measurement=TEMP_CELSIUS, + value_getter=lambda api: api.getDomesticHotWaterMaxTemperature(), + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + ViCareSensorEntityDescription( + key="hotwater_min_temperature", + name="Hot Water Min Temperature", + native_unit_of_measurement=TEMP_CELSIUS, + value_getter=lambda api: api.getDomesticHotWaterMinTemperature(), + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), ViCareSensorEntityDescription( key="hotwater_gas_consumption_today", name="Hot water gas consumption today", @@ -398,6 +446,22 @@ class ViCareSensorEntityDescription(SensorEntityDescription, ViCareRequiredKeysM device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, ), + ViCareSensorEntityDescription( + key="buffer top temperature", + name="Buffer Top Temperature", + native_unit_of_measurement=TEMP_CELSIUS, + value_getter=lambda api: api.getBufferTopTemperature(), + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + ViCareSensorEntityDescription( + key="buffer main temperature", + name="Buffer Main Temperature", + native_unit_of_measurement=TEMP_CELSIUS, + value_getter=lambda api: api.getBufferMainTemperature(), + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), ) CIRCUIT_SENSORS: tuple[ViCareSensorEntityDescription, ...] = ( diff --git a/custom_components/vicare/translations/af.json b/custom_components/vicare/translations/af.json new file mode 100644 index 0000000..74536da --- /dev/null +++ b/custom_components/vicare/translations/af.json @@ -0,0 +1,12 @@ +{ + "config": { + "step": { + "user": { + "data": { + "password": "\u5bc6\u7801", + "username": "\u7535\u5b50\u90ae\u7bb1" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/bg.json b/custom_components/vicare/translations/bg.json new file mode 100644 index 0000000..242339c --- /dev/null +++ b/custom_components/vicare/translations/bg.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "\u0412\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e. \u0412\u044a\u0437\u043c\u043e\u0436\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f.", + "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430" + }, + "error": { + "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API \u043a\u043b\u044e\u0447", + "password": "\u041f\u0430\u0440\u043e\u043b\u0430", + "username": "Email" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/ca.json b/custom_components/vicare/translations/ca.json new file mode 100644 index 0000000..0fef288 --- /dev/null +++ b/custom_components/vicare/translations/ca.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3.", + "unknown": "Error inesperat" + }, + "error": { + "invalid_auth": "Autenticaci\u00f3 inv\u00e0lida" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "Clau API", + "heating_type": "Tipus d'escalfador", + "password": "Contrasenya", + "username": "Correu electr\u00f2nic" + }, + "description": "Configura la integraci\u00f3 ViCare. Per generar la clau API, v\u00e9s a https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/cs.json b/custom_components/vicare/translations/cs.json new file mode 100644 index 0000000..332b620 --- /dev/null +++ b/custom_components/vicare/translations/cs.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace.", + "unknown": "Neo\u010dek\u00e1van\u00e1 chyba" + }, + "error": { + "invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "Kl\u00ed\u010d API", + "password": "Heslo", + "username": "E-mail" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/de.json b/custom_components/vicare/translations/de.json new file mode 100644 index 0000000..1ef07bd --- /dev/null +++ b/custom_components/vicare/translations/de.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Bereits konfiguriert. Nur eine einzige Konfiguration m\u00f6glich.", + "unknown": "Unerwarteter Fehler" + }, + "error": { + "invalid_auth": "Ung\u00fcltige Authentifizierung" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API-Schl\u00fcssel", + "heating_type": "Art der Heizung", + "password": "Passwort", + "username": "E-Mail" + }, + "description": "Richte die ViCare-Integration ein. Um einen API-Schl\u00fcssel zu generieren, gehe auf https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/el.json b/custom_components/vicare/translations/el.json new file mode 100644 index 0000000..61ac6bd --- /dev/null +++ b/custom_components/vicare/translations/el.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "\u0388\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u039c\u03cc\u03bd\u03bf \u03bc\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae.", + "unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + }, + "error": { + "invalid_auth": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "\u039a\u03bb\u03b5\u03b9\u03b4\u03af API", + "heating_type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03b8\u03ad\u03c1\u03bc\u03b1\u03bd\u03c3\u03b7\u03c2", + "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "username": "Email" + }, + "description": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 ViCare. \u0393\u03b9\u03b1 \u03bd\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bb\u03b5\u03b9\u03b4\u03af API \u03bc\u03b5\u03c4\u03b1\u03b2\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/en.json b/custom_components/vicare/translations/en.json index 220350f..89fc4ca 100644 --- a/custom_components/vicare/translations/en.json +++ b/custom_components/vicare/translations/en.json @@ -16,8 +16,7 @@ "password": "Password", "username": "Email" }, - "description": "Setup ViCare to control your Viessmann device.\nMinimum needed: username, password, API key.", - "title": "Setup ViCare" + "description": "Set up ViCare integration. To generate API key go to https://developer.viessmann.com" } } } diff --git a/custom_components/vicare/translations/es.json b/custom_components/vicare/translations/es.json new file mode 100644 index 0000000..26f32b1 --- /dev/null +++ b/custom_components/vicare/translations/es.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Ya est\u00e1 configurado. Solo es posible una \u00fanica configuraci\u00f3n.", + "unknown": "Error inesperado" + }, + "error": { + "invalid_auth": "Autenticaci\u00f3n no v\u00e1lida" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "Clave API", + "heating_type": "Tipo de calefacci\u00f3n", + "password": "Contrase\u00f1a", + "username": "Correo electr\u00f3nico" + }, + "description": "Configura la integraci\u00f3n de ViCare. Para generar la clave API, ve a https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/et.json b/custom_components/vicare/translations/et.json new file mode 100644 index 0000000..453b9b6 --- /dev/null +++ b/custom_components/vicare/translations/et.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Juba seadistatud. V\u00f5imalik on ainult \u00fcks sidumine.", + "unknown": "Ootamatu t\u00f5rge" + }, + "error": { + "invalid_auth": "Tuvastamine nurjus" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API v\u00f5ti", + "heating_type": "K\u00fcttere\u017eiim", + "password": "Salas\u00f5na", + "username": "E-posti aadress" + }, + "description": "Seadista ViCare sidumine. API-v\u00f5tme loomiseks mine aadressile https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/fr.json b/custom_components/vicare/translations/fr.json new file mode 100644 index 0000000..bdf85ff --- /dev/null +++ b/custom_components/vicare/translations/fr.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible.", + "unknown": "Erreur inattendue" + }, + "error": { + "invalid_auth": "Authentification non valide" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "Cl\u00e9 d'API", + "heating_type": "Type de chauffage", + "password": "Mot de passe", + "username": "Courriel" + }, + "description": "Configurer l'int\u00e9gration ViCare. Pour g\u00e9n\u00e9rer une cl\u00e9 d'API, rendez-vous sur https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/he.json b/custom_components/vicare/translations/he.json new file mode 100644 index 0000000..c645403 --- /dev/null +++ b/custom_components/vicare/translations/he.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "\u05ea\u05e6\u05d5\u05e8\u05ea\u05d5 \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e8\u05e7 \u05ea\u05e6\u05d5\u05e8\u05d4 \u05d0\u05d7\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05ea.", + "unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4" + }, + "error": { + "invalid_auth": "\u05d0\u05d9\u05de\u05d5\u05ea \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "\u05de\u05e4\u05ea\u05d7 API", + "password": "\u05e1\u05d9\u05e1\u05de\u05d4", + "username": "\u05d3\u05d5\u05d0\"\u05dc" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/hu.json b/custom_components/vicare/translations/hu.json new file mode 100644 index 0000000..cc94705 --- /dev/null +++ b/custom_components/vicare/translations/hu.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges.", + "unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt" + }, + "error": { + "invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API kulcs", + "heating_type": "F\u0171t\u00e9s t\u00edpusa", + "password": "Jelsz\u00f3", + "username": "E-mail" + }, + "description": "A ViCare integr\u00e1ci\u00f3 be\u00e1ll\u00edt\u00e1sa. Az API-kulcs gener\u00e1l\u00e1s\u00e1hoz keresse fel a https://developer.viessmann.com webhelyet." + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/id.json b/custom_components/vicare/translations/id.json new file mode 100644 index 0000000..32d0813 --- /dev/null +++ b/custom_components/vicare/translations/id.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan.", + "unknown": "Kesalahan yang tidak diharapkan" + }, + "error": { + "invalid_auth": "Autentikasi tidak valid" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "Kunci API", + "heating_type": "Jenis pemanasan", + "password": "Kata Sandi", + "username": "Email" + }, + "description": "Siapkan integrasi ViCare. Untuk menghasilkan kunci API, buka https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/it.json b/custom_components/vicare/translations/it.json new file mode 100644 index 0000000..c691711 --- /dev/null +++ b/custom_components/vicare/translations/it.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione.", + "unknown": "Errore imprevisto" + }, + "error": { + "invalid_auth": "Autenticazione non valida" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "Chiave API", + "heating_type": "Modalit\u00e0 di riscaldamento", + "password": "Password", + "username": "Email" + }, + "description": "Configura l'integrazione ViCare. Per generare la chiave API vai su https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/ja.json b/custom_components/vicare/translations/ja.json new file mode 100644 index 0000000..8d50ef1 --- /dev/null +++ b/custom_components/vicare/translations/ja.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u8a2d\u5b9a\u3067\u304d\u308b\u306e\u306f1\u3064\u3060\u3051\u3067\u3059\u3002", + "unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc" + }, + "error": { + "invalid_auth": "\u7121\u52b9\u306a\u8a8d\u8a3c" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API\u30ad\u30fc", + "heating_type": "\u6696\u623f(\u52a0\u71b1)\u30bf\u30a4\u30d7", + "password": "\u30d1\u30b9\u30ef\u30fc\u30c9", + "username": "E\u30e1\u30fc\u30eb" + }, + "description": "ViCare\u7d71\u5408\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002 API\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001https://developer.viessmann.com \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/nl.json b/custom_components/vicare/translations/nl.json new file mode 100644 index 0000000..a3efaf0 --- /dev/null +++ b/custom_components/vicare/translations/nl.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Al geconfigureerd. Slechts \u00e9\u00e9n configuratie mogelijk.", + "unknown": "Onverwachte fout" + }, + "error": { + "invalid_auth": "Ongeldige authenticatie" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API-sleutel", + "heating_type": "Verwarmingstype", + "password": "Wachtwoord", + "username": "E-mail" + }, + "description": "ViCare integratie instellen. Ga naar https://developer.viessmann.com om een API-sleutel te genereren." + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/no.json b/custom_components/vicare/translations/no.json new file mode 100644 index 0000000..dda5a48 --- /dev/null +++ b/custom_components/vicare/translations/no.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig.", + "unknown": "Uventet feil" + }, + "error": { + "invalid_auth": "Ugyldig godkjenning" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API-n\u00f8kkel", + "heating_type": "Oppvarmingstype", + "password": "Passord", + "username": "E-post" + }, + "description": "Sett opp ViCare-integrasjon. Hvis du vil generere API-n\u00f8kkel, g\u00e5r du til https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/pl.json b/custom_components/vicare/translations/pl.json new file mode 100644 index 0000000..ae7bf6e --- /dev/null +++ b/custom_components/vicare/translations/pl.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja.", + "unknown": "Nieoczekiwany b\u0142\u0105d" + }, + "error": { + "invalid_auth": "Niepoprawne uwierzytelnienie" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "Klucz API", + "heating_type": "Typ ogrzewania", + "password": "Has\u0142o", + "username": "Adres e-mail" + }, + "description": "Skonfiguruj integracj\u0119 ViCare. Aby wygenerowa\u0107 klucz API wejd\u017a na https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/pt-BR.json b/custom_components/vicare/translations/pt-BR.json new file mode 100644 index 0000000..1fe4ffe --- /dev/null +++ b/custom_components/vicare/translations/pt-BR.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "J\u00e1 configurado. Apenas uma configura\u00e7\u00e3o \u00e9 poss\u00edvel.", + "unknown": "Erro inesperado" + }, + "error": { + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida" + }, + "flow_title": "{name} ( {host} )", + "step": { + "user": { + "data": { + "client_id": "Chave da API", + "heating_type": "Tipo de aquecimento", + "password": "Senha", + "username": "Email" + }, + "description": "Configure a integra\u00e7\u00e3o do ViCare. Para gerar a chave de API, acesse https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/pt.json b/custom_components/vicare/translations/pt.json new file mode 100644 index 0000000..6a34ef9 --- /dev/null +++ b/custom_components/vicare/translations/pt.json @@ -0,0 +1,18 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "J\u00e1 configurado. Apenas uma \u00fanica configura\u00e7\u00e3o \u00e9 poss\u00edvel." + }, + "error": { + "invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida" + }, + "step": { + "user": { + "data": { + "client_id": "Chave da API", + "password": "Palavra-passe" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/ru.json b/custom_components/vicare/translations/ru.json new file mode 100644 index 0000000..434daeb --- /dev/null +++ b/custom_components/vicare/translations/ru.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.", + "unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430." + }, + "error": { + "invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438." + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "\u041a\u043b\u044e\u0447 API", + "heating_type": "\u0422\u0438\u043f \u043e\u0442\u043e\u043f\u043b\u0435\u043d\u0438\u044f", + "password": "\u041f\u0430\u0440\u043e\u043b\u044c", + "username": "\u0410\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b" + }, + "description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Home Assistant \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 ViCare. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430 API, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 https://developer.viessmann.com." + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/sk.json b/custom_components/vicare/translations/sk.json new file mode 100644 index 0000000..1a2c2a4 --- /dev/null +++ b/custom_components/vicare/translations/sk.json @@ -0,0 +1,15 @@ +{ + "config": { + "error": { + "invalid_auth": "Neplatn\u00e9 overenie" + }, + "step": { + "user": { + "data": { + "client_id": "API k\u013e\u00fa\u010d", + "username": "Email" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/sv.json b/custom_components/vicare/translations/sv.json new file mode 100644 index 0000000..cd9c40f --- /dev/null +++ b/custom_components/vicare/translations/sv.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Redan konfigurerad. Endast en konfiguration m\u00f6jlig.", + "unknown": "Ov\u00e4ntat fel" + }, + "error": { + "invalid_auth": "Ogiltig autentisering" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API-nyckel", + "heating_type": "V\u00e4rmel\u00e4ge", + "password": "L\u00f6senord", + "username": "E-postadress" + }, + "description": "Konfigurera ViCare-integration. F\u00f6r att generera API-nyckel g\u00e5 till https://developer.viessmann.com" + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/tr.json b/custom_components/vicare/translations/tr.json new file mode 100644 index 0000000..87cc440 --- /dev/null +++ b/custom_components/vicare/translations/tr.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Zaten yap\u0131land\u0131r\u0131lm\u0131\u015f. Yaln\u0131zca tek bir konfig\u00fcrasyon m\u00fcmk\u00fcnd\u00fcr.", + "unknown": "Beklenmeyen hata" + }, + "error": { + "invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API Anahtar\u0131", + "heating_type": "Is\u0131tma tipi", + "password": "Parola", + "username": "E-posta" + }, + "description": "ViCare entegrasyonunu ayarlay\u0131n. API anahtar\u0131 olu\u015fturmak i\u00e7in https://developer.viessmann.com adresine gidin." + } + } + } +} \ No newline at end of file diff --git a/custom_components/vicare/translations/zh-Hant.json b/custom_components/vicare/translations/zh-Hant.json new file mode 100644 index 0000000..4d18a4f --- /dev/null +++ b/custom_components/vicare/translations/zh-Hant.json @@ -0,0 +1,23 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210\u3001\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002", + "unknown": "\u672a\u9810\u671f\u932f\u8aa4" + }, + "error": { + "invalid_auth": "\u9a57\u8b49\u78bc\u7121\u6548" + }, + "flow_title": "{name} ({host})", + "step": { + "user": { + "data": { + "client_id": "API \u91d1\u9470", + "heating_type": "\u6696\u6c23\u985e\u5225", + "password": "\u5bc6\u78bc", + "username": "\u96fb\u5b50\u90f5\u4ef6" + }, + "description": "\u6b32\u8a2d\u5b9a ViCare \u6574\u5408\u3002\u8acb\u81f3 https://developer.viessmann.com \u7522\u751f API \u91d1\u9470" + } + } + } +} \ No newline at end of file