Saltar al contenido principal

Integración domótica ICS Calendars, gratuita y de código abierto

Integración ICS Calendars para Gladys Assistant

Calendarios de Google, Outlook, iCloud, escolares o de residuos en Gladys, con su dirección .ics.

Lleve a Gladys cualquier calendario publicado en formato iCalendar (una dirección .ics): su calendario de Google mediante su dirección secreta, un calendario de Outlook o iCloud publicado, el horario escolar de su hijo, el calendario de recogida de residuos de su municipio, los partidos de su club, los días festivos… Cada dirección se convierte en un calendario en la vista Calendario de Gladys, siempre actualizado y utilizable en las escenas como los calendarios que Gladys sincroniza por sí misma.

  • Cada usuario añade sus propios calendarios, en el bloque Mis calendarios de la página de la integración: hasta cinco direcciones por persona. Los calendarios son privados hasta que su propietario los comparte con el hogar.
  • Se gestionan los eventos recurrentes (todos los lunes, el primer martes de cada mes…), las excepciones, las repeticiones movidas o canceladas, los eventos de día completo y las zonas horarias (incluidas las de Outlook y Exchange).
  • Un widget para el panel, dos desencadenantes de escena (un evento modificado, un calendario inaccesible) y una acción de escena (buscar el próximo evento) completan lo que Gladys ya ofrece.

Probada con su batería de pruebas automáticas y con archivos de calendario reales (Google, Apple, Outlook, Educación nacional francesa), todavía no en muchas instalaciones reales de Gladys: sus comentarios son bienvenidos en el foro de Gladys o en las issues de GitHub.

Qué necesita​

  • Gladys Assistant 5.2.0 o posterior.
  • La dirección .ics de cada calendario (ver más abajo). Ninguna cuenta que crear, ninguna clave de API.
  • Acceso a Internet desde Gladys, para descargar los calendarios.

Instalar y añadir sus calendarios​

  1. Instale la integración: Integraciones → Instalar desde GitHub, dirección https://github.com/guim31/gladys-ics-calendar.
  2. Abra su página. Cada usuario de Gladys, no solo el administrador, ve allí el bloque Mis calendarios.
  3. Pegue hasta cinco direcciones, cada una con un nombre opcional (si no, se usa el nombre que tiene el calendario en el archivo), y pulse Activar para mí. Las direcciones webcal:// se aceptan tal cual.
  4. Al cabo de unos segundos, sus calendarios aparecen bajo el formulario. Para cada uno:
    • Sincronizar este calendario: desactívelo para dejar de descargarlo (sus eventos se eliminan de Gladys);
    • Compartir con el hogar: el calendario pasa a ser visible para todos, y solo entonces puede activar escenas y aparecer en el widget del panel.

Las direcciones se guardan como secretos: Gladys no las vuelve a mostrar nunca. Para cambiar una, escriba la nueva dirección en su campo y guarde: se crea un nuevo calendario (privado, como todo calendario nuevo) y se elimina el antiguo. Para quitar un calendario, escriba un carácter en el campo de su dirección, bórrelo y guarde.

Dónde encontrar la dirección .ics​

  • Google Calendar: en un ordenador, Configuración → Configuración de mis calendarios → su calendario → Integrar el calendario → Dirección secreta en formato iCal. Esta dirección da acceso de lectura a todo su calendario: guárdela para usted. Un calendario público tiene además una Dirección pública en formato iCal.
  • Outlook / Microsoft 365: Configuración → Calendario → Calendarios compartidos → Publicar un calendario, elija el calendario y «Puede ver todos los detalles», y copie el enlace ICS.
  • iCloud: en la app Calendario, comparta el calendario como Calendario público y copie su enlace (webcal://…).
  • Portales escolares, ayuntamientos, clubes: busque «Exportar», «Suscribirse», «iCal» o «ICS». Muchos portales escolares ofrecen una exportación iCal del horario cuando el centro la ha activado.
  • Nextcloud y otros servidores que piden una contraseña: escríbala en la dirección, https://usuario:contraseña@servidor/…; se envía como una autenticación estándar.

Ajustes del administrador​

En la pestaña Configuración, para todos los usuarios:

  • Descargar cada: 15, 30 o 60 minutos (30 por defecto). Un calendario sin cambios casi no cuesta nada: la integración pregunta al servidor si el archivo ha cambiado y solo lo descarga en ese caso, y una vez al día por completo.
  • Mostrar los eventos hasta: hasta dónde se calculan los eventos recurrentes, de 3 a 24 meses (12 por defecto). Los eventos de hace más de 90 días se eliminan de Gladys.
  • Vigilar los cambios durante (días): el horizonte del desencadenante «Evento modificado» (7 días por defecto).
  • Inaccesible después de (horas): el plazo antes del desencadenante «Calendario inaccesible» (6 horas por defecto).
  • Idioma de los textos de las escenas: las fechas y textos que se pasan a las escenas, y el nombre dado a los eventos sin título.

El botón Sincronizar ahora descarga de inmediato todos los calendarios e indica cuáles han fallado y por qué. Con muchos calendarios grandes, responde a los 100 segundos que la sincronización continúa en segundo plano.

En Gladys​

Los calendarios aparecen en la vista Calendario como los demás, con su propio color. Todo lo que Gladys hace con sus calendarios funciona con ellos, en cuanto están compartidos:

  • el desencadenante Se acerca un evento del calendario (por ejemplo 15 minutos antes del inicio de un evento cuyo nombre contiene «Reciclaje»);
  • las acciones Condición sobre eventos del calendario y Obtener eventos del calendario (hoy, mañana, las próximas horas);
  • el indicador de calendario del panel y el asistente.

Gladys nunca escribe en sus calendarios: un evento creado o modificado en Gladys se queda en Gladys; la siguiente descarga trae de nuevo el contenido del calendario de origen.

Widget del panel​

Próximos eventos muestra los eventos de los calendarios compartidos (ocho como máximo): hoy, mañana y los días siguientes, con la hora, y el nombre del calendario cuando se muestran varios. Toque un evento para leer su lugar y su descripción y abrir su enlace.

  • Calendarios: nombres de calendarios compartidos, separados por comas; vacío para todos.
  • Periodo: hoy, 3, 7, 14 o 31 días.

Un calendario que ya no se puede descargar aparece en rojo; el botón Sincronizar lo descarga todo de nuevo.

Desencadenantes de escena​

Los dos desencadenantes solo afectan a los calendarios compartidos. Su filtro Calendario recibe el nombre exacto de un calendario (vacío: cualquiera).

Evento modificado en un calendario​

Se activa cuando, entre dos descargas, un evento de los próximos días (7 por defecto) se ha añadido, cancelado, reprogramado, o renombrado o cambiado de lugar. El filtro Cambio conserva solo algunos. Se pasan a la escena: el evento, su inicio («martes, 13 de octubre, 10:00»), los días que faltan, su lugar, el cambio y el calendario.

La primera descarga tras un reinicio de la integración sirve de referencia: los cambios hechos mientras estaba detenida no se notifican. Cuando más de diez eventos cambian a la vez (un calendario exportado de nuevo), no se activa nada.

Calendario inaccesible​

Se activa una vez cuando un calendario compartido no se ha podido descargar durante el número de horas configurado (un enlace caducado, una dirección regenerada en Google, un servidor caído). Se pasan: el calendario, su propietario, el error y las horas transcurridas. No vuelve a activarse hasta que el calendario haya vuelto.

Acción de escena «Buscar el próximo evento de un calendario»​

Busca el próximo evento de los calendarios compartidos cuyo título contiene un texto (sin distinguir mayúsculas ni acentos), por lejano que sea, incluido un evento en curso. Filtro Calendario opcional. Resultados para los pasos siguientes: evento encontrado (1 sí, 0 no), evento, inicio, días hasta el evento (0 hoy, -1 si no se encuentra nada), lugar y calendario.

Ejemplos de escenas​

  • Recogida de residuos: desencadenante Activador programado todas las tardes a las 19:00, acción Buscar el próximo evento de un calendario con «reciclaje», condición «días hasta el evento = 1», y luego Enviar mensaje «Saque esta noche el contenedor amarillo».
  • Clase cancelada: desencadenante Evento modificado en un calendario en el calendario «Colegio», cambio «Cancelado», y luego Enviar mensaje «{{evento}} del {{inicio}} se ha cancelado».
  • Enlace caducado: desencadenante Calendario inaccesible, y luego Enviar mensaje «El calendario {{calendario}} de {{propietario}} ya no se descarga: {{error}}».

Solución de problemas​

  • Mi calendario no aparece bajo el formulario: la dirección es incorrecta o el servidor la rechaza. El administrador ve el motivo con Sincronizar ahora, y en los registros de la integración (donde la dirección se reduce al nombre de su servidor).
  • «La dirección no devuelve un archivo iCalendar»: el enlace lleva a una página web (una página de inicio de sesión, una página HTML para compartir). Copie el enlace pensado para las aplicaciones de calendario (iCal, ICS, webcal).
  • HTTP 404 en un calendario de Google: la dirección secreta se restableció en Google; pegue la nueva.
  • El calendario no está ni en el widget ni en las escenas: compártalo con el hogar en Mis calendarios.
  • Los eventos tienen una hora de desfase: compruebe la zona horaria de Gladys (Configuración → Sistema); la integración la usa para las fechas.
  • Un cambio tarda en aparecer: Google actualiza sus direcciones secretas por su cuenta, a veces solo cada pocas horas; Sincronizar ahora permite comprobarlo del lado de la integración.

Limitaciones​

  • Solo lectura: Gladys nunca escribe en el calendario de origen.
  • Cinco calendarios por usuario, 9000 eventos por calendario (por encima, se omiten los eventos pasados más antiguos), eventos desde 90 días atrás hasta 24 meses adelante como máximo.
  • Se rechaza un archivo de calendario de más de 20 MB, o un servidor que tarda más de 30 segundos en responder.
  • El núcleo de Gladys acepta 30 escrituras de calendario por minuto: con muchos calendarios grandes, la primera sincronización tarda unos minutos.
  • No se admiten los calendarios que piden un inicio de sesión distinto de una contraseña en la dirección (cuentas de Google o Microsoft por OAuth): use su dirección publicada (.ics).
  • Los cambios de un evento se ven en la siguiente descarga: el desencadenante es tan rápido como Descargar cada.

Privacidad y seguridad​

  • Las direcciones son secretos que Gladys guarda en la cuenta de cada usuario; la integración no guarda ninguna en disco, nunca las escribe en sus registros (solo el nombre del servidor) e identifica los calendarios por una huella irreversible.
  • La integración solo guarda, en su volumen /data, desde cuándo falla cada calendario (ni direcciones, ni eventos).
  • Los calendarios privados se quedan con su propietario: el widget y las escenas solo ven los compartidos.

Créditos​

Lectura de los archivos iCalendar: node-ical (Apache-2.0). Archivos de prueba tomados de node-ical, de ical de Allen Porter y de Home Assistant (Apache-2.0), cuya integración Remote Calendar inspiró esta. Sin relación con Google, Microsoft, Apple, Index Éducation ni Home Assistant.

Parámetros de configuración​

Estos son los parámetros que ICS Calendars te pide en su pantalla de configuración en Gladys.

ParámetroTipoObligatorioDescripción
FuncionamientosectionNoCada usuario añade sus propios calendarios en «Mis calendarios» abajo. Estos ajustes valen para todos: frecuencia de descarga de los feeds, horizonte de los eventos recurrentes y desencadenantes de escena.
Descargar cadaselectNoUn feed sin cambios casi no cuesta nada: la integración pregunta al servidor si el archivo ha cambiado.
Mostrar los eventos hastaselectNoLos eventos recurrentes se calculan hasta este horizonte. Los eventos de hace más de 90 días se eliminan de Gladys.
Vigilar los cambios durante (días)numberNoEl desencadenante «Evento modificado» solo informa de los eventos que empiezan dentro de este número de días.
Inaccesible después de (horas)numberNoEl desencadenante «Calendario inaccesible» se activa cuando un calendario compartido no se ha podido descargar durante este tiempo.
Idioma de los textos de las escenasselectNoFechas y textos que se pasan a las escenas, y «(sin título)» para los eventos sin nombre.

Cómo instalar ICS Calendars en Gladys​

  1. En Gladys, abre Integraciones: ICS Calendars aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
  2. Haz clic en Instalar. Gladys descarga la imagen Docker (ghcr.io/guim31/gladys-ics-calendar: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).
  3. Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
  4. También puedes instalarla directamente desde la URL de su repositorio: https://github.com/guim31/gladys-ics-calendar.

ICS Calendars 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​

ICS Calendars 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.

Suscríbete a la newsletter de Gladys Assistant

Unos pocos correos al mes sobre nuevas versiones y novedades del proyecto. Enviados por Pierre-Gilles Leymarie, fundador del proyecto. Puedes darte de baja cuando quieras 🙂