Pi Setup - MaxTrautwein/TAR-Weiterentwicklung-IoT-Tor GitHub Wiki
Dieser Guide soll Ihnen zeigen wie Sie einen Raspberry Pi für Node Red mit eigenem Broker aufsetzen.
Bevor mit dem Setup begonnen werden kann, gilt es einen Raspberry Pi auszuwählen. Ich empfehle mindestens einen PI 3 zu wählen, jedoch ist es denkbar, dass dieses Setup auch mit älteren Modellen möglich ist.
Zum Programmieren des Pi's empfiehlt es sich den offiziellen Imager zu verwenden.
Dieser kann hier: https://www.raspberrypi.org/software/ heruntergeladen werden.
Mithilfe des GUI kann nun eine Version ausgewählt werden.
Für Production oder erfahrene Nutzer empfiehlt sich eine Headless Image
.
Für Anfänger oder einige Entwicklungszwecke kann eine vollständige Desktop Installation von Nutzen sein.
Im Falle einer Desktop Installation ist dieser Schritt nicht unbedingt notwendig, da diese Konfiguration auch in UI vorgenommen werden kann.
Als Referenz für diesen Schritt gilt: https://www.raspberrypi.org/documentation/configuration/wireless/headless.md
WIFI Config
Auf der SD Karte auf welcher das Image gebrannt wurde, wird nun eine Datei mit dem Namen wpa_supplicant.conf
erstellt.
Wichtig ist, es handelt sich um eine .conf
und nicht um eine .conf.txt
Datei.
Folgender Inhalt ist einzufügen:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
country=<Insert 2 letter ISO 3166-1 country code here>
update_config=1
network={
ssid="<Name of your wireless LAN>"
psk="<Password for your wireless LAN>"
}
Hier sind noch einige individuelle Anpassungen nötig.
Für <Insert 2 letter ISO 3166-1 country code here>
ist innerhalb Deutschlands DE
einzusetzen.
Sollten Sie sich außerhalb von Deutschland befinden, so prüfen Sie bitte die ISO 3166-1 nach dem korrekten Code
Für <Name of your wireless LAN>
den Namen Ihres WLAN Netzwerkes
Für <Password for your wireless LAN>
das dazugehörige Passwort
SSH freischalten
SSH ist aus Sicherheitsgründen standardmäßig deaktiviert.
Um SSH verfügbar zu machen, erstellen Sie eine Datei mit dem Namen ssh
.
Note: die Datei hat keine Endung und keinen Inhalt
Für die ssh Verbindung sind folgende Daten zu beachten:
Benutzername: pi
Passwort: raspberry
Im Falle einer Desktop Installation ohne ssh jetzt bitte das Terminal öffnen
Der erste Schritt nach dem Flashen sollte immer ein Update sein. Damit wird die Software auf den aktuellsten Stand gebracht.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
Basieren auf: https://mosquitto.org/blog/2013/01/mosquitto-debian-repository/
Um den Broker in diesem Fall mosquitto
zu installieren, bitte folgende Befehle ausführen:
# Den Verschlüsselungs Key laden
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
# Den Key lokal hinzufügen
sudo apt-key add mosquitto-repo.gpg.key
#Verzeichnis wechseln
cd /etc/apt/sources.list.d/
Nun muss die richtige Datei für die Installation heruntergeladen werden. Dies ist abhängig vom Betriebssystem. Folgende Optionen stehen derzeit zur Wahl:
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
sudo wget http://repo.mosquitto.org/debian/mosquitto-stretch.list
sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list
Um die Version zu prüfen empfehle ich: https://linuxconfig.org/check-what-debian-version-you-are-running-on-your-linux-system/
Vermutlich wird es für Sie Buster
sein.
# Sollte es nicht um Buster handeln, so ersetzen Sie den folgenden Link
sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list
# Paketliste aktualisieren
apt-get update
# mosquitto Installieren
apt-get install mosquitto
Die Dokumentation für mosquitto finden sie unter: https://mosquitto.org/documentation/
NOTE: Sollte eine Entwicklungsumgebung für Node Red benötigt werden, so folgen Sie bitte den Anweisungen unter: https://nodered.org/docs/getting-started/development
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
# Um Node Red manuell zu starten kann "Node-red-start" verwendet werden.
# Auto start von Node Red einrichten
sudo systemctl enable nodered.service
# Einmal neu starten
node-red-restart
Die primäre Konfigurationsdatei von Mosquitto befindet sich standardmäßig unter /etc/mosquitto/mosquitto.conf
Diese sollte jedoch bei ihrem Ursprung beibehalten werden.
Platzieren Sie Ihre Konfiguration(en) unter /etc/mosquitto/conf.d/<SOME_NAME>.conf
Ich habe in diesen Fall /etc/mosquitto/conf.d/00_IoT_TorModell.conf
gewählt.
Diese Datei enthält folgenden Inhalt:
#Port Auswahl
listener 1883 0.0.0.0
#Passwort Datei
password_file /etc/mosquitto/pwfile
Achtung: bei einem zu kurzem Passwort schlägt die Verbindung für Tasmota & Node-Red fehl.
Nun müssen Sie einen Benutzer konfigurieren. Dies ist mit folgendem Befehl möglich.
sudo mosquitto_passwd -c /etc/mosquitto/pwfile <UserName>
Für weitere Details können Sie in der Dokumentation nachlesen: https://mosquitto.org/man/mosquitto_passwd-1.html
Es wird nach einem Passwort gefragt. Diese Benutzername und Passwortkombination wird dann in der angegebene Datei gespeichert. Dabei ist das Passwort als sha512-pbkdf2
hash und der Benutzername als clear text gespeichert.
Beispiel Inhalt. user: test
passwort: test
pi@raspberrypi:~ $ cat /etc/mosquitto/pwfile
test:$7$101$Hvvd6ck7zBB37A5o$j5K5OVlIXwYL1K5d0nYbpZNArflshvS+lglcm04ubOgK7YvKkMTOmj8ERiuMuKm/iYQUoDO9f2qzRt+ST0aeQw==
Erste Tests mit dem Broker
Um die ersten Tests möglichst einfach durchzuführen, wird ein weiteres Paket benötigt.
Dieses kann mit sudo apt-get install mosquitto-clients
installiert werden.
Für diesen Teil ist es erforderlich zwei separate Terminal Instanzen offen zu haben.
Subscribe to a Topic
mosquitto_sub -u <User> -P <Password> -t <Topic>
<User>
The Username --> example: test
<Password>
The Password for the Username --> example: test
<Topic>
The Topic --> example: dev/test
Publish a message to a Topic
mosquitto_pub -u <User> -P <Password> -t <Topic> -m <Message>
<User>
The Username --> example: test
<Password>
The Password for the Username --> example: test
<Topic>
The Topic --> example: dev/test
<Message>
The Message --> example: Hello World
Samba kann verwendet werden um Festplatteninhalte auf dem Netzwerk zu teilen. So dass diese beispielsweise auch mit dem Windows Explorers einfach erreicht werden können.
Dies kann in vielerlei Hinsicht während der Entwicklung von Nutzen sein. Für die Verwendung in dem Production environment würde ich jedoch abraten.
Installation mit: sudo apt-get install samba
Configuration
Konfiguration öffnen mit sudo nano /etc/samba/smb.conf
Am Ende der Datei folgende Konfiguration einfügen:
[NodeRedDev]
comment = Dev Folder for NodeRed Nodes
#Pfad zum Ordner welcher freigegeben werden soll
path = /home/pi/NodeRed
read only = no
guest ok = yes
Den Ordner vorbereiten
#für den Fall dass der Ordner noch nicht existiert
mkdir NodeRed
#Schreib Rechte anpassen
sudo chmod 0777 NodeRed/
Samba Neustarten
Restart samba
/etc/init.d/smbd restart
Damit Tasmota ordnungsgemäß arbeiten kann, benötigt es einen Zeit-Server. Zum Austausch der Zeitinformationen wird das NTP (Network Time Protocol) verwendet.
NTP Server Installieren
sudo apt-get install chrony
NTP Server konfigurieren
In das Konfigurationsverzeichnis wechseln mit: cd /etc/chrony/
Die Configuration Öffnen: sudo nano chrony.conf
Damit chrony
als NTP Server agiert müssen in der Konfiguration die entsprechenden Netze freigegeben werden.
Dazu muss die Netzadresse in folgender Form in der Konfiguration angehängt werden allow IP/Mask
Alternativ kann auch allow all
verwendet werden um generell alle anfragen zu erlauben.
Beispiel
allow 192.168.0.0/16
In diesem Falle werden alle IP's im Bereich von 192.168.0.0
bis 192.168.255.255
berechtigt den Server anzufragen.