Dev Meeting Februar 2022

Happy TwosDay (22.2.22) liebe Community, auch im vergangenen Monat ist wieder viel bei ioBroker passiert. Nach längerer Entwicklungszeit ist der neue js-controller 4.0 (Release-name "Isabelle") im Beta/Latest Repository verfügbar. Neben einigen Optimierungen und Verbesserungen stand der Haupt-Fokus dieser Version auf Performance-Verbesserungen. Darüber hinaus gibt es weitere Neuigkeiten aus dem Developer-Meeting und darüber hinaus, welche wir hier für Euch zusammengefasst haben.

JS Controller 4.x

Mit dem neuen Release entfällt die Unterstützung für Node.js 10.x, welches seit April letztem Jahr nicht mehr gepflegt wird. Zusätzlich wurde die Kompatibilität für Node.js 16.x und NPM 7 bzw. 8 hinzugefügt. Die unterstützten Node.js Versionen sind damit: 12.x, 14.x und 16.x, wobei wir zum jetzigen Standpunkt die Node.js Version 14.x empfehlen.

Mit dem js-controller 4.0 wird intern die Datenbank von "file" auf "jsonl" umgestellt. Dies geschieht bei der Installation automatisch ohne weitere Aktionen, wenn file genutzt wird. Nach erfolgter Migration erscheint beim nächsten Öffnen des Admin 5 auch eine Information dazu. Aber was ist denn so besser an der JSONL-Datenbank anstelle von file? Die File-DB speichert regelmäßig alles in einem großen JSON-File. Dies kann durchaus viel I/O verursachen und ist vor allem bei SD-Karten-Basierten Systemen, aber auch mit einer SSD, nicht optimal, weil es die Karte sehr belastet. Zusätzlich besteht das Problem, das ein Absturz beim Schreiben dazu führt, dass das ganze File defekt ist. ioBroker greift in diesen Fällen dann beim nächsten Start auf ein Backup-File zurück. JSONL arbeitet hier anders: Änderungen werden erst einmal nur an die Datei angehangen und - nur wenn nötig - wird dann das File "komprimiert" und so neu geschrieben. Ein kaputtes Byte in der DB macht nicht mehr alles kaputt und ein Absturz beim Schreibvorgang sorgt nur dafür, dass die noch nicht geschriebenen Änderungen verloren gehen, nicht alles. Außerdem schont JSONL die SD-Karte durch weniger und kleinere Schreibvorgänge.

Die neue Version wird voraussichtlich bis Ende des Monats auch im Stable-Branch zur Verfügung stehen. Weitere Informationen zum JS-Controller 4 findet ihr im Forum.

Ack/Bestätigt

Ein Thema, das immer wieder aufkommt, ist das Ack-Flag. Das fängt beim Blockly mit dem "steuern" bzw. "aktualisieren" an, geht über die Farben (rot, grün, gelb) der Werte im Admin und endet bei den Entwicklern, die diesen Flag auch richtig einsetzen müssen. Prinzipiell ist es ganz einfach: Das Ack- oder Bestätigt-Flag sagt aus, ob ein Wert ein Kommando darstellt oder den finalen, vom Gerät bestätigen Wert repräsentiert. Nehmen wir an, man schaltet eine Lampe über ioBroker ein. Dafür setzt man den Wert des Datenpunktes auf "true". ioBroker sendet der Lampe ein Kommando, hat aber noch keine Antwort erhalten. Der Ack-Flag ist also auf "false". Dieser Wert ist jetzt nicht bestätigt und erscheint im Admin rot. Sobald dann die Aktion ausgeführt wurde, meldet die Lampe Ihren neuen Status an ioBroker. Dieser Zustand wird mit einem Ack-Flag "true" gesetzt und man kann sicher sein, dass der Wert auch den tatsächlichen Zustand der Lampe wiederspiegelt. Admin zeigt dies in grün an. Wird ein Wert im Admin gelb dargestellt, ist einfach der Standartwert eines Datenpunktes oder ein anderer Ersatzwert, der weder von einer Steueraktion herrührt noch vom Gerät bestätigt wurde.

Beim Setzen des Wertes eines Datenpunktes hat man immer die Möglichkeit den Flag zu setzen oder nicht. Hierbei ist zu beachten, dass ein auf true gesetzter Ack-Flag keine Steuerung darstellt, und damit das Gerät nicht drauf reagieren wird, denn man hat explizit nur den Datenpunkt aktualisiert. Geräte können nur mit nicht gesetzten Flag gesteuert werden!

In Blockly- oder Rules-Skripten wird mit dem "steuern"-Block (Ack false) praktisch der Befehl zum Gerät gesendet. Beim "aktualisieren" (Ack true) wird ein Datenpunkt einfach auf einen bestätigten Wert gesetzt. Das macht man, wenn zum Beispiel der Datenpunkt vom User selbst erstellt worden ist und man genau weiß, dass der Wert den aktuellen Stand widerspiegelt.

Auch Entwickler sollten darauf achten, dass sie den Flag zum richtigen Zeitpunkt einsetzen. Hier findet ihr weitere Infos dazu.

Geräte-Management

Beim Meeting wurde viel über die Idee eines neuen Device Managers gesprochen. Dieser soll langfristig die Einstellung der Geräte bei einzelnen Adaptern übernehmen, so dass man nur eine einheitliche Oberfläche hat um Geräte einzustellen, einzubinden und auszuschließen. Noch ist die Idee dabei sich zu entwickeln und die Entwickler prüfen die technische Umsetzbarkeit. Sobald hier konkretere Details existieren werden wir darüber genauer berichten.

Neue Adapter

Auch diesen Monat können wir mit einige Neuzugänge glänzen.

Noch sind die Temperaturen und der Wind eisig kalt! Zu Hause kann man es sich jetzt gemütlich machen und die Thermostate von Netatmo, sowie die Saunen von Huum über ioBroker steuern lassen. Im Smart Home System Bereich, können wir mit Freude sagen, dass wir jetzt die Geräte von Gigaset, Blebox und Panasonic Cloud unterstützen. Im Alarm-Bereich können jetzt Hikvision Kameras und im Bereich Energie die E3DC Hauskraftwerk und Resol VBus Gräte eingebunden werden.

Des Weiteren wurde ein Adapter für Webuntis released. Damit lassen sich die Stundenpläne sowie Klassenarbeiten von verbundenen Schulen verfolgen.

Mit dem Alexa-Timer-Vis Adapter kann man die Timer aus Alexa2 einfacher bedienen und mit dem Signal Messenger Adapter haben wir inzwischen alle größere Messenger an Bord.

Aber nicht nur neue Adapter sind erschienen. Auch die neue Material App für Android Geräte wurde released. Damit kann man von unterwegs, auf die Visualisierung des Material Adapters zugreifen. Material wurde konzipiert, um automatisch Anzeigen zu erstellen, ohne dass der Anwender viel Zeit in die Einrichtung investieren muss.

Übersetzungen

ioBroker unterstützt inzwischen 10 Sprachen und diese werden im ersten Schritt automatisch übersetzt. Wir alle kennen diese automatische Übersetzung und wissen, dass sie mehr als dürftig sind. Da wir immer wieder Wert darauf legen unser Projekt zu perfektionieren, haben wir inzwischen die Texte von 81 der vorhandene Adapter in ein ioBroker Weblate (Tool) überführt. Hier kann jeder helfen die Übersetzungen zu verbessern. Es ist auch ganz simple und kann auch mal zwischendurch vom Handy aus gemacht werden.

Wir bitten die Community, uns bei der Übersetzung zu unterstützen, denn jedes übersetzte bzw verifizierte Wort, ist ein Schritt weiter für uns alle. Ein besonderes Augenmerk sollte man auf die Sprachen außerhalb von Deutsch und Englisch setzen, wobei auch diese bestimmt noch etwas Polishing vertragen können. Hier findet ihr weitere Details für Übersetzer. Die Adapter-Entwickler unter euch möchten wir bitten, eure Adapter ins Weblate zu integrieren, falls euer Adapter viel Text zum Übersetzen anbietet.

Abschlussworte

Diesmal waren echt viele beim Meeting anwesend und das finden wir toll! ioBroker kann nur mit und durch euch existieren und weiter gehen. Gleich zu Anfang des Meetings haben wir uns an die Zeiten vor Corona und an unsere Live Meetings, die Jährlich in Kassel stattfanden, erinnert. Wir hoffen, dass diese Zeiten bald wieder zurück kommen und wir uns in Kassel (oder wo auch immer) wieder treffen.

Das nächste Dev Meeting findet turnusgemäß am 16. März statt. Viel Spaß in der ioBroker Welt. Bleibt gesund!