Wie finden Sie diesen Artikel? Helfen Sie uns, bessere Inhalte für Sie bereitzustellen.
Vielen Dank! Ihr Feedback ist eingegangen.
There was a problem submitting your feedback, please try again later.
Was denken Sie über diesen Artikel?
Installieren wir nun Software, mit der wir ein echtes industrielles Open-Source-Gateway einrichten können
Damit meine ich
Node-Red zum Entwerfen und Verwalten von Kontrollflussdiagrammen,
MQTT zum Veröffentlichen von Befehlen und Daten an vorgelagerte Systeme und zum Abonnieren und Veröffentlichen von Edge-Nodes, die Relais und Stromversorgung der Geräte steuern, Temperatur, Luftfeuchtigkeit, Luftdruck messen ... und vieles mehr.
SQLITE3 für das Speichern und Abrufen historischer Daten, damit Trends erfasst und Analysen erstellt werden können
Bevor wir mit der Installation fortfahren können, müssen Sie die ersten Videos
SD-Karte erstellen
Dateisystem erweitern, um die gesamte SD-Karte zu nutzen
WICHTIGER HINWEIS: DIESER BEITRAG HAT HOCHGRADIG TECHNISCHE INHALTE UND DER VORGANG NIMMT EINIGE ZEIT IN ANSPRUCH (mehr als eine Stunde; bei mir hat es noch länger gedauert, weil ich es gleichzeitig auf Video aufgenommen habe). Ich habe mich bemüht, alles korrekt zu dokumentieren, aber dennoch könnten sich Fehler eingeschlichen haben. Bitte lassen Sie mir Ihre Verbesserungsvorschläge und Korrekturen zukommen.
Anschließend konfigurieren wir Datenquellen und Architektur, und dann installieren wir Node-Red, MQTT in Form von Mosquitto und SQLITE3 für Datenbankfunktionen.
Wir fügen viele Node-Red-Module hinzu, damit Node-Red sie verwenden kann. Außerdem fügen wir Knoten für Modbus, GPIO, serielle und andere Funktionen hinzu.
- Repository-Quellen und Architekturparameter konfigurieren
Architektur aktualisieren, indem Sie die folgenden Zeilen zu /etc/opkg/arch.conf hinzufügen (die fett gedruckten Zeilen unten)
arch all 1
arch any 6
arch noarch 11
arch i586 12
arch quark 13
arch x86 14
arch i586-nlp-32 16
arch i586-nlp-32-intel-common 21
arch iot2000 26
- Eine Datei namens /etc/opkg/iotdk.conf
hinzufügen und den folgenden Inhalt in die Datei einfügen
src iotdk-all http://iotdk.intel.com/repos/2.0/iotdk/all
src iotdk-i586
HYPERLINK "http://iotdk.intel.com/repos/2.0/iotdk/i586" http://iotdk.intel.com/repos/2.0/iotdk/i586
src iotdk-quark
HYPERLINK "http://iotdk.intel.com/repos/2.0/iotdk/quark" http://iotdk.intel.com/repos/2.0/iotdk/quark
src iotdk-x86
HYPERLINK "http://iotdk.intel.com/repos/2.0/iotdk/x86" http://iotdk.intel.com/repos/2.0/iotdk/x86
- Zum Hinzufügen eines Repositorys für MRAA den folgenden Befehl ausführen
echo "src mraa-upm http://iotdk.intel.com/repos/3.5/intelgalactic/opkg/i586" > /etc/opkg/mraa-upm.conf - Zum Aktualisieren der lokalen Listen für Repositorys opkg update ausführen
- Nun installieren wir nodejs, sqlite3 und eine Fehlerbehebung für sshd. (Bei der Installation von nodejs tritt ein sshd-Fehler auf.) Führen Sie die folgenden Befehle aus.
opkg install nodejs
opkg install sqlite3
opkg install sshd
- Zum Installieren von Node-Red und zugehörigen Modulen führen Sie die folgenden Befehle aus. (Sie können sie alle auf einmal kopieren und in die Befehlszeile einfügen. Dann werden sie der Reihe nach abgearbeitet.)
npm install -g --unsafe-perm node-red
cd
mkdir .node-red
cd .node-red
npm install node-red-dashboard
npm install node-red-contrib-modbus
npm install mraa
npm install galileo-io
npm install node-red-contrib-gpio
npm install node-red-contrib-upm
npm install node-red-contrib-modbustcp
npm install moment
npm install node-red-admin
npm install node-red-contrib-bigtimer
npm install node-red-contrib-esplogin
npm install node-red-node-sqlite
npm install node-red-contrib-timeout
npm install node-red-node-openweathermap
Wenn Sie nicht alle diese Module brauchen, entfernen Sie diese Zeile einfach. Der Vorgang dauert eine Weile (rund eine halbe Stunde). Wahrscheinlich werden auch Warnmeldungen angezeigt. Das ist bei der derzeitigen Version des Betriebssystems und diesen Modulen ganz normal und beeinträchtigt die Funktionsfähigkeit der Module nicht.
- Anschließend können wir Mosquitto installieren. Verwenden Sie dazu die folgenden Befehle. Falls „wget“ die Datei nicht findet, gibt es wahrscheinlich eine neuere Version. Überprüfen Sie das Repository und aktualisieren Sie Ihr Skript. Auch dieser Vorgang kann einige Zeit dauern.
cd
wget http://mosquitto.org/files/source/mosquitto-1.4.10.tar.gz
tar xzf mosquitto-1.4.10.tar.gz
cd mosquitto-1.4.10
# dieser nächste Schritt dauert eine Weile
adduser mosquitto
make WITH_SRV=no
cd test/broker
make test
cd ../../
cp client/mosquitto_pub /usr/bin
cp client/mosquitto_sub /usr/bin
cp lib/libmosquitto.so.1 /usr/lib
cp src/mosquitto /usr/bin
- Node-Red und Mosquitto für den automatischen Start beim Hochfahren oder Neustart einrichten.
- Legen Sie für Node-Red eine Datei an, in die Sie den folgenden Text einfügen. Dateipfad: etc/init.d/autostart_node_red.sh
#! /bin/sh
# Beispiel:
/usr/bin/node-red -u /home/root/.node-red -v &
exit 0
- Legen Sie für Mosquitto eine Datei an, in die Sie den folgenden Text einfügen. Dateipfad: /etc/init.d/autostart_mosquitto.sh
#! /bin/sh
# Beispiel:
/usr/bin/mosquitto &
exit 0
- Nun können Sie Berechtigungen hinzufügen und das automatische Starten aktivieren
chmod +x /etc/init.d/autostart_node_red.sh
update-rc.d autostart_node_red.sh defaults
chmod +x /etc/init.d//autostart_mosquitto.sh
update-rc.d autostart_mosquitto.sh defaults
Wenn nun alles installiert ist, können wir neu starten und sehen, ob es funktioniert
HINWEIS: Zum Testen von SQLITE3 können Sie das folgende Skript ausführen, um eine Datenbank mit Tabellen anzulegen und die Berechtigungen festzulegen. Das Skript fügt auch ein paar Zeilen in einige Tabellen ein. Wenn Sie das nicht möchten, können Sie einfach auf die Verwendung verzichten oder diese Zeilen nach dem Test wieder löschen.
cd
mkdir dbs
sqlite3 ~/dbs/iot.db << EOF
CREATE TABLE IF NOT EXISTS \`pinDescription\` (
\`pinID\` INTEGER PRIMARY KEY NOT NULL,
\`pinNumber\` varchar(2) NOT NULL,
\`pinDescription\` varchar(255) NOT NULL
);
CREATE TABLE IF NOT EXISTS \`pinDirection\` (
\`pinID\` INTEGER PRIMARY KEY NOT NULL,
\`pinNumber\` varchar(2) NOT NULL,
\`pinDirection\` varchar(3) NOT NULL
);
CREATE TABLE IF NOT EXISTS \`pinStatus\` (
\`pinID\` INTEGER PRIMARY KEY NOT NULL,
\`pinNumber\` varchar(2) NOT NULL,
\`pinStatus\` varchar(1) NOT NULL
);
CREATE TABLE IF NOT EXISTS \`users\` (
\`userID\` INTEGER PRIMARY KEY NOT NULL,
\`username\` varchar(28) NOT NULL,
\`password\` varchar(64) NOT NULL,
\`salt\` varchar(8) NOT NULL
);
CREATE TABLE IF NOT EXISTS \`device_list\` (
\`device_name\` varchar(80) NOT NULL DEFAULT '',
\`device_description\` varchar(80) DEFAULT NULL,
\`device_attribute\` varchar(80) DEFAULT NULL,
\`logins\` int(11) DEFAULT NULL,
\`creation_date\` datetime DEFAULT NULL,
\`last_update\` datetime DEFAULT NULL,
PRIMARY KEY (\`device_name\`)
);
CREATE TABLE IF NOT EXISTS \`readings\` (
\`location\` varchar(20) NOT NULL,
\`value\` int(11) NOT NULL,
\`logged\` timestamp NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS \`pins\` (
\`gpio0\` int(11) NOT NULL DEFAULT '0',
\`gpio1\` int(11) NOT NULL DEFAULT '0',
\`gpio2\` int(11) NOT NULL DEFAULT '0',
\`gpio3\` int(11) NOT NULL DEFAULT '0'
);
INSERT INTO PINS VALUES(0,0,0,0);
CREATE TABLE IF NOT EXISTS \`temperature_record\` (
\`device_name\` varchar(64) NOT NULL,
\`rec_num\` INTEGER PRIMARY KEY,
\`temperature\` float NOT NULL,
\`date_time\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS \`Device\` (
\`DeviceID\` INTEGER PRIMARY KEY,
\`DeviceName\` TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS \`DeviceData\` (
\`DataID\` INTEGER PRIMARY KEY,
DeviceID INTEGER,
\`DataName\` TEXT, FOREIGN KEY(DeviceID ) REFERENCES Device(DeviceID)
);
CREATE TABLE IF NOT EXISTS \`Data\` (
SequenceID INTEGER PRIMARY KEY,
\`DeviceID\` INTEGER NOT NULL,
\`DataID\` INTEGER NOT NULL,
\`DataValue\` NUMERIC NOT NULL,
\`epoch\` NUMERIC NOT NULL,
\`timestamp\` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP , FOREIGN KEY(DataID, DeviceID ) REFERENCES DeviceData(DAtaID, DeviceID )
);
.exit
EOF
cd
chmod 777 ~/dbs
chmod 666 ~/dbs/iot.db
cd
Nun konfigurieren wir Node-Red für ein paar Tests.
Die MQTT-Konfiguration lautet wie folgt, wobei Sie natürlich Ihre IP-Adresse verwenden müssen. Sie ermitteln Ihre IP-Adresse, indem Sie in der Linux ssh-Befehlszeile „ifconfig“ verwenden.
Den ModBus-Knoten können Sie nur mit einem TCP-Modbus-Gerät testen, und auch dann klappt es nicht mit allen Geräten. Ich habe Daten von einer industriellen Wärmebildkamera (FLIR AX8) abgerufen.
Der Befehl für die sqlite3-Auswahl in Node-Red lautet „select * from pins;“, der Datenbankpfad ist „/home/root/dbs/iot.db“.
Wenn Sie auf die Schaltfläche klicken, sollten Sie die folgende debug-Ausgabe erhalten.
Die Dashboard-Elemente werden einfach geöffnet und dann mit der Schaltfläche „Fertig“ wieder geschlossen, um die Standardeinstellungen zu übernehmen. Das ermöglicht ihre Anzeige im Webbrowser. Wir gehen in einem späteren Video näher auf diesen Aspekt ein.
Gehen Sie zu der Adresse, die Sie bereits verwenden, und fügen Sie am Ende „/ui“ ein. Das Format sieht dann so aus: http://192.168.1.178:1880/ui/#/0 – aber natürlich mit Ihrer IP-Adresse.
Das sollte mit jedem beliebigen Browser vom Smartphone bis zum Desktop-PC funktionieren. Ich bevorzuge Chrome, aber auch bei den anderen Browsern, mit denen ich das ausprobiert habe, gab es keine Probleme.
Zum Abschluss testen wir MQTT. Konfigurieren Sie MQTT Lense (ein Chrome-Add-on) wie abgebildet, wobei Sie die IP-Adresse durch Ihre eigene ersetzen.
Das ist alles recht langwierig, aber leider unumgänglich. Ich hoffe, dass Siemens einige dieser Anwendungen zum Basiscode hinzufügen wird, aber solange das nicht der Fall ist, gelangen Sie nur mit diesen Schritten zu diesem Punkt.
Falls Sie dabei auf Probleme stoßen sollten, posten Sie einfach den betreffenden Befehl und Ihre Frage, damit wir Ihnen helfen können.