đź§ą Gladys befreit ihr Herz: Die Zukunft der nativen Integrationen

Hallo zusammen!

Seit dem Erscheinen der Community-Integrationen (einfach installierbar aus dem Katalog, jede in ihrem eigenen Container isoliert) ist das Ökosystem regelrecht explodiert: über 900 Integrationen sind jetzt im Store verfügbar. Danke an alle Entwickler, die sie veröffentlichen :folded_hands:

Das ändert alles für den Kern von Gladys. Eine native Integration ist Code, den man pflegen, testen und mit jeder Version von Gladys ausliefern muss, selbst wenn die API eines Herstellers von heute auf morgen ändert. Eine Community-Integration hingegen entwickelt sich in ihrem eigenen Tempo und aktualisiert sich, ohne auf eine Gladys-Version zu warten. Und wenn sie abstürzt, läuft Gladys weiter.

Das Ziel: Alles aus dem Kern entfernen, was entfernt werden kann, um nur das zu behalten, was wirklich intern zu Gladys gehört oder wirklich unabdingbar ist. Hier ist das vollständige Inventar der nativen Integrationen und was aus ihnen wird.

:white_check_mark: Was im Kern bleibt

Integration Warum sie bleibt
Matter Der Standard fĂĽr das vernetzte Zuhause, die Grundlage von Gladys
Zigbee2mqtt Das am häufigsten von der Community genutzte Protokoll
MQTT Das Grundbaustein des DIY: MQTT-Geräte, MQTT-Szenenauslöser und -aktionen
Energieverbrauch, Thermostat Das sind Funktionen von Gladys, keine Markenintegrationen
MCP Der Server, der es Ihren KI-Assistenten ermöglicht, Gladys zu steuern
Amazon Alexa, Google Home, Enedis, OwnTracks, KĂĽnstliche Intelligenz Dienste, die mit Gladys Plus verbunden sind
Apple HomeKit Exponiert Ihre Gladys-Geräte in der Apple Home-App, wie Alexa und Google Home

:warning: Abgewertete Integrationen: Ein Community-Ersatz existiert bereits

Diese nativen Integrationen tragen bereits das Label „Bald abgewertet“ und werden in einer zukünftigen Version von Gladys entfernt

Ich denke, wir mĂĽssen bald ĂĽber ihre Entfernung kommunizieren!

Der Ersatz ist im Katalog verfĂĽgbar:

Native Integration Community-Ersatz
Philips Hue Philips Hue
TP-Link TP-Link Kasa (und Tapo fĂĽr die Tapo-Reihe)
Tuya Tuya
Netatmo Netatmo
MELCloud MELCloud (und MELCloud Home fĂĽr MELCloud Home-Konten)
Sonos Sonos
Z-Wave JS UI Z-Wave JS UI
Telegram Telegram
Nextcloud Talk Nextcloud Talk
Free Mobile Free Mobile SMS
OpenWeather OpenWeather, oder Open-Meteo / Météo France

Wie migriert man ohne Datenverlust?

  1. Installieren Sie die Community-Integration aus dem Katalog, konfigurieren Sie sie und erstellen Sie Ihre Geräte.
  2. Auf der Seite der alten Integration klicken Sie auf Migrieren für jedes Gerät und wählen Sie das entsprechende Gerät aus. Gladys verschiebt die Historie, aktualisiert Ihre Szenen und Ihre Dashboards und entfernt dann das alte Gerät.

Für die Messaging-Dienste (Telegram, Nextcloud Talk, Free Mobile) und das Wetter gibt es keine Geräte, die migriert werden müssen: Installieren Sie die neue Integration und ersetzen Sie in Ihren Szenen die Aktionen, die die alte Integration verwendet haben (z. B. wird „SMS senden“ zu „Nachricht senden“ über den Free Mobile SMS-Kanal).

:soon_arrow: Nächste Abwertungen: Ersatz verfügbar, Feedback willkommen

Diese Integrationen haben bereits ein Community-Äquivalent. Bevor wir sie offiziell abwerten, möchten wir sicherstellen, dass nichts fehlt: Wenn Sie sie verwenden, testen Sie den Ersatz und sagen Sie uns, was nicht funktioniert.

Native Integration Community Replacement Notes
CallMeBot CallMeBot Offizielle Integration
eWeLink Sonoff / eWeLink Die native Version funktioniert seit der eWeLink-API-Änderung von 2023 nicht mehr
Broadlink Broadlink RM-Fernbedienungen (IR/RF), SP-Steckdosen, MP1-Multisteckdosen, A1-Sensoren
Tasmota Tasmota Per MQTT oder HTTP
Xiaomi Home (Xiaomi/Aqara-Gateways) Zigbee2mqtt oder Matter für Aqara-Sensoren, Xiaomi MIoT für Wi-Fi-Geräte Die native Version basiert auf dem Entwicklermodus der alten Gateways, der nicht mehr existiert
EcoWatt RTE éCO2mix, EcoWatt & EcoGaz Erfordert einen kostenlosen Schlüssel vom RTE-Datenportal

:person_raising_hand: Herausnehmen aus dem Kern: Wir suchen Freiwillige!

Diese Integrationen haben noch keinen Community-Ersatz. Das offizielle Template und das SDK stehen Ihnen zur VerfĂĽgung, um loszulegen. Melden Sie sich in diesem Thema, um zu vermeiden, dass zwei Personen dasselbe machen!

Heute verfĂĽgbar:

Integration Notes
CalDAV Der „Kalender“-Typ existiert bereits. ICS Calendars deckt veröffentlichte .ics-Kalender ab, es fehlt die CalDAV-Synchronisation mit Anmeldedaten (Nextcloud, iCloud…)
Nuki Schlösser per lokalem MQTT und über die Nuki-Web-API
Google Cast mDNS-Erkennung von Gladys, Sprachansagen auf den Lautsprechern
Airplay Gleiches Prinzip wie Google Cast
Node-RED Start des Node-RED-Containers mit seiner im lokalen Netzwerk zugänglichen Oberfläche
EDF Tempo EDF Tempo-Kalender existiert bereits: Es fehlt die Versorgung des „tempo“-Tarifkalenders, der von den Energieverträgen verwendet wird

Zuerst eine Erweiterung der Community-Integrationen:

Integration Was fehlt In der Zwischenzeit
Bluetooth-Präsenz Zugriff auf den Bluetooth-Adapter von einer Integration Nichts ändert sich, die native Integration bleibt bestehen
LAN Manager Ein von Gladys bereitgestellter Scan des lokalen Netzwerks Die Präsenz über Ihren Router oder Ihre Box existiert bereits: UniFi, OpenWrt, NetAlertX, Livebox, ASUS, NETGEAR…
Kameras (RTSP) Live-Videostreaming (Community-Integrationen senden Bilder, noch kein Live-Stream) go2rtc, ONVIF und Frigate existieren bereits fĂĽr Bilder
Matterbridge Jetzt, da die externen Gladys-Integrationen existieren, finde ich, dass Matterbridge nicht mehr viel nĂĽtzt, man muss sehen, ob wir diese Integration nicht veralten lassen wollen

:speech_balloon: Ihr Wort ist gefragt

  • Eine Community-Integration bietet nicht alles, was die native Version konnte? Sagen Sie es uns, genau das wollen wir wissen, bevor wir etwas löschen.
  • Sie möchten eine Integration aus der Liste „Herausnehmen aus dem Kern“ ĂĽbernehmen? Melden Sie sich in diesem Thema!

Vielen Dank an alle :rocket:

Für den Teil, den ich testen konnte, ist der LAN Manager, der es ermöglicht, die mit dem Netzwerk verbundenen Geräte zu erkennen, leicht durch die SFR-Integration ersetzbar. Also, abzuwarten bei den anderen Integrationen, je nach den Möglichkeiten jeder einzelnen.

Alles erscheint mir sehr kohärent.
Ich wĂĽrde sagen, dass das Entfernen von matterbridge etwas zu viel ist, ich werde es als externe Integration fĂĽr diejenigen belassen, die noch etwas darauf haben, und fĂĽr diejenigen, die nur Matter statt externe Integrationen wollen.
Ich denke, man sollte die gleiche Ăśberlegung wie bei node-red anstellen.

@ProtZ könntest du Nuki in eine externe Integration migrieren? Falls du keine Claude-Lizenz hast, können wir uns darum kümmern :grin:, aber ich würde dich lieber fragen, ob du Maintainer dieser Integration bleiben möchtest!

Tasmota wurde getestet und erprobt :wink:

Was passiert, wenn du zu Free wechselst?
Meiner Meinung nach muss alles neu gemacht werden: Szenen, Dashboard usw.

Ist es möglich, eine externe LAN Manager-Integration zu haben, mit der man dann Geräte aus den SFR-, Unifi-, Orange-Integrationen usw. auswählen kann?
Das würde eine mittlere Schicht ermöglichen, die in Szenen usw. verwendet wird und nicht von einem bestimmten Router abhängt.

Ich könnte mich um die zu migrierenden Integrationen kümmern (und sie pflegen), aber ich habe nicht unbedingt die Ausrüstung, um sie zu testen.
FĂĽr Google Cast habe ich einen Chromecast und fĂĽr Airplay ein iPad (keine Ahnung, ob das ausreicht).
Ich kann Node-RED (testbar) und CalDAV (wenn es nicht zu technisch ist) migrieren.

Nuki und EDF Tempo kann ich von meiner Seite nicht testen.

Falls das okay ist, fange ich sofort an!

FĂĽr Caldav sprich einfach mit @bertrandda, aber der Rest ist klar, wer zuerst kommt, mahlt zuerst!

VoilĂ , Airplay und Google Cast sind live. Node-RED ist in Arbeit.

Ich warte auf die Antworten von @bertrandda (CalDAV) und @ProtZ (NUKI), bevor ich Claude darauf loslasse :wink:

Mal sehen, ob diese Grenzen akzeptabel sind, vor allem fĂĽr Node-RED:
FĂĽr Node-RED:

  • Kein USB/Serienzugang oder Netzwerk-Broadcast (mDNS, UDP-Entdeckung) von den Flows: Gladys gibt keine privilegierten Zugriffe auf Sub-Container.
  • MQTT-Adresse muss geändert werden: localhost bezieht sich auf Node-RED selbst. Die MQTT-Knoten mĂĽssen die IP-Adresse der Gladys-Maschine ansteuern.
  • Manuelle Migration: Die Flows werden aus dem alten Editor exportiert und in den neuen importiert, dann mĂĽssen die Passwörter der Konfigurationsknoten neu eingegeben werden.
  • Nur eine Version (Node-RED 5) statt der Wahl zwischen 3, 4 und 5.

FĂĽr Airplay:

  1. AGPL-3.0-Lizenz: Die AirPlay-Bibliothek (@lox-audioserver/node-airplay-sender, die vom integrierten Dienst verwendet wird) steht unter AGPL-3.0 und ist in das Docker-Image eingebunden. Ich habe das Projekt daher unter AGPL-3.0-or-later statt der Apache-2.0 des Templates gestellt. Sagt mir, wenn ihr einen anderen Ansatz bevorzugt.
  2. Lautstärke der „Abspielen einer Benachrichtigung“-Aktion ignoriert: Gladys überträgt diese Lautstärke nicht an externe Integrationen, sondern nur die URL der Stimme. Die Benachrichtigung wird daher mit der Lautstärke des Lautsprechers abgespielt. Um sie in einer Szene zu steuern, ist zunächst eine Aktion „Gerät steuern“ erforderlich.
  3. Docker-Netzwerk-Risiko: Einige AirPlay-2-Lautsprecher müssen den Sender erneut kontaktieren, um sich zu synchronisieren, was hinter dem Docker-Netzwerk scheitern kann. Ein Lautsprecher könnte dann zwar gefunden werden, aber stumm bleiben. Die geplante Umgehung ist, „AirPlay 1 (RAOP)“ in der Konfiguration zu erzwingen. Dies ist der Punkt, der bei echtem Gerät priorisiert überprüft werden sollte.

Google Cast: Lautstärke der Ansagen: Gladys überträgt die Lautstärke der Aktion „Benachrichtigung abspielen“ nicht an externe Integrationen. Sie wird daher in der Konfiguration der Integration eingestellt, und die ursprüngliche Lautstärke wird nach der Ansage wiederhergestellt.

Hallo @GBoulvin, Pierre-Gilles hatte mir heute Morgen in einer privaten Nachricht davon erzählt und ich habe daraufhin einen Claude-Plan für CalDAV gestartet. Wenn das für dich auch in Ordnung ist, kann ich die Implementierung starten, um mich um diese Integration zu kümmern.

Ich weiß nicht, ob du die Lib @lox-audioserver/node-airplay-sender gesehen hast, die auf Github archiviert ist. Sie haben sich mit Sonn Audio zusammengeschlossen und die neue, gepflegte Lib ist @sonn-audio/node-airplay. Vielleicht wäre es sinnvoll, diese zu verwenden. Was denkst du?

Ich habe deine Frage an Claude gestellt und die Antwort ist gemischt:

"Ja, ich denke, wir sollten zu @sonn-audio/node-airplay wechseln. Aber bei der Untersuchung habe ich ein größeres Problem als die Wahl der Bibliothek gefunden: Es betrifft die HomePods, unabhängig von der verwendeten Bibliothek.

Warum wechseln

  • Wartung: @lox-audioserver/node-airplay-sender ist archiviert, während die neue Ende August veröffentlicht wurde und die Version 0.1.2 vom 22. September stammt.
  • Lizenz: Die neue ist unter Apache-2.0, wie das Template, und hat keine Abhängigkeiten. Die Integration könnte daher die AGPL verlassen, die ich ihr aufgrund der alten Bibliothek auferlegt hatte.
  • Qualität: Der Autor sagt, er habe sie auf einem HomePod (OS 27) und einem BeoLab 50 getestet. Sie unterstĂĽtzt wirklich AirPlay 2, indem sie automatisch die Synchronisationsmethode auswählt, die das Gerät akzeptiert (PTP oder NTP). Sie unterstĂĽtzt auch den Authentifizierungsaustausch einiger alter AirPlay-1-Empfänger, die die Verbindung ohne ihn ablehnen.
  • Ein starkes Argument: Ihr README besagt, dass die neuen HomePods und Apple TVs (OS 27) eine AirPlay-1-Sitzung akzeptieren, aber stumm bleiben. Die alte Bibliothek machte nur einen „best-effort“-AirPlay 2. Auf einem neuen HomePod könnte die aktuelle Integration daher keinen Ton erzeugen.

Was es kostet

  • Die Bibliothek ist jung (0.1.x, ein einzelner Autor).
  • Ihre Schnittstelle ist niedrig: Verbindung, Synchronisation, Audio-Pakete. Die Leselogik mĂĽsste neu geschrieben werden, etwa 250 Zeilen in src/player.js.
  • Diese Sitzung wird nicht ausgefĂĽhrt, ihre Dateien können daher nicht geöffnet werden. Senden Sie eine Nachricht, um sie neu zu starten.
  • Diese Datei ist vom Rest isoliert: Die Entdeckung, die Szenen, das Widget und die Anwendungstests ändern sich nicht. Es mĂĽsste nur zusätzlich das Feld et der mDNS-Aufzeichnungen beibehalten werden.

Das grundlegende Problem, das die Bibliothek nicht löst

Ich habe im Code von Gladys überprüft, wie er den Container einer Integration erstellt. Er befindet sich in einem Docker-Netzwerk im Bridge-Modus, mit allen Linux-Fähigkeiten entfernt. Kein Netzwerkmodus host ist möglich, weder für den Hauptcontainer noch für einen Untercontainer, und die exponierten Ports werden zufällig zugewiesen.

  • FĂĽr HomePod / Apple TV (PTP): Der Sender muss die Uhr auf den UDP-Ports 319/320 bereitstellen, und das Gerät kommt, um sie an der Adresse zu fragen, die der Sender ihm gibt. Diese Adresse wäre die interne IP des Containers (172.x), die vom lokalen Netzwerk aus nicht erreichbar ist. Diese Geräte wĂĽrden daher wahrscheinlich stumm bleiben.
  • FĂĽr Drittanbieter-Lautsprecher in NTP und AirPlay-1-Empfänger: Es ist gĂĽnstiger, aber nichts garantiert es, denn das Gerät muss den Sender auch erneut kontaktieren.

Ich hatte es als eine Grenze gemeldet; es ist tatsächlich potenziell blockierend für die HomePods. Die echte Lösung wäre, dass Gladys eine Netzwerkoption für diese Art von Integration anbietet. Es lohnt sich, dies mit den Gladys-Maintainern anzusprechen."

Vielleicht diese Lösung vorerst beiseitelegen und abwarten, bis sie etwas reift?

Und tatsächlich hatte ich noch keine Gelegenheit, es zu testen, aber es ist vielleicht noch nicht möglich, in den aktuellen Zustand in eine externe Integration zu wechseln.

Ja, ich hatte die Lib für die „alte“ interne Integration gesehen, aber du hast vielleicht recht, wir können sie im Auge behalten, um sie später zu verwenden. Im Allgemeinen ist es immer besser, eine gepflegte Lib zu haben als eine alte, veraltete.

Angesichts des letzten Satzes, den du von deinem Claude geschrieben hast, scheint es tatsächlich nicht möglich zu sein. Ich werde versuchen, es schnell zu testen, und ich sage dir, ob es funktioniert.

@GBoulvin das scheint nicht zu funktionieren, ich werde dir am Sonntag mit einem echten Homepod mehr Tests machen

[2026-10-29T21:40:02.135Z] [INFO] [app] Action test_speaker <- ext:ext-gboulvin-gladys-airplay:speaker:faee67b415d7
[2026-10-29T21:40:02.160Z] [INFO] [player] Playing on Speaker (172.16.8.255:7000, AirPlay 2)
/app/node_modules/bplist-parser/bplistParser.js:64
    throw new Error("Ungültige binäre Plist. Erwartet 'bplist' an Offset 0.");
    ^

Error: Ungültige binäre Plist. Erwartet 'bplist' an Offset 0.
    at exports.parseBuffer (/app/node_modules/bplist-parser/bplistParser.js:64:11)
    at Client.processData (/app/node_modules/@lox-audioserver/node-airplay-sender/dist/core/rtsp.js:1501:43)
    at Socket.<anonymous> (/app/node_modules/@lox-audioserver/node-airplay-sender/dist/core/rtsp.js:211:18)
    at Socket.emit (node:events:514:28)
    at addChunk (node:internal/streams/readable:569:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:520:3)
    at Readable.push (node:internal/streams/readable:400:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:194:23)