OpenProject Smart-Home-Integration, kostenlos und Open Source

OpenProject-Arbeitspakete: offen, heute fällig, überfällig, mir zugewiesen, per Szene erstellt.
Die Arbeitspakete deines OpenProject in Gladys: die offenen, die heute fälligen, die überfälligen, die dir zugewiesenen, die heute erledigten und die nächste Fälligkeit, für die ganze Instanz und für die Projekte deiner Wahl. Eine Szene reagiert, wenn dir ein Arbeitspaket zugewiesen wird, fällig oder überfällig wird, eine andere erstellt jeden Monat „Rauchmelder prüfen“, und Gladys kann jeden Morgen die heutigen Arbeitspakete vorlesen.
Rückmeldungen sind willkommen. Diese Integration wurde gegen einen echten OpenProject-Server getestet (Docker-Image
openproject/openproject:16, Community-Edition, Oktober 2026), aber noch nicht im Alltag. Wenn etwas nicht wie beschrieben funktioniert, sag es im Gladys-Forum oder in den Issues.
Was du brauchst
- Gladys Assistant 5.1.0 oder neuer.
- Ein OpenProject, das Gladys erreicht: selbst gehostet (die Community-Edition genügt) oder in der Cloud von OpenProject.
- Einen API-Schlüssel eines OpenProject-Benutzers: in OpenProject, Avatar → Mein Konto → Zugriffstoken → API → + API-Token. Fehlt der API-Bereich, schaltet ihn ein Administrator unter Administration → API und Webhooks ein („REST-Webservice aktivieren“).
Die Integration sieht die Projekte und Arbeitspakete, die dieser Benutzer sieht, und handelt in seinem Namen: Aus Gladys erstellte Arbeitspakete haben ihn als Autor, und „Mir zugewiesen“ zählt die ihm zugewiesenen Arbeitspakete. Ein eigener Benutzer, Mitglied der zu verfolgenden Projekte, ist eine gute Idee.
Einrichtung
- In Gladys Integrationen → OpenProject installieren.
- Im Bildschirm Konfiguration ausfüllen:
- Adresse: die Adresse von OpenProject wie im Browser, zum Beispiel
http://192.168.1.20:8080oderhttps://projekte.example.orghinter einem Reverse-Proxy (ein Präfix wie/openprojectbleibt erhalten); - API-Schlüssel.
- Adresse: die Adresse von OpenProject wie im Browser, zum Beispiel
- Optionen:
- Verfolgte Projekte: Namen oder Kennungen (die in der Adresse des
Projekts,
/projects/haus) durch Kommas getrennt, höchstens 20. Jedes bekommt sein Gerät, zusätzlich zu dem der ganzen Instanz. Leer: nur das Gerät der Instanz; - Uhrzeit des Ereignisses „fällig“: die Uhrzeit des Auslösers OpenProject-Arbeitspaket fällig am Fälligkeitstag (standardmäßig 8:00 Uhr);
- Selbstsignierte Zertifikate akzeptieren: für eine
https://-Adresse mit selbstsigniertem Zertifikat, nur auf deinem eigenen Server; - Aktualisierungsintervall: 1 bis 10 Minuten (standardmäßig 5). Ereigniszeiten und Mitternacht werden immer pünktlich verfolgt, egal wie lang das Intervall ist;
- Sprache der Funktionsnamen: die Namen der Funktionen beim Hinzufügen eines Geräts (standardmäßig Französisch) und die an Szenen gesendeten Texte.
- Verfolgte Projekte: Namen oder Kennungen (die in der Adresse des
Projekts,
- Speichern, dann Verbindung testen: Das liest OpenProject und meldet den Benutzer des Schlüssels, die Zahl der offenen Arbeitspakete und der verfolgten Projekte.
- Im Tab Erkennung die gewünschten Geräte hinzufügen.
Geräte
OpenProject für die ganze Instanz (alle Projekte, die der Benutzer sieht) und OpenProject Projekt für jedes verfolgte Projekt, mit diesen Funktionen:
| Funktion | Was sie anzeigt |
|---|---|
Offene Arbeitspakete | die Arbeitspakete, deren Status kein geschlossener ist |
Heute fällig | die offenen Arbeitspakete, deren Enddatum heute ist |
Überfällig | die offenen Arbeitspakete, deren Enddatum vorbei ist |
Mir zugewiesen | die offenen Arbeitspakete, die dem Benutzer des Schlüssels zugewiesen sind |
Heute erledigt | die geschlossenen Arbeitspakete, die heute zuletzt geändert wurden |
Nächste Fälligkeit | das offene Arbeitspaket mit dem nächsten Enddatum, heute eingeschlossen; sonst Keine |
Ein Arbeitspaket ist offen, solange sein Status in OpenProject nicht als
„geschlossen“ markiert ist (Closed, Rejected in der Standardeinrichtung).
Seine Fälligkeit ist sein Enddatum oder das Datum eines Meilensteins.
„Heute“ ist der Tag in der Zeitzone von Gladys. OpenProject speichert kein
Schließdatum: „Heute erledigt“ zählt die heute geänderten geschlossenen
Arbeitspakete, also auch eines, das früher geschlossen und heute kommentiert
wurde. Die Zähler eines Projekts enthalten seine Unterprojekte nicht; das
Gerät der Instanz zählt alles.
Dashboard
Das Widget Heutige Arbeitspakete zeigt zwei Kacheln (heute, überfällig) und die Liste der bis heute Abend zu erledigenden Arbeitspakete (höchstens 10), zuerst die überfälligen mit ihrem Datum, dann die heutigen, mit ihrem Projekt. Wähle in den Widget-Einstellungen ein Projektgerät, um nur dessen Arbeitspakete zu sehen, und aktiviere Nur die mir zugewiesenen, um nur deine zu sehen. Ist nichts fällig, sagt das Widget es und zeigt die nächste Fälligkeit. Projekte tragen den in Gladys vergebenen Namen, sobald ihr Gerät hinzugefügt ist.
Die Zähler können wie jede Gerätefunktion auch aufs Dashboard.
Szenen
Auslöser
- OpenProject-Arbeitspaket mir zugewiesen: Ein offenes Arbeitspaket ist jetzt dem Benutzer des Schlüssels zugewiesen: Es wurde ihm gerade zugewiesen, er hat es in seinem Namen erstellt, oder ein ihm zugewiesenes wurde wieder geöffnet.
- OpenProject-Arbeitspaket fällig: An seinem Fälligkeitstag, zur in der Konfiguration gewählten Uhrzeit, ist ein Arbeitspaket noch offen.
- OpenProject-Arbeitspaket überfällig: Um Mitternacht ist ein an diesem Tag fälliges Arbeitspaket noch offen. Einmal pro Arbeitspaket und Fälligkeit.
Filter: das Projekt (ein Projektgerät, nicht das der Instanz). An die Aktionen
übergebene Daten: das Arbeitspaket, seine ID, sein Projekt, sein Typ, sein
Status, die zugewiesene Person, seine Fälligkeit (JJJJ-MM-TT) und seine
Adresse in OpenProject.
Eine Änderung wird beim nächsten Lesen gesehen: innerhalb des Aktualisierungsintervalls. Eine von Hand auf einen schon vergangenen Tag verschobene Fälligkeit, oder auf heute nach der Uhrzeit des Ereignisses „fällig“, löst kein Ereignis „fällig“ aus (das Ereignis „überfällig“ kommt um Mitternacht trotzdem); ebenso eine spätere Uhrzeit, die in der Konfiguration gewählt wird, nachdem die heutige vorbei ist. Ein Neustart löst nichts doppelt aus; ein Arbeitspaket, das zugewiesen wurde, während die Integration gestoppt war, löst beim Neustart aus, ebenso eine Fälligkeit, die weniger als eine Stunde zurückliegt.
Aktionen
- OpenProject-Arbeitspaket erstellen: ein Betreff; das Projekt nach Namen
oder Kennung (leer: das erste verfolgte Projekt); der Typ nach Namen, genau
wie in OpenProject (leer: der erste Typ des Projekts, der kein Meilenstein
ist, standardmäßig
Task); eine optionale Fälligkeit:2026-10-24oder+3dfür in drei Tagen. Das Arbeitspaket wird im Namen des Benutzers des Schlüssels erstellt, ohne Zuweisung. OpenProject verschiebt eine Fälligkeit an einem arbeitsfreien Tag (standardmäßig das Wochenende) auf den nächsten Arbeitstag: Das Ergebnis nennt das behaltene Datum. Ergebnisse: das Arbeitspaket, seine ID, seine Adresse, sein Projekt, sein Typ, seine Fälligkeit. - Heutige OpenProject-Arbeitspakete vorlesen: die bis heute Abend zu
erledigenden Arbeitspakete als Satz
(
3 Arbeitspaket(e) bis heute Abend fällig: …. 1 überfällig.), für die ganze Instanz oder ein Projekt, für alle Arbeitspakete oder die dem Benutzer zugewiesenen. Ergebnisse: der Satz, die Zahl der bis heute Abend fälligen und der überfälligen Arbeitspakete. Schick den Satz in einer Nachricht oder lass ihn Gladys sagen.
Die Felder akzeptieren Szenenvariablen, zum Beispiel
{{triggerEvent.data.work_package}}.
Szenenideen
- Um 8:00 Uhr Heutige OpenProject-Arbeitspakete vorlesen (mir zugewiesen), dann den Satz per Telegram schicken.
- OpenProject-Arbeitspaket mir zugewiesen: Betreff und Adresse des Arbeitspakets als Nachricht schicken.
- OpenProject-Arbeitspaket überfällig im Projekt
Haus: die Erinnerungslampe orange einschalten. - Am Monatsersten OpenProject-Arbeitspaket erstellen
Rauchmelder prüfeninhaus, fällig+7d.
Fehlerbehebung
- „OpenProject antwortet nicht“: Prüfe Adresse und Port vom Gladys-Rechner aus (die Adresse öffnet OpenProject im Browser).
- „API-Schlüssel abgelehnt“: Der Schlüssel wurde widerrufen oder sein Benutzer gesperrt: Erstelle einen neuen Schlüssel.
- „Keine OpenProject-API unter dieser Adresse“: Die Adresse antwortet, aber nicht mit der OpenProject-API: Prüfe Port und Präfix.
- „Die Adresse leitet um“: Gib die
https://-Adresse ein. - „Dieser Benutzer darf das nicht“: Seine Rolle im Projekt erlaubt nicht, Arbeitspakete zu erstellen.
- „Werte abgelehnt“: OpenProject hat das Arbeitspaket abgelehnt; der Rest der Meldung ist seine Erklärung (ein falsch geschriebenes Datum, ein Pflicht-Benutzerfeld…).
- Ein Projekt fehlt: Der Benutzer muss Mitglied sein; ein unter Verfolgte Projekte eingetragener Name ohne passendes Projekt wird ignoriert, und Verbindung testen meldet ihn. Archivierte Projekte werden ausgelassen.
- „Mehrere Projekte haben diesen Namen“: Gib seine Kennung an.
- Protokolle:
LOG_LEVEL=debugam Container zeigt jedes Lesen.
Grenzen
- OpenProject wird alle 1 bis 10 Minuten gelesen (und zu den Ereigniszeiten und um Mitternacht): Eine Änderung in OpenProject erscheint in Gladys innerhalb dieser Zeit. Die Webhooks von OpenProject werden nicht genutzt. Jedes Lesen macht sieben Anfragen (Projekte, drei Zählungen, überfällige, datierte und zugewiesene Arbeitspakete).
- Alle überfälligen Arbeitspakete werden gezählt; die Listen enthalten höchstens die 1000 jüngsten überfälligen, 1000 von gestern bis 60 Tage im Voraus fällige und 1000 zugewiesene; darüber hinaus melden es die Protokolle.
- Die Integration erstellt Arbeitspakete; sie ändert, schließt, weist sie nicht zu und löscht sie nicht, und liest weder ihre Kommentare noch ihre Anhänge noch die aufgewendete Zeit.
- Der API-Schlüssel wird von Gladys in der Konfiguration der Integration
gespeichert und nur an die eingestellte Adresse geschickt. Gladys speichert
keine OpenProject-Daten außerhalb von
/data/openproject-state.json(die Zeit des letzten Lesens und die IDs der zugewiesenen Arbeitspakete, damit kein Ereignis doppelt ausgelöst wird). - Keine Verbindung zu OpenProject GmbH. OpenProject ist eine Marke der OpenProject GmbH.
Konfigurationseinstellungen
Diese Einstellungen fragt OpenProject in seinem Konfigurationsbildschirm in Gladys ab.
| Einstellung | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| Dein OpenProject | section | Nein | Ein selbst gehostetes OpenProject (Community-Edition genügt) oder ein OpenProject in der Cloud. Erstelle einen API-Schlüssel in OpenProject: Avatar, Mein Konto, Zugriffstoken, API, + API-Token. |
| Adresse | string | Ja | Adresse von OpenProject wie im Browser, mit https:// für HTTPS und :Port, falls nicht der Standard. |
| API-Schlüssel | secret | Ja | Gezählt werden die Arbeitspakete, die dieser Benutzer sieht; aus Gladys erstellte tragen seinen Namen. |
| Optionen | section | Nein | |
| Verfolgte Projekte | string | Nein | Namen oder Kennungen durch Kommas getrennt (höchstens 20): je ein Gerät, zusätzlich zum Gerät der ganzen Instanz. Ohne Unterprojekte. |
| Uhrzeit des Ereignisses „fällig“ | select | Nein | Am Fälligkeitstag wird das Szenenereignis „OpenProject-Arbeitspaket fällig“ zu dieser Uhrzeit ausgelöst (Zeit von Gladys). |
| Selbstsignierte Zertifikate akzeptieren | boolean | Nein | Für eine https://-Adresse mit selbstsigniertem Zertifikat. Nur für deinen eigenen Server aktivieren. |
| Aktualisierungsintervall | select | Nein | Wie oft OpenProject gelesen wird (jeweils sieben Anfragen). Ereigniszeiten und Mitternacht werden immer pünktlich verfolgt. |
| Sprache der Funktionsnamen | select | Nein | Namen der Funktionen beim Hinzufügen eines Geräts und an Szenen gesendete Texte. |
So installierst du OpenProject in Gladys
- Öffne in Gladys Integrationen: OpenProject erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
- Klicke auf Installieren. Gladys lädt das Docker-Image (
ghcr.io/guim31/gladys-openproject:1.0.0) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration). - Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
- Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-openproject.
OpenProject benötigt Gladys >=5.1.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
OpenProject 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.
- Alle Integrationen durchsuchen, native und aus der Community
- Deine eigene externe Integration bauen und veröffentlichen
- Quellcode auf GitHub — Quelle dieser Dokumentation