Jo's Forum

Computer & Software => LINUX => Thema gestartet von: Jo am 17. Februar 2021, 20:31:59

Titel: ioBroker mit Pi4 und Portable SSD T5 (bootable)
Beitrag von: Jo am 17. Februar 2021, 20:31:59
Stand 2021-04-08

Zum Inhalt (#post_inhalt)

Vorwort: SmartHome 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 einen (unsicheren?) Drittanbieter bedeuten kann. 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?
:-[

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 (https://de.wikipedia.org/wiki/IoBroker)) 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). 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 (https://www.iobroker.net/) implementiert werden. Für 230V Geräte nutze ich WLAN Shellys (https://shelly.cloud/) ohne Cloud und bei batteriebetriebene Geräten bevorzuge ich Z-Wave (https://de.wikipedia.org/wiki/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 (https://www.usb.org/document-library/usb-30-radio-frequency-interference-impact-24-ghz-wireless-devices). 512GB ist bestimmt nicht notwendig, erhöht jedoch deren Lebensdauer. Ihr könntet natürlich eine extra Partition z.B. als internen Cloud-Speicher nutzen.

Meine durchschnittliche Last und Stromverbrauch im Ruhemodus (CPU 42.8°C)
Gemessen bei 5.1 Volt, Pi OS Lite (Buster) im RunLevel 3 Modus, CPU Takt 1500MHz, Kernel 5.10.17, Node.js 12.22.1, NPM 6.14.12, ioBroker 4.2.1, Instanzen 15:
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 30 Minuten, ioBroker im Ruhemodus, hat also im Moment nicht viel zu tun):
ioBroker BackItUp manuell gestartet (Backup auf NAS und E-Mail senden):
Die Systemlast (Load average) ist ein Maß für die Menge der Rechenarbeit, diese ist anscheinend bei meiner externen SSD T5 höher als mit einer SD-Karte (egal ob diese am USB2 oder USB3 hängt), aber alles ist im grünen Bereich.

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 (#post_SSD) 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.

(https://secure.jolichter.de/smf/tutorials/pi4/RaspberryPi4-4GB_RaZberry2.jpg)

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 für eine bessere Performance (habe 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.
Download der Image Datei "Raspberry Pi OS Lite (32-bit)" als ZIP-Datei 2021-01-11-raspios-buster-armhf-lite.zip (438MB) von der Seite raspberrypi.org/software/operating-systems (https://www.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-01-11-raspios-buster-armhf-lite.zipNach dem entpacken habt ihr die Image Datei "2021-01-11-raspios-buster-armhf-lite.img" (ca. 1.7GB).

3 ) Image auf SSD-Festplatte und einer Micro-SD-Karte (nur temoprär) schreiben
Hinweis: Ich musste erst ein EEPROM-Firmware Update per SD-Karte installieren damit der Raspi von SSD startet. Wer dieses Update nicht benötigen, kann den Teil mit der SD-Karte weglassen und sofort per SSD booten.

Die SSD an euren PC anschließen und ein Startmedium aus der img-Datei erstellen, danach das Gleiche mit der Micro-SD-Karte. 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.
ACHTUNG! 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. natürlich 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-01-11-raspios-buster-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 Buster starten
Auf der SSD und Micro-SD-Karte (Laufwerk "boot") eine neue Datei "ssh" ohne Dateiendung anlegen, damit der Zugriff via SSH möglich ist.

Dann nur die Micro-SD-Karte in den Raspberry Pi4 Slot einstecken und mit einem LAN Kabel verbinden, anschließend einschalten. Nun wird das Betriebssystem Raspbian Buster gestartet.

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.

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 und den Raspi konfigurieren, neuesten Bootloader laden und von USB booten:
sudo raspi-configdann
Kein Reboot machen sondern den Raspberry ausschalten:
sudo shutdown nowDie Micro-SD-Karte entfernen (für den Notfall aufheben) und die SSD-Festplatte an einen USB3 Port (blau) anschließen.
Jetzt sollte der Raspi mit der SSD-Festplatte starten... :-[



Zum einloggen per SSH auf der neuen Platte, müsst ihr erst die Fingerprint-Datei auf euren Rechner löschen (nicht Pi!), dann wird diese neu erstellt. Sonst ist kein Login möglich:
rm ~/.ssh/known_hosts
Nach dem erneuten SSH-Login, wieder 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 rebootPer SSH einloggen und den Raspi zu Ende konfigurieren. Erstellt ein sicheres Passwort und merkt euch das gut, ein Reset ist aufwendig!
sudo raspi-config
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 '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# Example static IP configuration:
interface eth0
static ip_address=192.168.0.42/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

(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/sudoersiobroker ALL=(ALL;ALL) ALL
iobroker ALL=NOPASSWD:/sbin/reboot
iobroker ALL=NOPASSWD:/sbin/shutdown


5 ) Weiter mit den Feineinstellungen (Beispiele/Vorschläge):
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
ctrl_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:
[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
#dtoverlay=vc4-fkms-v3d
#max_framebuffers=2

[all]
#dtoverlay=vc4-fkms-v3d
dtoverlay=disable-wifi
dtoverlay=disable-bt
enable_uart=1
force_turbo=1


Hinweis: Die UART Schnittstelle 1 habe ich für das Z-Wave ZMEERAZ2 Aufsteckmodul aktiviert. Mit deaktiviertem Turbo Modus, springt die CPU im Leerlauf von 1500 auf 600Mhz und soll nicht mehr so warm werden. Macht bei mir ca. 4 Grad aus (43 zu 47 Grad bei passiver Kühlung). Damit ioBroker immer schnell auf Veränderungen reagiert, wird der Turbo Modus empfohlen.

LED's Raspberry Pi4
 - grüne LED (Status-LED = led0) flackert üblicherweise, wenn Daten zur SD-Karte oder USB übertragen werden
 - rote LED (Power-LED = 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/led1/brightness
root@raspberrypi:/home/pi# exit
exit
pi@raspberrypi:~ $
Hinweis: geht nach neu Start wieder an
Lösung: rc.local verwenden, diese Datei wird zuletzt im Runlevel-System ausgeführt.
Datei rc.local mit einem Editor bearbeiten und am Ende vor exit 0 den Befehl für LED aus einfügen
sudo nano /etc/rc.local
echo 0 > /sys/class/leds/led1/brightness

Cool, daran erkenne ich wenn der Bootvorgang beendet ist.
PS: Wenn die rote Power LED blinkt, gibt es ein Power oder Temperatur Problem! Sollte die Versorgungsspannung unter 4.65V fallen, blinkt die rote LED.
 

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# 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    3,2G  437G    1% /
devtmpfs        3,9G       0  3,9G    0% /dev
tmpfs           3,9G       0  3,9G    0% /dev/shm
tmpfs           3,9G    8,4M  3,9G    1% /run
tmpfs           5,0M    4,0K  5,0M    1% /run/lock
tmpfs           3,9G       0  3,9G    0% /sys/fs/cgroup
tmpfs           3,0G       0  3,0G    0% /tmp
tmpfs           300M       0  300M    0% /var/tmp
tmpfs           500M       0  500M    0% /var/lib/rpimonitor/stat
tmpfs           500M       0  500M    0% /opt/iobroker/log
tmpfs           300M    160K  300M    1% /var/log
/dev/sda1       253M     48M  205M   19% /boot
tmpfs           788M       0  788M    0% /run/user/1000


SWAP belasse ich so, da tmpfs nur bei Bedarf darauf zugreift.
Swapping deaktivieren:
sudo dphys-swapfile swapoff
sudo systemctl disable dphys-swapfile
sudo apt purge dphys-swapfile
Swapping wieder aktivieren:
sudo apt install dphys-swapfile
sudo systemctl enable dphys-swapfile





7 ) RPi-Monitor installieren
(https://secure.jolichter.de/smf/tutorials/pi4/RPiMonitor.jpg)
Quellen:
github.com/ioBroker/ioBroker/wiki/Raspberry-Pi:-RPi-Monitor-installieren (https://github.com/ioBroker/ioBroker/wiki/Raspberry-Pi:-RPi-Monitor-installieren)
github.com/XavierBerger/RPi-Monitor-deb/tree/master/packages (https://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 (https://github.com/XavierBerger/RPi-Monitor-deb/raw/master/packages/)):
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

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
Habe bis auf 3 Network-Hilfstexte alles aktiviert (Raute entfernt), die letzten 10 Linien sind für die Statistik (Quelle (https://xavierberger.github.io/RPi-Monitor-docs/31_configuration_examples.html)). 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 (#post_SSD)):
sudo service rpimonitor stop
sudo rm /var/lib/rpimonitor/stat/*.rrd
sudo service rpimonitor start



8 ) ioBroker installieren
(https://secure.jolichter.de/smf/tutorials/pi4/ioBroker_Instanzen.jpg)
Mit ioBroker ist "fast" alles möglich (ioBroker Forum (https://forum.iobroker.net/category/4/deutsch)) und lässt eure Kreativität freien Lauf. Dank Blockly (https://www.smarthome-tricks.de/iobroker-blockly/) sind selbst JavaScripte einfach.
(https://secure.jolichter.de/smf/tutorials/pi4/Tab_KisokBrowser_ioBroker.jpg)
Beispiel einer VIS (https://www.smarthome-tricks.de/iobroker-visualisierung/)-Anzeige auf einem Tablet (zensiert) und Fully Kiosk Browser & App (https://www.fully-kiosk.com/de/)

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 "onlyNTP" angelegt und lasse damit nur den Time Server "pool.ntp.org" von aussen für das Android Tablet zu. Bei Bedarf lässt sich der Filter einfach erweitern (AVM Link (https://avm.de/service/fritzbox/fritzbox-7590/wissensdatenbank/publication/show/3395_Filterlisten-fur-Internetseiten-erstellen/)). Sollte es notwendig sein den Fully Kiosk Browser upzudaten, einfach kurz den Filter deaktivieren und manuell aktualisieren.

nodejs und ioBroker installieren
nodejs Repository hinzufügen und installieren:
curl -sL https://deb.nodesource.com/setup_12.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 -sL 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är 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-02-02 08:42:42 CET; 40s ago
     Docs: http://iobroker.net
 Main PID: 522 (node)
    Tasks: 44 (limit: 4915)
   CGroup: /system.slice/iobroker.service
           ├─522 iobroker.js-controller
           ├─554 io.admin.0
           ├─569 io.discovery.0
           └─586 io.info.0
........

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:
Liste mit allen Adaptern die es gibt (http://download.iobroker.net/list.html)


Alles Updaten/Upgrade inkl. ioBroker (js-controller) ohne sudo!
iobroker 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
iobroker update
iobroker upgrade self
iobroker upgrade
dann den ioBroker neu starten "iobroker start all" oder den Raspi neu starten
sudo reboot
Bei einer Neuinstallation unwahrscheinlich, aber falls irgendwo noch nicht alle Rechte auf dem System passen sollten, diesen Fix durchlaufen lassen (Quelle (https://forum.iobroker.net/topic/20211/iobroker-installation-fixer-beta-verf%C3%BCgbar)):
curl -sL https://iobroker.net/fix.sh | bash -
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 (#post_SSD))



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 (https://github.com/ioBroker/ioBroker.zwave#known-issues)):
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 (https://github.com/AlCalzone/ioBroker.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 (#post_backup) enthalten.

Achtung! Im ioBroker Backup sind keine Z-Wave Geräte enthalten. Nur mit Z-Way (https://zwave.de/backup-und-wiederherstellung-im-razberry-und-z-way/) Smart Home für Raspberry 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 (https://z-wave.me/z-way/download-z-way/)):
iobroker stop
wget -q -O - 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. 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 apt autoremove
Evtl. manuell entfernen: /opt/z-way-server, /etc/*/z-way-server, /etc/*/zbw* and /etc/zbw*

Mit diesen Z-Wave Geräten funktioniert die Anbindung bei mir (es gibt bestimmt hunderte die funktionieren):

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

Z-Wave Pro:

Z-Wave Contra:
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 (https://www.shelly-support.eu/) 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:
Da ich die Shellys und das Tablet nur im WLAN-Netz nutze (Gerätesperre aktiv*), wird die Zeit auf diesen Geräten nicht per NTP synchronisiert. Wer eine FritzBox hat, kann dessen Zeitsynchronisation (NTP "fritz.box") einrichten, Link (https://avm.de/service/fritzbox/fritzbox-7590/wissensdatenbank/publication/show/336_Zeitsynchronisation-NTP-fur-FRITZ-Box-und-Netzwerkgerate-einrichten/).
(* ausser bei Firmware Updates; Tablet siehe oben: Beispiel einer VIS-Anzeige (#post_ioBroker))



11 ) INSTAR Webcams
Die INSTAR (https://www.instar.de/) WebCams sind Made in Germany, können ohne Cloud genutzt werden und haben ein gutes Forum (https://forum.instar.de/).
Ein weiterer Vorteil ist, daß man unter ioBrocker dessen CGI-Befehle (https://wiki.instar.de/Erweitert/CGI_Befehle/) nutzen kann.



12 ) Powerbank als USV
Nutze als Mini-USV Anlage eine EasyAcc Powerbank 20000mAh Externer Akku mit 4 Output (Link Amazon (https://www.amazon.de/EasyAcc-20000mAh-PowerBank-Ausg%C3%A4ngen-Smartphones/dp/B01422TC14)). Das ist eine der wenigen Powerbanks mit Type-C Schnittstellen und echten Passthrough und maximal 3A-Ausgang. Um 2 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 (https://www.amazon.de/DeLock-Y-Anschluss-USB-3-0-Kabel/dp/B009EAF0RU/)) mit Anker USB C Kabel auf USB A Ladekabel (Link Amazon (https://www.amazon.de/dp/B07DD5YHMH/)).

(https://secure.jolichter.de/smf/tutorials/pi4/RaspberryPi4-8GB_RaZberry2_001.jpg)
(https://secure.jolichter.de/smf/tutorials/pi4/RaspberryPi4-8GB_RaZberry2_002.jpg)
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 (#post_zwave)) und ist daher in diesem Backup nicht enthalten!
Zur Sicherung nutze ich den ioBroker Adapter BackItUp (https://github.com/simatec/ioBroker.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 das Backup in den Ordner /opt/iobroker/backups kopiere. Dann mit BackItUp über das Webinterface den Restore durchführen. Habe ich getestet und funktioniert gut, benötigt viel Zeit da alle Adapter neu installiert werden. Soll auch per Konsole funktionieren (ungetestet):
iobroker stop
iobroker restore 0
curl -sL https://iobroker.net/fix.sh | bash -
sudo reboot
(fix.sh prüft ob alle Rechte auf dem System passen)

Wer den yahka-Adapter nutzt sollte das unbedingt lesen: ioBroker.yahka auf ein anderes System umziehen (https://github.com/jensweigele/ioBroker.yahka/wiki/ioBroker.yahka-auf-ein-anderes-System-umziehen). Kurzfassung: 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 (https://wiki.ubuntuusers.de/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!):

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 (https://wiki.ubuntuusers.de/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 (#post_RPiMonitor) 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")



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

Interne Links:
Raspberry Pi über VIS per Datenpunkt rebooten (https://secure.jolichter.de/smf/index.php/topic,321.0.html)