diff --git a/docs/raspberry_pi.md b/docs/raspberry_pi.md index 6148152..ad79625 100644 --- a/docs/raspberry_pi.md +++ b/docs/raspberry_pi.md @@ -170,6 +170,16 @@ Dispositivos iniciales: Las rutinas se definirán con nombre, dispositivos objetivo, días y franjas horarias. No se aplica ninguna hasta que el usuario indique la primera definición. +Los nombres de dispositivo serán tolerantes a mayúsculas, minúsculas, tildes y nombres sencillos: + +```text +/parental activar Inés +/parental desactivar INES +/parental pausa Carolina 60 +``` + +`Inés`, `INES`, `ines` y `tablet ines` identifican la misma tablet. `Carolina`, `CAROLINA` y `Caroline tablet` identifican la tablet de Carolina. + ## Despliegue La Pi no tiene Git operativo para este flujo. El despliegue se hace por el VPS y el tunel inverso: diff --git a/vigilancia/asus_api_control.py b/vigilancia/asus_api_control.py index fff22ab..26799ed 100644 --- a/vigilancia/asus_api_control.py +++ b/vigilancia/asus_api_control.py @@ -3,6 +3,7 @@ import asyncio import json import os +import unicodedata import aiohttp from asusrouter import AsusData, AsusRouter @@ -25,11 +26,29 @@ def _load_env(): FILE_ENV = _load_env() +DEVICE_ALIASES = { + "ines": {"name": "TABLET INES", "mac": "04:34:F6:0C:8E:48"}, + "tablet ines": {"name": "TABLET INES", "mac": "04:34:F6:0C:8E:48"}, + "carolina": {"name": "Caroline-tablet", "mac": "3A:99:2B:ED:D3:5E"}, + "caroline": {"name": "Caroline-tablet", "mac": "3A:99:2B:ED:D3:5E"}, + "caroline tablet": {"name": "Caroline-tablet", "mac": "3A:99:2B:ED:D3:5E"}, +} + def _env(name, default=""): return os.getenv(name, FILE_ENV.get(name, default)).strip() +def normalizar_nombre(nombre): + value = unicodedata.normalize("NFKD", nombre or "") + value = "".join(char for char in value if not unicodedata.combining(char)) + return " ".join(value.lower().replace("-", " ").split()) + + +def resolver_dispositivo(nombre): + return DEVICE_ALIASES.get(normalizar_nombre(nombre)) + + async def _parental_data(): username = _env("ASUS_USERNAME") password = _env("ASUS_PASSWORD")