Neuigkeiten:

Privates MODX und LINUX BLOG, User Registrierung ist deaktiviert! Fragen oder Tipps? Bitte per Matrix: @jolichter:tchncs.de

Hauptmenü

ioBroker mit Pi4 und SSD T5 oder M.2 (bootable)

Begonnen von Jo, 2021-02-17 | 20:31:59

« vorheriges - nächstes »

Jo

Stand 2023-Juni (VIS Verbindungsfehler, LED's, Node.js v18, Debian Bullseye)

Zum Inhalt


Update Oktober 2023: Ich wollte euch kurz darüber informieren, dass das Raspberry Pi OS kürzlich auf Debian 12 Bookworm aktualisiert wurde. Ehrlich gesagt, habe ich wenig Lust, schon zum dritten Mal ein Betriebssystem-Upgrade durchzuführen, auch wenn es noch 2 Jahre Zeit hat, jedoch gibt es für Debian 11 Bullseye nur noch Sicherheitsupdates. Deshalb habe ich mich diesmal für eine Alternative entschieden: Manjaro-ARM. Für alle, die an weiteren Informationen interessiert sind, hier der Link zum entsprechenden Thread: ioBroker mit Pi 4 und Manjaro.

Wichtig: Die Amazon Links dienen nur zur Produktinfo und ich bin an keinem Affiliate-Programm gebunden! Hauptsächlich meide ich sogar Amazon, siehe z.B. Marktcheck checkt Amazon.

Vorwort: SmartHome steht für Intelligentes-Heim und Anbieter wie z.B. Homee versprechen viel, allerdings bin ich im Laufe der Zeit auf immer mehr Unzulänglichkeiten gestoßen. Ich kann z.B. nicht verstehen, dass es die Entwickler nicht schaffen ihre eigenen Zielvorgaben zu erfüllen oder Funktionen die seit langer Zeit von vielen Usern im Forum angefragt werden umzusetzen. Bei manchen Problemen wird IFTTT als Workaround empfohlen, was noch mehr abhängig macht und dazu eine lahme Krücke über Drittanbieter bedeutet. Eine frei definierbare VIS-Anzeige, Skripte/Blockly oder Variablen bleiben verwehrt. Dafür möchte ich kein Geld bezahlen!

Ehrlich, diese ganzen SmartHome Gadgets sind eine unnötige aber interessante Spielerei und machen sogar Spaß. Angeblich lässt sich damit auch Strom sparen, z.B. mit Funk Heizkörperregler, wenn die Investitionen und Batterien den Spareffekt nicht zunichte machen. Jedoch kann dieses keine konventionelle Technik ersetzen, welche über Jahrzehnte problemlos funktionieren ohne das ihr Batterien wechseln und Updates einspielen müsst. Oder das der Chinaschrott einfach nach ein paar Jahren kaputt geht und das Nachfolgemodell nicht kompatibel ist. Stellt daher immer die Frage nach der Sicherheit und funktionieren wichtige Geräte auch ohne SmartHome?

Egal welches SmartHome ihr benutzt, Updates sind zwingend notwendig (empfehle monatlich, mind. alle 3 Monate) und bei Debian steht spätestens nach 5 Jahren ein LTS Releasewechsel an. Wer das nicht tut, handelt grob fahrlässig und sollte sich ein anderes Hobby suchen. "Never change a running system", ist hier eindeutig falsch!

Mein SmartHome und IoT (Internet of Things) Geräte betreibe ich mit hohen Sicherheitsmaßnahmen nur im eigenen Heimnetz ohne Cloud (oder IFTTT Müll) und von außen nur via VPN. Natürlich funktionieren bei einer Störung alle wichtigen Geräte auch ohne SmartHome. Als Vermittler nutze ich das Open Source System ioBroker (Link Wiki) welches auf einem Raspberry Pi4 als Smarthome-Zentrale mit einem angepassten Raspbian Linux Betriebssystem stromsparend und sehr stabil läuft. Alles ist frei, Open Source und funktioniert ohne externe Cloud (wer mag kann diese natürlich auch nutzen) und kann unabhängig von Apple, Google oder Amazon betrieben werden. Geräte unterschiedlicher Hersteller, welche sonst nicht kombinierbar sind, lassen sich damit gemeinsam nutzen. WLAN, Z-Wave, Zigbee oder Bluetooth Geräte können in ioBroker implementiert werden. Für 230V Geräte nutze ich WLAN Shellys ohne Cloud und bei batteriebetriebene Geräten bevorzuge ich Z-Wave.

Da ich schon lange ioBroker auf einem Raspberry Pi4 4GB mit einer SD-Karte nutze, zeige ich hier den Weg auf einem neuen Raspberry Pi4 8GB ohne SD-Karte und boote mit einer externen USB-SSD Festplatte. Auf Dauer ist eine SSD zuverlässiger als SD-Karten und funktioniert mit einem 5.1V Netzteil (3A) problemlos.

Anstatt einer USB SSD-Festplatte könnt ihr auch eine SD-Karte einlegen, z.B. Samsung PRO Endurance microSDXC 64 GB (soll eine längere Lebensdauer haben als Standard-SD-Karten). Ich verwende hier eine Samsung Portable SSD T5 mit USB3-Anschluss. Das funktioniert auch an einem USB2-Anschluss, dann etwas langsamer aber der Stromverbrauch ist etwas geringer. Mir reicht das für ioBroker, hinzu kommt das es bei schlechten USB3-Verbindungen evtl. zu Störungen kommen kann, siehe USB 3.0 Radio Frequency Interference (hatte mal einen USB3 Stick an der Fritzbox, welcher das 2.4 GHz WLAN störte). 512GB ist bestimmt nicht notwendig (eher übertrieben ;-) für meinen Zweck, erhöht jedoch die SSD Lebensdauer. Ihr könntet natürlich eine extra Partition z.B. als internen Cloud-Speicher nutzen.

Bei einem anderen Pi4 Projekt nutze ich anstatt einer Samsung T5 (Link Amazon) eine kleine M.2 SSD PM991a 128GB (Link Amazon) in einem ORICO M.2 NVMe SATA SSD Gehäuse USB Adapter USB 3.1 (Link Amazon).

Meine durchschnittliche Last und Stromverbrauch im Ruhemodus (CPU ca. 44 °C)
Gemessen bei 5.1 Volt, Pi OS Lite (Buster) im RunLevel 3 Modus, CPU Takt 1500MHz, Kernel 5.10.63, Node.js 12.22.7, NPM 6.14.15, ioBroker 5.1.25, Instanzen 15:
  • Stromverbrauch mit Z-Wave + Samsung SSD T5 an USB2-Anschluss (ohne WiFi, Bluetooth, Tastatur und Bildschirm): ca. 0.53A

Natürlich gibt es kurze Stromspitzen, die liegen bei knapp über einem Ampere. Vermutlich auch höher, was nur mit einem Oszilloskop messbar wäre. Übersicht Taskmanager (htop) meiner derzeitigen Konfiguration nach einem Neustart (nach 40 Minuten, ioBroker im Ruhemodus, hat also im Moment nicht viel zu tun):
  • Tasks: 43
  • Uptime ca.: 00:40
  • Load average ca.: 0.11 0.20  0.22
  • CPU 1-4 jeweils ca.: 0% - 7%
  • Mem: 821MB (nach zwei Tagen ca. 1.1GB)

ioBroker BackItUp manuell gestartet (Backup auf NAS und E-Mail senden):
  • Load average: 0.26 0.20 0.21
  • CPU 1-4 jeweils ca: 8% - 50%

Die Systemlast (Load average) ist ein Maß für die Menge der Rechenarbeit, diese war bei mir am Anfang bei ca. 0.8 - 1.1, anscheinend hat sich das beim letzten Kernel Update verbessert?

Hardware
Als erstes benötigt ihr einen Raspberry-Pi4 mit 2GB-RAM. 4GB ist absolut empfehlenswert oder besser 8GB, damit ist ein größeres TMPFS möglich und reduziert die Schreibzugriffe auf SD-Karte oder SSD. Eine gute Kühlung ist Pflicht! Ein Lüfter muss nicht sein, meine CPU wird nicht wärmer als 50 °C. Das Netzteil sollte 5.1 Volt und 3 Ampere liefern können. Wer Z-Wave nutzt, empfehle ich das Aufsteckmodul Z-Wave ZMEERAZ2 mit optimierter Antenne.



INHALT

Raspberry Pi4 Ersteinrichtung
Der Raspberry Pi benötigt ein Betriebssystem um zu funktionieren, z.B. Raspberry Pi OS (früher Raspbian genannt). Die folgende Anleitung gilt für die Lite-Version ohne grafischen Desktop im RunLevel 3 Modus für eine bessere Performance (zusätzlich HDMI, Bluetooth und WiFi deaktiviert).

1 ) Download
Zum Zeitpunkt als dieses Tutorial geschrieben wurde, war Version 2021-01-11 aktuell, bei Neueren müsst ihr das anpassen.
Update: Habe das für die Version 2021-10-30 mit LTS-Kernel 5.10 angepasst (Debian 11 Bullseye, LTS mit Support bis Dezember 2026).

Download der Image Datei "Raspberry Pi OS Lite" als ZIP-Datei 2021-10-30-raspios-bullseye-armhf-lite.zip (463MB) von der Seite raspberrypi.org/software/operating-systems.

2 ) Extrahieren
Nachdem ihr die ZIP-Datei heruntergeladen habt, müsst ihr die img-Datei (Datenträgerabbild) extrahieren, z.B. mit dem Dateimanager Dolphin oder per Konsole:
7z e ~/Downloads/2021-10-30-raspios-bullseye-armhf-lite.zipNach dem entpacken habt ihr die Image Datei "2021-10-30-raspios-bullseye-armhf-lite.img" (ca. 1.8GB).

3 ) Image auf SSD-Festplatte schreiben
Wichtig: Bei meinem ersten Pi4 musste ich ein EEPROM-Firmware Update per SD-Karte installieren damit der Pi4 von SSD startet, beim 2ten war das nicht notwendig (angeblich ab Bootloader Version 2020-09-03).

Wer einen laufenden Pi4 mit einer Micro-SD-Karte hat, kann das so prüfen:
sudo rpi-eeprom-updateund bei Bedarf updaten:
sudo rpi-eeprom-update -aDas rpi-eeprom ist so etwas wie die Firmware auf den PC Motherboards und kann daher nicht im Betrieb updaten, dazu muss der Pi neu gestartet werden:
sudo rebootWegen dem rpi-eeprom Update dauert das etwas länger als ein normaler Neustart. Dann Kontrolle:
sudo rpi-eeprom-updateIn der Meldung sollte unter anderem "BOOTLOADER: up to date" stehen.

Achtung: Führt NIE ein "sudo rpi-update" aus! Dann bekommt ihr eine Beta-Version die evtl. Probleme macht und nur für Entwickler oder Tester gedacht ist.

Die SSD an euren PC anschließen und ein Startmedium aus der img-Datei erstellen. Unter Manjaro KDE nutze ich dafür auch gerne den Suse Studio Imagewriter (sudo pacman -S imagewriter). Das sollte auch mit usb-creator-kde, Unetbootin oder Etcher funktionieren.

Ganz sicher geht das per Konsole via dd. Beschreibt das richtige Laufwerk und listet dafür die Partitionen auf, um den Pfad für das USB-Laufwerk zu ermitteln:
sudo fdisk -l(bei mir ist das "/dev/sde1")
Sicherstellen das dieses USB-Gerät ausgehängt ist:
sudo umount /dev/sde1IMG-Datei auf USB-Gerät schreiben. Den Pfad zur IMG-Datei (bei mir "Downloads") und evtl. den Dateiname anpassen.
Als USB-Gerät nicht die Partitionsnummer "/dev/sde1" angeben, sondern "/dev/sde" (also ohne Zahl):
sudo dd bs=4M if=~/Downloads/2021-10-30-raspios-bullseye-armhf-lite.img of=/dev/sde status=progress oflag=syncEs werden 2 Partitionen erstellt, sde1 und sde2, diese sind noch sehr klein und werden später passend zur SSD vergrößert (Expand Filesystem).

4 ) Raspbian Bullseye starten
Auf der SSD (Laufwerk "boot") eine neue Datei "ssh" ohne Dateiendung anlegen, damit der Zugriff via SSH möglich ist.

Dann die SSD an einem USB3 Port (blau) des Pi4 einstecken und mit einem LAN Kabel verbinden, anschließend einschalten. Nun wird das Betriebssystem Raspbian Bullseye gestartet.
Tipp: Später wenn alles läuft, nur den USB2 Port benutzen (siehe oben USB 3.0 Radio Frequency Interference).

Im Router, z.B. Fritz!Box unter Heimnetz und Netzwerk die IP herausfinden die der Raspberry bekommen hat und die IP festlegen (Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen), bei meiner Testversion ist das die IP 192.168.0.42. Alternativ zeigt dieser Befehl eine Liste der im Netzwerk erkannten Geräte an, einschließlich ihrer IP-Adressen, MAC-Adressen und Gerätenamen (wenn bekannt):
arp-scan --local
Einloggen per SSH auf dem Raspberry Pi4 per LINUX Konsole (Windows User können dafür z.B. PuTTY installieren):
ssh pi@192.168.0.42User: pi  (wenn gefragt)
Password: raspberry
(SSH beenden mit 'exit', Raspberry ausschalten 'sudo shutdown now', Raspberry neustarten 'sudo reboot')

Beim ersten SSH-Login wird ein Fingerprint erstellt, was mit 'yes' bestätigt werden muss.

Dann das obligatorisches Update aller Komponenten:
sudo apt update; sudo apt upgrade; sudo apt full-upgrade
sudo apt clean; sudo apt autoclean; sudo apt-get -f install; sudo apt clean; sudo apt autoremove --purge
neu starten:
sudo rebootDanach wieder per SSH einloggen, die Raspi-Konfiguration prüfen und evtl. neuesten Bootloader laden (Punkt A7 entspricht dem rpi-eeprom-update):
sudo raspi-config
  • (6) Advanced Options
  • (A7) Bootloader Version -> E1 Latest  Use the latest version boot ROM software
dann
  • (6) Advanced Options
  • (A6) Boot Order -> B2 USB Boot    Boot from USB if available, otherwise boot from SD Card
Dann den Raspberry neu starten:
sudo reboot



Solltet ihr von einer Micro-SD-Karte auf ein USB-Gerät gewechselt haben, müsst ihr erst die Fingerprint-Datei auf euren Rechner löschen (nicht Pi!), dann wird diese neu erstellt. Sonst ist kein Login per SSH möglich:
rm ~/.ssh/known_hosts
Per SSH einloggen und den Raspi zu Ende konfigurieren. Erstellt ein sicheres Passwort und merkt euch das gut, ein Reset ist aufwendig!
sudo raspi-config
  • (1) System Options -> (S3) Change User Password
  • (1) System Options -> (S5) Boot / Auto Login -> (B1) Console  (das aktiviert den RunLevel 3 Modus)
  • (5) Localisation Options  -> (L1) Locale: "de_DE.UTF-8"  (markieren = Leertaste, Button auswählen = TAB, Bestätigen = Enter, Zurück = Esc)
  • (5) Localisation Options  -> (L2) Timezone: "Europe" und "Berlin"
  • (5) Localisation Options  -> (L4) WLAN Country Set legal wireless channels: "DE""
  • (6) Advanced Options -> (A8) HDMI / Composite -> (V3) Disable 4Kp60 HDMI and composite video
  • (6) Advanced Options -> (A1) Expand Filesystem (beim Beenden sollte der Raspi neu starten und wir können auf die gesamte SSD-Festplatte zugreifen)
Hinweis: Server werden wegen Sicherheit, Stabilität und unnötigen Ressourcenverbrauch ohne GUI Oberfläche betrieben. Diese Betriebsart wird RunLevel 3 genannt und nur wenn am Server ein Display für die Darstellung benötigt wird, betreibt man den Server ausnahmsweise im RunLevel 5. Die RunLevel 3 Betriebsart wird am Pi am besten per raspi-config aktiviert (siehe oben "(B1) Console").

Nach dem Neustart wieder per ssh einloggen und den RunLevel mit 'systemctl get-default' oder 'who -r' prüfen:
pi@raspberrypi:~ $ who -r
        Runlevel 3  2021-01-01 08:15
dann die Festplattenvergrößerung per 'sudo lsblk' prüfen:
pi@raspberrypi:~ $ sudo lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465,8G  0 disk
├─sda1  8:1    0  256M  0 part /boot
└─sda2  8:2    0 465,5G  0 part /


Raspberry Pi mit DHCPCD unbedingt eine statische IP-Adresse zuordnen, z.B.:
sudo nano /etc/dhcpcd.conf
Zitat# Example static IP configuration:
interface eth0
static ip_address=192.168.0.42/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
static domain_name_servers=192.168.0.1 8.8.8.8
(wenn WLAN, dann 'interface wlan0')

Alles rennt unter dem User iobroker, daher habe ich den User in sudoers eingebunden damit er z.B. auch Rechte zum Neustart hat:
sudo nano /etc/sudoers
Zitatiobroker ALL=(ALL;ALL) ALL
iobroker ALL=NOPASSWD:/sbin/reboot
iobroker ALL=NOPASSWD:/sbin/shutdown

5 ) Weiter mit den Feineinstellungen (Beispiele/Vorschläge):

NTP, als Zeitserver nutze ich den von der FritzBox, z.B.:
sudo nano /etc/systemd/timesyncd.conf
ZitatNTP=192.168.0.1

WLAN aktivieren, wenn ihr das braucht (ich nicht), Netzwerke in Reichweite anzeigen lassen:
sudo iwlist wlan0 scan | egrep "(ESSID)"Ist das erwartete WLAN-Netzwerk in Reichweite, kann die Konfiguration in der wpa_supplicant.conf zum Herstellen der Verbindung vorgenommen werden:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Zitatctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE
    network={
      ssid="SSID-Namen"
      psk="dasWLANpasswort"
    }

(Nano Editor: "Strg" & "X" = beenden, "Strg" & "O" = speichern)

Netzwerkstack neu starten:
sudo service networking restart
Für meine Konfiguration habe ich unter anderem WiFi und Bluetooth deaktiviert (benötige ich für ioBroker nicht):
sudo nano /boot/config.txtDie letzten Zeilen sehen so aus:
Zitat# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=off

# Automatically load overlays for detected cameras
camera_auto_detect=1

# Automatically load overlays for detected DSI displays
#display_auto_detect=1

# Enable DRM VC4 V3D driver
#dtoverlay=vc4-kms-v3d
#max_framebuffers=2

# Disable compensation for displays with overscan
#disable_overscan=1

[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1

[pi4]
# Run as fast as firmware / board allows
arm_boost=1

[all]
dtoverlay=disable-wifi
dtoverlay=disable-bt
enable_uart=1
force_turbo=1

Hinweise:

Auch die Raspberry-Pi-OS-Version Bullseye verbleibt in der 32-Bit-Welt. Die CPUs auf den Pi4-Modellen mit 2 bis 8 GByte erreichen mit neuer Firmware automatisch eine Taktfrequenz von 1800MHz (Voltage: 0.916V) anstatt 1500MHZ (Voltage: 0.85V). Voraussetzung dafür ist die auf den neuen Platinen integrierte Switch-mode Power Supply. Wem 1500MHz reichen, kann "arm_boost=1" deaktivieren und die CPU hat ca. 2 °C weniger. Da meine Raspis als Server im Runlevel 3 mehrere Jahre stabil ohne Unterbrechung laufen sollen und nur ioBroker installiert ist, habe ich "arm_boost=1" bei mir deaktiviert.

Mit deaktiviertem Turbo Modus, springt die CPU im Leerlauf von 1800MHz (oder 1500MHz) auf 600MHz und soll nicht mehr so warm werden. Macht bei mir ca. 3 °C aus (41 zu 44 Grad bei passiver Kühlung). Damit ioBroker immer schnell auf Veränderungen reagiert, wird der Turbo Modus empfohlen (force_turbo=1).

Die UART Schnittstelle 1 habe ich für das Z-Wave ZMEERAZ2 Aufsteckmodul aktiviert (enable_uart=1).

LED's Raspberry Pi4
- grüne LED (Activity-LED = ACT, vorher war das led0) flackert üblicherweise, wenn Daten zur SD-Karte oder USB übertragen werden
- rote LED (Power-LED = PWR, vorher war das led1) zeigt an, dass der Raspberry Pi mit der Stromversorgung verbunden ist
Rote LED dauerhaft deaktivieren:
pi@raspberrypi:~ $ sudo su
root@raspberrypi:/home/pi# echo 0 > /sys/class/leds/PWR/brightness
root@raspberrypi:/home/pi# exit
exit
pi@raspberrypi:~ $

Die Änderung ist nur temporär, und die LED schaltet sich nach einem Neustart wieder ein. Um dies dauerhaft zu machen, ist das Erstellen einer Regel oder eines Skripts erforderlich, welches bei jedem Systemstart ausgeführt wird. Eine Möglichkeit bietet das Einfügen des Befehls in die Datei "/etc/rc.local", die zuletzt im Runlevel-System ausgeführt wird. Zum Bearbeiten der Datei einen Editor verwenden und den Befehl zum Ausschalten der LED direkt vor "exit 0" einfügen:
sudo nano /etc/rc.local
Zitatecho 0 > /sys/class/leds/PWR/brightness

Fein, daran erkenne ich wenn der Bootvorgang beendet ist. Wenn die rote Power LED blinkt, gibt es ein Power oder Temperatur Problem! Sollte die Versorgungsspannung unter 4.65V fallen, blinkt die rote LED.
 
Bitte beachtet, dass sich der Name für die LED in einem früheren Update geändert hat. Falls sich der Name in Zukunft wieder ändert, stellt sicher, dass ihr den aktuellen Namen verwendet. Um die im System verfügbaren LEDs aufzulisten, verwendet folgenden Befehl:
ls /sys/class/leds/
Getestet mit "Linux raspberrypi 6.1.19-v8+" (# uname -a).

6 ) Schreibzugriff auf SSD-Festplatte reduzieren

Werden bestimmte Dateien regelmäßig erstellt oder geändert, z.B. Bilddateien einer Webcam, sollten diese möglichst ausgelagert werden (RAM, NAS, FTP-Speicher). Aber auch bereits im normalen Betrieb gibt es unter Linux Verzeichnisse (z.B. /var/log), die systembedingt ständiger Zugriffe ausgesetzt sind. Für einiger dieser Systemverzeichnisse kann es daher sinnvoll sein, diese ins RAM auslagern.

Um z.B. /var/log in den Arbeitsspeicher auszulagern, müssen folgende Einträge in der /etc/fstab am Ende hinzugefügt werden:
sudo nano /etc/fstab
Zitat# dynamic RAMDisk wenn Pi-8GB (Achtung Logfiles im RAM!)
tmpfs /tmp tmpfs defaults,noatime,nosuid,size=3000M,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=300M,mode=0777 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,size=300M,mode=0777 0 0
# ioBroker und RPi-Monitor
tmpfs /opt/iobroker/log tmpfs defaults,noatime,nosuid,size=500M,mode=0777 0 0
tmpfs /var/lib/rpimonitor/stat tmpfs defaults,noatime,nosuid,size=500M,mode=0777 0 0

Die /tmp Verzeichnisse benutzen ein Sticky Bit, daher das "mode=1777". Einstellung nach dem Neustart (sudo reboot) per "df -h" prüfen:
pi@raspberrypi:~ $ df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root      459G    2,5G  438G    1% /
devtmpfs        3,9G      0  3,9G    0% /dev
tmpfs          3,9G      0  3,9G    0% /dev/shm
tmpfs          1,6G    17M  1,6G    2% /run
tmpfs          5,0M    4,0K  5,0M    1% /run/lock
tmpfs          500M    16K  500M    1% /opt/iobroker/log
tmpfs          3,0G      0  3,0G    0% /tmp
tmpfs          500M    2,4M  498M    1% /var/lib/rpimonitor/stat
tmpfs          300M    272K  300M    1% /var/log
tmpfs          300M      0  300M    0% /var/tmp
/dev/sda1      253M    49M  204M  20% /boot
tmpfs          790M      0  790M    0% /run/user/1000

SWAP aktivieren, tmpfs greift bei Bedarf darauf zu.
sudo apt install dphys-swapfile
sudo systemctl enable dphys-swapfile

Swapping deaktivieren:
sudo dphys-swapfile swapoff
sudo systemctl disable dphys-swapfile
sudo apt purge dphys-swapfile




7 ) RPi-Monitor installieren

Quellen:
github.com/ioBroker/ioBroker/wiki/Raspberry-Pi:-RPi-Monitor-installieren
github.com/XavierBerger/RPi-Monitor-deb/tree/master/packages

Der RPi-Monitor ist eine Echtzeit-Überwachung für Raspbian mit einem Webinterface. Installation der letzten Version 2.12-r0 (Link zum Prüfen):
sudo apt update; sudo apt upgrade; sudo apt full-upgrade
sudo apt install aptitude
sudo apt install dpkg-dev librrds-perl libhttp-daemon-perl libjson-perl libipc-sharelite-perl libfile-which-perl
wget --no-check-certificate https://github.com/XavierBerger/RPi-Monitor-deb/raw/master/packages/rpimonitor_2.12-r0_all.deb
sudo dpkg -i rpimonitor_2.12-r0_all.deb
rm rpimonitor_2.12-r0_all.deb


Das Update per Repository funktioniert seit 2022 Mai nicht mehr (kein https?!). Meldung:
ZitatE: Das Depot »http://giteduberger.fr rpimonitor/ Release« enthält keine Release-Datei mehr.
N: Eine Aktualisierung von solch einem Depot kann nicht auf eine sichere Art durchgeführt werden, daher ist es standardmäßig deaktiviert.
Egal, seit 2017 gibt es leider keine Updates.

Oder Installation aus dem Repository (Link):
sudo apt install dirmngr
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2C0D3C0F
sudo wget http://goo.gl/vewCLL -O /etc/apt/sources.list.d/rpimonitor.list
sudo apt update
sudo apt install rpimonitor


Der RPi-Monitor ist nun im Browser unter http://IP:8888/ (IP des Raspberry Pis) aufrufbar, bei mir http://192.168.0.42:8888

Im Browser sieht man die Meldung "Update needed...". Hier wertet der RPi-Monitor aus, für welche Pakete ein Update verfügbar ist. Diese Informationen kann so eingelesen werden:
sudo /etc/init.d/rpimonitor update
Die Paketinformationen automatisch auf dem neusten Stand halten (einmal am Tag):
sudo /etc/init.d/rpimonitor install_auto_package_status_updateAutomatische Aktualisierung wieder zu deaktivieren:
sudo /etc/init.d/rpimonitor remove_auto_package_status_update
Um die Netzwerküberwachung zu aktivieren oder bearbeiten, muss die Datei network.conf angepasst werden (wenn wifi: /wlan.conf):
sudo nano /etc/rpimonitor/template/network.conf(siehe z.B. Anhang unten)

Habe bis auf 3 Network-Hilfstexte alles aktiviert (Raute entfernt), die letzten 10 Linien sind für die Statistik (Quelle). Um die Änderung zu sehen, muss der RPi-Monitor neu gestartet und die Statistikseite im Browser aktualisiert werden.
sudo service rpimonitor restart
RPi-Monitor Datenbank (stat) löschen oder den Raspi neustarten, liegt ja im RAMDisk (siehe oben):
sudo service rpimonitor stop
sudo rm /var/lib/rpimonitor/stat/*.rrd
sudo service rpimonitor start

Der RPi-Monitor deinstallieren:
sudo service rpimonitor stop
sudo /etc/init.d/rpimonitor remove_auto_package_status_update
sudo apt purge rpimonitor*
sudo rm /var/lib/rpimonitor
sudo apt clean; sudo apt autoclean; sudo apt-get -f install; sudo apt clean; sudo apt autoremove --purge

Falls die Installation aus dem Repository war, diese entfernen:
sudo rm /etc/apt/sources.list.d/rpimonitor.list
sudo apt-key del 2C0D3C0F



8 ) ioBroker installieren

Mit ioBroker ist "fast" alles möglich (ioBroker Forum) und lässt eure Kreativität freien Lauf. Dank Blockly sind selbst JavaScripte einfach.

Beispiel einer VIS-Anzeige auf einem Tablet (zensiert) und Fully Kiosk Browser & App

Das Tablet dient nur als reine VIS-Anzeige und daher benötige ich keine unnötige Google Gimmicks. Dieses Tablet ist nur intern mit ioBroker verbunden, benötigt also kein Internet oder Google Spionage-Apps die sich nur schwer deinstallieren lassen. Leider bezieht Android die Uhrzeit aus dem Internet und lässt sich ohne zu rooten nicht anpassen. Per FritzBox lässt sich das einfach lösen, indem das Internet in einem angepassten Filter nur für das Tablet gesperrt wird. Unter Zugangsprofile habe ich den Filter "Whitelist" angelegt und lasse damit nur den Time Server "pool.ntp.org", "time.android.com" und "connectivitycheck.gstatic.com" von aussen für das Android Tablet zu. Bei Bedarf lässt sich der Filter einfach erweitern (AVM Link). Sollte es notwendig sein den Fully Kiosk Browser upzudaten, einfach kurz den Filter deaktivieren und manuell aktualisieren.

nodejs und ioBroker installieren
nodejs V 18.x (habe Version angepasst, Stand 2023-März) Repository hinzufügen und installieren:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
Die Installation von ioBroker erfolgt in 4 Schritten, welche durch den einen Befehl ausgeführt werden:
curl -fsSL https://iobroker.net/install.sh | bash -
kann etwas dauern... am Schluss schaut das etwa so aus:
ATTENTION: Error reporting via Sentry will be activated on next start of ioBroker

ioBroker wants to make sure to deliver the most stable smart home system.
To allow this we decided to implement an automatic error and crash reporting solution into the js-controller and also into adapters.

THIS REPORTING WILL BE ENABLED WITH THE NEXT START OF YOUR IOBROKER!

For any error that leads to the crash of the js-controller or one of the relevant adapters the error details are send to a server. For the js-controller and core adapters this server is located and operated in germany. For community adapters please check the Github Readme of the affected adapter for details which Sentry server is used.

If you want to disable the error reporting you can use the command
'iobroker plugin disable sentry'
This command will also make sure that no adapter that runs on this host will send crash reporting data to sentry.



==========================================================================
    Finalizing installation (4/4)
==========================================================================

Enabling autostart...
Created symlink /etc/systemd/system/multi-user.target.wants/iobroker.service → /lib/systemd/system/iobroker.service.
Autostart enabled!
Fixing directory permissions...

==========================================================================

    ioBroker was installed successfully
    Open http://192.168.0.42:8081 in a browser and start configuring!

==========================================================================


You need to re-login before doing anything else on the console!

pi@raspberrypi:~ $

Raspi neustarten:
sudo reboot
Evtl. mit "service iobroker status" prüfen ob ioBroker läuft, schaut dann ungefähr so aus:
pi@raspberrypi:~ $ service iobroker status
● iobroker.service - ioBroker Server
    Loaded: loaded (/lib/systemd/system/iobroker.service; enabled; vendor preset: enabled)
    Active: active (running) since Sat 2021-10-42 20:42:42 CET; 3min 42s ago
      Docs: http://iobroker.net
  Main PID: 442 (iobroker.js-con)
      Tasks: 44 (limit: 4915)
        CPU: 10.897s
    CGroup: /system.slice/iobroker.service
            ├─442 iobroker.js-controller
            ├─500 io.admin.0
            ├─516 io.discovery.0
            └─583 io.backitup.0
........
Wenn dein System auf Systemd basiert, solltest du den Befehl "sudo systemctl status iobroker.service" verwenden, um den Status des iobroker.service zu überprüfen.

Nun kann man das Frontend des ioBroker mittels IP Adresse und dem Port 8081 aufrufen, bei mir ist das: http://192.168.0.42:8081
Beim ersten Aufruf müsst ihr den Lizenzvertrag zustimmen dann passe ich die Systemeinstellung an. Aktiver Verwahrungsort unbedingt auf "Stable (default)" belassen, ausser ihr wisst was ihr tut.

Es ist sinnvoll ein Passwort für den Admin im Menüpunkt Benutzer zu setzen. Oben links im Avatar auf das Dreieck klicken und im Dropdown Menü den Punkt Benutzer auswählen und das Passwort einrichten. Ebenso muss dafür in der Admin-Instanz HTTPS aktiviert werden. Ein Let's Encrypt ist im Heimnetz nicht notwendig. Danach müsst ihr die Seite neu per https://192.168.0.42:8081 laden und erhaltet den Button zum Abmelden in der oberen Menüleiste. Die ioBroker Startseite kann mit "Instanzen -> Info" angepasst werden.

Meine Adapter sind:
  • Visualisierung (vis = Grafische Benutzeroberfläche für ioBroker), das installiert auch den WEB-Adapter*
  • man braucht eine Lizenz um vis zu nutzen, diese bekommt ihr kostenlos auf iobroker.net/login
  • backitup (BackItUp)
  • alias-manager (Geräte mit Aliasnamen verwalten)
  • dwd (Deutscher Wetter Dienst)
  • email (E-Mails senden)
  • fullybrowser (fullyBrowser)
  • ical (iCal Kalender)
  • icons-fatcow-hosting (Open icon library set from FatCow Hosting)
  • javascript (Skriptausführung, Javascript/Blockly)
  • ping (PING Adapter)
  • rpi2 (RPI-Monitor)
  • shelly (Shelly)
  • simple-api (Simple RESTful API)
  • tr-064 (FritzBox TR-064 API, z.B. zur Anwesenheitserkennung**)
  • vis-fancyswitch (ioBroker Visualisation - fancyswitch style Widgets)
  • vis-hqwidgets (hqwidgets style Widgets)
  • vis-jqui-mfd (jQuery-UI-Stil Widgets)
  • vis-timeandweather (ioBroker Visualisation - time and weather Widgets)
  • yahka (Apple Homekit)
  • yr (yr.no Wetter)
  • zwave2 (ZWave2, benötigt ZWAVE-USB oder Aufsteckmodul)

Liste mit allen Adaptern die es gibt

* Nachtrag 2023-Juni: Habe mittlerweile in meinen Web-Adapter die Checkbox Reine Web-Sockets (iobroker.ws) verwenden aktivieren müssen, da VIS ansonsten "Verbindungsfehler" meldet. Dieser Adapter wird von WEB-Anwendungen und Adaptern verwendet, um mit ioBroker über Websockets zu kommunizieren.

** Seit iOS 14 und Android 10 wird bei WLAN-Nutzung eine zufällige MAC-Adresse generiert um ein Tracking zu erschweren und die Anwesenheitserkennung funktioniert damit nicht. Im öffentlichen WLAN kann das sinnvoll sein, aber daheim (privat) nicht. Hinzu kommt das die Filterfunktionen oder Provisionierungen im Router nicht funktionieren. Lösung: In der WLAN Einstellung kann für jeden Zugang die MAC-Adresse statisch gesetzt werden (bei iPhones "Private WLAN-Adresse" deaktivieren). Firmennetzwerke prüfen als zusätzliche Sicherheit auch gerne die MAC-Adresse, obwohl dieses leicht umgangen werden kann. Dennoch werden auch diese Einstellungen auf deren Smartphones oft per MDM gesperrt.

Regelmäßige Upgrades sind wichtig! Alles Updaten/Upgrade inkl. ioBroker (js-controller) ohne sudo!
Anmeldung mit dem richtigen User "pi" und NIE als root-User!

cd /opt/iobroker
iob backup
iob stop
sudo apt update; sudo apt upgrade; sudo apt full-upgrade
sudo apt clean; sudo apt autoclean; sudo apt-get -f install; sudo apt clean; sudo apt autoremove --purge
iob update
iob upgrade self
iob upgrade
dann den ioBroker neu starten "iob start" oder den Raspi neu starten (wichtig nach Kernel Update)
sudo reboot
Bei einer Neuinstallation unwahrscheinlich, aber falls irgendwo noch nicht alle Rechte auf dem System passen sollten, diesen Fix durchlaufen lassen (Quelle):
curl -fsSL https://iobroker.net/fix.sh | bash -seit dem js-controller 2.x einfach nur:
iob fix
Dieses Diagnoseskript für ioBroker zeigt Informationen strukturiert und kompakt in einer Übersicht an:
iob diag
Falls ihr ioBroker entfernen wollt:
update-rc.d iobroker remove
sudo rm -rf /home/iobroker/
sudo rm -rf /opt/iobroker/
(/opt/iobroker/log lässt sich nicht löschen da als tmpfs angelegt, siehe Punkt 6)

Nachtrag: Der Discovery-Adapter ist Bestandteil der Grundinstallation welcher versucht, alle möglichen Geräte zu finden die vom Host aus erreichbar sind und eher als Unterstützung zur Ersteinrichtung gedacht. Da ich das nicht benötige, habe ich den deinstalliert:
cd /opt/iobroker
iobroker del discovery



9 ) Z-Wave
Ich benutze ein Z-Wave Modul ZMEERAZ2. Beim Raspberry Pi3+4 ist der UART standardmäßig durch das Bluetooth-Modul belegt. Um ihn für die Verwendung mit einem GPIO-Modul zu aktivieren, wie folgt vorgehen (Quelle):
sudo nano /boot/cmdline.txtund entferne: console=serial0,115200
dann die Libraries aktualisieren und neu starten:
sudo ldconfig
sudo reboot

Den Serial Port des ZMEERAZ2 findet man per Konsole:
ls -l /dev/ttyA*Bei mir ist das /dev/ttyAMA0 den ich so als "Serielle Schnittstelle auswählen" im zwave2 Adapter eingetragen habe.

Schlafende NODES werden unter zwave2 nach einem Neustart dank Cache sofort als bereit markiert.
Bei einem Umzug auf einem neuen Server sollten diese Dateien mitgenommen werden, Ordern: /opt/iobroker/iobroker-data/zwave2.0/cache (gehört dem User iobroker).
Hinweis: Diese Cache Dateien sind auch in BackItUp enthalten.

Achtung! Im ioBroker Backup sind keine Z-Wave Geräte enthalten. Nur mit Z-Way for Raspberry Pi (Repo) kann ein Backup vom Gateway der inkludierten Z-Wave Geräte erstellt werden!

ioBroker zwingend vorher beenden um sicher zu stellen das beide Produkte nicht gleichzeitig laufen. Installieren oder upgrade (Quelle):
iobroker stop
wget -qO - https://storage.z-wave.me/RaspbianInstall | sudo bash

Startseite: http://192.168.0.42:8083/smarthome
Beim ersten Aufruf muss man ein Passwort erstellen. Die Z-Wave Expert-UI zeigt diese Erweiterung als eine Funktionen der Hardware (Menu -> Devices -> Manage with ExpertUI). Hier im Menu -> Network -> Control ist "Backup and Restore", direkter Link: http://192.168.0.42:8083/expert/#/network/control



Z-Wave Me erlaubt ein unkompliziertes Backup/Restore des Z-Wave Sticks oder Moduls, siehe auch PDF hier im Anhang. Würde daher das Tool nicht deinstallieren sondern nur deaktivieren (auch beim Systemstart):
sudo /etc/init.d/z-way-server stop
sudo update-rc.d z-way-server disable
sudo /etc/init.d/zbw_connect stop
sudo update-rc.d zbw_connect disable

Daher beende ich erst ioBroker und starte dann manuell die 2 Dienste um ein Backup/Restore zu machen (mache ich nur wenn ein neues Gerät hinzu kommt):
iobroker stop
sudo /etc/init.d/z-way-server start
sudo /etc/init.d/zbw_connect start
dann http://192.168.0.42:8083/expert/#/network/control  (Backup and Restore), anschließend die 2 Dienste stoppen und Raspi neu starten:
sudo /etc/init.d/z-way-server stop
sudo /etc/init.d/zbw_connect stop
sudo reboot

Wer Z-Way Package deinstallieren mag:
sudo apt remove z-way-server
sudo rm /etc/apt/sources.list.d/z-wave-me.list
sudo apt autoremove
sudo rm -rf /opt/z-way-server
sudo rm -rf /etc/*/z-way-server
sudo rm -rf /etc/*/zbw*
sudo rm -rf /etc/zbw*

Mit diesen Z-Wave Geräten funktioniert die Anbindung bei mir (es gibt bestimmt hunderte die funktionieren):
  • Aeotec TriSensor (Bewegungs-, Temperatur- und Lichtsensor)
  • FIBARO System FGSD002 Smoke Sensor
  • FIBARO System FGWPE/F Wall Plug
  • Vision Security ZD2102 EU Door/Window Sensor
  • Sensative Strips Comfort (Temperatur- und Lichtniveauüberwachung)
  • Sensative Strips SENE1110 Tür-/Fenstersensor
  • Vision Security ZG8101 Garage Door Detector (für Hörmann Tore nutze ich den UAP1 Adapter)
  • Qubino (Goap) ZMNHND1 Relais
  • FIBARO System FGFS101 Flood Sensor

Eigentlich ist Z-Wave eine gute Sache und extra für das SmartHome entwickelt... aber:

Z-Wave Pro:
  • Der Energieverbrauch ist sehr gering und auf hohe Kommunikationssicherheit auf dem SRD-Band optimiert welches in der EU auf 868,4 MHz arbeitet, was besonders gut in Wohnungen funktioniert.
  • Z-Wave nutzt ein geroutetes Meshnetzwerk für an der Steckdose betriebene Geräte.
  • Besonders geeignet für batteriebetriebene Geräte.
  • Die Auswahl ist Dank vieler verschiedenen Hersteller sehr groß und bei sicherheitsrelevanten Geräten ist die Kommunikation verschlüsselt.

Z-Wave Contra:
  • Seit das "Z-Wave Plus Standard" eingeführt wurde, ist die Inklusion der Geräte einfacher. Jedoch muss ich manchmal die Inklusion 2 oder 3 mal starten bis das Gerät komplett mit allen Parametern erkannt wurde. Kann auch sein das ich keine Geduld habe, mehrere Stunden auf das erste Interview von batteriebetriebenen Geräten zu warten (indicator.ready = true).
  • Geräte sind oft zu teuer, würde den Preis nur akzeptieren wenn ich dieses Contra nicht schreiben müsste  >:D
  • Bei eingebauten Geräten ist ein nachträgliches Inkludieren/Exkludieren sehr aufwendig.
  • Die Geräte im Netzwerk werden im Z-Wave-Transceiver-Chip gespeichert und daher kann ioBroker diese wichtigen Information nicht in sein Backup einbeziehen. Das ist besonders übel wenn ihr den Z-Wave-USB-Dongle oder das Aufsteckmodul austauschen müsst. Hier hilft nur die Z-Wave.Me Lösung.
  • Auch mit der Kompatibilität scheinen leider nicht alle Hertseller es ernst zu nehmen, z.B. Devolo:
Als Störsender hat sich die "Devolo Home Control Schalt-Messsteckdose" entpuppt. Diese musste ich mehrmals inkludieren bis alle Einstellungen vorhanden waren (ready = true), jedoch war das Z-Wave Gateway extrem langsam und träge. Nach dem exkludieren der Devolo Geräte lief bei mir wieder alles rund. An Zufall glaube ich nicht, da es sich um 3 Geräte gehandelt hatte.



10 ) Shelly
Ich halte die Shellys besonders für Steckdosen betriebene Geräte für gut. Das WLAN ist eigentlich zu Schade dafür und für jedes Gerät wird eine IP benötigt, jedoch funktioniert das ziemlich zuverlässig (wenn ihr nicht in einem großen Wohnblock wohnt) und ist Dank eigenem Webinterface einfach einzurichten. Die Shellys sind günstig und können ohne Cloud benutzt werden, vorbildlich als Default!

Die Ersteinrichtung mache icht NICHT mit deren App. Die IP 192.168.33.1 ist die Adresse jedes Shelly im AP-Mode, daher kann das Einrichten auch ohne App erfolgen:
  • Shelly einschalten
  • Klapp-PC, PC oder Handy vom Router trennen (Standard Verbindung)
  • WLAN-Netz vom Shelly sollte sichtbar sein, damit verbinden
  • Dann per Browser die IP 192.168.33.1 aufrufen und den Shelly einrichten
  • Unter "Internet & Security -> WIFI MODE - CLIENT" eure SSID und das Passwort von eurem Router eintragen
  • Speichern und die Standard Verbindung zum Router wieder herstellen
  • Die neue IP findest du im Router, welche ich dort festlege "Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen"
  • Shelly fertig einrichten, Firmware update und feste IP ohne Gateway eintragen
Da ich die Shellys und das Tablet nur im WLAN-Netz nutze (Internetzugang gesperrt*), wird die Zeit auf diesen Geräten nicht per NTP synchronisiert. Wer eine FritzBox hat, kann dessen Zeitsynchronisation (NTP "fritz.box") einrichten, Link.
* ausser bei Firmware Updates; Tablet siehe oben: Beispiel einer VIS-Anzeige

Das Archiv archive.shelly-tools.de enthält aktuelle und veraltete Firmware-Dateien für die IoT-Geräte von shelly.cloud. Um die entsprechende Firmware auf ein  Shelly-Gerät zu übertragen, führe einfach ein OTA-Update mit der entsprechenden URL durch. Erst die IP des Shellys eintragen und dann den Typ und die gewünsche Verison auswählen. Den Link dann in euren Browser einfügen (copy & paste), das Update startet sofort. Ein alter ShellyPlug-S [Type: SHPG-S] war der Meinung das die Firmware von 2019 aktuell sei, aus dem Archiv hat der Shelly eine aktuelle Version bekommen und nachfolgende Firmwares werden nun zum Updade angezeigt (so wie es sein soll).



11 ) INSTAR Webcams
Die INSTAR WebCams sind Made in Germany, können ohne Cloud genutzt werden und haben ein gutes Forum. Wenn mit Cloud reicht es "cloud.instar.de updateserver.instar.de" in eine Whitelist aufzunehmen und einen internen NTP Server z.b. "fritz.box" zu nutzen. Ein weiterer Vorteil ist, daß man unter ioBrocker dessen CGI-Befehle nutzen kann.



12 ) Powerbank als USV Alternative
Nutze als Mini-USV Anlage eine EasyAcc Powerbank 20000mAh Externer Akku (Link Amazon). Das ist war eine der wenigen Powerbanks mit Type-C Schnittstellen und echten Passthrough* und maximal 3A Ausgang. Um zwei USB Ports für den Strom zu nutzen, ein Y-Anschluss (2 auf 1) für den Raspi, z.B. Delock Y-Anschluss USB 2.0 A auf 2x USB 2.0 A Kabel (Link Amazon) mit Anker USB C Kabel auf USB A Ladekabel (Link Amazon).

*WICHTIG! Leider unterstützt nur das alte Model Passthrough:
  • Altes Model PB20000MS hat zwei Micro USB Anschlüsse zum Laden und vier USB-A Ausgänge (max. 3A) und Passthrough, evtl. findet ihr noch welche z.B. auf eBay.
  • Neues Model PB20000MS2 hat ein Micro USB und ein USB-C Anschluss zum Laden und je zwei USB-A und USB-C Ausgänge (max. 3A) aber KEIN Passthrough!
Für mein nächsten Projekt werde ich eine Mini UPS oder ähnliches nutzen, z.B. (Link Amazon). Hier sollte es die 20000mA Version sein, da nur diese bei 5V 3A am USB Ausgang liefert und ohne Unterbrechung funktionieren soll, bei 12 V mit Unterbrechung!

Ein UPS-HAT bis zu 2,5A oder UPS-HAT (B) bis zu 5A kommt derzeit für mich aus mechanischen Gründen nicht in Frage. Dafür müsste ich ein neues Gehäuse mit grossen passiven Kühlkörper suchen was mein Z-Wave Modul aufnimmt, auch ist mir die Akku Kapazität zu gering. Immerhin kann man damit den Raspi herunterfahren lassen, bevor der Akku leer ist. Händler Link z.B. Amazon oder Eckstein Shop.

Bei einem anderen Projekt habe ich den Raspi, auf dem ioBroker und Pi-hole installiert ist, mit einem DC-DC 12V zu 5V Spannungswandler angeschlossen. Das war einfach, da der Router an einem 12V LiFePO4 Akku angeschlossen ist und der Raspi nicht weit davon entfernt ist. Diese Lösung würde ich immer vorziehen, damit kann ioBroker z.B. auch einen Stromausfall melden.



Versuchsaufbau Raspberry Pi4 mit passiven Kühlkörper, Aufsteckmodul Z-Wave, Portable SSD und Powerbank



13 ) Backup
Hinweis: Z-Wave Geräte werden im Z-Wave-Transceiver-Chip gespeichert (siehe oben Z-Wave) und ist daher in diesem Backup nicht enthalten!
Zur Sicherung nutze ich den ioBroker Adapter BackItUp mit der das zyklische Sichern einer IoBroker-Installation möglich ist. Ich nutze dafür eine externe Festplatte an einer Fritzbox (NAS / SMB3) und sichere automatisch einmal die Woche.

Ein Restore mache ich mit einem FTP Tool (FileZilla), indem ich erst das Backup vom NAS in den Ordner /opt/iobroker/backups kopiere. Dann mit BackItUp über das Webinterface den Restore durchführen oder besser per Konsole - benötigt viel Zeit da alle Adapter neu installiert und eingerichtet werden.
cd /opt/iobroker
iobroker stop
iobroker restore EuerBackupDateiname

Je nachdem wie viele Adapter installiert werden, ca. 1-2 Stunden warten, prüfen:
iobroker logs --watch
wenn etwas hängt:
iobroker stop
iobroker upload all
iobroker update
iobroker upgrade self
iobroker upgrade
curl -fsSL https://iobroker.net/fix.sh | bash -
sudo reboot
(fix.sh prüft ob alle Rechte auf dem System passen)

Prüfen:
iobroker version
service iobroker status
(Beenden mit Q)

Wenn dein System auf Systemd basiert, solltest du den Befehl "sudo systemctl status iobroker.service" verwenden, um den Status des iobroker.service zu überprüfen.

Wer den yahka-Adapter nutzt sollte das unbedingt lesen: ioBroker.yahka auf ein anderes System umziehen. Kurzfassung: Z.B. per FileZilla die die Daten im Ordner "/opt/iobroker/iobroker-data/yahka.0.hapdata" sichern und auf die neue Festplatte kopieren, dann per Konsole die Zugriffsrechte anpassen (oder fix.sh laufen lassen):
sudo chown -R iobroker:iobroker /opt/iobroker/iobroker-data/yahka.0.hapdata


Bei einem Umzug auf eine neue Platte kann ein komplettes Backup einer Festplatte (HDD, SSD, SD-Karte oder USB-Stick) mit dem dd Befehl per Terminal/Konsole erstellt werden. Das kann je nach größe der Platte sehr zeitintensiv sein, hier meine Vorgehensweise als Beispiel (IP, Passwort und eure Parameter anpassen!):
  • Am Raspi per ssh anmelden: ssh pi@192.168.0.42
  • Password: raspberry
  • ioBroker beenden: iobroker stop
  • Linux fährt herunter: sudo shutdown now
  • Platte vom Raspi trennen und an eurem PC anschließen, um davon ein Image unter Linux zu erstellen (sollte gemountet sein)
  • per "lsblk" alle Festplatten auflisten und euere externe Platte merken, bei mir ist das "/dev/sde"

Mit dem dd Befehl das Image erstellen:
sudo dd if=/dev/sde of=~/Downloads/pi4_ioBroker_sd.img status=progress(gemessen bei einer 64GB SD-Karte PRO Endurance per USB3: ca. 82MB/s, 783sec, also 13 Minuten)

ACHTUNG nicht verwechseln!
if ist das "Input File", das ist in diesem Fall die eingehängte Platte und of ist das "Output File", dort wird das Image erstellt.

Optional, wenn ich dieses Image als Backup behalten möchte, verkleinere ich das per zip:
7z a ~/Downloads/pi4_ioBroker_sd.7z ~/Downloads/pi4_ioBroker_sd.img(macht kaum Sinn, da das Image schnell veraltet ist)

Ein Image zurückschreiben:
sudo dd bs=4M if=~/Downloads/pi4_ioBroker_sd.img of=/dev/sde status=progress oflag=sync
Wenn ihr das Image auf eine neue Festplatte schreibt, solltet ihr unbedingt
sudo raspi-configausführen und per Expand Filesystem die neue Festplatte optimieren.



Alternativ könnt ihr nur für ioBroker per rsync eine inkrementelle Sicherung erstellen.
rsync -avrP --delete --exclude=.config -e ssh pi@192.168.0.42:/home/iobroker/ ~/Downloads/ioBrokerHomeBackup/
rsync -avrP --delete -e ssh pi@192.168.0.42:/opt/iobroker/ ~/Downloads/ioBrokerBackup/
Option -a speichert symbolische Links, Rechte, Zeitstempel, Besitzer und Gruppe
Option -v für verbose (zeigt alle ausgeführten Schritte an) , -r für rekursiv
Option -P --progress Fortschrittsanzeige beim Transfer anzeigen und --partial Fortsetzung des Transfers bei Abbruch
Option -e wählt die remote shell aus, indem Fall SSH
Option --delete vergleicht Quellverzeichnisse und Zielverzeichnisse und sorgt dafür, dass Dateien, die im Quellverzeichnis nicht (mehr) vorhanden sind, im Zielverzeichnis gelöscht werden. Dies kann dazu führen, dass man ungewollt Dateien löscht, die man aber noch in der Sicherung behalten möchte.


Falls ihr eine "failed" Fehlermeldung in der Ausgabe habt, führt diesen Befehl ein zweites Mal mit grep aus, z.B.:
rsync -avrP --delete -e ssh pi@192.168.0.42:/opt/iobroker/ ~/Downloads/ioBrokerBackup/  | grep failed


14 ) CPU-Auslastung prüfen
Die Gesamt CPU-Auslastung zeigt der RPi-Monitor schön an. Einzelne Prozesse können per Konsole mit dem Taskmanager htop oder per ps aux (processes) gelistet werden. Oder im ioBroker.admin Webinterface unter Info->Systeminformationen->Zeige Details (Lupe).
Listet alle 2 Sekunden, 20 aktuelle Prozesse die am stärksten zur CPU-Auslastung beitragen:
watch "ps aux | sort -nrk 3,3 | head -n 20"(Beenden mit "Strg" & "C")

Festplattenbelegung
ncdu(Beenden mit "Q")



15 ) Update Node.js
Aktuell (2023-März) empfiehlt ioBroker die Nutzung von Node.js 18.x (Quelle). Im November 2021 hatte ich Node.js v12 auf v14 und im Juni 2022 auf v16 upgedatet. Anmeldung mit dem richtigen User "pi" und NIE als root-User!

Erst die Version prüfen, hatte v16.19.1 (2023-03-18)
node -v
ioBroker stoppen und ein Backup erstellen:
iobroker stop
cd /opt/iobroker
iobroker backup

npm (> 5) hat ein "Selbstheilungsmechanismus", npm überprüfen (kann nicht schaden):
sudo npm cache verify
Alles updaten und Node.js 18 installieren und Version prüfen:
sudo apt update; sudo apt upgrade; sudo apt full-upgrade
sudo apt clean; sudo apt autoclean; sudo apt-get -f install; sudo apt clean; sudo apt autoremove --purge
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
Meine Version war nun v18.15.0 (npm v9.5.0), dann sicherheithalber den ioBroker Fixer laufen lassen und den Pi neu starten:
iobroker fix
sudo reboot

Tipp: Das Update der node.js kann auch ohne Installationsskript via curl einfach per
sudo nano /etc/apt/sources.list.d/nodesource.listgemacht werden, Versionsnummer ändern, Datei speichern und ein Systemupdate starten.

2023-Oktober: Für Node.js Updates wurde der neue Befehl
iob nodejs-updatefür die ioBroker CLI hinzugefügt (Quelle). Node.js-Update überprüft, welches Haupt-Release von Node.js derzeit von ioBroker empfohlen wird, und führt die Installation durch. Aktuell ist die Version 18 empfohlen. Wenn in der Zukunft Version 20 zur Empfehlung wird, wird Node.js-Update diese Version installieren.




Externe Quellen und Interessante Links:
forum.iobroker.net/category/4/deutsch
haus-automatisierung.com/iobroker-tutorial-reihe
smarthome-tricks.de
shelly-support.eu
www.fully-kiosk.com/de/
forum.instar.de
z-wave.me

Interne Links:
Raspberry Pi über VIS per Datenpunkt rebooten
WLED ESP8266-Arduino mit LED-Strips