Zum Hauptinhalt springen

Microsoft 365 Smart-Home-Integration, kostenlos und Open Source

Microsoft 365-Integration für Gladys Assistant

Outlook-Kalender und Microsoft To Do in Gladys: Belegt-Status, Auslöser, Aufgaben aus Szenen.

Dein Outlook-Kalender und deine Microsoft To Do-Listen in Gladys, über die offizielle Microsoft-Graph-API: beschäftigt oder frei, der aktuelle und der nächste Termin, offene und überfällige Aufgaben, Szenen, die mit einem Termin starten oder eine Aufgabe hinzufügen, und ein Dashboard-Widget mit den Terminen des Tages.

Funktioniert mit einem privaten Microsoft-Konto (Outlook.com, Hotmail, Live) und mit einem Geschäfts- oder Schulkonto (Microsoft 365). Ergänzt die Integration „ICS-Kalender“: hier kein öffentlicher Kalenderlink, und Gladys kann auch schreiben (Aufgaben, Termine).

Ohne Testkonto entwickelt: Rückmeldungen willkommen. Die Anmeldung und jede Antwort von Microsoft wurden nach der Dokumentation von Microsoft und aufgezeichneten Antworten gebaut, bisher ohne Test an einem echten Konto. Erzähl uns im Gladys-Forum, wie es läuft.

Diese Integration ist nicht mit Microsoft verbunden. Microsoft, Microsoft 365, Outlook und To Do sind Marken der Microsoft-Unternehmensgruppe.

Was du brauchst​

  • Gladys 5.2.0 oder neuer.
  • Ein Microsoft-Konto mit Postfach: Outlook.com für ein privates Konto, Exchange Online für ein Geschäftskonto (To Do und der Kalender liegen im Postfach).
  • Deine eigene App-Registrierung in Microsoft Entra (kostenlos, 5 Minuten, siehe unten). Microsoft verlangt, dass jede Anwendung, die einen Kalender liest, registriert ist; mit deiner eigenen hat niemand sonst Zugriff auf deine Daten, und die Kontingente von Microsoft gehören dir allein.

Deine App-Registrierung erstellen​

  1. Öffne App-Registrierungen in Microsoft Entra und melde dich an. Mit einem privaten Konto kann Microsoft zuerst verlangen, ein kostenloses Verzeichnis anzulegen (ein kostenloses Azure-Konto): Die Registrierung selbst kostet nichts.
  2. Neue Registrierung: ein beliebiger Name (zum Beispiel „Gladys“). Unterstützte Kontotypen: Konten in einem beliebigen Organisationsverzeichnis und persönliche Microsoft-Konten. Lass den Umleitungs-URI leer. Registrieren.
  3. Kopiere auf der Seite Übersicht die Anwendungs-ID (Client).
  4. Authentifizierung → Erweiterte Einstellungen → Öffentliche Clientflows zulassen: Ja, dann Speichern. Ohne das lehnt Microsoft die Anmeldung per Code ab (AADSTS7000218).
  5. API-Berechtigungen → Berechtigung hinzufügen → Microsoft Graph → Delegierte Berechtigungen: Wähle Calendars.ReadWrite, Tasks.ReadWrite und offline_access (User.Read ist schon da). Kein Clientgeheimnis, kein Zertifikat: Die Integration ist ein öffentlicher Client.

Bei einem Geschäftskonto muss eventuell ein Administrator diese Berechtigungen für die Organisation erteilen (Administratorzustimmung erteilen). Lässt deine Organisation nur ihre eigenen Konten zu, wähle in Schritt 2 „Nur Konten in diesem Organisationsverzeichnis“ und gib die Verzeichnis-ID (Mandant) in der Einstellung Mandant ein.

Konfiguration​

In Gladys, Integrationen → Microsoft 365 → Konfiguration:

  • Anwendungs-ID (Client): die in Schritt 3 kopierte ID.
  • Mandant: common (private und geschäftliche Konten). consumers nur für private Konten, organizations nur für Geschäftskonten, oder deine Verzeichnis-ID.
  • Microsoft 365 lesen alle: 1 bis 15 Minuten (standardmäßig 5). Die Auslöser bleiben unabhängig von der Wahl minutengenau.
  • Stichwörter für die Szenen-Auslöser: Wörter, die in Termintiteln gesucht werden, durch Kommas getrennt (siehe Szenen-Auslöser).
  • Sprache der Gerätetexte: Namen der Funktionen (beim Hinzufügen eines Geräts festgelegt), Texte des aktuellen und nächsten Termins, Meldungen. Standardmäßig Französisch.

Speichere, dann nutze die Aktionen unter dem Formular:

  • Anmelden: zeigt einen Code und eine Microsoft-Seite (https://login.microsoft.com/device). Öffne die Seite auf einem beliebigen Gerät, gib den Code innerhalb von 15 Minuten ein und melde dich mit deinem Microsoft-Konto an. Der Status der Konfigurationsseite zeigt den Code solange an und wechselt dann zu verbunden. Die Geräte erscheinen im Tab Entdecken.
  • Verbindung prüfen: zeigt, welches Konto angemeldet ist und wie viele Kalender und To-Do-Listen es enthält, und aktualisiert den Tab Entdecken.
  • Abmelden: löscht die Microsoft-Token aus Gladys. Mach das, bevor du dich mit einem anderen Konto anmeldest. Um den Zugriff auch bei Microsoft zu entziehen, entferne die Anwendung aus den Apps deines Kontos oder aus „Meine Apps“ (Geschäftskonto).

Die Sitzung hält, solange sie genutzt wird: Microsoft beendet sie nach 90 Tagen ohne Nutzung, oder wenn sich das Passwort ändert oder der Zugriff entzogen wird. Der Status fordert dann zur erneuten Anmeldung auf.

Geräte​

Der Tab Entdecken zeigt ein Gerät pro Outlook-Kalender und eins pro To-Do-Liste des Kontos. Füge die gewünschten hinzu: Nur diese werden gelesen.

Outlook-Kalender​

FunktionWert
Beschäftigt1 während eines Termins, der als beschäftigt, mit Vorbehalt oder abwesend angezeigt wird; 0 bei frei oder an anderem Ort tätig
Abwesend1 während eines Termins, der als abwesend angezeigt wird (Urlaub, Arzttermine)
Aktueller TerminTitel des laufenden Termins (zuerst einer mit Uhrzeit), oder „Keiner“
Nächster TerminTitel und Beginn des nächsten Termins innerhalb von zwei Wochen („Zahnarzt · morgen 14:00“), oder „Keiner“

Abgesagte Termine und abgelehnte Einladungen werden ignoriert. Ganztägige Termine decken ihren ganzen Tag ab.

To-Do-Liste​

FunktionWert
Offene Aufgabennicht erledigte Aufgaben
Überfällige Aufgabenoffene Aufgaben, deren Fälligkeit vor heute liegt
Heute fällige Aufgabenoffene Aufgaben, die heute fällig sind

Eine heute fällige Aufgabe ist vor morgen nicht überfällig: Die Zähler ändern sich um Mitternacht.

Dashboard-Widget​

Termine und Aufgaben: der Rest des Tages in Outlook (höchstens 8 Termine, „Jetzt“ beim laufenden), die Zähler offener und überfälliger Aufgaben einer To-Do-Liste als Live-Kacheln, ihre ersten fünf offenen Aufgaben mit Fälligkeit (rot bei überfällig, orange bei heute fällig) und ein Button Aufgabe hinzufügen, der ein kleines Formular öffnet (Titel, Fälligkeit). Einstellungen: der Kalender (leer: alle hinzugefügten Kalender) und die To-Do-Liste (leer: die Liste, falls nur eine hinzugefügt wurde).

Szenen-Auslöser​

Der Kern vergleicht die Filter nur auf Gleichheit: „Der Titel enthält ein Wort“ entscheidet die Integration, anhand der Einstellung Stichwörter für die Szenen-Auslöser. Ein Termin, dessen Titel eines dieser Wörter enthält (ohne Groß-/Kleinschreibung und Akzente), trägt das zuerst gefundene; eine Szene filtert darauf, indem du das Stichwort so eingibst, wie es in den Einstellungen steht.

Jeder Termin-Auslöser gibt der Szene: Titel, Ort, Beginn und Ende des Termins, den Kalender und das gefundene Stichwort.

Outlook-Termin beginnt​

Wenn ein Termin eines hinzugefügten Kalenders beginnt. Filter: Kalender, Stichwort.

Outlook-Termin endet​

Wenn ein Termin vorbei ist. Filter: Kalender, Stichwort.

Outlook-Termin in N Minuten​

5, 10, 15, 30, 60 oder 120 Minuten vor Beginn eines Termins (ohne ganztägige Termine). Filter: Minuten (Pflicht), Kalender, Stichwort.

To-Do-Aufgabe überfällig​

Wenn eine offene Aufgabe ihre Fälligkeit überschreitet (bei der ersten Prüfung nach Mitternacht). Filter: die To-Do-Liste. Gibt die Aufgabe, ihre Fälligkeit und die Liste weiter. Aufgaben, die beim ersten Lesen der Liste schon überfällig sind, werden nicht gemeldet, und jede Aufgabe wird nur einmal gemeldet.

Die Auslöser werden alle 30 Sekunden aus den bereits gelesenen Terminen berechnet: Ein Termin löst pünktlich aus, auch wenn Microsoft 365 nur alle 15 Minuten gelesen wird. Ein um mehr als 5 Minuten verpasster Beginn (Gladys oder die Integration gestoppt) wird nicht verspätet gemeldet, und aus Daten, die älter als 2 Stunden sind, wird nichts gemeldet.

Szenen-Aktionen​

To-Do-Aufgabe hinzufügen​

Zu einer zu Gladys hinzugefügten To-Do-Liste, mit einem Titel (Szenenvariablen erlaubt) und einer optionalen Fälligkeit in Tagen (0: heute, 1: morgen). Gibt den Titel zurück.

To-Do-Aufgabe erledigen​

Erledigt die offene Aufgabe, deren Titel der Text ist (ohne Groß-/Kleinschreibung und Akzente), oder die einzige, deren Titel ihn enthält. Mehrere Teiltreffer: Nichts wird erledigt. Gibt „Aufgabe erledigt (1 ja, 0 nein)“ und den Titel der Aufgabe zurück.

Outlook-Termin hinzufügen​

Fügt einem Kalender einen „beschäftigt“-Termin hinzu, jetzt oder in bis zu 7 Tagen (in Minuten), mit einer Dauer von 5 Minuten bis 24 Stunden. Gibt die Beginnzeit zurück.

Beispielszenen​

  • Homeoffice: Stichwort Homeoffice. Auslöser „Outlook-Termin beginnt“, Stichwort Homeoffice → Heizung im Arbeitszimmer auf Komfort; „Outlook-Termin endet“ → zurück auf Eco.
  • Pünktlich losgehen: Auslöser „Outlook-Termin in N Minuten“, 30 Minuten, Stichwort Zahnarzt → Nachricht „{{triggerEvent.data.title}} um {{triggerEvent.data.start}}, {{triggerEvent.data.location}}“.
  • Bitte nicht stören: Die Funktion „Beschäftigt“ des Arbeitskalenders wechselt auf 1 → Klingel stumm, eine Lampe vor dem Arbeitszimmer wird rot; zurück auf 0 → normal.
  • Einkaufsliste: ein Taster oder ein Sprachbefehl → „To-Do-Aufgabe hinzufügen“ „Milch“ zur Liste „Einkauf“.
  • Haushalt: Auslöser „To-Do-Aufgabe überfällig“ auf der Liste „Zuhause“ → Benachrichtigung „{{triggerEvent.data.title}} ist überfällig“.

Aktualisierung und Grenzen von Microsoft​

Die Integration liest Microsoft Graph selbst, mit ihrem eigenen Timer (sie verlässt sich nicht auf die Abfrage durch Gladys): eine Anfrage pro hinzugefügtem Kalender oder Liste und Zeitraum, plus eine pro 200 Termine oder 100 Aufgaben. Microsoft erlaubt 10.000 Anfragen pro 10 Minuten und 4 gleichzeitig für eine Anwendung und ein Postfach: Mit einem Zeitraum von einer Minute und 10 Geräten nutzt die Integration 100. Die Anfragen gehen einzeln raus. Bittet Microsoft um weniger Anfragen (HTTP 429 mit Retry-After), wartet die Integration die verlangte Zeit, ohne Anfrage in der Zwischenzeit.

Werte werden nur bei einer Änderung veröffentlicht, und alle 6 Stunden, damit Gladys sie nie als veraltet anzeigt. Die Nutzung von Microsoft Graph folgt den Nutzungsbedingungen der Microsoft-APIs.

Fehlerbehebung​

  • „Microsoft hat die Anmeldung abgelehnt (invalid_request (AADSTS50059))“ oder AADSTS700016: Die Client-ID ist unbekannt, oder die App ist nur für eine Organisation registriert, während der Mandant common ist: Prüfe die ID, oder gib die Verzeichnis-ID als Mandant ein.
  • AADSTS7000218: „Öffentliche Clientflows zulassen“ ist nicht aktiviert (Schritt 4).
  • AADSTS65001 oder „Zustimmung“: ein Geschäftskonto, dessen Administrator die Berechtigungen erteilen muss.
  • Der Code ist abgelaufen: Er gilt 15 Minuten; starte „Anmelden“ erneut.
  • „Die Microsoft-Sitzung ist abgelaufen oder wurde widerrufen“: Starte „Anmelden“ erneut.
  • Eine To-Do-Liste oder ein Geschäftskalender meldet einen Fehler: Das Konto braucht ein Exchange- Online-Postfach (To Do eines Geschäftskontos ohne Postfach ist über Graph nicht erreichbar).
  • Kein Gerät im Tab Entdecken: Starte „Verbindung prüfen“, dann den Scan im Tab Entdecken.
  • Protokolle: Die Integration protokolliert nur ihren Lebenszyklus und die Probleme (einmal zu Beginn, einmal am Ende). LOG_LEVEL=debug zeigt den Rest. Token und Codes werden nie protokolliert.

Grenzen​

  • Ein Microsoft-Konto pro Installation (das des Administrators), nicht eins pro Gladys-Benutzer.
  • Der Kalender wird von gestern bis zwei Wochen voraus gelesen; keine Termine in der Kalenderansicht von Gladys (das macht die Integration „ICS-Kalender“).
  • Die Namen der Funktionen werden beim Hinzufügen eines Geräts festgelegt; eine spätere Änderung der Sprache benennt nichts um.
  • Geteilte Kalender erscheinen, wenn Microsoft sie in den Kalendern des Kontos auflistet; Gruppenkalender nicht.
  • Keine Erinnerungen, keine Teilnehmer, keine Bearbeitung von Terminen über „Outlook-Termin hinzufügen“ hinaus.
  • Ohne Testkonto entwickelt: Die echten Antworten eines Microsoft-Kontos können noch in einem Detail abweichen.

Datenschutz und Sicherheit​

  • Das Microsoft-Aktualisierungstoken bleibt in Gladys, in /data/tokens.json (nur für den Container lesbar); das eine Stunde gültige Zugriffstoken bleibt im Speicher. Sonst wird nichts gespeichert: weder Termine noch Aufgaben.
  • Die Integration spricht nur mit login.microsoftonline.com und graph.microsoft.com.
  • Angefragte Berechtigungen: Calendars.ReadWrite, Tasks.ReadWrite, offline_access und User.Read (dein Name und die Konto-ID, um die Sitzung zu benennen).

Konfigurationseinstellungen​

Diese Einstellungen fragt Microsoft 365 in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Bevor du loslegstsectionNeinDiese Integration meldet sich mit deiner eigenen, kostenlosen Azure-App-Registrierung an: Erstelle sie in Microsoft Entra („Konten in einem beliebigen Organisationsverzeichnis und persönliche Microsoft-Konten“, „Öffentliche Clientflows zulassen“: Ja, delegierte Berechtigungen Calendars.ReadWrite, Tasks.ReadWrite, offline_access, User.Read), kopiere ihre Anwendungs-ID (Client) unten hinein und speichere. Klicke dann auf „Anmelden“ und gib den angezeigten Code auf der Microsoft-Seite ein. Die Dokumentation erklärt jeden Schritt. Nicht mit Microsoft verbunden.
Anwendungs-ID (Client)stringJaAuf der Übersichtsseite deiner App-Registrierung.
MandantstringNein„common“ passt für private und geschäftliche Konten. Für eine nur für deine Organisation registrierte App gib deren Verzeichnis-ID (Mandant) ein.
Microsoft 365 lesen alleselectNeinDie Auslöser bleiben unabhängig von der Wahl minutengenau, denn die bereits gelesenen Termine genügen für ihre Berechnung.
Stichwörter für die Szenen-AuslöserstringNeinDurch Kommas getrennt. Ein Termin, dessen Titel eines davon enthält (ohne Groß-/Kleinschreibung und Akzente), trägt es, und eine Szene kann danach filtern.
Sprache der GerätetexteselectNeinNamen der Funktionen (beim Hinzufügen eines Geräts festgelegt), Termintexte und Szenen-Meldungen.

So installierst du Microsoft 365 in Gladys​

  1. Öffne in Gladys Integrationen: Microsoft 365 erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
  2. Klicke auf Installieren. Gladys lädt das Docker-Image (ghcr.io/guim31/gladys-microsoft365:1.0.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration).
  3. Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
  4. Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-microsoft365.

Microsoft 365 benötigt Gladys >=5.2.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.

Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.

Über externe Integrationen​

Microsoft 365 ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.

Abonniere den Newsletter von Gladys Assistant

Ein paar E-Mails im Monat zu neuen Releases und Neuigkeiten aus dem Projekt. Verschickt von Pierre-Gilles Leymarie, dem Gründer des Projekts. Jederzeit abbestellbar 🙂