Integración domótica Microsoft 365, gratuita y de código abierto

Calendario de Outlook y Microsoft To Do en Gladys: ocupado, disparadores, tareas desde escenas.
Su calendario de Outlook y sus listas de Microsoft To Do en Gladys, mediante la API oficial Microsoft Graph: ocupado o libre, el evento en curso y el siguiente, las tareas abiertas y vencidas, escenas que empiezan con un evento o añaden una tarea, y un widget con la agenda del día.
Funciona con una cuenta personal de Microsoft (Outlook.com, Hotmail, Live) y con una cuenta profesional o educativa (Microsoft 365). Complementa la integración «Calendarios ICS»: aquí no hay enlace público del calendario, y Gladys también puede escribir (tareas, eventos).
Desarrollada sin cuenta de prueba: sus comentarios son bienvenidos. El inicio de sesión y cada respuesta de Microsoft se construyeron a partir de la documentación de Microsoft y de respuestas grabadas, sin probarlo aún en una cuenta real. Cuéntenos en el foro de Gladys cómo le va.
Esta integración es independiente, sin relación con Microsoft. Microsoft, Microsoft 365, Outlook y To Do son marcas del grupo Microsoft.
Qué necesita
- Gladys 5.2.0 o posterior.
- Una cuenta de Microsoft con buzón: Outlook.com para una cuenta personal, Exchange Online para una cuenta profesional (To Do y el calendario están en el buzón).
- Su propio registro de aplicación en Microsoft Entra (gratuito, 5 minutos, ver abajo). Microsoft pide que toda aplicación que lee un calendario esté registrada; con la suya, nadie más tiene acceso a sus datos, y las cuotas de Microsoft son solo para usted.
Crear su registro de aplicación
- Abra Registros de aplicaciones en Microsoft Entra e inicie sesión. Con una cuenta personal, Microsoft puede pedirle primero que cree un directorio gratuito (una cuenta gratuita de Azure): el registro en sí no cuesta nada.
- Nuevo registro: un nombre cualquiera (por ejemplo «Gladys»). Tipos de cuenta compatibles: Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft. Deje vacío el URI de redirección. Registre.
- En la página Información general, copie el Id. de aplicación (cliente).
- Autenticación → Configuración avanzada → Permitir flujos de clientes públicos: Sí, y después Guardar. Sin ello, Microsoft rechaza el inicio de sesión con código (AADSTS7000218).
- Permisos de API → Agregar un permiso → Microsoft Graph → Permisos delegados: marque
Calendars.ReadWrite,Tasks.ReadWriteyoffline_access(User.Readya está). Sin secreto de cliente ni certificado: la integración es un cliente público.
Una cuenta profesional puede necesitar que un administrador conceda estos permisos para la organización (Conceder consentimiento de administrador). Si su organización solo admite sus propias cuentas, elija «Solo las cuentas de este directorio organizativo» en el paso 2 e introduzca el Id. de directorio (inquilino) en el ajuste Inquilino.
Configuración
En Gladys, Integraciones → Microsoft 365 → Configuración:
- ID de aplicación (cliente): el Id. copiado en el paso 3.
- Inquilino:
common(cuentas personales y profesionales).consumerssolo para cuentas personales,organizationssolo para cuentas profesionales, o el Id. de su directorio. - Leer Microsoft 365 cada: de 1 a 15 minutos (5 por defecto). Los disparadores mantienen su precisión al minuto sea cual sea la elección.
- Palabras clave de los disparadores de escena: palabras que se buscan en los títulos de los eventos, separadas por comas (vea los disparadores de escena).
- Idioma de los textos de los dispositivos: nombres de las funciones (fijados al añadir un dispositivo), textos del evento en curso y del siguiente, mensajes. Francés por defecto.
Guarde y después use las acciones bajo el formulario:
- Iniciar sesión: muestra un código y una página de Microsoft (
https://login.microsoft.com/device). Abra la página en cualquier dispositivo, introduzca el código antes de 15 minutos e inicie sesión con su cuenta de Microsoft. El estado de la pantalla Configuración muestra el código mientras tanto y luego pasa a conectado. Los dispositivos aparecen en la pestaña Descubrir. - Comprobar la conexión: indica qué cuenta ha iniciado sesión y cuántos calendarios y listas de To Do contiene, y actualiza la pestaña Descubrir.
- Cerrar sesión: elimina los tokens de Microsoft de Gladys. Hágalo antes de iniciar sesión con otra cuenta. Para retirar también el acceso del lado de Microsoft, elimine la aplicación de las aplicaciones de su cuenta o de Mis aplicaciones (cuenta profesional).
La sesión dura mientras se use: Microsoft la termina tras 90 días sin uso, o cuando cambia la contraseña o se revoca el acceso. El estado pide entonces volver a iniciar sesión.
Dispositivos
La pestaña Descubrir propone un dispositivo por calendario de Outlook y uno por lista de To Do de la cuenta. Añada los que quiera: solo esos se leen.
Calendario de Outlook
| Función | Valor |
|---|---|
| Ocupado | 1 durante un evento mostrado como ocupado, provisional o fuera de la oficina; 0 si libre o trabajando en otro lugar |
| Fuera de la oficina | 1 durante un evento mostrado como fuera de la oficina (vacaciones, citas) |
| Evento en curso | título del evento en curso (primero uno con hora), o «Ninguno» |
| Próximo evento | título e inicio del próximo evento en dos semanas («Dentista · mañana 14:00»), o «Ninguno» |
Los eventos cancelados y las invitaciones que rechazó se ignoran. Un evento de todo el día cubre todo su día.
Lista de To Do
| Función | Valor |
|---|---|
| Tareas abiertas | tareas no completadas |
| Tareas vencidas | tareas abiertas cuyo vencimiento es anterior a hoy |
| Tareas para hoy | tareas abiertas que vencen hoy |
Una tarea que vence hoy no está vencida antes de mañana: los contadores cambian a medianoche.
Widget del panel
Agenda y tareas: lo que queda del día en Outlook (8 eventos como máximo, «En curso» en el que tiene lugar), los contadores de tareas abiertas y vencidas de una lista de To Do en mosaicos en directo, sus cinco primeras tareas abiertas con su vencimiento (en rojo si está vencida, en naranja si vence hoy), y un botón Añadir una tarea que abre un pequeño formulario (título, vencimiento). Ajustes: el calendario (vacío: todos los calendarios añadidos) y la lista de To Do (vacío: la lista, si solo se añadió una).
Disparadores de escena
El núcleo solo compara los filtros por igualdad: «el título contiene una palabra» lo decide la integración, según el ajuste Palabras clave de los disparadores de escena. Un evento cuyo título contiene una de esas palabras (sin distinguir mayúsculas ni acentos) lleva la primera encontrada; una escena filtra por ella escribiendo la palabra clave tal como está en los ajustes.
Cada disparador de evento transmite a la escena: el título del evento, el lugar, el inicio, el fin, el calendario y la palabra clave encontrada.
Empieza un evento de Outlook
Cuando empieza un evento de un calendario añadido. Filtros: calendario, palabra clave.
Termina un evento de Outlook
Cuando termina un evento. Filtros: calendario, palabra clave.
Evento de Outlook dentro de N minutos
5, 10, 15, 30, 60 o 120 minutos antes del inicio de un evento (excepto los de todo el día). Filtros: minutos (obligatorio), calendario, palabra clave.
Tarea de To Do vencida
Cuando una tarea abierta pasa su vencimiento (en la primera comprobación tras la medianoche). Filtro: la lista de To Do. Transmite la tarea, su vencimiento y la lista. Las tareas ya vencidas en la primera lectura de la lista no se anuncian, y cada tarea se anuncia una sola vez.
Los disparadores se calculan cada 30 segundos a partir de los eventos ya leídos: un evento se dispara a su hora aunque Microsoft 365 solo se lea cada 15 minutos. Un inicio perdido por más de 5 minutos (Gladys o la integración detenidos) no se anuncia con retraso, y no se anuncia nada a partir de datos de más de 2 horas.
Acciones de escena
Añadir una tarea de To Do
En una lista de To Do añadida a Gladys, con un título (se aceptan variables de escena) y un vencimiento opcional en días (0: hoy, 1: mañana). Devuelve el título.
Completar una tarea de To Do
Completa la tarea abierta cuyo título es el texto (sin distinguir mayúsculas ni acentos), o la única cuyo título lo contiene. Varias coincidencias parciales: no se completa nada. Devuelve «Tarea completada (1 sí, 0 no)» y el título de la tarea.
Añadir un evento de Outlook
Añade un evento «ocupado» a un calendario, ahora o dentro de hasta 7 días (en minutos), de 5 minutos a 24 horas de duración. Devuelve la hora de inicio.
Ejemplos de escenas
- Teletrabajo: palabra clave
Teletrabajo. Disparador «Empieza un evento de Outlook», palabra claveTeletrabajo→ calefacción del despacho en confort; «Termina un evento de Outlook» → vuelta a eco. - Salir a tiempo: disparador «Evento de Outlook dentro de N minutos», 30 minutos, palabra clave
Dentista→ mensaje «{{triggerEvent.data.title}} a las {{triggerEvent.data.start}}, {{triggerEvent.data.location}}». - No molestar: la función «Ocupado» del calendario del trabajo pasa a 1 → timbre silenciado, una luz delante del despacho se pone roja; vuelta a 0 → normal.
- Lista de la compra: un botón o una orden de voz → «Añadir una tarea de To Do» «Leche» a la lista «Compra».
- Tareas de casa: disparador «Tarea de To Do vencida» en la lista «Casa» → notificación «{{triggerEvent.data.title}} está vencida».
Actualización y límites de Microsoft
La integración lee Microsoft Graph por sí misma, con su propio temporizador (no depende del sondeo de
Gladys): una petición por calendario o lista añadidos y por periodo, más una por cada 200 eventos o
100 tareas. Microsoft permite 10 000 peticiones cada 10 minutos y 4 a la vez para una aplicación y un
buzón: con un periodo de un minuto y 10 dispositivos, la integración usa 100. Las peticiones salen de
una en una. Cuando Microsoft pide reducir las peticiones (HTTP 429 con Retry-After), la integración
espera el tiempo pedido, sin ninguna petición mientras tanto.
Los valores solo se publican cuando cambian, y cada 6 horas para que Gladys nunca los muestre como antiguos. El uso de Microsoft Graph sigue las condiciones de uso de las API de Microsoft.
Solución de problemas
- «Microsoft ha rechazado el inicio de sesión (invalid_request (AADSTS50059))» o AADSTS700016: el Id. de cliente
es desconocido, o la aplicación está registrada para una sola organización mientras el inquilino es
common: compruebe el Id., o introduzca el Id. de directorio como inquilino. - AADSTS7000218: «Permitir flujos de clientes públicos» no está activado (paso 4).
- AADSTS65001 o «consentimiento»: una cuenta profesional cuyo administrador debe conceder los permisos.
- El código ha caducado: dura 15 minutos; vuelva a usar «Iniciar sesión».
- «La sesión de Microsoft ha caducado o ha sido revocada»: vuelva a usar «Iniciar sesión».
- Una lista de To Do o un calendario profesional dan error: la cuenta necesita un buzón de Exchange Online (el To Do de una cuenta profesional sin buzón no es accesible mediante Graph).
- Ningún dispositivo en la pestaña Descubrir: use «Comprobar la conexión» y luego la búsqueda de la pestaña Descubrir.
- Registros: la integración solo registra su ciclo de vida y los problemas (una vez al empezar, una
vez al terminar).
LOG_LEVEL=debugmuestra el resto. Los tokens y los códigos nunca se registran.
Límites
- Una sola cuenta de Microsoft por instalación (la del administrador), no una por usuario de Gladys.
- El calendario se lee de ayer a dos semanas; ningún evento en la vista Calendario de Gladys (lo hace la integración «Calendarios ICS»).
- Los nombres de las funciones se fijan al añadir un dispositivo; cambiar el idioma después no renombra nada.
- Los calendarios compartidos aparecen si Microsoft los lista en los calendarios de la cuenta; los calendarios de grupo, no.
- Sin recordatorios, sin participantes, sin modificación de eventos más allá de «Añadir un evento de Outlook».
- Desarrollada sin cuenta de prueba: las respuestas reales de una cuenta de Microsoft aún pueden diferir en algún detalle.
Privacidad y seguridad
- El token de actualización de Microsoft se queda en Gladys, en
/data/tokens.json(legible solo por el contenedor); el token de acceso, válido una hora, se queda en memoria. No se guarda nada más: ni eventos ni tareas. - La integración solo habla con
login.microsoftonline.comygraph.microsoft.com. - Permisos solicitados:
Calendars.ReadWrite,Tasks.ReadWrite,offline_accessyUser.Read(su nombre y el identificador de la cuenta, para nombrar la sesión).
Parámetros de configuración
Estos son los parámetros que Microsoft 365 te pide en su pantalla de configuración en Gladys.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Antes de empezar | section | No | Esta integración inicia sesión con su propio registro de aplicación de Azure, gratuito: créelo en Microsoft Entra («Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft», «Permitir flujos de clientes públicos»: Sí, permisos delegados Calendars.ReadWrite, Tasks.ReadWrite, offline_access, User.Read), copie su ID de aplicación (cliente) abajo y guarde. Después haga clic en «Iniciar sesión» e introduzca el código mostrado en la página de Microsoft. La documentación detalla cada paso. Sin relación con Microsoft. |
| ID de aplicación (cliente) | string | Sí | En la página Información general de su registro de aplicación. |
| Inquilino | string | No | «common» sirve para cuentas personales y profesionales. Para una aplicación registrada solo para su organización, introduzca su ID de directorio (inquilino). |
| Leer Microsoft 365 cada | select | No | Los disparadores mantienen su precisión al minuto sea cual sea la elección: se calculan a partir de los eventos ya leídos. |
| Palabras clave de los disparadores de escena | string | No | Separadas por comas. Un evento cuyo título contiene una de ellas (sin distinguir mayúsculas ni acentos) la lleva, y una escena puede filtrar por ella. |
| Idioma de los textos de los dispositivos | select | No | Nombres de las funciones (fijados al añadir un dispositivo), textos de los eventos y mensajes de las escenas. |
Cómo instalar Microsoft 365 en Gladys
- En Gladys, abre Integraciones: Microsoft 365 aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
- Haz clic en Instalar. Gladys descarga la imagen Docker (
ghcr.io/guim31/gladys-microsoft365:1.0.1), la ejecuta en un entorno aislado del núcleo y genera la interfaz de la integración (dispositivos, descubrimiento y configuración). - Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
- También puedes instalarla directamente desde la URL de su repositorio: https://github.com/guim31/gladys-microsoft365.
Microsoft 365 requiere Gladys >=5.2.0. El catálogo de Gladys se actualiza cada hora, así que una nueva versión está disponible como máximo una hora después de publicarse.
¿Todavía no usas Gladys? Es gratuito y de código abierto: sigue la guía de instalación para empezar.
Sobre las integraciones externas
Microsoft 365 es una integración externa: una integración comunitaria empaquetada como contenedor Docker y publicada en GitHub. Gladys la instala con un clic y la ejecuta en un entorno aislado del núcleo. La publica y mantiene guim31, no el equipo principal de Gladys.
- Explorar todas las integraciones, nativas y de la comunidad
- Crear y publicar tu propia integración externa
- Código fuente en GitHub — fuente de esta documentación