Ich habe Ende März ein öffentliches Open-Source Projekt angefangen. Es handelt sich um eine Integration für Home Assistant um die Beteiligung am Helium Netzwerk zu überwachen. Mit der Integration werden alle nötigen Daten in einer graphischen Oberfläche zusammengetragen. Ich habe die Gelegenheit bekommen, das Projekt in der Helium Community vorzustellen und es wurde daraufhin im Home Assistant Community Store als Standartintegration aufgenommen.
Das Projekt ist ein großer Erfolg und laut Schätzungen wird die Integration bereits jetzt von etwa 100 unterschiedlichen Helium Adressen verwendet. Ich will in diesem Beitrag ein wenig die Aufgaben und den Aufwand erläutern, der für den Betrieb solch eines Open-Source Projektes in Frage kommt.
Entwicklung
Die Entwicklung ist vermutlich der einfachere Teil. Es macht Spaß, neues Wissen über Technologien, Bibliotheken und Produkte anzueignen und anzuwenden. Meistens startet man mit einer sehr einfachen Anleitung und versucht sich immer weiter vorzuarbeiten, bis ein funktionierendes Ergebnis hervortritt.
Genau so eine Anleitung habe ich hier gefunden und angewendet. Eine Integration für Home Assistant zu erstellen, ist grundlegend kein Problem. Womit ich mich aber schwer getan getan habe ist, wie ich die nötigen Daten in die Anwendung bekomme. Die Daten müssen aus der Blockchain extrahiert, mit anderen Datenquellen kombiniert und bereitgestellt werden. Diesen Aspekt habe ich im nächsten Unterkapitel näher erläutert.
Architektur
Damit die Daten in Home Assistant integriert werden können, müssen sie als erstes heruntergeladen, kombiniert und verarbeitet werden. Meine Herausforderungen rund um das Extrahieren von Daten aus der Solana Blockchain habe ich hier erläutert.
Das alles kann lokal nicht durchgeführt werden, weil ich private Schnittstellen nutze, bei der die Gefahr besteht, dass sie blockiert werden, wenn zu viele die selben Schnittstellen nutzen und Traffic generieren. Außerdem gibt es weitere Off-Chain Daten, das heißt Daten, die nicht auf der Blockchain sind, die mit den Daten aus der Blockchain kombiniert werden müssen.
Ich habe zu diesem Anlass ein Backend entwickelt, welches die nötigen Daten als einfache API bereitstellt. Dieses Backend greift auf alle nötigen Schnittstellen zu, und führt sehr stark Caching an, damit die genutzten Schnittstellen nicht überlastet werden. Aktuell ist das Backend nicht Open-Source, ich überlege aber, auch diesen Teil der Anwendung zu veröffentlichen.
Community
Die Integration habe ich primär für mich entwickelt. Ich will meine Involvierung bei Helium überwachen und sinnvolle Entscheidungen treffen. Was spricht dagegen, es mit anderen zu teilen, die ebenfalls ihre Geräte überwachen möchten? Das war der initiale Grund, das Projekt in Form zu bringen und teilbar zu machen.
Nachdem ich das Projekt im offiziellen Helium Discord geteilt habe, war die Resonanz bereits sehr positiv und erste Nutzer haben angefangen die Integration zu nutzen. Ich bekam dann auch eine Anfrage, das Projekt bei einem Community Meeting, der Helium Hacks Happy Hour vorzustellen. Die Resonanz war auch dort sehr positiv und hatte zur Folge, dass das Projekt viele weitere Nutzer gewonnen hat.
Es ist kritisch, dass man Gelegenheiten wahr nimmt, Open-Source Projekte vorzustellen und Feedback einzuholen.
Finanzierung
Open-Source Projekte werden manchmal von Unternehmen finanziert, manchmal von Privatpersonen. Wenn Unternehmen das Projekt finanzieren, dann sind Entwickler dazu beauftragt, einen bestimmten Teil ihrer Arbeitszeit in die Entwicklung, Wartung und Support des Projektes zu investieren.
In diesem Projekt wird das Projekt von mir als Privatperson finanziert. Ich entwickle in meiner Freizeit an dem Projekt und setze mich für die Weiterentwicklung ein. Es erfüllt für mich den Anspruch an ein „Hobby“ und das ist bereits ein ausreichender Grund, das Projekt zu finanzieren. Weitere Freuden ergeben sich, wenn das Projekt tatsächlich genutzt wird. Viele Open-Source Projekte erlauben zusätzlich Raum für finanzielle Unterstützung von den Nutzern.
Wenn ich am Entwickeln bin, wird eine große Menge an Kaffee konsumiert. Ich nutze daher Ko-Fi um meinen Nutzern die Gelegenheit zu geben, sich an dem Projekt zu beteiligen. Sie können mich bei der Entwicklung unterstützen, indem sie mein Kaffee finanzieren. Diese Art der Finanzierung braut in gewisser Hinsicht auch Transparenz auf und macht ein Projekt sympathischer.
Wartung, Support, Fehlerkorrekturen, Dokumentation
Die Wartung eines Projektes ist vermutlich der größte Faktor, der im Aufwand eine Rolle spielt. Als Ein-Mann-Team muss man alle Aufgaben übernehmen, die in einem regulären Softwareprojekt nach Veröffentlichung anfallen.
Oftmals wird der Support mit einem Ticketsystem begleitet. Im Falle dieses Projektes dient GitHub Issues als eine zentrale Stelle zur Fehlermeldung. Die Integration wurde getestet an einer Instanz und hat in den Entwicklungstests erfolgreich funktioniert.
Abhängigkeiten und Dienste
Der Anspruch an Open-Source Projekte ist, dass die laufenden Kosten für das Projekt möglichst gering sind. Man bedient sich möglichst vorhandenen externen Diensten, die ein Teil der Funktionalität oder Dienste abdecken.
In diesem Projekt war es anfangs nicht anders. Ich nutzte für die Integration zum einen eine undokumentierte Hotspotty API, die im Web Interface genutzt wurde, um allgemeine Helium Statistiken abzufragen. Zum Anderen die kostenfreie Coingecko API, zur Abfrage der aktuellsten Preise für Tokens. Alle anderen Daten wurden über das Backend bereitgestellt, welches die Daten aus der Blockchain und aus anderen Schnittstellen bündelt und als eine einfache API bereit stellt.
Das Backend ist ein Python Flask Webserver, der auf einer Hetzner Cloud Instanz gehostet ist. Die monatlichen Kosten für diesen Dienst sind aktuell bei 5€.
Nutzungsstatistiken
Es gibt keine Nutzungsstatistiken von der App. Um jedoch den Ressourcenverbrauch des Backends möglichst gering zu halten, werden Daten aus der Blockchain zwischen gespeichert.
Aus diesen Cache Daten können Nutzungszahlen abgeschätzt werden. In meinem Backend gibt es ein Cache Mechanismus der für jede Zeile ein Time-To-Live von 24h hat. Eine Tabelle mit den Abfragen der Wallet-Daten beinhaltet damit alle Wallets der letzten 24h, die auf das Backend zugegriffen haben. Alle Daten aus der Blockchain sind bereits öffentlich verfügbar und stellen so keine datenschutztechnisch Relevanten Informationen dar.
Basierend auf den Daten weiß ich, dass die Integration aktuell von etwa 100 Helium Adressen und 250 Hotspots genutzt wird. Das ist wenige Monate nach Veröffentlichung eine erfreuliche Entwicklung und ist ein wichtiger Motivationsfaktor.
Fazit
Ein Open-Source Projekt entwickelt sich nicht von selbst. Es handelt sich um ein vollwertiges Projekt mit Entwicklung, Qualitätssicherung, Wartung, Support und Innovation.
Die Home Assistant Helium Integration hat einige entscheidende Meilensteine erreicht. Die ersten hundert Nutzer sind gemeistert. Es stehen einige entscheidende Funktionalitäten an, die eine Adoption von Helium weiter voran treiben kann.
Mein nächstes Ziel ist die Integration von LoRaWAN Endgeräten in Home Assistant voran zu treiben. Zu diesem Zweck habe ich Kontakt mit verschiedenen Betreibern von Helium LoRaWAN Nameservern aufgebaut.