Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add Advanced Configuration and Initial Translations #191

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
57 changes: 49 additions & 8 deletions custom_components/xiaomi_home/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -485,10 +485,9 @@ async def async_step_devices_filter(self, user_input=None):
if home_id in home_selected:
self._home_selected[home_id] = home_info
self._area_name_rule = user_input.get('area_name_rule')
self._action_debug = user_input.get(
'action_debug', self._action_debug)
self._hide_non_standard_entities = user_input.get(
'hide_non_standard_entities', self._hide_non_standard_entities)
# Check if advanced options should be shown
show_advanced_options = user_input.get(
'show_advanced_options', False)
# Storage device list
devices_list: dict[str, dict] = {
did: dev_info
Expand All @@ -513,6 +512,10 @@ async def async_step_devices_filter(self, user_input=None):
'auth_info': self._auth_info
})):
raise MIoTError('miot_storage.update_user_config_async error')
# If advanced options should be shown, go to the advanced step
if show_advanced_options:
return await self.async_step_advanced_options()
# If not, create the entry directly
return self.async_create_entry(
title=(
f'{self._nick_name}: {self._uid} '
Expand Down Expand Up @@ -552,10 +555,7 @@ async def display_device_filter_form(self, reason: str):
vol.Required('home_infos'): cv.multi_select(self._home_list),
vol.Required('area_name_rule', default='room'): vol.In(
self._miot_i18n.translate(key='config.room_name_rule')),
vol.Required('action_debug', default=self._action_debug): bool,
vol.Required(
'hide_non_standard_entities',
default=self._hide_non_standard_entities): bool,
vol.Required('show_advanced_options', default=False): bool,
}),
errors={'base': reason},
description_placeholders={
Expand All @@ -564,6 +564,47 @@ async def display_device_filter_form(self, reason: str):
last_step=False,
)

async def async_step_advanced_options(self, user_input=None):
if user_input is not None:
# Advanced options, the default values are specified alongside
# the definition of each variable
self._action_debug = user_input.get(
'action_debug', self._action_debug)
self._hide_non_standard_entities = user_input.get(
'hide_non_standard_entities', self._hide_non_standard_entities)
return self.async_create_entry(
title=(
f'{self._nick_name}: {self._uid} '
f'[{CLOUD_SERVERS[self._cloud_server]}]'),
data={
'virtual_did': self._virtual_did,
'uuid': self._uuid,
'integration_language': self._integration_language,
'storage_path': self._storage_path,
'uid': self._uid,
'nick_name': self._nick_name,
'cloud_server': self._cloud_server,
'oauth_redirect_url': self._oauth_redirect_url,
'ctrl_mode': self._ctrl_mode,
'home_selected': self._home_selected,
'area_name_rule': self._area_name_rule,
'action_debug': self._action_debug,
'hide_non_standard_entities':
self._hide_non_standard_entities,
}
)

return self.async_show_form(
step_id='advanced_options',
data_schema=vol.Schema({
vol.Required('action_debug', default=self._action_debug): bool,
vol.Required(
'hide_non_standard_entities',
default=self._hide_non_standard_entities): bool,
}),
last_step=True,
)

@staticmethod
@callback
def async_get_options_flow(
Expand Down
9 changes: 8 additions & 1 deletion custom_components/xiaomi_home/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,18 @@
},
"devices_filter": {
"title": "Familie und Geräte auswählen",
"description": "## Gebrauchsanweisung\r\n### Steuerungsmodus\r\n- Automatisch: Wenn im lokalen Netzwerk ein verfügbarer Xiaomi-Zentralgateway vorhanden ist, wird Home Assistant bevorzugt Steuerbefehle über den Zentralgateway senden, um eine lokale Steuerung zu ermöglichen. Wenn im lokalen Netzwerk kein Zentralgateway vorhanden ist, wird versucht, Steuerbefehle über das Xiaomi-OT-Protokoll zu senden, um eine lokale Steuerung zu ermöglichen. Nur wenn die oben genannten Bedingungen für die lokale Steuerung nicht erfüllt sind, werden die Steuerbefehle über die Cloud gesendet.\r\n- Cloud: Steuerbefehle werden nur über die Cloud gesendet.\r\n### Familienimport für importierte Geräte\r\nDie Integration fügt Geräte aus den ausgewählten Familien hinzu.\r\n### Raumnamensynchronisationsmodus\r\nWenn Geräte von der Xiaomi Home App zu Home Assistant synchronisiert werden, wird die Bezeichnung des Bereichs, in dem sich die Geräte in Home Assistant befinden, nach folgenden Regeln benannt. Beachten Sie, dass das Synchronisieren von Geräten den von Xiaomi Home App festgelegten Familien- und Raum-Einstellungen nicht ändert.\r\n- Nicht synchronisieren: Das Gerät wird keinem Bereich hinzugefügt.\r\n- Andere Optionen: Der Bereich, in den das Gerät aufgenommen wird, wird nach dem Namen der Familie oder des Raums in der Xiaomi Home App benannt.\r\n### Action-Debug-Modus\r\nFür von MIoT-Spec-V2 definierte Gerätemethoden wird neben der Benachrichtigungs-Entität auch eine Texteingabe-Entität generiert. Damit können Sie bei der Fehlerbehebung Steuerbefehle an das Gerät senden.\r\n### Verstecke Nicht-Standard-Entitäten\r\nVerstecke Entitäten, die von nicht standardmäßigen MIoT-Spec-V2-Instanzen mit einem Namen beginnen, der mit einem \"*\" beginnt.\r\n\r\n \r\n### Hallo {nick_name}! Bitte wählen Sie den Steuerungsmodus der Integration sowie die Familie aus, in der sich die hinzuzufügenden Geräte befinden.",
"description": "## Gebrauchsanweisung\r\n### Steuerungsmodus\r\n- Automatisch: Wenn im lokalen Netzwerk ein verfügbarer Xiaomi-Zentralgateway vorhanden ist, wird Home Assistant bevorzugt Steuerbefehle über den Zentralgateway senden, um eine lokale Steuerung zu ermöglichen. Wenn im lokalen Netzwerk kein Zentralgateway vorhanden ist, wird versucht, Steuerbefehle über das Xiaomi-OT-Protokoll zu senden, um eine lokale Steuerung zu ermöglichen. Nur wenn die oben genannten Bedingungen für die lokale Steuerung nicht erfüllt sind, werden die Steuerbefehle über die Cloud gesendet.\r\n- Cloud: Steuerbefehle werden nur über die Cloud gesendet.\r\n### Familienimport für importierte Geräte\r\nDie Integration fügt Geräte aus den ausgewählten Familien hinzu.\r\n### Raumnamensynchronisationsmodus\r\nWenn Geräte von der Xiaomi Home App zu Home Assistant synchronisiert werden, wird die Bezeichnung des Bereichs, in dem sich die Geräte in Home Assistant befinden, nach folgenden Regeln benannt. Beachten Sie, dass das Synchronisieren von Geräten den von Xiaomi Home App festgelegten Familien- und Raum-Einstellungen nicht ändert.\r\n- Nicht synchronisieren: Das Gerät wird keinem Bereich hinzugefügt.\r\n- Andere Optionen: Der Bereich, in den das Gerät aufgenommen wird, wird nach dem Namen der Familie oder des Raums in der Xiaomi Home App benannt.\r\n### Erweiterte Einstellungen anzeigen\r\nZeigt erweiterte Einstellungen zum Anpassen der Integration an fortgeschrittene Nutzer.\r\n\r\n \r\n### Hallo {nick_name}! Bitte wählen Sie den Steuerungsmodus der Integration sowie die Familie aus, in der sich die hinzuzufügenden Geräte befinden.",
"data": {
"ctrl_mode": "Steuerungsmodus",
"home_infos": "Familienimport für importierte Geräte",
"area_name_rule": "Raumnamensynchronisationsmodus",
"show_advanced_options": "Erweiterte Einstellungen anzeigen"
}
},
"advanced_options": {
"title": "Erweiterte Einstellungen",
"description": "### Ändern Sie diese Optionen nur, wenn Sie genau wissen, was sie tun.\r\n### Action-Debug-Modus\r\nFür von MIoT-Spec-V2 definierte Gerätemethoden wird neben der Benachrichtigungs-Entität auch eine Texteingabe-Entität generiert. Damit können Sie bei der Fehlerbehebung Steuerbefehle an das Gerät senden.\r\n### Verstecke Nicht-Standard-Entitäten\r\nVerstecke Entitäten, die von nicht standardmäßigen MIoT-Spec-V2-Instanzen mit einem Namen beginnen, der mit einem \"*\" beginnt.",
"data": {
"action_debug": "Action-Debug-Modus",
"hide_non_standard_entities": "Verstecke Nicht-Standard-Entitäten"
}
Expand Down
9 changes: 8 additions & 1 deletion custom_components/xiaomi_home/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,18 @@
},
"devices_filter": {
"title": "Select Home and Devices",
"description": "## Usage Instructions\r\n### Control mode\r\n- Auto: When there is an available Xiaomi central hub gateway in the local area network, Home Assistant will prioritize sending device control commands through the central hub gateway to achieve local control. If there is no central hub gateway in the local area network, it will attempt to send control commands through Xiaomi LAN control function. Only when the above local control conditions are not met, the device control commands will be sent through the cloud.\r\n- Cloud: All control commands are sent through the cloud.\r\n### Import devices from home\r\nThe integration will add devices from the selected homes.\n### Room name synchronizing mode\nWhen importing devices from Xiaomi Home APP to Home Assistant, the naming convention of the area where the device is added to is as follows. Note that the device synchronizing process does not change the home or room settings in Xiaomi Home APP.\r\n- Do not synchronize: The device will not be added to any area.\r\n- Other options: The device will be added to an area named as the home and/or room name that already exists in Xiaomi Home APP.\r\n### Debug mode for action\r\nFor the action defined in MIoT-Spec-V2 of the device, a Text entity along with a Notify entity will be created, in which you can send control commands to the device for debugging.\r\n### Hide non-standard created entities\r\nHide the entities generated from non-standard MIoT-Spec-V2 instances, whose names begin with \"*\".\r\n\r\n \r\n### Hello {nick_name}, please select the integration control mode and the home where the device you want to import.",
"description": "## Usage Instructions\r\n### Control mode\r\n- Auto: When there is an available Xiaomi central hub gateway in the local area network, Home Assistant will prioritize sending device control commands through the central hub gateway to achieve local control. If there is no central hub gateway in the local area network, it will attempt to send control commands through Xiaomi LAN control function. Only when the above local control conditions are not met, the device control commands will be sent through the cloud.\r\n- Cloud: All control commands are sent through the cloud.\r\n### Import devices from home\r\nThe integration will add devices from the selected homes.\n### Room name synchronizing mode\nWhen importing devices from Xiaomi Home APP to Home Assistant, the naming convention of the area where the device is added to is as follows. Note that the device synchronizing process does not change the home or room settings in Xiaomi Home APP.\r\n- Do not synchronize: The device will not be added to any area.\r\n- Other options: The device will be added to an area named as the home and/or room name that already exists in Xiaomi Home APP.\r\n\r\n \r\n### Hello {nick_name}, please select the integration control mode and the home where the device you want to import.",
"data": {
"ctrl_mode": "Control mode",
"home_infos": "Import devices from home",
"area_name_rule": "Room name synchronizing mode",
"show_advanced_options": "Show Advanced Options"
}
},
"advanced_options": {
"title": "Advanced Options",
"description": "### Unless you are very sure about the meaning of the following options, please keep the default settings.\r\n### Debug mode for action\r\nFor the action defined in MIoT-Spec-V2 of the device, a Text entity along with a Notify entity will be created, in which you can send control commands to the device for debugging.\r\n### Hide non-standard created entities\r\nHide the entities generated from non-standard MIoT-Spec-V2 instances, whose names begin with \"*\".",
"data": {
"action_debug": "Debug mode for action",
"hide_non_standard_entities": "Hide non-standard created entities"
}
Expand Down
9 changes: 8 additions & 1 deletion custom_components/xiaomi_home/translations/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,18 @@
},
"devices_filter": {
"title": "Seleccionar hogares y dispositivos",
"description": "## Instrucciones de uso\r\n### Modo de control\r\n- Automático: Cuando hay un gateway central de Xiaomi disponible en la red local, Home Assistant priorizará el envío de comandos de control de dispositivos a través del gateway central para lograr un control localizado. Si no hay un gateway central en la red local, intentará enviar comandos de control a través del protocolo Xiaomi OT para lograr un control localizado. Solo cuando no se cumplan las condiciones anteriores de control localizado, los comandos de control del dispositivo se enviarán a través de la nube.\r\n- Nube: Los comandos de control solo se envían a través de la nube.\r\n### Hogares de dispositivos importados\r\nLa integración agregará los dispositivos en los hogares seleccionados.\r\n### Modo de sincronización del nombre de la habitación\r\nCuando se sincronizan los dispositivos desde la aplicación Xiaomi Home a Home Assistant, los nombres de las áreas donde se encuentran los dispositivos en Home Assistant seguirán las reglas de nomenclatura a continuación. Tenga en cuenta que el proceso de sincronización de dispositivos no cambiará la configuración de hogares y habitaciones en la aplicación Xiaomi Home.\r\n- Sin sincronización: el dispositivo no se agregará a ninguna área.\r\n- Otras opciones: la zona donde se agrega el dispositivo tendrá el mismo nombre que el hogar o la habitación en la aplicación Xiaomi Home.\r\n### Modo de depuración de Action\r\nPara los métodos definidos por MIoT-Spec-V2, además de generar una entidad de notificación, también se generará una entidad de cuadro de entrada de texto que se puede utilizar para enviar comandos de control al dispositivo durante la depuración.\r\n### Ocultar entidades generadas no estándar\r\nOcultar las entidades generadas por la instancia no estándar MIoT-Spec-V2 que comienzan con \"*\".\r\n\r\n \r\n### ¡Hola, {nick_name}! Seleccione el modo de control de integración y el hogar donde se encuentran los dispositivos que desea agregar.",
"description": "## Instrucciones de uso\r\n### Modo de control\r\n- Automático: Cuando hay un gateway central de Xiaomi disponible en la red local, Home Assistant priorizará el envío de comandos de control de dispositivos a través del gateway central para lograr un control localizado. Si no hay un gateway central en la red local, intentará enviar comandos de control a través del protocolo Xiaomi OT para lograr un control localizado. Solo cuando no se cumplan las condiciones anteriores de control localizado, los comandos de control del dispositivo se enviarán a través de la nube.\r\n- Nube: Los comandos de control solo se envían a través de la nube.\r\n### Hogares de dispositivos importados\r\nLa integración agregará los dispositivos en los hogares seleccionados.\r\n### Modo de sincronización del nombre de la habitación\r\nCuando se sincronizan los dispositivos desde la aplicación Xiaomi Home a Home Assistant, los nombres de las áreas donde se encuentran los dispositivos en Home Assistant seguirán las reglas de nomenclatura a continuación. Tenga en cuenta que el proceso de sincronización de dispositivos no cambiará la configuración de hogares y habitaciones en la aplicación Xiaomi Home.\r\n- Sin sincronización: el dispositivo no se agregará a ninguna área.\r\n- Otras opciones: la zona donde se agrega el dispositivo tendrá el mismo nombre que el hogar o la habitación en la aplicación Xiaomi Home.\r\n### Mostrar opciones avanzadas\r\nMostrar opciones avanzadas para realizar una configuración profesional de la integración.\r\n\r\n \r\n### ¡Hola, {nick_name}! Seleccione el modo de control de integración y el hogar donde se encuentran los dispositivos que desea agregar.",
"data": {
"ctrl_mode": "Modo de control",
"home_infos": "Hogares de dispositivos importados",
"area_name_rule": "Modo de sincronización del nombre de la habitación",
"show_advanced_options": "Mostrar opciones avanzadas"
}
},
"advanced_options": {
"title": "Opciones avanzadas",
"description": "### Mantenga los valores predeterminados a menos que comprenda completamente el significado de estas opciones.\r\n### Modo de depuración de Action\r\nPara los métodos definidos por MIoT-Spec-V2, además de generar una entidad de notificación, también se generará una entidad de cuadro de entrada de texto que se puede utilizar para enviar comandos de control al dispositivo durante la depuración.\r\n### Ocultar entidades generadas no estándar\r\nOcultar las entidades generadas por la instancia no estándar MIoT-Spec-V2 que comienzan con \"*\".",
"data": {
"action_debug": "Modo de depuración de Action",
"hide_non_standard_entities": "Ocultar entidades generadas no estándar"
}
Expand Down
Loading
Loading