Beispiel: Philips Hue-Migration
Getestet bei mir mit Melcloud, und es funktioniert perfekt! Ich merge.
Hallo!
Ich bin schlieĂlich wegen genau diesem Grund zu HA gewechselt ![]()
Mit dem letzten Newsletter sehe ich, dass du einen RĂŒckzieher gemacht hast, um zum Prinzip der V3 zurĂŒckzukehren, was mir nicht missfĂ€llt ![]()
Ich werde das etwas genauer verfolgen, um zu sehen, wie es sich entwickelt, und wahrscheinlich jetzt eine Instanz wiederherstellen.
Tolle Arbeit in jedem Fall!
Danke @MathieuA, das freut mich wirklich zu lesen, und vor allem bin ich froh, dich wieder im Forum zu sehen! ![]()
GrundsÀtzlich ja. Allerdings hat die technische Implementierung nicht mehr viel mit der der V3 zu tun. Diesmal haben wir eine vollstÀndige Isolation zwischen Gladys und jeder Integration mit einer echten Entkopplung. Die AbhÀngigkeiten werden zum Zeitpunkt des Builds installiert und nicht mehr zur Laufzeit wie in der V3.
Am Ende haben wir die Einfachheit und Freiheit der V3, wÀhrend wir eine viel robustere Architektur beibehalten. Kurz gesagt, das Beste aus beiden Welten!
Wird @VonOx auch zurĂŒckkehren?
![]()
Das wĂ€re verrĂŒckt!!
Das wÀre toll!!
Gute RĂŒckkehr, @MathieuA,
Am Anfang von Gladys V4 habe ich dich sehr viel gelesen! Auch in den Archiven der Konzeption von Gladys V4 mit euren Austauschen, ihr, die « Alten » von Gladys!!
Es ist eine Freude, Geister wie dich (und ich hoffe andere) hier wiederzusehen.
Hallo super neue ![]()
Das Beste aus zwei Welten v3 v4 ![]()
Nur ein Problem:
2026-08-01T22:49:50+0200 <warn> errorMiddleware.js:71 (errorMiddleware) Error: (HTTP-Code 400) unerwartet - NanoCPUs können nicht gesetzt werden, da Ihr Kernel den CPU CFS-Scheduler nicht unterstĂŒtzt oder die cgroup nicht gemountet ist
at /src/server/node_modules/docker-modem/lib/modem.js:336:17
at getCause (/src/server/node_modules/docker-modem/lib/modem.js:366:7)
at Modem.buildPayload (/src/server/node_modules/docker-modem/lib/modem.js:335:5)
at IncomingMessage.<anonymous> (/src/server/node_modules/docker-modem/lib/modem.js:303:16)
at IncomingMessage.emit (node:events:531:35)
at endReadableNT (node:internal/streams/readable:1698:12)
at processTicksAndRejections (node:internal/process/task_queues:89:21) {
reason: undefined,
statusCode: 400,
json: {
message: 'NanoCPUs können nicht gesetzt werden, da Ihr Kernel den CPU CFS-Scheduler nicht unterstĂŒtzt oder die cgroup nicht gemountet ist'
}
}
Ich bin auf einem Synology NAS 920+.
Ein RĂŒckblick auf das Verzeichnis /data der Docker-Images der externen Erweiterungen:
Das VOLUME [« /data »] lÀsst das Verzeichnis bei root, wÀhrend der Container als node (uid 1000) lÀuft: Die Integration hatte keinen Schreibzugriff auf den einzigen Speicherort, den die Dockerfile-Dokumentation als beschreibbar dokumentiert.
Claude fĂŒgt dem Dockerfile Zeilen hinzu, um dieses Problem zu umgehen. Können wir das im Template korrigieren?
Ich habe die Ursache des Problems gefunden: Auf Synology-NAS wird der Kernel ohne den
« CFS bandwidth control » kompiliert, das ist der Mechanismus, der Docker ermöglicht, die CPU eines
Containers zu begrenzen. Wenn Gladys Docker also anweist, den Container der
Integration mit einer CPU-Grenze zu erstellen, weigert sich Docker mit der Fehlermeldung « NanoCPUs can not be set »
et die Installation scheitert.
Der Fix: Gladys fragt jetzt Docker, ob er CPU-Grenzen beim Start verwalten kann, und wenn nicht, sendet sie diese Grenze einfach nicht. Die anderen Grenzen (Speicher, Anzahl der Prozesse, GröĂe der Logs) bleiben in jedem Fall bestehen. Auf deinem NAS werden die Integrationen also ohne CPU-Grenze laufen, das ist der Standardumgehung fĂŒr diesen Kernel-Typ.
Sehr schade fĂŒr Synology-Nutzer, die etwas weniger geschĂŒtzt sind als andere, aber so ist es nun mal ![]()
Hallo, danke fĂŒr das Feedback, das war ein echter Bug! ![]()
Gute Nachricht: Die Ursache lag nicht in deinem Image, sondern bei Gladys. Das /data wird als Bind-Mount vom Host gemountet, und da das Verzeichnis vor der Erstellung des Containers nicht existierte, erstellte Docker es selbst als root:root, wodurch die Integration (die als node lĂ€uft, UID 1000) nichts darin schreiben konnte. Deshalb konnten auch die Workarounds in der Dockerfile nicht funktionieren: Ein Bind-Mount ĂŒberdeckt den Inhalt des Images vollstĂ€ndig, sodass ein chown beim Build keine Wirkung hat.
Der Fix ist in diesem PR: Fix /data ownership of external integration containers by Pierre-Gilles · Pull Request #2743 · GladysAssistant/Gladys · GitHub. Gladys erstellt jetzt das Verzeichnis und weist es der UID 1000 zu, bevor der Container erstellt wird (einschlieĂlich der Volumes der Sub-Container fĂŒr Multi-Container-Integrationen). Und es ist abwĂ€rtskompatibel: Bestehende Installationen reparieren sich bei der nĂ€chsten Neuerstellung des Containers (Aktualisierung, NeustartâŠ) von selbst, ohne dass etwas geĂ€ndert werden muss.
Sobald es veröffentlicht ist, kannst du die Workaround-Zeilen aus deiner Dockerfile entfernen: Das offizielle Template dokumentiert /data als einzigen beschreibbaren Speicherort, und das wird ohne Basteln wahr sein. ![]()
Ich finde das einfach groĂartig ![]()
Beim Syno kann man eine PrioritĂ€t fĂŒr die Container setzen und es ist interessant, dass man die Sub-Container nicht in der CPU begrenzen kann.
Ich sollte das mal auf zimaOS testen, um zu sehen, ob das Verhalten identisch ist.
Danke fĂŒr dein Feedback! ![]()
Die beiden RĂŒckmeldungen sind in master gemerged und werden heute in einem anderen Patch-Release veröffentlicht! Vielen Dank fĂŒr eure Tests und euer Feedback!
Die Korrekturen sind live auf Gladys Assistant 4.84.2:
Super gute Nachricht. Ich bin gerade bei Home Assistant, weil ich viele Produkte verwende, die (oder die nicht) unter Gladys nicht erkannt werden, aber ich mag das Projekt sehr. Ich schaue also regelmĂ€Ăig (ich habe Gladys zum Testen auf einem Rasp zusĂ€tzlich zu meinem HA) und hatte die angenehme Entdeckung, dass Airzone Cloud erkannt wird.
Aber ich verstehe nicht: Ich habe ein Airzone mit 5 RĂ€umen und einen TADO, mit dem ich eine separate Hitachi-Klimaanlage (nicht Airzone) steuern kann.
Als ich die Integration in Gladys gemacht habe, hat er alles gefunden. Aber er zeigt mir nur die Temperatur meiner Veranda (TADO-Klimaanlage) und meines Wohnzimmers (Raum mit meiner Haupt-Airzone-Zone). Er findet meine 4 anderen Airzone-RÀume, aber sagt « keine Temperatur in letzter Zeit erfasst ». Ich weià nicht genau, wo ich suchen soll.
Vielen Dank fĂŒr eure Hilfe, falls jemand von euch ein Airzone hat.
Eine Idee zur Verbesserung des Trackings externer Apps: eine Kategorie mit Unterkategorien fĂŒr jede integrierte externe App. Dadurch könnten Bugs gemeldet werden, und es wĂ€re ĂŒbersichtlicher. Jeder Entwickler könnte seine Entwicklung verfolgen, ohne dass man ihn taggen und somit wissen mĂŒsste, wer die externe App entwickelt hat.
Alternativ mĂŒsste man zu einem Bugtracker wechseln, der mit GitHub verknĂŒpft werden kann.
ex: Ein Projekt wĂ€re eine externe App, und jeder Entwickler wĂŒrde benachrichtigt, sobald jemand einen Bug in seinem Projekt meldet. Ein gemeinsamer Mini-Lebenszyklus fĂŒr Bugs in einer externen App mĂŒsste erstellt werden. Auch wenn es ein Bugtracker ist, könnte man auch Verbesserungsanfragen einreichen.
Das Forum hier wĂ€re eher fĂŒr den Gladys-Core oder Entwicklungsanfragen externer Apps.
Das ist erledigt. Ich weià nicht, ob ich es richtig gemacht habe (insbesondere bei den Tags). Zögere nicht, mir zu sagen, wenn ich etwas falsch gemacht habe ![]()
Das erscheint mir ein bisschen schwerfÀllig, zugegeben, und im Grunde ist es dasselbe Problem wie jetzt, wie weià man, welches Konto im Forum dem Konto auf Github entspricht?
Das ist bereits jetzt möglich, man kann ein Issue im Repo der externen Integration erstellen, und zumindest erhĂ€lt der Maintainer eine Benachrichtigung ĂŒber Github! Es stimmt, dass das vielleicht der einfachste Weg ist, direkt mit dem Maintainer zu kommunizieren, aber dafĂŒr braucht man ein Github-Konto ![]()
Perfekt, danke @filbou40!
Gut erkannt @mutmut, das ist nicht beabsichtigt ![]()
Die Tags der Karten im Katalog (Lokal, Cloud, Gladys PlusâŠ) werden basierend auf den Informationen jeder Integration gesetzt, und fĂŒr externe Integrationen gebe ich heute nur âCommunityâ, den Status-Badge und âUpdate verfĂŒgbarâ aus.
Das Dumme ist, dass die Information bereits existiert: Das Manifest einer externen Integration erklĂ€rt zwingend seine transports (lokal, cloud, oder beides), das wird fĂŒr die Einstellung âLokale Verbindung bevorzugenâ und die Badges Lokal/Cloud auf jedem GerĂ€t verwendet. Ich nutze es nur noch nicht auf der Karte im Katalog.
Ich schaue mal!




