ioBroker: Neue Entwicklungen im Juli 2024

ioBroker: Neue Entwicklungen im Juli 2024

26. Juli 2024 4 Von Moritz Heusinger

Hallo zusammen,

dies ist die Fortsetzung der monatlichen "Neue Entwicklungen" Serie die einen subjektiven Überblick über die Entwicklungen rund um ioBroker gibt.

Da ich vermutlich einer der aktivsten Entwickler im ioBroker Umfeld bin und auch häufig Einblicke bekomme, welche nicht auf allen Kommunikationskanälen nach außen kommuniziert werden - ist es mir hoffentlich möglich sowohl für ioBroker Nutzer als auch Entwickler die eine oder andere interessante Neuigkeit jeden Monat vorstellen zu können.

Disclaimer

An dieser Stelle ein kleiner Disclaimer, dass meistens noch deutlich mehr passiert ist als die Dinge, die ich hier aufführe. Aufgrund der Masse an Entwicklern entstehen ständig neue Adapter und Adapter werden weiterentwickelt, was ich nicht immer mitbekomme oder ich auch aufgrund der Masse filtern möchte. Für solche Neuerungen möchte ich gerne auch auf den ioBroker-internen Blog auf verweisen.

Überblick

js-controller Kiera

Nebenbei hat mich weiterhin der Controller in Version 6 beschäftigt. Nachdem im letzten Beitrag die Vermutung eines zeitnahen stable Releases nahe lag hatten wir noch kleinere Probleme gefunden die wir vor dem Stable Release beheben wollten.

Insbesondere kam nochmal die Verwaltung von Node Modulen die von Adaptern installiert werden auf. Hier hat es einige Anpassungen meinerseits im javascript Adapter gebraucht, damit nun auch TypeScript Module die Typinformationen wieder korrekt weitergeben und auch sogennante Subpath-Exports wieder funktionieren.

Nun ist es allerdings (fingers crossed) wirklich soweit und am Wochenende soll der Controller ins stable gehen. Der PR für das Repository ist schon vorbereitet und wir warten nur noch ein paar Tage zur Sicherheit, da wir entsprechend auch den javascript Adapter im stable anheben müssen der in der Version 8.7.3 aktuell keinen Tag alt ist.

Den vollständigen Changelog findet ihr hier.

Matter Adapter

Im letzten Beitrag hatte ich bereits erwähnt, dass wir am Matter Adapter arbeiten. Hiermit ging es auch diesen Monat weiter und es gab einige organisatorische Umstrukturierungen. Ingo und ich werden das Projekt nun vollumfänglich vorantreiben, sodass Denis sich auf Admin und vis-2 konzentrieren kann.

Das hat den großen Vorteil, dass jeder in seinem Kompetenzbereich arbeitet und mit Ingo haben wir hier maximale Matter-Kompetenz, da er die Matter.js Library mit aufgebaut hat und nun pflegt. Wir haben hier auch diesen Monat weiter den Ansatz verfolgt Matter.js mit in die ioBroker Visu App zu integrieren, sodass User das Commissoning mittels der App vornehmen können. Dafür sind diesen Monat eine Vielzahl von Stunden draufgegangen und wir sind ein ganzes Stück weiter gekommen. Aktuell kämpfen wir hier mit der Crypto Implementierung von React Native die doch einige Dinge anders macht als die Node.js Crypto Bibliothek.

Weiterhin haben wir auch schon einige Commits in den Adapter direkt fließen lassen und uns vor allem ein Konzept überlegt wie wir die UI optimal für die Nutzer gestalten können. Ingo kümmert sich hier konkret um die Backend-Implementierung und ich mich nahezu ausschließlich um das Frontend. Die Entwicklung hat hier schon richtig Fahrt aufgenommen und für das Frontend habe ich diesen Monat auch die Device Manager GUI, welche der Matter Adapter nutzt ein gutes Stück vorangebracht.

Es ist aktuell noch schwer eine Prognose abzugeben, aber wir hoffen in 4-5 Wochen einen ersten Alpha Test des Adapters starten zu können und somit den ioBroker Usern die Welt von Matter zu eröffnen.

Der Matter Adapter wird es euch dann ermöglichen Matter Geräte mit dem ioBroker zu pairen. Und ähnlich zum iot/yahka Adapter könnt ihr Geräte anlegen - diese Matter Geräte können dann von euren Smart Assistenten (Alexa, Homepod, etc.) gefunden werden.

Gerade aus dem zweiten Grund versuchen wir einen sehr stabilen Adapter zu bauen der mittels Device Manager und Typdetektor möglichst benutzerfreundlich arbeitet und neue Maßstäbe setzt.

Alternativer Release Workflow

Um die Qualität weiter zu optimieren haben wir vor einiger Zeit im Controller eingeführt, dass nur noch über PRs Änderungen am Code vorgenommen werden können. Dies hat den Vorteil, dass wir konfigurieren können, dass nur Commits gemerged werden die auch die Tests erfolgreich durchlaufen und wenn die Änderungen durch mindestens einen Reviewer abgesegnet wurden.

Nachdem das beim Controller so super funktioniert, haben wir uns vorgenommen dies auch für essenzielle Core Pakete einzuführen. Hierzu habe ich die Workflow Action aus dem Controller so angepasst, dass diese in Adaptern genutzt werden kann. Konkret haben wir nun in den folgenden Repositories einen PR-Zwang und so hoffentlich langfristig weniger Fehler und bessere Codequalität:

  • Admin Adapter
  • Matter Adapter
  • adapter-react-v5
  • type-detector
  • adapter-core

Für den Admin Adapter und Adapter React V5 werden erst mal nur alle Tests benötigt und kein Review um die Entwicklungsgeschwindigkeit nicht auszubremsen.

Das Problem hier besteht darin, dass wir in nahezu allen Adapter mit dem Release Script arbeiten. Dieses bereitet eine neue Version lokal vor und pusht diese auf den Hauptbranch. Da dies mit den neuen Regeln nicht möglich ist bevor die Tests auf der CI Pipeline durchlaufen wurden, muss auch der Release per PR stattfinden.

Falls ihr als Entwickler mit anderen zusammen an einem Repository arbeitet und auch die Vorteile von diesem Workflow genießen möchtet folgend eine kurze Erklärung der nötigen Anpassungen:

Die Action zum Erstellen des PRs

Diese Action führt das Release Script aus, ohne etwas zu pushen und erstellt dann einen PR gegen euren default Branch. Ihr müsst nur die Config des PRs anpassen mit dem korrekten Autor, Committer und was ihr so haben möchtet. Ihr benötigt ein Personal Access Token mit (permissions contents: write and pull-requests: write) das ihr im Repo als __PR_TOKEN__ anlegt.

Die Action zum approven des PRs

Falls ihr einen Reviewer benötigt, muss der PR auch aproved werden. Das macht diese Action.

Die Action zum mergen

Diese läuft nach euren Tests, falls es sich um einen PR mit den entsprechenden Eigenschaften handelt. Normalerweise gibt es hier einen Job deploy dieser wird entsprechend angepasst. Als Erstes wird der PR gemerged und falls das erfolgreich war (die folgenden Schritte müssen immer prüfen ob der PR gemerged wurde) wird das Paket nach npm gepublished und ein GitHub Release erstellt. Ebenfalls kann auch Sentry über den Release informiert werden. Je nachdem wie euer Repo organisiert ist, müssen evtl. diverse Build Schritte durchlaufen werden. Dies sollte aber dann bereits in eurem alten deploy Job ersichtlich sein.

Community Events

Die Karten für unser Jubiläumsevent sind nun ausverkauft. Ich freue mich schon auf ein tolles Event im November in Solingen.

Nähere Informationen zum Ablauf findet ihr hier.

Falls es jemand nicht geschafft hat eine Karte zu ergattern aber trotzdem das ioBroker Team treffen möchte habt ihr auch ohne Anmeldung und kostenlos die Chance das Smart City Forum am 28.09.2024 in Solingen zu besuchen, an welchem viele Mitglieder der Entwickler-Community ebenfalls vor Ort sein werden.

Nähere Informationen findet ihr auch im Beitrag vom April.

Schlusswort

Wenn euch der Artikel gefallen hat, freue ich mich über einen Kommentar.

Falls ihr das ioBroker Projekt unterstützen möchtet, denkt gerne darüber nach eine Cloud Lizenz zu erwerben - neben der Unterstützung des Projektes genießt ihr dadurch viele Vorteile wie eine unlimitierte Anzahl an Alexa & Google Home Anfragen, die Möglichkeit per Fernzugriff sicher auf euer System zuzugreifen, die Möglichkeit eure Anwesenheitssteuerung einfach mittels der ioBroker Visu App zu realisieren und zukünftig weitere Vorteile. Die Einnahmen durch Lizenzverkäufe fließen maßgeblich zurück in das Projekt und fördern die aktive Weiterentwicklung und Wartung des ioBroker Ökosytems.

Ebenso könnt ihr diesen Blog und meine persönliche Arbeit gerne unterstützen, indem ihr über meinen Amazon Affiliate-Link einkauft oder mir eine Spende zukommen lasst.

Bis zum nächsten mal

Moritz