Archiv der Kategorie: PHP

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!

MultiChain – offene Plattform für Blockchain Anwendungen

Vor etwa eineinhalb Jahren hatte ich schon einmal das Vergnügen, die MultiChain Plattform des englischen Unternehmens Coin Sciences Ltd. zu evaluieren. Vor etwas mehr als einem Monat wurde die Version 1.0 offiziell gelauncht, siehe https://www.multichain.com/blog/2017/08/multichain-1-released-new-partners/.

Grund genug, die aktuelle Version anzutesten und … ich bin begeistert! Die stabile Plattform war ja schon zuvor als extrem flexibel bekannt, d.h. dass mit den vielfältigen Parametrierungsmöglichkeiten eine große Anzahl von Usecases (im Speziellen für permissioned Blockchains) abgedeckt werden kann.

Was weiters sehr gefällt, ist die extrem gute Dokumentation und das engagierte Entwicklerteam, welches bei eventuellen Fragen oder Problemchen stets flott weiterhilft.

Einen Schwerpunkt legte ich auf das Ausprobieren der APIs. Für alle möglichen Umgebungen stehen auf Github Libraries und Demos bereit, ich testete das PHP-API mit dem Web-Demo, siehe https://github.com/MultiChain/multichain-web-demo.

GUI MultiChain Demo / API Test

Das Web-Demo selbst ist zwar etwas verbesserungswürdig, was etwa den Umfang der Funktionen betrifft, die RPC Aufrufe des Deamons sind aber extrem performant. Kein Wunder, ist es doch eine native C/C++ Implementierung (auf Basis des Bitcoin Clients).

Die Argumentation der Entwickler, dass sich mit den in dieser Plattform eingesetzten „Assets“ und „Streams“ eine Vielzahl von Anwendungen realisieren lassen, für die man heutzutage (unnötigerweise?) Smart Contracts einsetzen würde, ließ mich dann auch noch schmunzeln.

Mal sehen, wie es weitergeht …

Online QR-Code Generator

Die Open Source Library PHP QR Code hatte ich schon in einigen Projekten in Verwendung. Jetzt habe ich sie mit einem GUI ausgestattet, mit dem man folgende Parameter setzen kann:

  • Level der Fehlerkorrektur (Rekonstruktion von 7% bis 30% beschädigter Daten)
  • Größe des QR-Codes in „Pixels per Point“ (Point entspricht einem Punkt des QR-Codes)
  • Größe des Rahmens in Points
  • Transparenz des Hintergrundes
Screenshot QR-Generator

Screenshot QR-Generator

Der QR-Code wird in PNG-Format generiert, zusätzlich werden die Rohdaten („Points“) in Textform ausgegeben.

Der Generator ist unter http://multidec.web-lab.at/qr/ zu erreichen, mein Fork ist auf GitHub.

Für weitere Projekte (Online- oder Offline Generierung von QR-Codes, Integration in Applikationen etc.) stehe ich gerne zur Verfügung.

Bitcoin Zahlungen über Coinbase

Seit 11.9.2014 ist die in den USA populäre Bitcoin-Plattform Coinbase auch in 13 europäischen Ländern, darunter auch Österreich, verfügbar (die Futurezone berichtete darüber).

Das habe ich zum Anlass genommen, mir die Möglichkeiten der Integration des Payment-APIs von Coinbase anzusehen und praktisch auszuprobieren (visit link).

coinbase_demo

Ich werde noch weitere Varianten erproben und in das Demo aufnehmen.

Stay tuned!

„MoWi“ – MObile WalletInfo

Ein Tool für alle, die mehrere Cryptocoin-Wallets (Bitcoin, Litecoin etc.) am Laufen haben und die Übersicht behalten wollen … und zwar immer und überall.

Funktionsweise: Ein Serverscript (PHP) verbindet sich zu den (im LAN erreichbaren) konfigurierten Wallets, frägt über die RPC API-Calls „getinfo“ und „getmininginfo“ die Daten ab und stellt sie auf einer mobilen Webseite (mit jQuery Mobile) zur Verfügung.

Screenshot_2014-09-30-12-26-17 Screenshot_2014-09-30-12-26-26

Der Zugriff auf diese Daten kann z.B. mit https und Userauthentifizierung geschützt werden. Das Tool ist im derzeit im Testbetrieb.

ÖRAG Immobilien App jetzt mit POIs aus data.gv.at

Die „ÖRAG Immobiliensuche“ ist als App für Android und iOS seit letztem Jahr erfolgreich auf dem Markt.
In der neuen Release wurde die Darstellung von POIs integriert, d.h. ein Immobiliensuchender kann sich komfortabel über die Umgebung seiner (zukünftigen) Immobilie informieren.

Die POIs stammen aus „data.gv.at – offene Daten Österreichs“ – http://www.data.gv.at/.
Sie umfassen: Öffentlicher Verkehr, Schulen, Kindergärten, Universitäten, Krankenhäuser, Parks, Märkte, Polizeistationen etc.

OGD-POIs_Android

Die Daten werden periodisch von den OGD-Servern geladen, vorverarbeitet und für die Apps auf einem eigenen Server zur Verfügung gestellt.

Das Projekt wurde für die ÖRAG Österreichische Realitäten-AG in Zusammenarbeit mit Artware Multimedia GmbH und Christoph Lederer abgewickelt.

Das App gibt es im Apple App Store und im Google Play Store.

Update 11/2016: Die App ist übrigens auch als Anwendung am Portal „data.gv.at – offene Daten Österreichs“ verlinkt:  https://www.data.gv.at/anwendungen/oerag-immobiliensuche/