Archiv der Kategorie: Python

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. 😉

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!