Mit Mozilla Open Framework

IoT-Gateway auf Raspberry-Pi-Basis

18. Oktober 2018, 11:00 Uhr | Von Rich Miron
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Gateway-Plattform Raspberry Pi

Wie bereits erwähnt, stellt die Entwicklung eines Gateways relativ moderate Anforderungen im Hinblick auf seine elementare Aufgabe, mehrere Verbindungsoptionen zu bieten, um verschiedene IoT-Peripheriegeräte im Misch­betrieb verwenden und aufeinander abstimmen zu können. Die Raspberry-Pi-Familie bietet eine effektive Hardwarebasis für die Entwicklung solcher Geräte. In der neuesten Version, dem Raspberry Pi 3 Model B+, wird die Familie mit einem erheblich höheren Durchsatz für drahtgebundene und drahtlose Netzwerke gleichermaßen aufgewertet. Basierend auf dem Vierkern-Prozessor Arm Cortex-A53 bietet dieser Single-Board-Computer zudem eine effektive Plattform für die Arbeit mit den eingangs erwähnten Fähigkeiten der lokalen Verarbeitung.

Ohne bereits das volle Verarbeitungspotenzial des Rasp­berry Pi 3B+ auszuschöpfen, können Entwickler mit den Gateway-Basisfunk­tionen experimentieren, indem sie einfach eine Firmware auf die Karte laden, die als kostenloser Download von einem Mozilla Github Repository erhältlich ist. Die Firmware implementiert ein Basis-Gateway, auf dessen Grundlage Entwickler drahtlose Peripheriegeräte anbinden können, indem sie an den USB-Anschluss des Raspberry Pi 3 einen Wireless-Controller anschließen. Die Mozilla-Software-Implementierung unterstützt werkseitig zahlreiche USB-Dongles wie den Z-Wave-USB-Controller ACC-UZB3-U-STA von Sigma Designs.

Nach dem Einschalten wird der Entwickler von der Software durch einige grundlegende Initialisierungsschritte geführt. Anschließend beginnt sofort die Suche nach Drahtlosgeräten in der Umgebung. Über eine Web-Schnittstelle mit Schaltflächen lassen sich gefundene Geräte mit dem Gateway verbinden (Bild 3) und anschließend Geräteeigenschaften anzeigen oder ändern (Bild 4) – gemäß Definition in der entsprechenden Thing Description.

passend zum Thema

Mit der Things-Gateway-Software von Mozilla lassen sich Things einfach an ein Gateway anbinden.
Bild 3. Mit der Things-Gateway-Software von Mozilla lassen sich Things einfach an ein Gateway anbinden.
© Bild: Mozilla
MIt jedem Gerät kann entsprechend seiner Fähigkeiten in der Thing Description interagiert werden.
Bild 4. MIt jedem Gerät kann entsprechend seiner Fähigkeiten in der Thing Description interagiert werden.
© Bild: Mozilla

Noch universeller mit Hardware- Erweiterungen

Neben der einfachen Realisierung eines Basis-Gateways bietet die Kombination aus Raspberry-Pi-Ökosystem und Open-Source-Code von Mozilla Entwicklern eine umfangreiche Umgebung für die Erweiterung des Basissystems. Diese können das komplette Qellcode-Paket herunterladen, um einen besseren Einblick in den Betrieb des Gateways zu erhalten, Parameter zu ändern oder sogar eigene Gateway-Anwendungen zu entwickeln. Der auf die Ausführung auf Node.js ausgelegte Quellcode veranschaulicht wichtige Entwurfsmuster für die einzelnen Komponenten einer komplexen Gateway-Software-Anwendung.

Mit Zusatzhardware wird ein Rasp­berry-Pi-Gateway noch weitaus vielseitiger: Mit der Automation HAT-Karte PIM213 von Pimoroni erhält das Gateway auch verdrahtete Hochspannungs- und Hochstromanschlüsse, wie sie in Industrieumgebungen benötigt werden.

Bei Betriebsumgebungen mit fehlender oder schlechter Internetanbindung bietet sich ein Schmalband-LTE-Modul an: durch Anschluss einer NL-AB-RPI-Entwicklungskarte mit LTE-CAT-M1-Modul NL-SW-LTE-SVZM20 von NimbeLink und einer 4G-LTE-Antenne von Taoglas Limited an die Raspberry-Pi-Karte.

Die Auswahl ist dabei jedoch nicht auf Raspberry-Pi-Zusatzkomponenten beschränkt. Es lassen sich verschiedene Adapterkarten an den Raspberry Pi anschließen, um auf das umfassende Angebot an Zusatzkarten mit anderen Schnittstellenstandards zugreifen zu können. Unter Verwendung des Arduino-Adapters 103990079 von Seeed Technology und einer XK-WDM-Karte von Digi International lässt sich ein Gateway beispielsweise um die stromsparende DigiMesh-Maschennetzwerk-Konnektivität erweitern. Bei Anwendungen, die eine Standard-Mesh-Konnektivitätsoption benötigen, kommt die Zigbee-Karte XKB2-Z7T-WZM von Digi in Frage.

Analog dazu lassen sich mit dem Grove-Adapter 103010002 von Seeed das LoRaWAN-Mesh-Networking mit der Grove-LoRaWAN-Karte 113060006 oder mit der Grove RF-Link-Zusatzkarte 113060000 von Seeed Sub-GHz-Netzwerke mit größerer Reichweite unterstützen.

Mit dem reichhaltigen Angebot an Zusatzkarten können Entwickler ihre Hardwareplattform im Handumdrehen aufwerten und um mehrere Konnektivitätsoptionen erweitern. Auf der Softwareseite bietet das Mozilla-Projekt eine überschaubare Menge an Anforderungen und Beispielen für die Implementierung der Softwareschnittstellen, die für die Unterstützung neuer Hardware benötigt werden.

Zur Entwicklung einer Erweiterung für das Things-Gateway benötigen Entwickler Code für drei Bereiche: Device, Property und Adapter. Der Device-Code erweitert die Device-Basisklasse in der Regel um geräte- oder gerätetypspezifische Attribute und Verfahren (Funktionen).

Ein Beispiel: Ein Gerätemodul kann separate Klassen enthalten, die mit den verschiedenen Varianten des Basis­geräts verknüpft sind – z. B. eine Klasse für eine Basis-LED und eine weitere für eine intelligente Glühlampe. Das Property-Modul erweitert die Property-Basisklasse um Eigenschaftsklassen mit Verfahren zum Aktualisieren bestimmter Geräteeigenschaften wie der Farbe oder Helligkeit einer LED (Listing 3).

Bei der Entwicklung eigener Gateway-Zusatz-Softwarepakete können Entwickler zentrale Entwurfsmuster wie diesen Codeauszug verwenden. Es zeigt die Property-Klasse, die bei einer Python-basierten Things-Gateway- Erweiterung für intelligente TP-Link-Ger
Listing 3. Bei der Entwicklung eigener Gateway-Zusatz-Softwarepakete können Entwickler zentrale Entwurfsmuster wie diesen Codeauszug verwenden. Es zeigt die Property-Klasse, die bei einer Python-basierten Things-Gateway- Erweiterung für intelligente TP-Link-Geräte genutzt wird.
© Quelle: Mozilla

Und das Adapter-Modul schließlich erweitert die Adapter-Basisklasse um Klassen, die den Gerätekommunika­tionskanal initialisieren, die Netzwerk­inbetriebnahme unterstützen und Unterstützung für andere geräte- oder kommunikationsspezifische Funktionen liefern.

Das Gateway-Hauptpaket ist zwar in Javascript für Node.js implementiert, die Plattform unterstützt aber offiziell auch Python. Ungeachtet dessen lassen sich konzeptuell kompatible Erweiterungen in jeder geeigneten Sprache entwickeln. So wurden beispielsweise bereits Erweiterungen in Rust, der C++ ähnelnden Speichersicherheitssprache von Mozilla, entwickelt. Für Entwickler, die das bestehende Node.js-Backend nutzen können, bietet dieses relativ simple Erweiterungskonzept eine leistungsfähige Funktion für die schnelle Entwicklung von Gateways, die über verschiedene Konnektivitätsoptionen die Verbindung zu einer großen Bandbreite an IoT-Peripheriegeräten herstellen können.

Der Autor

Rich Miron | DigiKey Electronics
Rich Miron | DigiKey Electronics
© DigiKey

Rich Miron,
Anwendungstechniker bei Digi-Key Electronics, ist seit 2007 in der Gruppe Technical Content tätig und verantwortet in erster Linie das Schreiben und Bearbeiten von Artikeln, Blogs und Produktschulungsmodulen. Vor seiner Tätigkeit bei Digi-Key testete und qualifizierte er Mess- und Kon­trollsysteme für Atom-U-Boote. Rich hat einen Abschluss in Elektrotechnik und Elektronik von der North Dakota State University in Fargo, ND.


  1. IoT-Gateway auf Raspberry-Pi-Basis
  2. Gateway-Plattform Raspberry Pi

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Digi-Key Corporation

Weitere Artikel zu Maker-Boards

Weitere Artikel zu IIoT-Protokolle (OPCUA, MQTT, ...)

Weitere Artikel zu Gateways