Ich mag mal mein letztes Abenteuer hier kurz niederschreiben. Ich bastle recht viel mit dem home rund um das Thema Metriken und deren Visualisierung und Auswertung.
Ich arbeite mich gerade in die Microsoft Welt ein (man moege die Steine bitte spaeter werfen, die machen mittlerweile richtig gutes Zeug) und dachte daher, dass Azure IoT in dem Zug eine gute Idee waere.
Projektziel: Alle homee Geraete sollen in Azure als IoT Devices vorhanden sein und alle Attributes sollen als Status des Twins in der Cloud vorhanden sein.
Im Nachgang wird dann mal n bissl mit Machine Learning und Konsorten gespielt.
Das Projekt baut auf .NET Core 2.1 auf, dem relativen neuen cross-Platform Projekt von MS. Als API wird (mal wieder) auf der geleakten Websocket API Definition aufgebaut. Der Einfachheit halber wird ASP.NET Core verwendet, da dort sog. HostedServices angeboten werden, die man wunderbar fuer den Zweck des Websocket Connection Managements verwendet werden kann.
Zum Start wird mit GET:all
die Node-Liste geholt und mit der Device Liste aus Azure abgeglichen. Das Delta wird dann hinzugefuegt. Es werden auch beim Anlegen alle Attribute ein Mal als initialer Zustand des Twins gepusht. Ab diesem Zeitpunkt wird nur noch auf Attributes gehorcht und diese werden als Teilzustand in den Zustand des Twins gemerged.
Zusaetzlich schreibe ich das Ganze dann auch noch in eine SQL Server Datenbank, damit ich Grafana drauf werfen kann und schauen kann, ob alle Messages auch brav bis zu Azure IoT durch gehen.
Aktuell ist das Projekt noch nicht open-source-ready… viel hard-coded, secrets im Quellcode, etc. Hier aber ein paar kleine Ausschnitte:
Warum erzaehl ich euch das dann? Vielleicht regt das zum Nachdenken an und “inspiriert” andere sich mit dem Thema zu befassen.
Zum Thema Kosten: Ich komme mit dem Free-Tier in Azure gut aus. Dieses Erlaubt 8000 Messages pro Tag, was ich bisher mit 30 Geraeten (u.a. Motion Sensoren) nicht erreicht habe.
Freue mich auf Feedback!