Im Zuge der rasanten Entwicklung des Internets der Dinge (IoT) werden intelligente Schließsysteme zu unverzichtbaren Komponenten moderner Gebäudesicherheitssysteme.
Eines dieser fortschrittlichen Systeme ist Xesar von EVVA – ein hochmodernes elektronisches Schließsystem, das nicht nur durch seine Robustheit und Zuverlässigkeit überzeugt, sondern auch durch seine innovative Integrationsoption mittels einer MQTT-Schnittstelle.
Diese Schnittstelle ermöglicht die nahtlose Einbindung von Drittsystemen und eröffnet damit neue Möglichkeiten in der Gebäudeautomation und Sicherheitstechnik.
Doch so leistungsfähig diese Schnittstelle auch sein mag, sie bringt ihre eigenen Herausforderungen mit sich, insbesondere wenn es um die Komplexität der MQTT-Funktionalität geht.
Herausforderungen der MQTT-Schnittstelle für Entwickelnde
Message Queuing Telemetry Transport (MQTT), das der Xesar-Schnittstelle zugrunde liegt, ist ein Publish-Subscribe-Protokoll für die Nachrichtenübermittlung.
Hauptakteure sind Broker, Publisher und Subscriber. Der Publisher versendet Nachrichten unter einem bestimmten Topic und Subscriber können dieses Topic abonnieren und dadurch Nachrichten vom Publisher erhalten.
Der Broker ist dabei Vermittler und stellt einen Mechanismus bereit, um Nachrichten von Publishern zu empfangen und diese an Subscriber, die das jeweilige Topic abonniert haben, weiterzuleiten.
Das Format, das dabei für den Nachrichteninhalt (Payload) der Xesar MQTT-Schnittstelle verwendet wird, ist JSON. Hier gilt es jede Nachricht zu serialisieren und zu deserialisieren, um Json Inhalte in Objekt umzuwandeln und umgekehrt.
Die Xesar-MQTT-Schnittstelle ist zwar leistungsstark und bietet vielseitige Funktionen, aber die Implementierung einer Vielzahl von Befehlen und Ereignissen mit der Schnittstelle erfordert spezielles Know-how im Bereich MQTT und kann zeitaufwendig sein. Xesar-Connect wurde entwickelt, um diese Herausforderungen zu vereinfachen.
Vorteile von Xesar-Connect
Xesar-Connect ist eine Open-Source-Library, die als Abstraktionsebene für die MQTT-Funktionalität dient. Sie ermöglicht es Entwickelnde, sich auf die Integration zu konzentrieren, ohne tief in die technischen Details von MQTT eintauchen zu müssen.
Durch die Bereitstellung von nutzerfreundlichen Funktionen so wie Modellklassen für eine Vielzahl von Commands, Queries und Events, vereinfacht Xesar-Connect den Integrationsprozess erheblich.
Man muss sich beim Senden von Queries und Commands nicht um das Warten auf die Antwort im entsprechenden Event Topic kümmern, da es intern von Xesar-Connect übernommen wird.
Außerdem muss man sich wegen der bereitgestellten Modellklassen nicht um das mühsame Serialisieren/Deserialisieren des JSON Payloads kömmern.
We love open-source
Die Geschichte unserer Open-Source-Library ist eng mit unserer Leidenschaft für Open-Source-Software verknüpft. Wir glauben fest an die Kraft der Gemeinschaft und den freien Austausch von Wissen und Werkzeugen.
Die Idee für diese Library entstand aus einem wiederkehrenden Bedarf: Für verschiedene Integrationen wurden immer wieder ähnliche Features benötigt. Anstatt jedes Mal das Rad neu zu erfinden, entschieden wir uns dazu, eine zentrale Lösung zu schaffen, die diese gemeinsamen Anforderungen adressiert.
Übersicht der Library und ihre Hauptfunktionen
Xesar-Connect hebt sich durch eine Reihe von Kernfunktionen hervor, die es Entwickelnden ermöglicht, effizient und effektiv mit dem Xesar-Schließsystem zu interagieren. Hier sind die Hauptfunktionen und die damit verbundenen Vorteile:
- Verbindung zum Broker aufbauen: Einfache und flexible Möglichkeit, eine Verbindung zum MQTT-Broker des Xesar-Systems herzustellen.
- Login und Logout: flexible Unterstützung beim Einloggen/Ausloggen im Xesarsystem sowohl mit API-Token als auch mit Benutzername und Passwort.
- Senden von Commands und das automatische Warten auf Antwort-Events: Mit einer einzigen Funktion ist es beispielsweise möglich einen Command
"Erstellen eine neue Person" (CreatePerson) zu senden und auf die Antwort von Xesar "PersonCreated" zu warten. - Abfragen von Xesar Entitäten mit Queries: Unterstützt mit einer einzigen Funktion die Suche nach einzelnen Elementen sowie nach mehreren
Elementen. Beispielsweise kann mit einfachen Filtern bestimmte Personen/Einbauorte/Kalender im Xesar-System abgefragt werden. Diese umfassenden Abfragemöglichkeiten erleichtern die Verwaltung und Integration von Xesar Daten in Drittanwendungen. - Abstrahierter Paging-Mechanismus für Queries: Es wird neben der bestehenden Queryfunktion auch eine QueryStream Funktion angeboten,
die besonders für große Datenmengen einen Vorteil bringen kann, um eine geringere Netzwerklast zu erreichen. Dabei werden die Daten in definierbare Blöcke aufgeteilt und in Form eines asynchronen Datenstroms zurückgegeben. - Abonnieren von MQTT Topics: Es können mit simplen Filtern gewünschte Topics abonniert werden. Diese Flexibilität ermöglicht es, gezielt Informationen zu erhalten und die Systemressourcen effizient zu nutzen.
- Auf System- oder Zutrittseventshören und reagieren: Es kann auf Topics für System- oder Zutrittsevents abonniert und reagiert werden. Die Möglichkeiten reichen vom Senden einer Mail, wenn die Batterie einer Offlinekomponente leer wird bis hin zum Senden einer Chatnachricht, wenn eine Tür zu lange offen steht. Diese Funktionalität ermöglicht eine proaktive Wartung und Sicherheitsüberwachung.
- Modelle für Commands und Events und Queryitems: Vereinfacht die Interaktion mit dem Xesar-System durch vordefinierte Klassen. Eine manuelle Serialisierung/Deserialisierung ist nicht mehr notwendig.
- Fehlerhandling: Bietet robuste Mechanismen zur Fehlerbehandlung, um die Zuverlässigkeit und Stabilität der Integrationen zu gewährleisten.
Mögliche Anwendungsfälle
- Mails bei Batterie Warnungen senden:
An dieser Stelle darf auf einen eigenen Blogbeitrag zu diesem Anwendungsfall verwiesen werden. Zusammengefasst geht es um eine Spring Boot Applikation, die auf eine leer werdende Batterie einer Evva Komponente hinweist. - Fernöffnungstool: Die Fernöffnungsfunktion von Xesar kann durch Xesar-Connect erweitert werden. Ein Beispiel wäre die Integration in ein Smartphone oder Tablet.
- Automatisches Erstellen und Anpassen von Personen:
Aus einem externen System heraus können Personen im Xesar-System erstellt werden und z.B.: basierend auf ihrer Kostenstelle ein Standardberechtigungsprofil zugewiesen bekommen. - Verbindung mit externen Prozesssystemen:
Zeitlich begrenzte Freigaben können durch externe Prozesssysteme verlängert werden, wenn z.B.: notwendige Schulungen absolviert wurden. - Integration in Aufzugsteuerungen:
Mittels Xesar-Connect können Aufzugsteuerungen und Xesar kombiniert werden und so Personen, Zugang zu bestimmten Stockwerken erteilen.
Herausforderungen bei der Umsetzung
Die Entwicklung unserer Library war von vielfältigen Herausforderungen geprägt. Eine der zentralen Hürden lag in der Natur von MQTT, das in IoT-Anwendungen für die Gerätekommunikation verwendet wird.
Unser Ziel war es, eine einfach zu handhabende Lösung anzubieten, ohne dabei ihre Flexibilität einzuschränken. Gleichzeitig war es uns wichtig, die darunterliegende generische Funktionalität für maximale Flexibilität zugänglich zu halten, während bestimmte Teile der Implementierung interne Details bleiben.
Die Entwicklung von Lösungen für Commands, die potenziell mehrere Events zurückgeben können, stellte sich als eine der herausforderndsten Aufgaben heraus.
Insbesondere die Option, dass einige dieser Events optional sein können, erforderte eine durchdachte Lösung. Um diesem Problem zu begegnen, haben wir eine Timer-Funktionalität implementiert, die nach dem Absenden eines Commands eine bestimmte Zeit auf das Eintreffen möglicher Events wartet.
Verwendete Technologien
Für die Entwicklung unserer Library haben wir uns für eine Reihe moderner Technologien entschieden. Aufgrund der Ausdrucksstärke, der Sicherheitsfeatures und der asynchronen Natur, wurde Kotlin als Programmiersprache ausgewählt. Kotlin's Serialisierung Funktion Kotlinx ermöglicht uns eine effiziente Serialisierung von Daten, während Gradle als unser Build-System dient. Der asynchrone Eclipse Paho MQTT-Client wurde aufgrund seiner Robustheit und Flexibilität für die MQTT-Kommunikation ausgewählt. Für das Testing setzen wir auf Kotest und Mockk, um eine umfassende Testabdeckung zu gewährleisten. Testcontainer ermöglichen uns Tests in isolierten Umgebungen durchzuführen. Diese Technologieauswahl bietet eine leistungsstarke, flexible und gut getestete Library, die den Bedürfnissen moderner Entwicklungsprojekte gerecht wird.
Erste Schritte mit Xesar-Connect:
- Fügen Sie die Xesar-Connect Bibliothek zu Ihrer Kotlin/Java Applikation hinzu. Maven Central Repository: https://central.sonatype.com/artifact/com.open200/xesar-connect.
- Ergänzen Sie einen Security Provider wie z.b BouncyCastle in Ihrer Mainklasse, welcher für eine sichere Kommunikation mit dem Xesar-System erforderlich ist.
- Erstellen Sie einen eigenen Benutzer, der nur für die Integration verwendet wird mit einem generierten Passwort. Wir empfehlen in Produktivumgebungen die Verwendung von starken Passwörtern und das Nutzen von Benutzergruppen mit minimalen Rechten.
- Laden Sie die Konfiguration des Benutzers als ZIP-Datei herunterladen. In der Konfiguration sind die notwendigen Daten für die Verbindung und Authentifizierung enthalten.
- Rufen Sie in Ihrer Main Klasse folgende Methode auf, um eine Verbindung zum Xesar-System herzustellen:
XesarConnect.connectAndLoginAsync(Config.configureFromZip(pathToZip)).await().
Nun können Sie die bereitgestellten Funktionen von Xesar-Connect erkunden.
Testing von Xesar-Connect
Ein entscheidender Aspekt der Entwicklung von Xesar-Connect ist die Gewährleistung seiner Zuverlässigkeit und Leistungsfähigkeit durch umfassende Tests. Unser Ansatz umfasst zwei Hauptbereiche: Unit-Tests und Integrationstests.
Umfangreiche Unit-Tests
Für die Kernfunktionalitäten von Xesar-Connect, insbesondere die Komfortfunktionen und die Serialisierung/Deserialisierung, haben wir eine umfangreiche Sammlung von Unit-Tests implementiert.
Diese Tests sind darauf ausgelegt, jede Funktion isoliert zu überprüfen, um sicherzustellen, dass sie wie erwartet arbeitet. Durch die Abdeckung dieser kritischen Bereiche können wir die Zuverlässigkeit der Serialisierungsprozesse und der bereitgestellten Komfortfunktionen garantieren.
Dies ist besonders wichtig, da die korrekte Serialisierung und Deserialisierung von Daten die Grundlage für eine erfolgreiche Kommunikation mit dem Xesar-System über MQTT darstellt.
Dies reduziert die Fehleranfälligkeit und beschleunigt die Entwicklungszeit, indem es die Notwendigkeit eliminiert, eigene Modelle von Grund auf neu zu erstellen.
Integrationstests mit Testcontainer
Um die Integration der MQTT-Kommunikation zu testen, setzen wir auf Integrationstests mit Testcontainer. Wir verwenden ein Docker-Image von Mosquitto, einem beliebten MQTT-Broker, um eine realistische Testumgebung zu schaffen.
Diese Methode ermöglicht es uns, die Interaktionen von Xesar-Connect mit dem MQTT-Broker unter Bedingungen zu testen, die denen einer echten
Einsatzumgebung nahekommen.
Durch die Simulation der MQTT-Kommunikation können wir sicherstellen, dass Xesar-Connect korrekt mit dem Broker interagiert, Nachrichten effektiv sendet und empfängt und auf Events wie vorgesehen reagiert.
Die Kombination aus umfangreichen Unit-Tests und praxisnahen Integrationstests mit Testcontainer stellt sicher, dass Xesar-Connect eine robuste und zuverlässige Lösung für die Integration des Xesar-Schließsystems bietet.
Diese rigorosen Testing-Verfahren sind ein wesentlicher Bestandteil unserer Entwicklungsphilosophie, um hochwertige Software zu liefern, die den Anforderungen unserer Nutzer gerecht wird.
Community and Contribution
Wir ermutigen alle, die an Xesar-Connect interessiert sind, sich an der Weiterentwicklung zu beteiligen. Egal, ob Sie Fehler melden, neue Funktionen vorschlagen oder direkt zum Code beitragen möchten, Ihre Unterstützung ist herzlich willkommen. Durch Ihre Beiträge können wir Xesar-Connect zu einem noch besseren Werkzeug für alle machen.
Probleme melden und Funktionen anfordern
Haben Sie einen Fehler gefunden oder haben Sie eine Idee für eine neue Funktion, die Xesar-Connect verbessern könnte? Bitte zögern Sie nicht, dies über unseren Issue-tracker zu melden. Wir schätzen Ihr Feedback und Ihre Vorschläge sehr, da sie uns helfen, die Library kontinuierlich zu verbessern.
Zum Code beitragen
Wenn Sie direkt zum Code von Xesar-Connect beitragen möchten, sei es durch die Behebung eines Fehlers oder die Implementierung einer neuen Funktion, besuchen Sie bitte unser GitHub-Repository. Dort finden Sie alle notwendigen Informationen, um loszulegen, einschließlich einer Anleitung für Beitragende.
Links
- Repository: https://github.com/open200/xesar-connect
- Issue Tracker: https://github.com/open200/xesar-connect/issues
Wir laden Sie ein, Teil unserer wachsenden Community zu werden. Gemeinsam können wir Xesar-Connect zu einem noch wertvolleren Tool für alle machen, die sichere und effiziente
Integrationen mit dem Xesar-Schließsystem realisieren möchten.
Dokumentation und Quellen
Um Ihnen den Einstieg und die Arbeit mit Xesar-Connect so einfach wie möglich zu machen, haben wir unser Demoprojekt zur Verfügung gestellt, das alle Funktionen demonstriert, die in diesem Beitrag vorgestellt wurden.
Kotlin Demoprojekt
Das Demoprojekt ist eine praktische Ressource, die Ihnen zeigt, wie Sie die verschiedenen Funktionen von Xesar-Connect in einem realen Kontext nutzen können. Von der Einrichtung der Verbindung zum MQTT-Broker, über das Senden von Commands und das Abonnieren von Events, bishin zum effektiven Fehlerhandling des Demoprojekts, deckt alle wichtigen Aspekte ab.
Sie finden das Demoprojekt unter folgendem Link:
https://github.com/open200/xesar-connect-kotlin-demo
Xesar-Connect vereinfacht Komplexität
In diesem Blogbeitrag haben wir einen umfassenden Einblick in Xesar-Connect gegeben, unsere innovative Open-Source-Library, die die Integration des Xesar-Schließsystems vereinfacht.
Wir haben die Hintergründe und Herausforderungen beleuchtet, die zur Entwicklung von Xesar-Connect geführt haben, und die Kernfunktionen und Vorteile detailliert beschrieben, die es von anderen Lösungen abheben.
Von der einfachen Verbindungsherstellung zum MQTT-Broker, über typisierte Models für Commands und Events, bis hin zu umfangreichen Testing-Verfahren Xesar-Connect bietet eine robuste und benutzerfreundliche Plattform für Entwickelnde.
Der Mehrwert von Xesar-Connect liegt in seiner Fähigkeit, die Komplexität der MQTT-Kommunikation zu abstrahieren und Entwickelnden zu ermöglichen, sich auf die Schaffung wertvoller Integrationen zu konzentrieren.
Durch die Bereitstellung einer reichen Auswahl an Features, ist Xesar-Connect eine entscheidende Ressource für jeden, der mit dem Xesar-Schließsystem
arbeitet.
Wir möchten uns bei Ihnen für Ihre Zeit und Ihr Interesse an Xesar-Connect bedanken. Ihre Unterstützung und Ihr Feedback sind unerlässlich für die kontinuierliche Verbesserung und den Erfolg dieser Library.
Wir laden Sie ein, Xesar-Connect auszuprobieren, uns Ihr Feedback zu geben und diesen Beitrag in Ihren Netzwerken zu teilen, um die Sichtbarkeit und den Einfluss von Xesar-Connect weiter zu erhöhen.
Gemeinsam können wir die Integration von Schließsystemen in die moderne Gebäudetechnologie weiter vorantreiben und sicherere, effizientere Lösungen für alle schaffen.
Vielen Dank für Ihre Unterstützung und Ihr Engagement!