Archiv der Kategorie: Internet of Things

Addendum 11/2023

Here is some previously unpublished information about a few former projects, prototypes and hackathons – almost exclusively in connection with blockchain technology. When I get the chance, I will go into more detail about the individual topics. Until then: Stay tuned…

During Industry meets Makers 2022 my colleagues Roman and Leopold and me worked on the topic „IoT Sensornetzwerk für das OpenLandLAB“. Details see here and here.

In October 2022 I had the opportunity to attend the european x-eHealth-Hackathon 2022 representing the Austrian Ministry of Health (BMSGPK). The topic was „Blockchain based Notarization for Health Information Management“. The presentation of the results can be found here, the protptype was running here (note: not all modules are active any longer).

March 2019: When I attended the Infineon-Hackathon in Graz, I focussed on „notarization and proof for geo based games“ – for details see the pitch and some code at Github. In the following Hackathon in Villach (November 2019) the topic was extended to „blockchain security for (geo based) games“ and some more usecases for the „Blockchain Security 2 Go“-Kit, like ERC20 Tokens and NFTs … here the pitch.

… to be continued.

Node-RED und die DatNoS-Blockchain

Im Rahmen eines Workshops diskutierten wir letztlich, wie man aus Node-RED am besten Daten in eine Blockchain schreiben könnte, um diese Daten unmanipulierbar zu protokollieren und anderen Beteiligten (z.B. innerhalb einer Konsortium Chain) zur Verfügung zu stellen. Als Blockchainsystem sollte „DatNoS“ (Data-Notarization-Service) verwendet werden, ein auf Multichain basierendes System, das z.B. auch vom Projekt „Air-Quality-Chain“ verwendet wird, wo seit fast 3 Jahren Umweltmessdaten protokolliert werden (Details siehe hier).

Also los …

Da DatNoS ein recht schlankes API anbietet, besteht das Zusammensetzen des API-Requests aus lediglich ein paar Zeilen Javascript in einem Node-RED function node.

Dieser Node wird dann in einen Flow eingebaut, der den Request nach Json umwandelt, noch ein API-Token (zur Authentifizierung am Service) ergänzt, das API über https aufruft und den Response anzeigt.

Die Daten wurden damit erfolgreich in der DatNoS-Blockchain in einem sog. Stream abgelegt und können z.B. mit dem DatNoS-Viewer (der natürlich auf ganz einem anderen Blockchain-Node läuft) abgerufen werden.

Mission completed 😉

Edit (26.6.2022): Der Node-RED Flow kann hier heruntergeladen werden. Der enthaltene API-Key ist jedoch deaktiviert, bei Interesse gerne einen neuen anfordern.

 

Future Tech Bootcamp 2019

Von 25. bis 28 Juni 2019 fand das „1. Future Tech Bootcamp“ im Rahmen der Initiative „Industry meets Makers“ (IMM) statt, die drei Themen waren Blockchain, Internet of Things (IoT) & Artificial Intelligence (AI).

Industry meets Makers – 1. Future Tech Bootcamp

Die Location und die Versorgung der Teilnehmer stellte die Fachhochschule St. Pölten zur Verfügung. Die Veranstaltung war also nicht nur thematisch top, sondern auch perfekt organisiert!

Einige bei IMM 2019 bereits aktive Maker wurden durch mehrere Teams der FH ergänzt und es wurde fleissig an vielen unterschiedlichen Aufgabenstellungen (hier „Briefings“ genannt) gearbeitet.

Mehrere Unternehmen stellten Know How, Equipment und Tools zur Verfügung, sodaß ein sehr beeindruckender Technologie Stack für uns Maker bereit stand:

Der am Bootcamp verfügbare Technologie Stack

Ich fokussierte mich (wie üblich) auf den Bereich Blockchain und hatte auch ein Thema vorbereitet (Air Quality Chain mit den Open-Data aus Niederösterreich), wechselte aber kurzfristig den Fokus, um Blockchain-Integrationen für mehrere andere Projekte zu ermöglichen:

IoT-Blockchain Interfaces

Die konkrete Aufgabe war also, eine Schnittstelle zwischen der Microtronics Cloud und der 0bsnetwork Blockchain-Plattform zu entwickeln und zu implementieren. Die von drei im Rahmen des Bootcamps erarbeiteten Usecases erfassten bzw. berechneten Daten können damit über das Microtronics-API ausgelesen, in der Blockchain unveränderbar protokolliert und später über ein weiteres API wieder ausgelesen werden, z.B. zur Auswertung oder Darstellung in einem Web-GUI.

Dazu wurden folgende Teile des Technologie Stacks genutzt:

Von mir genutzte Teile des Technologie Stacks

Auf der IoT-Seite (links) befinden sich die Microtronics Devices, die per Mobilfunknetz mit der Cloud kommunizieren, sowie Sensoren von einem weiteren Technologiepartner (sens.at), die über LoraWAN angebunden sind. Zentral sorgt die Microtronics Cloud für die Erfassung, Verarbeitung und Speicherung der Daten und das Device Management. Die Daten werden dann über REST API-Calls von mehreren Instanzen der neu implementierten IoT-Blockchain Schnittstelle abgerufen und in der 0bsnetwork Blockchain abgelegt.

Bei den betroffenen IoT Usecases handelt es sich um die Projekte „Measurement of swimming pool conditions“, „Smart e-filling station“ und „Environmental measurement via LoraWAN“.

Bei der „e-filling station“ handelt es sich um eine Implementierung der Datenerfassung für eine e-Tankstelle, pro Ladevorgang werden die wesentlichen Daten in der Blockchain abgelegt und damit unmanipulierbar protokolliert. Parallel dazu findet die Bezahlung der Aufladung mit einem Cryptotoken statt, im implementierten Demosystem wurde ein „KillowattStunden-Token“ dafür erstellt.

Beispiel: In der Blockchain protokollierte Daten der e-Tankstelle

Beim Projekt „Environmental measurement via LoraWAN“ ging es um Umgebungsdaten (Temperatur, Feuchte und CO2 Gehalt), die im Rahmen der Zucht von Speisepilzen (Austernpilzen) anfallen und überwacht und protokolliert werden müssen. Briefing-Partner für dieses Projekt ist übrigens Firma Hut & Stiel, die für ihr Motto „Wie machen aus Kaffeesatz Speisepilze!“ immer bekannter wird …

Beispiel: Grafische Darstelllung der in der Blockchain protokollierten Daten des Projektes „Pilze“

Nach 4 „heißen Tagen“ ging das Bootcamp am Freitag mit einer Präsentation aller Projekte plus der Projekte der parallel stattfindenden „Summer School“ zu Ende …

Ich sage Danke an alle Beteiligten und vor allem an das Organisationsteam, stellvertretend für viele erwähne ich hier Sandra (IMM), Franz (FH-StP) und Tom (Moderation)!

Update (17.7.2019): Der Bericht im IMM Magazin ist online!

Blockchain & IoT

Dieses Demo (erstellt für einen Workshop im Rahmen der Fachkonferenz Digitalisierung – IoT + Data Science) zeigt, wie man Leistungen von IoT-Devices über eine Blockchain „kaufen“ – d.h. bezahlen und ausführen lassen kann. Als „Leistung“ wird eine Lampe geschaltet, die „Bezahlung“ erfolgt mit einem „IoT-Light“-Token, welches mittels einer modernen Blockchainplattform (0bsnetwork.com) erstellt, gehandelt und übertragen wird.

Ein weiterer Teil demonstriert, wie Sensordaten des Devices über dieselbe Kommunikationsschnittstelle rückübertragen und in der Blockchain protokolliert werden können.

Die Komponenten dieses Demos sind:

Komponenten des Demos

Als IoT Device wird ein Raspberry Pi mit einem SenseHat-Modul verwendet, welches die Aktorik (LED-Feld als „Lampe“) und Sensorik (Joystick als Schalter) realisiert. Das Gerät stellt über WLAN eine WebSocket Verbindung zum Broker her.

Die IoT-Schnittstelle zwischen den Devices und einem Blockchain Client besteht aus einem WebSocket Broker und einem Client-Interface, welches die Blockchain auf Aktionen für bestimmte Walletadressen überwacht und die Daten über WebSocket an das IoT-Device weiterleitet. Hier ein Teil des Sourcecodes für ein solches Modul:

Als Blockchainumgebung wird in diesem Setup das TestNet des 0bsnetwork eingesetzt. Der Client bietet ein Web-GUI für die Walletfunktionen an: Den Handel mit den hier verwendeten „IoT-Light“ Tokens (gehandelt wird auf der „DEX“, der Decentralized Exchange) und das Senden der Token an das IoT-Device. Ein weiterer Node stellt die API Schnittstelle für das Client-Interface zur Verfügung, mit dem „Explorer“ können die Daten in der Blockchain (Blöcke, Transaktionen, Peers …) angesehen werden.

Ablauf

Auf der „DEX“ (integrierte Handelsplattform) werden die „IoT-Light“-Token für die Bezahlung des IoT-Devices gehandelt …

Handelsplattform für Token im 0bsnetwork

Über das Wallet werden Token an das IoT-Device (bzw. an seine Adresse 3Myh…) gesendet …

Senden von Token an das IoT-Device

Details zur Transaktion

Das Client-Interface …

… registriert die „Bezahlung“ für das Device, sendet ein Kommando an dieses und …

Rasperry Pi 3 mit Sense Hat als IoT Device

… das Device führt die bezahlte Leistung aus und schaltet Licht für die entsprechende Dauer ein.

Und das war es auch schon 😉

Digitalisierung: IoT + Data Science

Im Rahmen der Fachkonferenz Digitalisierung – IoT + Data Science am 7.11.2018 – wie immer perfekt veranstaltet von Seidler-Consulting – Danke, Joachim – hielten wir einen Workshop zum Thema „Was haben Blockchain-Anwendungen und IoT miteinander zu tun?“ ab. „Wir“, das waren Thom Kunz (Verein IoT Austria – The Austrian Internet of Things Network), Uwe Schimon (IVM GmbH) und ich.

Mein Part waren zwei Demos zum Thema „Blockchain & IoT“. Im ersten Demo zeigte ich, wie Daten von Sensoren (Temperatur, Luftfeuchte, Luftdruck), die über LoraWAN an einen MQTT Broker übermittelt wurden, von einem MQTT Client abonniert, empfangen und in einen Blockchain-Stream geschrieben werden.

Prozessdatenerfassung mit LoraWAN – Infrastruktur

Die IoT Sensoren, das LoraWAN und den MQTT Broker stellte die IVM GmbH zur Verfügung, den Rest (die Blockchain auf Basis MultiChain, die Scripts und die Darstellung mit plotly.js) steuerte ich bei. Abgesehen von der MQTT-Anbindung entspricht das Demo im Wesentlichen dem Aufbau der Air-Quality-Chain. Folgend ein Beispiel der Darstellung der Messdaten:

Beispiel für Darstellung der übermittelten Messdaten

Die Präsentation des Workshops kann übrigens hier heruntergeladen werden.

Im zweiten Demo ging es dann etwas detaillierter zur Sache …

IOTA Full Node

IOTA zählt heute wohl zu den am meisten polarisierenden Technologien am Sektor der Kryptowährungen.

Mit dem anstatt einer Blockchain eingesetzten „Tangle“ sollen IOTA Systeme Transaktionen „blitzschnell“ verarbeiten und dabei „endlos skalieren“. Da es kein Mining gibt, fallen keine Transaktionskosten an und „quantum proof“ (d.h. die Algorithmen können nicht von – irgendwann kommenden – Quantencomputern gebrochen werden) soll das System auch noch sein.

Da werden natürlich Verfechter der „alten“ Kryptowährungen, die auf Bitcoin- bzw. auf Ethereumtechnologien basieren, nervös und reiten auf diversen Eigenschaften von IOTA herum, ibs. auch auf den Skurilitäten, z.B. der Einsatz von ternärer Logik auf „normaler“ (binärer) Hardware oder eine selbsterfundene Hashfunktion, die sich als kryptografische Schwachstelle herausgestellt hatte.

Wie dem auch sei. Ich finde die Technologie jedenfalls interessant genug, um mich damit zu beschäftigen. Also habe ich Anfang Dezember 2017 mal einen Server („Full Node“) mit IRI (der IOTA Reference Implementation) aufgesetzt. War zwar etwas Bastelei (mittlerweilen gibt es gute Anleitungen) und auch das manuelle Suchen und Konfigurieren von „Neighbors“ (Nodes mit denen sich der eigene zu verbinden hat) ist zumindest ungewöhnlich.

Gut, jetzt habe ich also einen funktionierenden Full Node und unterstütze das IOTA Netzwerk. Mein Wallet (Light Wallet unter Windows, Android muss ich noch testen) kann ich auch damit verbinden und IOTA hin- und herschicken. Sehr spannend 😉

Eigentlich würde ich sehr gerne noch ganz andere Dinge damit ausprobieren, z.B. Daten von IOT-Devices verarbeiten (übertragen, speichern, verkaufen …), was ja der eigentliche Hauptzweck von IOTA sein soll. Das ist aber noch nicht wirklich verfügbar, zumindest nicht für die Allgemeinheit.

Aber wenigstens konnte ich einmal das IRI-API anbinden, an eine simple Webapplikation, mit der man den Status meines Nodes beauskunften kann.

Ich bleibe jedenfalls dran und werde über die Verarbeitung von IOT-Daten berichten, sobald es relevante News gibt.

Also: Stay tuned …

MQTT, Node-RED & Blockchain

Und noch eine Kopplung eines IoT Systems mit einer Blockchain …

Ich hoffe, es wird nicht langweilig. Aber mein lieber Kollege M. wollte es unbedingt sehen: „Zeig mir doch, wie man mit Node-RED in die Blockchain schreiben kann, aber getriggert über MQTT, wenn’s geht.“

Also gut:

Die zu protokollierenden Daten werden über einen MQTT Publisher an einen MQTT Broker gesendet. Ich verwende hier als Broker das (Opensource) System von Mosquitto.org.

MQTT & Node-RED & Blockchain – Übersicht

In Node-RED sorgt ein simpler Flow dafür, dass die Daten, die über den MQTT Subscriber eintreffen, nach einer Umformatierung der Json-Datenstruktur über WebSockets an den IoT-Interface Node gesendet werden.

Node-RED – Blockchain – Flow

Der Interface Node (auch bereits beim IoT-Demo und beim Alexa Demo verwendet) nimmt die Daten entgegen und …

Node-RED – Blockchain – Interface Node

… protokolliert sie dann in der Blockchain. Hier verwende ich natürlich wieder meinen Favoriten, die Multichain!

Multichain-Stream „DeviceLog“, der die von Node-RED und den anderen Demos eingetragenen Daten beinhaltet.

Aja … der MQTT Publisher: Da gibt es mehrere Möglichkeiten. Um es schnell und einfach zu machen, habe ich ein fertiges Beispiel genommen (https://github.com/CloudMQTT/python-mqtt-example/) und (in den Zeilen 58 und 60) den Url und das Topic entsprechend angepasst.

Und das war es auch schon …

LG an Kollegen M. 😉

Alexa schreibt in die Blockchain

In Erweiterung zum Proof of Concept Blockchain – Internet Of Things wird in diesem Demo gezeigt, wie über einen „digitalen Assistenten“ eine Blockchain-Transaktion ausgelöst wird. Ich verwende dazu mein Amazon Echo Dot Device „Alexa“.

Amazon Echo Dot – „Alexa“

Alexa nimmt dazu „Blino“ zur Hilfe. Der „Blockchain-Interface-Node“ stellt die Schnittstelle zwischen IoT-Devices und Blockchains zur Verfügung.

Alexa schreibt in die Blockchain – Übersicht

Ablauf

  • Ein Sprachkommando wie „Alexa, sage Blino, er soll 471234 in die Blockchain schreiben.“ startet den Vorgang.
  • Alexa ruft den „Skill“ (=Anwendung) Blino in der Amazon Cloud auf.
  • Der Skill ruft das Blino-Webservice auf, welches die entsprechenden Informationen an den Interface-Node sendet, der sie in die Blockchain schreibt. Danach wird die entsprechende Antwort erstellt und an den Skill retourniert.
  • Der Skill übergibt die Antwort an Alexa, welche sie dann ausspricht.

Der Multichain-Stream „DeviceLog“, der die von Alexa mittels Blino protokollierten Daten beinhaltet.

Anmerkung: Zum Testen habe ich einen Voice Synthesizer verwendet:

Automatische erzeugtes Sprachkommando für Alexa

Der gesamte Voice Dialog hört sich so an.

Der Skill

Die Konfiguration des Skills mittels Alexa Skills Kit (ASK) besteht im Wesentlichen aus folgenden Schritten:

Alexa Skill Kit: Allgemeine Konfiguration

Die allgemeine Konfiguration beinhaltet den „Invocation Name“, die Bezeichnung mit der Alexa den Skill im System findet, wenn sie mit „Alexa, starte Blino …“ angesprochen wird.

Im nächsten Schritt werden die „Intents“ konfiguriert, das sind die Aktionen, die über Sprachbefehle aufgerufen werden können. Intents können Parameter haben – in diesem Fall einen Parameter „Nummer“.

Alexa Skill Kit: Konfiguration der Intents

Nun werden verschiedene Phrasen („Utterances“) konfiguriert, die alle denselben Intent  aufrufen – mit Übergabe des Parameters „Nummer“.

Alexa Skill Kit: Konfiguration der Utterances

Schließlich wird noch der Endpoint eingerichtet, die Serverfunktion, die vom Skill aufgerufen wird und das Ergebnis an Alexa zurückgibt.

Skills verwenden in fast allen Fällen Amazon’s Lambda Funktionen. Im vorliegenden Beispiel habe ich allerdings ein eigenes Webservice verwendet, da ich die Anbindung an den Interface Node bereits aus einem Vorprojekt zur Verfügung hatte.

Der Endpoint

Der Endpoint ist als Webservice implementiert, die Verarbeitung besteht im Wesentlichen aus

  • Parsen des Json-Requests und Ermitteln der angeforderten Verarbeitung,
  • der eigentlichen Verarbeitung, z.B. Aufruf des Interface Nodes mittels WebSockets
  • und dem Aufbauen des Responses, der dann an über den Skill an Alexa retourniert wird

Alexa Skill Kit: Testen des Endpoints

Fazit

Ob das Protokollieren von Daten in einer Blockchain durch einen digitalen Assistenten jetzt enorm viele praktische Anwendungsmöglichkeiten hat, muss natürlich jeder selbst beurteilen 😉

Ich fand es jedenfalls recht interessant, ein wenig in die Welt von Alexa eintauchen und mich mit der Entwicklung von Skills und deren Schnittstellen zu beschäftigen.

Dabei sind mir auch gleich Ideen für weitere Experimente gekommen: Alexa könnte sich ja auch mit Node-RED unterhalten, oder? Das werde ich mich bald einmal ansehen …

Blockchain – Internet of Things

In einem Proof of Concept wird hier gezeigt, wie ich eine bidirektionale Kopplung einer Blockchain mit dem „Internet of Things“ (d.h. mit IoT-Devices) implementiert habe.

Von Blockchain Nodes können „Assets“ an IoT-Devices gesendet werden, welche dann entsprechend reagieren. Ein „Asset“ kann als „Wert“ (ähnlich einer Währung) gesehen werden, auf dessen Basis das IoT-Device eine Aktion durchführt, z.B. ein bestimmte Leistung für eine bestimmte Zeit erbringt.

Unabhängig davon kann das IoT-Device bei bestimmten Ereignissen (z.B. Sensorinputs) entsprechende Daten in der Blockchain protokollieren lassen.

Die Blockchain Technologie sorgt in diesem Aufbau also einerseits für die dezentrale Übermittlung der Daten zwischen den Systemteilnehmern (peer to peer), andererseits für die unveränderliche Protokollierung aller entsprechenden Aktionen (Steuerbefehl, Antwort darauf) und zusätzlicher Ereignisse (Sensoren).

In diesem Setup wird eine „permissioned Blockchain“ verwendet, d.h. es sind nur bekannte (authentifizierte) Systemteilnehmer zugelassen.

Systemaufbau

Blockchain – IoT Kopplung – Übersicht

Blockchain

Als Blockchain-Technologie wird eine entsprechend konfigurierte Installation von „Multichain“ eingesetzt, die seit Kurzem als Version 1.0 gelaunched wurde. Das System muss aus (mindestens) zwei Nodes bestehen, hier als Seednode und IoT-Interface Node bezeichnet. Ein Echtsystem besteht natürlich aus mehreren weiteren Nodes.

Seednode

Der Seednode ist der „erste“ Node der hier verwendeten Blockchain und stellt u.a. die initialen Konfigurationsdaten zur Verfügung. Der Node kann über ein Web-GUI angesprochen werden:

MultiChain Web-GUI – Anzeige der Nodes

Damit können die Aktionen komfortabler als über die Commandline erledigt werden: Senden der Assets und Beauskunften der Streams.

IoT-Interface Node

Auf diesem Node läuft ein Script, welches bei definierten Ereignissen in der Blockchain (z.B. Empfang von Assets) aufgerufen wird, mit dem IoT-Device per WebSockets kommuniziert und Rückmeldungen von diesem in „Streams“ in der Blockchain protokolliert.

Seednode: Senden von Assets an den Interface-Node

Unabhängig davon kann das IoT-Device weitere Daten an den Interface Node senden, der die entsprechenden Einträge in den Blockchain Streams erzeugt.

IoT-Device

Der Demoaufbau verwendet als IoT Device einen Rasperry Pi 3B. Auf diesem läuft ein WebSocket-Client, welcher mit dem Interface Node kommuniziert und die Steuerungsaufgabe ausführt, wie das Schalten der Aktoren (z.B. Lampe für die gewünschte Zeitdauer) und das Einlesen der Sensoren.

Rasperry Pi 3 mit Sense Hat als IoT Device

Stream „DeviceLog“ – Protokollierung von Meldungen des IoT Devices

In einem nächsten Schritt soll – in Zusammenarbeit mit DI Uwe Schimon von der IVM GmbH – das System um Smart Contracts auf Basis Ethereum erweitert werden.

Stay tuned!