
Ein Interview mit Ingo Fischer, Software-Entwickler und Leiter des Open-Source-Projekts matter.js (link). Das zusätzliche Software-Developer-Kit für den Matter-Standard basiert auf JavaScript und erweitert die Möglichkeiten, Geräte zu bauen. Über seine spezifischen Eigenschaften und die Unterschiede zum offiziellen SDK der Connectivity Standards Alliance (CSA) sprach matter-smarthome mit dem Entwickler.
The interview was conducted in German.
Please click here for the English translation.
Herr Fischer, wie sind Sie dazu gekommen, ein neues Software-Developer-Kit für Matter auf die Beine zu stellen?
Ingo Fischer: Ich bin seit 10 Jahren in der Open-Source-Entwicklung tätig, inzwischen auch schon länger als Core-Entwickler für ioBroker, das ist ein Smarthome-System aus Deutschland (link). Als Matter 2022 veröffentlicht wurde, haben wir natürlich überlegt, wie wir es integrieren können. Und da ioBroker in JavaScript geschrieben ist, lag es nahe, die Sprache auch für diesen Zweck zu verwenden.
Es gab auch bereits einen Entwickler aus Hawaii, der damit angefangen hatte, und so haben wir uns zusammengetan. Daraus ist das heutige matter.js entstanden. Aktuell arbeitet außer mir noch ein weiterer Entwickler aus Amerika an dem Projekt. Wir machen das größtenteils in unserer Freizeit, sind aber ziemlich weit mit der Implementierung von Matter.
Also ging es ursprünglich um eine Software-Integration. Aber lässt sich matter.js auch für die Entwicklung von Geräten verwenden?
Fischer: Ja, wir wollten von Anfang an etwas schaffen, das sich sowohl für Geräte und Bridges als auch für Matter-Controller eignet. Allerdings hätten wir nie gedacht, dass wir so schnell dahin kommen, wo wir jetzt sind.
„Wir wollten etwas schaffen, das sich sowohl für Geräte und Bridges als auch für Controller eignet.“
Es gibt ein SDK von der Connectivity Standards Alliance, das ebenfalls Open Source ist? Wo liegt der Vorteil von matter.js gegenüber dem offiziellen Kit?
Fischer: Das offizielle SDK ist in der Programmiersprache C++ geschrieben und sehr umfangreich, auch weil es viele Plattformen unterstützen muss. Es ist auf Embedded Geräte zugeschnitten, also Lampen, Steckdosen und so weiter. Auch die Programmierschnittstellen (APIs) zielen darauf ab.
Wenn auf einer Plattform aber mehr RAM und CPU-Leistung zur Verfügung stehen, etwa bei Bridges oder Controllern, kann man über den Einsatz von matter.js nachdenken. Dann spielt JavaScript seine Vorteile aus. Es ist gut zu beherrschen und hilft beim Erstellen des Codes. Wir verwenden TypeScript und haben die gesamte Spezifikation in Typdefinitionen übersetzt. Das heißt, die Programmiersprache gibt beim Coden bereits Hinweise auf mögliche Fehler. Sie sagt, welche Datentypen, Strukturen oder Funktionen laut Matter-Spezifikation an welche Stelle gehören. Man kann fast nichts falsch machen.
„Die Programmiersprache gibt beim Coden bereits Hinweise auf mögliche Fehler.“
Eine Lampe, die mit matter.js entwickelt wurde, ist also eher unwahrscheinlich?
Fischer: Lampen sind für uns aktuell kein Thema, weil JavaScript zu viel Arbeitsspeicher und Rechenleistung benötigen würde. Auch batteriebetriebene Geräte oder Chipset-spezifische Thread- und WLAN-Anbindungen scheiden aus. Wobei matter.js aber trotzdem bei der Produktentwicklung zum Einsatz kommen kann – selbst dann, wenn ich später mein echtes Produkt im Embedded-Umfeld mit C++ baue.
Denn JavaScript eignet sich perfekt fürs Prototyping. Ich kann herumexperimentieren, schnell mal Dinge ausprobieren und testen, ob ein Feature sinnvoll ist. Wir stellen mit sieben Zeilen Code ein einfaches Gerät zur Verfügung, das komplett funktionstüchtig und konform zum Standard ist. So hat ein Entwickler rasch verschiedene Gerätetypen zur Hand, um etwa seinen Controller dagegen zu testen. Das sind Einsatzgebiete, die auch einige CSA-Mitglieder interessant finden.
Wo kommt matter.js aktuell zum Einsatz? Gibt es bereits fertige Produkte?
Fischer: Ja, zum einen im Open-Source-Umfeld. Ich kenne aktuell sechs Projekte, die relativ sichtbar sind: ioBroker (link) und openHAB (link), die zufälligerweise beide aus Deutschland stammen, und matter.js sowohl für Bridge- als auch Controller-Funktionen nutzen. Dann existiert ein Plug-in für die Programmierumgebung Node-RED (link) und ein Community-Plug-in für Home Assistant (link). Und das Projekt Matterbridge (link), mit dem ich Produkte von Anbietern wie Shelly oder Somfy an Matter weiterreichen kann, ähnlich wie bei der Homebridge an HomeKit. Alles in allem kommen da einige Zehntausend Anwender zusammen.
Auf kommerziellem Gebiet hat ein Hersteller seine mit matter.js entwickelte Bridge bereits zertifizieren lassen. Sie dürfte im Laufe des Jahres auf den Markt kommen. Andere Unternehmen arbeiten daran, aber dazu darf ich natürlich nichts sagen.
„Ein Hersteller hat seine mit matter.js entwickelte Bridge bereits zertifizieren lassen.“
Ich kann als Hersteller mein Produkt, das mit matter.js entwickelt wurde, also ganz offiziell zertifizieren lassen?
Fischer: Das geht problemlos. Die Zertifizierungstests von Matter stellen sicher, dass ein Gerät den Spezifikationen entspricht, sich korrekt verhält und interoperabel ist. Wenn es alle Tests besteht und der Hersteller auch andere Formalien wie die Mitgliedschaft in der Connectivity Standards Alliance erfüllt, steht der Zertifizierung nichts entgegen – ganz gleich, mit welchem SDK das Gerät entwickelt wurde.
Wir sind im offiziellen „Matter Handbook“ als zweites SDK gelistet (link) und werden von den Mitgliedern der Allianz als alternative Implementierung gesehen. Auch, weil durch unsere Arbeit manchmal Interoperabilitätsprobleme oder Unklarheiten in den Spezifikationen aufgedeckt werden. Wir entwickeln streng nach den Specs und melden natürlich alles, was wir bei unserer Arbeit finden.
Auf Anwender könnte die aktuelle Versionsnummer 0.13 etwas abschreckend wirken. Sie klingt nach Beta. Warum gibt es noch keine 1.0?
Fischer: Das liegt primär daran, dass wir bislang nicht alle Funktionen des Matter-Protokolls zu 100 Prozent umgesetzt haben. So fehlt etwa die Möglichkeit, Software-Updates „Over-the-Air“ auszuliefern, weil es bislang nicht relevant war. Auch an der Implementierung von Gruppen arbeiten wir noch. Die Kompatibilität mit Matter 1.4 wurde gerade mit Version 0.13 hergestellt.
Und im Open-Source-Umfeld ist die Versionierung so eine Sache. Da wird nach bestimmten, semantischen Regeln hochgezählt. Demnach verlangt ab v1.0 jeder Breaking Change mit Änderungen der Library einen Versionssprung. Wir wären also schnell bei 2.0 oder 3.0. Daher veröffentlichen wir unsere 1.0 erst dann, wenn wir so weit sind, um keine Inflation auf den Versionsnummern zu haben.
„Die Kompatibilität mit Matter 1.4 wurde gerade hergestellt.“
Wie geht es weiter? Wo möchten Sie mit matter.js in ein oder zwei Jahren sein?
Fischer: Die Prioritäten sind klar. Wir werden weiter daran arbeiten, Feature-komplett zu werden und mit der Entwicklung des Matter-Standards Schritt zu halten. Denn es kommen immer wieder neue Funktionen und Produktgruppen hinzu. Ich würde mir noch mehr Produkte wünschen, die matter.js einsetzen, da findet gerade eine interessante Dynamik statt.
Ansonsten kann ich nur alle Entwickler einladen, die Interesse haben an matter.js mitzuarbeiten, dies auch zu tun. Das Ganze ist schließlich Open Source. Es gibt einen Discord-Server mit dem Titel „Matter Integrators“ (link) auf dem sich knapp 400 User und Entwickler austauschen – über die Spezifikationen und ihre Deutung. Der hat nichts mit der Allianz zu tun, ist aber ein guter Anlaufpunkt für alle Interessierten.
Herr Fischer, vielen Dank für dieses Gespräch.
Diesen Beitrag teilen: