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!