Hola,
Estoy pensando en un pequeño proyecto interactivo que utilice tarjetas físicas equipadas con etiquetas NFC para activar diferentes ambientes en Gladys.
La idea sería colocar una etiqueta NFC muy fina en la funda de cada tarjeta. Cuando la tarjeta se escanea con un teléfono, este envía un identificador a Gladys mediante HTTP o MQTT.
Gladys podría entonces:
-
cambiar el color y el brillo de las lámparas
-
reproducir una música o ambiente de sonido local
-
activar una escena durante un tiempo determinado
-
registrar la última tarjeta escaneada
-
mostrar su nombre en el panel de control
-
volver automáticamente al ambiente normal después de unos minutos
El proyecto contendría 78 tarjetas diferentes. Aquí está la lista que utilizaría para asociar cada identificador NFC con un nombre y un ambiente:
Aclaro que participo en el mantenimiento del sitio relacionado. Comparto esta página únicamente para mostrar el conjunto de datos y las 78 entradas que la automatización debería manejar.
Ahora busco la mejor arquitectura en Gladys.
1. ¿HTTP o MQTT para transmitir el identificador?
Para un uso principalmente local, ¿es preferible que el teléfono publique directamente el identificador de la tarjeta en un tema MQTT?
Por ejemplo:
gladys/nfc/card
Con un valor como:
the-world
¿O sería más sencillo utilizar NFC Tools o Tasker para enviar una solicitud HTTP a la API de Gladys?
2. Un dispositivo virtual para almacenar la tarjeta
Pensé en crear un dispositivo virtual MQTT con una funcionalidad de texto o numérica que represente la última tarjeta escaneada.
¿Es un buen método para permitir que las escenas reaccionen al valor, o debería activarse directamente una escena diferente desde el teléfono?
3. Evitar crear 78 escenas
Preferiría no crear una escena separada para cada tarjeta.
¿Existe una manera limpia de crear una sola escena que:
-
Recupere el identificador recibido
-
Busque este identificador en una tabla de correspondencia
-
Recupere el color, el brillo, el sonido y la duración asociados
-
Ejecute las acciones correspondientes
La tabla podría parecerse a esto:
{
"the-world": {
"color": "#D4AF37",
"brightness": 45,
"duration": 900
},
"the-hermit": {
"color": "#6B7280",
"brightness": 20,
"duration": 1200
}
}
¿Este tipo de lógica puede ser gestionado directamente en Gladys, o sería preferible pasar por Node-RED o una pequeña integración externa?
4. Detectar la tarjeta derecha o invertida
Una tarjeta puede colocarse normalmente o girada 180 grados.
Podría registrar dos acciones NFC diferentes en el teléfono, por ejemplo:
the-world:upright
the-world:reversed
Pero esto requeriría probablemente dos etiquetas por tarjeta.
¿Ven un método más sencillo para transmitir también la orientación de la tarjeta?
5. Temporización y restauración del estado anterior
Después de 10 o 15 minutos, me gustaría restaurar las lámparas y los dispositivos a su estado anterior.
¿Permite Gladys memorizar los estados antes de lanzar la escena y luego restaurarlos automáticamente al final?
De lo contrario, podría simplemente lanzar una escena de ambiente normal después de un retraso fijo.
6. Visualización en el panel de control
Finalmente, ¿sería posible mostrar en el panel de control:
-
el nombre de la última tarjeta
-
la hora del escaneo
-
su orientación
-
el ambiente actualmente activo
Quiero empezar con un prototipo con solo tres tarjetas antes de preparar las 78.
Para este tipo de proyecto, ¿utilizarían más bien MQTT, la API abierta, Node-RED o el futuro sistema de integraciones externas de Gladys?