DMS in die Hausautomatisierung einbinden¶
Eine Lampe im Flur, die leuchtet, wenn neue Post da ist. Eine Mitteilung aufs Handy, wenn eine Frist ansteht. Die Zahl der offenen Aufgaben auf dem Wand-Tablet. Dafür bindest du das DMS in deine Hausautomatisierung ein – ohne dass jemand das DMS öffnen muss.
Die Hausautomatisierung bekommt dabei nur Zahlen: wie viel neue Post, wie viel unter Zu erledigen, wie viele Fristen in den nächsten 7 Tagen und wie viele überfällig sind. Titel, Absender, Namen oder Dokumente sieht sie nie.
Was es gibt¶
| System | Stand |
|---|---|
| Homey Pro | App DMS – Werte am Gerät und Flow-Karten wie „Neue Post angekommen“ und „Frist wird fällig“. Anleitung im README der Homey-App. |
| Home Assistant | später (motom001/dms-clients#3) |
| Andere (Node-RED, ioBroker, eigene Skripte) | über die Zähler-Schnittstelle mit demselben Schlüssel, sofort per Webhook |
Die Apps und Anbindungen liegen im Repository motom001/dms-clients. Du brauchst keine davon – das DMS ist vollständig im Browser bedienbar.
Nur im Heimnetz
Die Hausautomatisierung fragt dein DMS direkt im Heimnetz ab. Deshalb geht es mit Homey Pro, nicht mit Homey Cloud: Ein Dienst im Internet erreicht ein DMS in deinem Heimnetz nicht.
Schlüssel „nur Zähler“ anlegen¶
Die Hausautomatisierung meldet sich mit einem API-Schlüssel an. Nimm dafür die Stufe nur Zähler:
- Melde dich als die Person an, deren Zahlen angezeigt werden sollen – die Zahlen gelten immer für den Benutzer des Schlüssels und in seinen Rechten.
- Öffne Profil → Sicherheit → API-Schlüssel und erzeuge einen neuen Schlüssel, z. B. „Homey“.
- Wähle unter Rechte die Stufe nur Zähler.
- Kopiere den Schlüssel gleich (er beginnt mit
dms_) – er ist nur jetzt ganz zu sehen – und trag ihn zusammen mit der Adresse deines DMS (z. B.https://dms.home.arpa) in der Hausautomatisierung ein.
Warum nur Zähler: Dieser Schlüssel ruft nur die Zahlen ab; alles andere lehnt das DMS ab, auch das Laufwerk. Geht er verloren – etwa mit einer Sicherung der Hausautomatisierung –, erfährt jemand höchstens, wie viel Post und Aufgaben du hast. Die Homey-App funktioniert auch mit nur lesen, empfiehlt aber nur Zähler; einen Schlüssel lesen und schreiben lehnt sie ab.
Für mehrere Personen
Soll die Familie die Zahlen von Lena und Jonas getrennt sehen, legt jede Person ihren eigenen Schlüssel nur Zähler an. In der Homey-App wird daraus je Person ein eigenes Gerät „DMS“.
Brauchst du den Schlüssel nicht mehr, löschst du ihn unter Profil → Sicherheit → API-Schlüssel; die Hausautomatisierung meldet dann „Schlüssel ungültig“.
Wie schnell die Hausautomatisierung Neues bemerkt¶
Die Homey-App fragt das DMS in einem festen Abstand ab, Vorgabe alle 5 Minuten. Hat sich nichts geändert, antwortet das DMS nur mit „nichts Neues“ – das kostet praktisch nichts. Neue Post bemerkt die Hausautomatisierung also spätestens nach einem Abfrage-Abstand.
Soll es sofort gehen, richtest du zusätzlich einen Webhook ein (nächster Abschnitt): Dann meldet sich das DMS selbst, wenige Sekunden nachdem neue Post da ist, und die Abfrage darf seltener laufen.
Sofort melden (Webhook)¶
Mit einem Webhook meldet sich das DMS bei deiner Hausautomatisierung, sobald sich deine Zahlen ändern. Die Meldung enthält nur die Zahlen – dieselben wie beim Schlüssel nur Zähler –, nie Titel, Absender oder Inhalte.
Einmal vorab (Administrator): Unter Werkbank → Webhooks gibt ein Administrator die Adresse der Hausautomatisierung als Ziel frei, z. B. http://homey.home.arpa oder http://192.168.178.20:1880. Nur an freigegebene Ziele meldet das DMS. Ohne TLS (http://) geht das nur im Heimnetz; sonst braucht es https://.
Dann du:
- Öffne Profil → Benachrichtigungen → Sofort melden (Webhooks) und wähle Neuen Webhook anlegen.
- Gib einen Namen (z. B. „Node-RED“) und die Adresse des Empfängers ein, z. B.
http://192.168.178.20:1880/dms. - Kopiere das Geheimnis (es beginnt mit
whsec_) und trag es beim Empfänger ein – es ist nur jetzt ganz zu sehen. Damit prüft der Empfänger, dass die Meldung wirklich vom DMS kommt. - Gleich danach kommt eine erste Meldung mit deinen aktuellen Zahlen. Mit Probe senden schickst du jederzeit eine weitere; darunter siehst du, ob sie angekommen ist.
Was dabei geschieht:
- Mehrere Änderungen auf einmal – etwa 20 Briefe aus dem Scanner – kommen als wenige Meldungen: höchstens eine je 30 Sekunden, und die letzte hat immer den neuesten Stand.
- Ist die Hausautomatisierung aus, versucht es das DMS mit wachsenden Abständen erneut, etwa einen Tag lang. Den Fehler siehst du am Webhook. Klappt es so lange nicht, schaltet das DMS den Webhook ab und sagt dir das im Profil; die Administratoren bekommen eine E-Mail. Mit Einschalten geht es weiter.
- Doppelt angekommen? Jede Meldung hat eine Ereignis-Id. Kommt dieselbe Id noch einmal (etwa nach einem Neustart des DMS), ist es eine Wiederholung und kann übergangen werden.
Eine Meldung sieht so aus:
{"art":"zaehler.geaendert","id":"7c0e6a8e-3d1f-4f0a-9c55-2b8f0d3e4a11","zeit":"2026-11-03T07:15:02.000Z","daten":{"neuePost":2,"zuErledigen":5,"anstehend":3,"ueberfaellig":1,"stand":42,"geaendert":"2026-11-03T07:15:00.000Z"}}
Bei Probe senden steht unter art der Wert probe.
Beispiel: Node-RED¶
Ein kleiner Flow: Ein http in-Knoten nimmt die Meldung an, ein function-Knoten prüft die Signatur, danach kannst du verzweigen (Lampe an, Mitteilung …).
- Knoten http in: Methode
POST, Adresse/dms. Dahinter einen Knoten http response mit Status204, damit das DMS weiß, dass die Meldung angekommen ist. -
Knoten function zwischen beide, unter Setup → Module das Modul
cryptomit dem Namencryptoeintragen, und im Reiter Nachricht empfangen:// Geheimnis des Webhooks, z. B. als Umgebungsvariable des Flows. const geheimnis = env.get('DMS_WEBHOOK_GEHEIMNIS'); const zeit = msg.req.headers['x-dms-zeit']; const signatur = msg.req.headers['x-dms-signatur'] || ''; // Das DMS schickt kompaktes JSON; JSON.stringify ergibt wieder denselben Text. const rumpf = JSON.stringify(msg.payload); const soll = 'v1=' + crypto.createHmac('sha256', geheimnis).update(zeit + '.' + rumpf).digest('hex'); const frisch = Math.abs(Date.now() / 1000 - Number(zeit)) < 300; if (!frisch || signatur.length !== soll.length || !crypto.timingSafeEqual(Buffer.from(signatur), Buffer.from(soll))) { msg.statusCode = 401; return [null, msg]; // Ausgang 2: ablehnen } // Wiederholungen übergehen const gesehen = flow.get('dms_ids') || []; if (gesehen.includes(msg.payload.id)) return [null, msg]; flow.set('dms_ids', [...gesehen.slice(-50), msg.payload.id]); msg.payload = msg.payload.daten; // { neuePost, zuErledigen, anstehend, ueberfaellig, stand, geaendert } return [msg, msg]; // Ausgang 1: weiter im Flow, Ausgang 2: Antwort -
Den function-Knoten auf 2 Ausgänge stellen: Ausgang 2 an http response, Ausgang 1 an deine Logik, z. B. einen switch auf
msg.payload.neuePost > 0.
In der Homey-App kommt das sofortige Melden mit einer späteren Version; bis dahin fragt sie im festen Abstand ab. Format, Köpfe und die Prüfung der Signatur in anderen Sprachen stehen im Entwicklerhandbuch.
Technische Einzelheiten zur Schnittstelle stehen im Administratorhandbuch.