Neuigkeiten:

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

Hauptmenü

Neueste Beiträge

#21
LINUX / WLED ESP8266-Arduino mit LED-S...
Letzter Beitrag von Jo - 2021-05-21 | 21:17:33
Hier mein Versuchsaufbau mit einem ESP8266-Arduino und LED-Strips WS2812B (5V) und WS2815 (12V)

WLED (WLED WIKI) ist eine geniale Open Source Software für ESP Controller um z.B. WSxxx oder SKxxx LEDs zu steuern (LED-Streifen mit einzeln steuerbaren LEDs). Solche ESPs lassen sich mit WLED einfach in ioBroker z.B. per cURL in einem Blockly (exec Befehl) ohne extra Adapter integrieren (siehe unten). Es gibt auch einen Adapter der die entspr. Datenpunkte anlegt (iobroker.wled). Via Node-RED und cURL sollte das auch mit KNX oder Loxone funktionieren? Sehe das es auch eine WLED Unterstüzung seit V0.11.0 für Loxone gibt.

LEDs haben bei voller Helligkeit einen Stromverbrauch von maximal ca. 20 mA (0.1W) je Farbe, also je RGB LED 60mA (0.3W) und RGBW 80mA (0.4W). Für mein 5V Demo Strip mit 60 RGB LEDs müsste ich also ein 5V-Netzteil mit 3.6A verwenden (18A bei 300 LEDs!). Ich begrenze den Strom per Setup auf 1500mA, testweise habe ich die LEDs an einem Labornetzteil (max. 13A) angeschlossen und optisch war es nur etwas heller. Ein 12A Netzteil kann daher bei 5m und 300 LEDs auch ausreichend sein. Wenn bei langen Strips ab ca. 3m die hinteren LEDs dunkler leuchten, hilft nur Spannungsinjektionen oder die Versorgungsspannung in der Mitte einzuspeisen. Auch eine Möglichkeit ist die Einspeisung Plus von einer Seite und Minus von der anderen Seite des Strip anzuschließen, dass hat den Vorteil das der Widerstand für alle LEDs gleich groß ist und es zu keinem Helligkeitsunterschied kommt. Bei mehr als 180 LEDs und/oder langen Kabelstrecken würde ich jedenfalls 12V (z.B. WS2815) LED-Strips mit einem 12V/8A Netzteil bei 5m empfehlen, da hier der Spannungsabfall und Strombedarf geringer ist. Hierbei muss der ESP an einem 5V Netzteil oder Regulator mit gemeinsamen GND betrieben werden!

Verwendete Demo Hardware:
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.


* gibt es auch als RGBW (4 Farben) LED-Strip mit bis zu 144 LEDs/m, z.B. dieser SK6812 (RGBNW = RGB + natürliches Weiß, 4000K-4500K).

Anschlussschema mit einem Widerstand ca. 220-470 Ohm am Datenpin D4 um eine mögliche Beschädigung zu verhindern. Bei einem BTF2815 12V (5m) war mein 470 Ohm Widerstand zu groß (falsche Farben und flackern), mit einem kleineren 220 Ohm Widerstand funktioniert dieser auch sicher.



1 ) Die GUI Software die ich zum Flashen meines ESP8266 unter Linux Manjaro verwendet habe, heißt NodeMCU PyFlasher und lässt sich aus den AUR Repos installieren. Das sollte auch mit einem ESP32 funktionieren, ist aber für diesen Zweck unnötig (Bluetooth und 2 CPU's).
yay -S nodemcu-pyflasher
2 ) Um auf die serielle Schnittstelle zugreifen zu können, benötigt Manjaro (Arch Linux) Berechtigungen und muss Mitglied der Gruppen uucp und lock sein. Aktuellen Benutzer hinzufügen:
sudo usermod -aG uucp $USER
sudo usermod -aG lock $USER
dann den PC neu starten.

3 ) Nun zum Flashen des ESP8266. Benötigt wird die aktuelle Firmware von WLED welche auf github.com/Aircoookie/WLED/releases zu finden ist. Ich habe die zum Zeitpunkt meiner Installation "WLED_0.12.0_ESP8266.bin" geladen (siehe Version mit der Aufschrift "Latest").

Als nächstes habe ich den ESP8266 mit einem Micro-USB-Kabel am Computer angeschossen und den NodeMCU PyFlasher (/usr/bin/nodemcu-pyflasher) geöffnet.



Normalerweise sind alle Geräte in Linux nur Dateien und bei serielle Schnittstellen ist das nicht anders. Das erste sollte daher "/dev/ttyUSB0" sein und das zweite "/dev/ttyUSB1" usw. Diese GUI macht das Flashen sehr einfach: "Serial Port" auswählen, Firmware Datei auswählen und den Flash Vorgang starten.

Hinweis für ein späteres Software-Update-Verfahren. Die Software verfügt über eine integrierte OTA-Software-Update-Fähigkeit: Zuerst muss diese aktivieren werden, indem die korrekte OTA-Passphrase (Standard: "wledota") im Einstellungsmenü eingegeben wird. Entferne das Häkchen in der Checkbox "OTA locked", speichere dann die Einstellungen und starte den ESP neu. Anschließend kann unter Config -> Security & Update die Option Manual OTA Update ausgewählt werden und ein neues Release Binary hochgeladen werden (im Dezember 2021 so erfolgreich WLED_0.13.0-b5_ESP8266.bin installiert).

4 ) nach dem Flashen habe ich mich mit WLAN in das Gerät eingeloggt (Notebook oder Smartphone) und per Webinterface die WLED App an meinem Router angemeldet:

SSID ist "WLED-AP" und das Passwort ist "wled1234", Aufruf des Webinterface im Browser: http://4.3.2.1

Dann unter "Config" und "WiFi Setup" die WLED-AP an euren Router anmelden "connect to existing network" (Beispiel!):
  • SSID: [Router SSID]
  • Network password: [Router WLAN Passwort]
  • Static IP: 192.168.1.42 (eine feste freie IP)
  • Static gateway: 192.168.1.1 (Router IP)
  • Static subnet mask: 255.255.255.0
  • mDNS adress: http://wled-42.local
  • Config Access Point: alles leer gelassen




Nun kann ich per http://wled-42.local oder http://192.168.1.42 das Webinterface WLED starten.


Da WLED viele unterschiedlichen LED-Strips unterstützt muss das Strip erst passend konfiguriert werden, ich musste z.B. LED outputs von RGB auf GRB umstellen (erste LED grün anstatt rot). Wenn du wie ich zum Testen einen 1m LED-Streifen mit 60 LEDs/m hast, musst du unter "LED Preferences" 60 eintragen (bei 5m 300). Dabei wird dir auch ein passendes Netzteil (Ampere) vorgeschlagen. Cool: Anschließend kann die Leistung des Netzteils angeben werden (Maximum Current). WLED wird die Helligkeit der LEDs entsprechend reduzieren, daher ist es auch möglich ein kleineres Netzteil zu nutzen.

Demo 1


Demo 2 (nein, werde den Ofen nicht anmachen, war nur ein joke ;-)


Demo 3 (Regenbogen Simulation Terrasse, 5m Strip unsichtbar in der Überdachung montiert)



Ich steuere mein WLED per HTTP Request API via cURL unter ioBroker
(cURL sendet unter Linux standardmäßig ohne jegliche Optionen eine HTTP-GET-Anfrage)

Quelle: HTTP-request-API

Schönes Beispiel für eine Beleuchtung im Garagensturz mit WLED (RGBW) auf YouTube: Link

Ein paar Beispiele für mein DEMO RGB Strip mit 60 LEDs. Bei 5m wie in dem YT-Link sind es 300 RGBW LEDs und müsste dann angepasst werden - S2, S, SP und W (weiße LED).
(S2=60 Anzahl der LEDs, S = Set segment start, SP = Set segment spacing, T = Off/On/Toggle (0/1/2), A = master brightness (0-255), FX = Effect index)

Tor in Bewegung (rot):
curl "http://192.168.1.42/win&SM=0&SS=0&SV=2&S=0&S2=60&GP=1&SP=0&RV=0&SB=255&A=128&R=255&G=0&B=0&R2=0&G2=0&B2=0&FX=60&SX=203&IX=246&T=1"
ioBroker cURL Demo (Hörmann Tor mit UAP1):


Tor geöffnet (grün):
curl "http://192.168.1.42/win&SM=0&SS=0&SV=2&S=0&S2=60&GP=1&SP=0&RV=0&SB=255&A=128&R=0&G=255&B=0&R2=0&G2=0&B2=0&FX=0&T=1"
Einschaltanimation - Aus - Spots:
curl "http://192.168.1.42/win&SM=0&SS=0&SV=2&S=0&S2=60&GP=1&SP=0&RV=0&SB=255&A=128&R=255&G=255&B=255&R2=0&G2=0&B2=0&FX=60&SX=64&IX=113&T=1"curl "http://192.168.1.42/win&T=0"curl "http://192.168.1.42/win&SM=0&SS=0&SV=2&S=5&S2=60&GP=7&SP=5&RV=0&SB=255&A=128&R=255&G=255&B=255&R2=0&G2=0&B2=0&FX=0&T=1"
aus:
curl "http://192.168.1.42/win&T=0"ein:
curl "http://192.168.1.42/win&T=1"umschalten (toggle):
curl "http://192.168.1.42/win&T=2"
Effekte (Liste der Effekte und Paletten)

TV Simulator (FX=116)
curl "http://192.168.1.42/win&T=1&A=128&FX=116&SX=0&IX=128"
Scanner Dual (FX=60)
curl "http://192.168.1.42/win&T=1&A=128&FX=60&SX=0&IX=128"

Random Colors (FX=5)
Einschalten und konstantes, sehr langsames Überblenden aller LEDs von einer einzelnen Zufallsfarbe zu einer anderen einzelnen Zufallsfarbe
curl "http://192.168.1.42/win&T=1&A=128&FX=5&SX=0&IX=128"
das gleiche schneller
curl "http://192.168.1.42/win&T=1&A=128&FX=5&SX=255&IX=128"


Strommessung mit BTF-LIGHTING WS2815 12 Volt (5m 300 LEDs)
Der BTF2815 ist ein WS2815-Klon, der einen UCS1903-Chip verwendet. Der Test von QuinLED zeigte das der BTF2815 bessere Eigenschaften als der original WS2815 hat (YT: 24v on 12v WS2815 / BTF2815 | Will it burn?).

  • BTF-LIGHTING WS2815 Modell: BTF-12V-060L-W
  • Netzteil MW LPV-150-12 | 12VDC / max. 10A (5A tut es auch, siehe Messergebnisse unten)
  • Converter 12DC zu 5 VDC für den ESP (Masse mit dem 12 Volt Netzteil verbunden)
  • Firmware WLED_0.12.0_ESP8266
  • alle LEDs an (Brightness 100%): win&SM=0&S2=300&RV=0&SB=255&A=255&R=255&G=255&B=255&R2=0&G2=0&B2=0&FX=0&T=1
  • Multimeter Fluke 115 True RMS

WLED kann den Strom nur "schätzen" (kalkulieren) und daher sind die Werte nicht genau. Hier kalkuliert WLED den Strip mit "WS2815 (12mA)".

WLED Strombegrenzung 880mA, WLED Schätzung ist 866mA, gemessen mit Fluke 780mA


WLED Strombegrenzung 1500mA, WLED Schätzung ist 1488mA, gemessen mit Fluke 1290mA


WLED Strombegrenzung 6000mA (also offen), WLED Schätzung ist 4000mA, gemessen mit Fluke 3300mA


Die letzte Messung entspricht 40Watt und die Spannung des Netzteils bleibt stabil genau 12,0Volt. Das entspricht nicht den 90Watt (0.3W/LED) die BTF angibt (Link). Diese Angaben von BTF sind schlichtweg gelogen. Auf der Seite von thesmarthomehookup.com wurden fast meine gleichen Messungen an einem WS2815 dargestellt, jedoch mit 150 LEDs, darum ca. 20Watt.


Nachtrag: Auf QuinLED findet ihr die gleiche Messung mit 300 LEDs.

Auch wichtig: Der Ruhestrom mit ESP und 5V-Converter, wenn die LEDs aus sind (win&T=0), ist gemessen ca. 530mA (WLED zeigt Current estimated usage: 400mA), das entspricht etwas mehr als 6Watt Sekundär und Primär bei 230Volt/105mA sind das 24Watt! Daher schalte ich das Netzteil bei Nichtgebrauch z.B. per Shelly aus. Gemessen an einem Shelly 1: Relais An 1W und Relais Aus 0,75W.



Hinweis:
  • Die WLED-Software benutzt ein Smartphone optimiertes Webinterface, wer mehrere WLED-LED-Strips in einer App zusammenfassen möchte kann die WLED Smartphone-App für Android oder iOS installieren.
  • LedFx kann Audio-Eingänge z.B. von einem Notebook oder Raspi sofort verarbeiten und das Audio als Echtzeit-Licht-Show zu mehreren LED-Stipes senden (WLED Sync Setup: E1.31 sACN).



#22
LINUX / PGP Mail Verschlüsselung
Letzter Beitrag von Jo - 2021-03-03 | 21:34:28
PGP = Pretty Good Privacy

Das unter der GNU-GPL stehende Programm GnuPG war die erste Implementierung von OpenPGP und wurde als freie Alternative zu PGP entwickelt (Wiki PGP).

Leider wird die PGP-Verschlüsellung bei Windows oder Apple seit Jahren erfolgreich boykottiert und als gescheitert betrachtet - da will wohl jemand mitlesen? Oft wurden E-Mails mit PGP-Anhängen die über einen MS Exchange Server laufen umformatiert, so das diese Dateien nicht mehr zu entschlüsseln waren! Teilweise gibt es diese Probleme immer noch. Nur Linux E-Mail-Clients bieten nativen Support für PGP erfolgreich seit vielen Jahren an. Ebenso unterstützen viele Webmail-Anwendungen PGP ohne Tool per Mailvelope Plugin für Chrome und Firefox.

Hinweis: pEp ist eine PGP Open-Source-Verschlüsselungs-Software die es auch für iOS gibt (Wiki). Leider wird der private-Key standardmäßig beim Erstellen mit pEp nicht mit einem Passwort gesichert, da die Entwickler es wohl als überflüssiges und störend ansehen. Hier unbedingt den private-Key mit einem guten Passwort sichern! Ein bestehender private-Key kann auch per iTunes oder MAC importiert werden. pEp tauscht die öffentlichen Schlüssel automatisch als E-Mail Attachment aus und im Passivmodus nur wenn der Empfänger auch pEp nutzt. Leider wird mit dem Autocrypt Schlüsseltausch die Sicherheit von OpenPGP stark geschwächt, um den Aus­tausch der Schlüssel zu vereinfachen. Daher bitte unbedingt den Fingerprint des Versenders prüfen! Ich weiß nicht was ich von dieser europäischen Foundation halten soll. Ziemlich einfach soll alles sein und daher sind Man-in-the-Middle Angriffe möglich? Siehe auch unten "Wo ist der Haken?" Auf deren Seite werben Sie mit Zero Trust (Traue niemanden). Richtig, darum nutze ich das nicht.

Eine nicht verschlüsselte E-Mail ist so öffentlich wie eine Postkarte. OK, nichts neues und ist lange bekannt. Wenn es nur um schnellen und verschlüsselten Chat oder dergleichen geht, ist eine E-Mail heute nicht zwingend notwendig. Hier gibt es mehrere Alternativen: Jabber.de mit Client-seitiger OTR-Verschlüsselung oder Messenger wie Signal oder Threema. Threema und Jabber mit OTR-Verschlüsselung gelten derzeit als der sicherste Messenger und lassen sich ohne Angabe personenbezogener Daten wie Telefonnummer oder E-Mail-Adresse nutzen.

Bei Unternehmen sieht das anders aus und sollten daher jede E-Mail verschlüsseln, besonders wenn personenbezogene Daten vorliegen. Daher senden seriöse Unternehmen uns dank sogenannten Postgeheimnis eben Briefe. Gilt ja als sehr sicher, wenn diese nicht verloren gehen oder der Nachbar bekommt. Einschreiben mit Rückschein? Ja die Post verdient gut daran. Mein Brief 2020 an das Finanzamt kam an, aber der Beamte hat die Unterlagen angeblich nie bekommen! Leider konnte ich die Unterlagen nicht verschlüsseln. Daher kann ich dumme Sprüche wie "ich habe nichts zu verbergen" nicht leiden, diejenigen dürfen mir gerne ihr Bankkonto und Steuererklärung zeigen.

Verletzen Unternehmen datenschutzrechtliche Vorgaben, müssen sie die Datenschutzbehörden und betroffenen Personen sofort darüber informieren. Versendeten sie die E-Mails verschlüsselt, entfällt die Meldepflicht gegenüber der betroffenen Person. Negative Schlagzeilen und Anzeigen könnten dann die Folge sein.

Meine privaten E-Mails sind teilweise mit PGP verschlüsselt, z.B. erhalte ich so Rechnungen oder Passwörter von meinem Provider. Zusätzlich ziehe ich nur deutsche E-Mailanbieter wie posteo.de oder mailbox.org vor. Derzeit bietet nur posteo.de eine Vollverschlüsselung auf deren Server ohne PGP oder S/MIME an.

Diese E-Mailanbieter sind kostenpflichtig (ab 1€/Monat) und legen besonders viel Wert auf Datenschutz und Datensicherheit, natürlich komplett werbefrei. Zwei-Faktor-Authentifizierung ist z.B. mit FreeOTP möglich. Der Zugriff auf deren Server erfolgt nur über verschlüsselte TLS-Verbindungen und werden zusätzlich mit PFS und DANE/TLSA abgesichert. E-Mails, Kalender oder Kontaktdaten können auf deren Server verschlüsselt werden. Damit ist zumindest unter diesen 2 E-Mail-Anbietern ein einfaches Ende-zu-Ende-Verschlüsselung möglich... wenn niemand anderes z.B. Gmail dazwischen ist. Gmail hatte bis 2017 die Inhalte von allen empfangenen Nachrichten ausgewertet! Und heute? Ausgewertet wird trotzdem – um Spam und Phishing zu erkennen oder getätigte Käufe aufzulisten (Quelle: Wiki Gmail).

Nun müsste doch die Transportverschlüsselung per DANE (Kommunikation beteiligter Server müssen zwingend untereinander verschlüsseln) reichen? Nein, denn die E-Mails liegen bei den Absender und Empfänger Server entschlüsselt vor. Da Unternehmen nach der DSGVO die Verschlüsselung personenbezogener Daten nachweisen müssen, reicht das eben nicht. Hier hilft nur eine echte Inhaltsverschlüsselung die den Inhalt und Anhänge wirkungsvoll verschlüsselt.

Ich bevorzuge für die Inhaltsverschlüsselung OpenPGP und der Einfachheit halber schreiben viele nur PGP. Das erspart euch den Geheimtransport von Schlüsseln und besteht immer aus zwei Teilen. Einem öffentlichen, mit dem man nur verschlüsseln kann (public-key) und einem geheimen um diese Daten zu entschlüsseln (private-key). Aber PGP kann mehr, nämlich E-Mails digital Unterschreiben (Signatur), was sicher stellt, dass die Nachricht wirklich von der erwarteten Person stammt und nicht verändert wurde (z.B. mit dem Trojaner Emotet).

Eigentlich genial? Ich muss niemanden das Passwort sagen, denn das Passwort zum verschlüsseln ist öffentlich! Mein private-key ist natürlich nur auf meinem Rechner mit guten Passwort geschützt und in einem verschlüsselten Backup System enthalten. PGP gilt als absolut 'brute-forced', kann also nicht mit der Brute-Force-Methode geknackt werden. Mit dem Energieaufwand um rsa128 zu knacken, könnte man Ozeane zum kochen bringen. Das heißt nicht, dass PGP nicht erfolgreich angegriffen werden kann (Quelle).

Wo ist der Haken? Die Schlüssel-Echtheit! Also ob der öffentliche Schlüssel echt ist. Dieser könnte durch einen sogenannten "man-in-the-middle" Angriff, abgefangen und verändert werden. Lösung:

  • Erstens versende ich den Schlüssel nicht, sondern lege den auf meine HTTPS-geschütze Seite, hierbei muss ich natürlich dem Systemadministrator vertrauen.
  • Zweitens kann die Echtheit des Schlüssels überprüft werden, denn jeder öffentliche Schlüssel hat einen Fingerabdruck (Fingerprint). Dieser Fingerprint ist ein kurzer Hash-Wert mit dem ihr den Schlüssel mit dem Besitzer verifizieren könnt. Das man dies nicht per E-Mail oder unsicheren Messenger tut, sollte klar sein? Mein Fingerprint findet ihr zusammen mit dem private-key auf meiner Kontaktseite. Um ganz sicher zu sein, könnt ihr den Fingerprint telefonisch oder per Threema mit mir vergleichen :cool:




Wie nutze ich PGP unter Linux Manjaro KDE? Derzeit mit Evolution (früher auch mit kmail). Installation siehe hier unter Punkt 13. Das GnuPG Programm implementiert den OpenPGP-Standard und der GNU Privacy Assistant (GPA) ist eine grafische Oberfläche für die GnuPG Schlüsselverwaltung. Damit lassen sich einfach neue Schlüssel erstellen, exportieren, importieren oder signieren. Eigene Schlüssel bestehen immer aus einem öffentlichen und geheimen Teil. Natürlich könnt ihr damit alle öffentliche Schlüssel aufnehmen und hoffentlich nur signieren wenn ihr den Fingerprint geprüft habt.



Hinweis: GPA kann kein rsa4096 Schlüssel generieren und habe das daher deinstalliert, auch wenn rsa4096 scheinbar nicht viel bringt (Quelle). Mit dem KDE-Frontend KGpg ist auch rsa4096 möglich:


mit dem Startbefehl "kgpg -k" wird KGpg nicht minimiert gestartet (KGpg befindet sich in der Plasma Kontrollleiste)

Evolution -> Einstellungen -> E-Mail-Konten (Konto auswählen) -> Bearbeiten -> Sicherheit:



Ich signiere immer, schadet nichts und bringt vielleicht andere auch dazu (Anleitung Mailverschlüsselung und Zertifikate).

Details zum öffentlichen Schlüssel anzeigen ohne diesen zu importieren per Konsole (Beispiel):
gpg --with-fingerprint --keyid-format=short --show-keys ~/Downloads/public-key.asc

PS: Keyserver wie z.B. keys.openpgp.org nutze ich nicht, siehe auch Wiki Schlüsselserver.

#23
LINUX / ioBroker Pi4 Reboot per Vis
Letzter Beitrag von Jo - 2021-02-21 | 11:05:29
Raspberry Pi über VIS per Datenpunkt rebooten

  • Habe in meinen Objekten dazu folgenden Datenpunkt unter 0_userdata.0 als Logikwert angelegt: Datenpunkte.0.System.pi.reboot
  • In einer beliebigen View in VIS ein Widget anlegen, z.B. hqWidgets on/off und das Symbol evtl. anpassen (z.B.: /icons-fatcow-hosting/control_repeat.png)
  • Als Object ID den "0_userdata.0.Datenpunkte.0.System.pi.reboot" eintragen und Wert min=false, max=true, CheckBox "Taster" setzen

Dann ein neues JavaScript anlegen (pi.reboot) und folgenden Code einfügen:
function rebootPi() {
  log('Reboot Linux system by button', 'info');
  setState("0_userdata.0.Datenpunkte.0.System.pi.reboot", false, true);
  exec('sudo reboot');
}

on({id: '0_userdata.0.Datenpunkte.0.System.pi.reboot', val: true, change: 'ne'}, function (obj) {
  rebootPi();
});

Im Skript ist eine Subscription auf den pi.reboot Datenpunkt angelegt, welche nur auslöst, wenn der Datenpunkt auf "true" steht. Der Body der Subscription führt dann die Funktion rebootPi() aus, welche zunächst in das ioBroker Log einen Eintrag schreibt und dann per exec() Funktion das Linux Kommando für den Neustart ausführt.

Nach dem Speichern das Skript aktivieren. Für einen ersten Test würde ich noch den Neustart auskommentieren und prüfen ob der Eintrag in das Log geschrieben wird. Um das Skript nutzen zu können, habe ich im JavaScript-Adapter diese Funktionen aktiviert:
  • Erlaube das Kommando "setObject"
  • Erlaube das Kommando "exec"

Da alles nun unter dem User iobroker rennt, müsst ihr den User in /etc/sudoers einbinden (hinter "# User privilege specification"), sonst ist kein sudo möglich:
sudo nano /etc/sudoersiobroker ALL=(ALL;ALL) ALL
iobroker ALL=NOPASSWD:/sbin/reboot
iobroker ALL=NOPASSWD:/sbin/shutdown


Quelle: smarthome-tricks.de/software-iobroker/vis-reboot-linux-ueber-die-visualisierung
#24
LINUX / ioBroker mit Pi4 und SSD T5 od...
Letzter Beitrag von Jo - 2021-02-17 | 20:31:59
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


#25
LINUX / Härten
Letzter Beitrag von Jo - 2021-01-02 | 12:23:47
Thema: Sicherheit im Heimnetzwerk erhöhen
Stand 2021-12-28

Schlagwörter wie "Emotet", "EU-Regierungen planen Verbot sicherer Verschlüsselung (Chatkontrolle 2.0)", "China Clouds" oder "Größte Datensammler aller Zeiten" geben zu denken.

Läuft deshalb die Auflösung von Domainnamen zu IP-Adressen immer noch weitgehend unverschlüsselt ab und lenkt die EU mit ihren nervigen EU-Cookie-Irrsinn nur von anderen Sicherheitslücken ab? Wann begreifen EU-Politiker das sie dadurch eine weg-klick-Mentalität ohne lesen erschaffen haben? Ich hasse es, wenn Eunuchen übers Mausen reden. Hoffe das die EU aus Unwissenheit bald alles tot reguliert hat und damit ein neues dezentrales Internet fördert, es lebe das Web 3! Ursprünglich ist das Internet dezentral organisiert und gehört niemandem. Wichtige Teile werden heute von wenigen großen zentralisierten Diensten zur Verfügung gestellt. Darum bezeichnen viele das Internet als kaputt. Server können ausfallen, Daten verkauft oder an Regierungen herausgegeben werden. Auch ist eine Zensur in einem zentralisierten System wesentlich einfacher. Diese Hauptprobleme könnte in Zukunft ein Web 3 auf Blockchain Technologie lösen. Wer die Gegner gegen solch ein dezentrales Internet sind, dürfte klar sein. Link media.ccc.de und kn-online.de

Update 2021-03-30 (#Filternet, #CUII): Deutschland hat eine Internetzensur ohne Richter!
Durch die "Clearingstelle Urheberrecht im Internet" (WIKI CUII) werden Urheber-rechtsverletzende Seiten, wie kostenlose Streaminganbieter, ab sofort ohne gerichtliche Entscheidung gesperrt. Was  genau hinter dieser Clearingstelle steckt und wie diese vorgeht: YouTube Link Kanzlei WBS.
Eine DNS-Sperre ist leicht ohne VPN zu umgehen, siehe z.B. Fritzbox DNS over TLS (DoT), aber irgendwann könnte es Sperren geben die nicht umgänglich sind. Das ist ein massiver Eingriff in die freie Zukunft des Internets und wir brauchen dringend ein neues dezentrales Web 3 ohne das uns die großen Provider Seiten sperren wie in China oder der Türkei. Cool, hatte die Seite serienstream.sx vorher nicht gekannt, gute Antiwerbung dank CUII.
Mich persönlich interessiert diese Seite nicht, bin aber für ein freies Internet und ich lasse mich nicht gerne bevormunden. Keine Frage, es gibt Seiten die gesperrt werden sollten, aber nicht durch einen Verein der nur die Interessen von großen Firmen vertritt!

Daher sollten wir alle auf Open-Source und dezentrale Lösungen setzen! Hier ein paar Beispiele für ein Internet ohne Zensur welches das Abhören, Malware und die Datensammlungswut von großen Firmen unter dem derzeitigen Web 2 begrenzt.

Alternativen und mögliche Lösungen zum Härten privater Daten


PASSWÖRTER
Nutze NIE gleiche Passwörter und diese dürfen nicht erratbar sein. Für E-Mails und Shopping ist eine zusätzliche Zwei-Faktor-Authentifizierung (2FA) sinnvoll, wie es beim Online-Banking üblich ist. Siehe z.B. FreeOTP.


E-MAILS und ANHÄNGE
Ab 1€ im Monat bieten z.B. Posteo.de oder Mailbox.org hohe Datensparsamkeit, Sicherheit, Verschlüsselungen, 1A Spam-Filter und Server in Deutschland. Kontaktdaten und Kalender können per WebDAV (CardDAV) mit euren Smartphone und PC synchronisiert werden.

Die meisten Schadprogramme werden über E-Mail Anhänge oder Links verbreitet. Gute Spamfilter löschen diese, wenn doch was durch kommt lösche ich unbekannte Absender sofort! Bei bekannten Absendern sollte man bei Dateianhängen oder Links (besonders Office-Dokumente*) immer vorsichtig sein und im Zweifelsfall die Datei oder den Link nur nach Rücksprache mit der tatsächlichen Person welcher als Absender angegeben ist öffnen. Dann wäre das mit dem Trojaner Emotet nicht passiert. Die Wahrscheinlichkeit ist groß, dass E-Mails von bekannten Gesprächspartnern in bestehenden Konversationen geöffnet werden, siehe auch auf der BSI Homepage Schadsoftware Emotet: Wie kann man sich schützen? Alle E-Mails sollten sicher mit PGP signiert oder sogar verschlüsselt werden, besonders bei Geschäftskunden. Die Signatur dient dazu, die Echtheit der Nachricht zu garantieren. Siehe auch PGP Mail Verschlüsselung.

*JavaScript im PDF-Reader und Office Makros/VBA habe ich deaktiviert, diese aktiviere ich nur temporär bei Bedarf wenn ich mir sicher bin.

SMARTPHONE - heikles Thema!
Android ist besser als iOS, iOS ist besser als Android, na was denn nun  :confused:
Das soll jeder für sich selbst entscheiden, beide Systeme haben Vor- und Nachteile und zum Glück gibt es nicht nur ein System. Gemeinsam bilden diese 2 Riesen leider ein gewaltiges Oligopol. Fakt ist das beide Server in den USA haben und wir keinen trauen können. Beide benutzten als Basis einen quelloffenen Unix-Kernel, das macht diese aber nicht zum echten Open-Source Handy. Ein Smartphone mit Linux wäre eine schöne Sache und die Linux-Community arbeitet schon länger daran. Leider haben sie es schwer gegen Giganten anzukommen, besonders wenn Benutzer deren Messaging-Dienste und Clouds bevorzugen. Auch diese Server stehen oft in den USA und es handelt sich nicht um Open-Source, niemand weiß welche Fehler oder offene Hintertüren solche SW enthält. Wenn die NSA dein Smartphone orten oder Bewegungsprofile erstellen kann, dann weiß der BND das auch. Skandal? Nein, lasst uns lieber von Cookies reden...

WhatsApp und Co bieten eine Ende-zu-Ende-Verschlüsselung und versprechen, dass niemand eure Nachrichten mitlesen kann. Klar, dann können Zitronenfalter Zitronen falten. Zumindest haben diese Dienste all eure Telefonnummern aus der Kontaktliste, teilweise sogar Geheimnummern. Laut deren AGB habt ihr natürlich eine Einverständniserklärungen eingeholt (wer macht das?!), wenn nicht habt ihr euch strafbar gemacht. Private Telefonnummern von mehr als 2 Milliarden Benutzern, das sind dann wahrscheinlich zig Milliarden Telefonnummern. Angeblich findet kein kompletter Adressbuch-Upload statt. Jetzt noch die GPS-Daten und Metadaten von Google & Co sammeln und DIE wissen mehr von euch als Ihr selbst wisst.

Aus datenschutzrechtlicher Sicht sind die Kontaktdaten sehr kritisch, denn der Messenger greift auf alle Telefonnummern zu, auch die selbst kein Whatsapp nutzen! Aber unsere EU beschützt uns lieber vor den bösen Cookies als solch unsinnige AGBs zu verbieten! Den Zugriff auf Kontaktdaten könnt ihr verhindern, jedoch ist das mit einem Komfortverlust bei der Nutzung verbunden und daher macht das kaum jemand. Ein guter Anfang, auf Firmen Smartphones sind solche Messenger verboten oder wird mit einer Zusatzapp getrennt oder einfach per MDM geblockt. Eine interessante Lösung um die Kontakte zu trennen könnte evtl. SecureContact Pro von mobilebox-consulting.de sein.

Die Standortdatenübermittlung (GPS Zugriff) sollte nur während der Nutzung einer App zugelassen werden die das wirklich benötigen und allen anderen Apps per default sperren.

Wie wäre es mit XMPP (Jabber) und Client-seitiger OMEMO-Verschlüsselung? Das ist ein offenes Protokoll und daher eine freie dezentrale Alternative. Beispiel jabber.de wird auf einem deutschen Server mit offener Server-zu-Server Schnittstelle betrieben. Du kannst dich mit jeder XMPP fähigen App zu jabber.de verbinden. Egal welches Gerät und wie viele Endgeräte du nutzt – Smartphone, Tablet, Laptop oder PC. Für Linux z.B. Dino (in Manjaro enthalten), Monal (Open source Messenger) für iOS und macOS

Oder Jitsi-Meet als freie Open-Source Konferenzsoftware welche auch dezentral organisiert ist, z.B.: teamjoin.de.
Nebenbei, Zoom ist nicht DSGVO konform (Link), dagegen ist Jitsi DSGVO konform, denn wo keine Daten erhoben werden gibt es auch nichts zu schützen.

Installiert euch z.B. Pi-Hole mit Unbound oder nutzt wenigstens einen deutschen DNS Resolver ein der verschlüsselt* ist. Der Resolver von dnsforge.de filtert Ad-, Tracking- und Malwaredomains aus und wird wöchentlich neu eingelesen. Funktioniert ab iOS 14 und Android 9 ohne extra App. Bedingt durch Let's Encrypt sollte eine neue signierte Konfigurationsdatei alle 3 Monate herunterladen werden. Schneller Link zum Profil laden und installieren ab iOS 14: dnsforge-doh.mobileconfig (DoH)

*Anfragen werden hier mit DoT oder DoH verschlüsselt und der Internetprovider (ISP) sieht die DNS-Anfragen nicht, jedoch muss der entsprechende Server die Anfragen entschlüsseln und hat diese im Klartext vorliegen. Hier wird auch die Integrität der DNS-Anfragen geprüft (sind die Daten echt?), dies wird bei einem Pi-Hole mit Unbound durch DNSSEC sichergestellt, welcher die Daten auch unverschlüsselt direkt an entsprechende Root DNS-Server einmalig sendet und cached.


Kontrolle unter Einstellungen -> Allgemein -> Profil (kann hier auch entfernt werden):


SUCHMASCHINEN, BROWSER, ROUTER
Google und MS nutzen derzeit eine aggressive und nervige Werbung im Browser und haben nur ein Ziel: Eure Daten!
Eine Alternative wäre evtl. startpage.com oder eine searx Instanz zu nutzen, z.B. Gruble.de. Searx ist eine kostenlose Open Source Internet-Metasuchmaschine, die Ergebnisse von mehr als 70 Suchdiensten zusammenfasst. Benutzer werden weder verfolgt noch profiliert.

Nutzt KEIN Chrome oder Edge-Browser und setzte auf echte Open Source Browser wie z.B. Firefox, Pale Moon oder wenn es sein muss Chromium.

Oft wird Tor für Online-Anonymität genannt, halte diesen für den normalen Benutzer als etwas komplex. Auch ist Tor aufgrund der vielen Server, wegen der IP Verschleierung, technisch bedingt ziemlich langsam.

Wer VPN oder Tor benutzt um seine IP zu verstecken, sollte im Browser WebRTC deaktivieren, jemand könnte damit die wirkliche IP herausfinden. WebRTC ist cool und ermöglicht Anwendungen wie Videokonferenz (z.B. Jitsi Meet). Jedoch kann man mit solch einem Videoanruf de-anonymisiert werden. Im TorBrowserBundle ist das daher deaktiviert. Im Firefox deaktivieren: about:config -> media.peerconnection.enabled = false
Testseite z.B. dein-ip-check.de:


Ihr habt als Router eine Fritzbox? Ab OS 7.2 ist es möglich das ganze Heimnetzwerk zusätzlich via DNS over TLS (DoT) inkl. Filter für Ad-, Tracking- und Malwaredomains zu schützen.

Wie oben erwähnt nervt der EU-Cookie-Irrsinn. Viele Benutzer haben ja schon fast "Angst" davor. Cookies enthalten nur Textinformation und deren Aufgabe ist z.B. die Identifizierung des Surfers per Session-ID, das Abspeichern eines Logins bei einer Webanwendung, Kontaktformular oder das Abspeichern eines Warenkorbs bei einem Online-Händler - also unumgänglich. Ein Missbrauch für das Webtracking von Nutzern ist daher leider auch möglich und lässt sich leicht verhindern indem ihr Cookies von Dritten nicht zulasst und Cookies beim Beenden des Browser automatisch löscht. Die Cookie Warnungen blocke ich dann per uBlock.


PC BETRIEBSSYSTEM (OS)
Windows 10 gilt als einer der größten Datensammler aller Zeiten und ich kann nicht verstehen warum Schulen oder Firmen auf solch ein OS setzen. Es gibt Firmen die mit großen Aufwand ihre Proxy-Server anpassen um diese Datensammlungswut einzugrenzen. Hier gibt es nur eine Alternative und die heißt Linux ohne Fremdquellen von unbekannten Drittanbietern zu nutzen. Zusätzlich lässt sich z.B. ein Internetbrowser oder E-Mail Programm leicht und sicher in einem Container via firejail betreiben. Desweiteren sollte /home auf einer extra Partition liegen und wichtige Daten z.B. per LUKS verschlüsselt sein und nur bei Bedarf entschlüsselt werden. Unter KDE nutze ich dafür Plasma Vault. Ein voll verschlüsseltes System ist leider nicht sicher genug (nur wenn jemand die Festplatte klaut), da ihr beim Anmelden alles entschlüsselt und Emotet oder Konsorten ihr Unwesen treiben könnten. Mit einem Linux Live-Image kommt ihr im Notfall immer an eure Daten. Aktuelle Backups zu haben/pflegen sind obligatorisch, z.B. mit Back In Time.


SMARTHOME
Fast alles was auf dem Markt ist basiert auf Clouds in China oder USA. Ich nutze dafür auf einem Raspberry Pi4 mit Linux die ioBroker Software ohne deren Cloud und ohne Alexa (Spion) nur im heimischen Netzwerk oder extern per VPN.


#26
LINUX / Fritzbox DNS over TLS (DoT)
Letzter Beitrag von Jo - 2020-12-15 | 21:30:12
Inzwischen laufen fast alle Webseiten über HTTPS (SSL) und Provider können nicht sehen welche Daten wir übermitteln, besonders Benutzername und Passwort. Jedoch sind die Verbindung zum DNS-Server immer noch unverschlüsselt und der Provider kann diese in Klarschrift mitlesen. Diese Verbindungsdaten könnten an Werbetreibende verkauft werden oder MITM-Angriffe wären möglich. Im Firefox oder Chrome kann dafür DoH (DNS über HTTPS) aktiviert werden.

Besser und global für das ganze Heimnetz geht das Konfigurieren zentral auf dem Router, z.B. FritzBox seit OS 7.2, die zwar kein DoH aber DoT unterstützt. Damit werden alle DNS Abfragen in eurem privaten Netz per TLS verschlüsselt übertragen. Nebenbei bekommt ihr auch ein Internet ohne Zensur, was es inzwischen auch in Deutschland gibt (Link)!

Verbreitet ist z.B. Cloudflare oder Quad9 als DNS Provider (Link mit DoT Server) welche im Menü unter Internet->Zugangsdaten->DNS-Server definiert werden.

Beispiel mit Quad9
  • Bevorzugter DNSv4-Server: 9.9.9.9
  • Alternativer DNSv4-Server: 149.112.112.112
  • Auflösungsnamen der zu verwendenden DNS-Server: dns.quad9.net

Die DoT Funktion kann per Fritz Online-Monitor geprüft werden, hier steht dann z.B.:
ZitatGenutzte DNS-Server:
9.9.9.9
149.112.112.112
9.9.9.9 (DoT verschlüsselt)
149.112.112.112 (aktuell genutzt für Standardanfragen - DoT verschlüsselt)



Aber es geht noch besser. Wie wäre es inkl. Werbe- und Tracking-Filterliste via deutschen DNS-Server oder eigenen Pi-hole. Warum? Nun Werbung nervt die meisten Leser und viele Seiten müssen es extrem übertreiben. Bei manchen fällt das in den Bereich Belästigung und Nötigung. Die komplette Seite wird überlagert und der Schliess-Button ist zu klein oder fast nicht erkennbar, selbst dann poppt wieder eine Werbung auf. Schlimmer: Online-Werbung ist ein Sicherheitsrisiko! Ad-Netzwerke werden gerne für die Verteilung von Malware (Schadsoftware) missbraucht. Also müssen wir uns wehren und nutzen Ad-Blocker. Nun heulen Pressverlage und bild.de sperrte deswegen als erster die Nutzer von Ad-Blockern aus. Danke bild! Behaltet eure billigen Klatsch- und Skandalberichte, ihr habt mir damit einen großen Gefallen getan (wenn ich aus versehen dort hin verlinkt werde). Dabei gibt es andere verbraucherfreundliche Finanzierungsmöglichkeiten und wenn gute Verlage das nicht erkannt haben, leben diese nicht mehr lange.

Beispiel mit 2 deutschen DNS-Server dnsforge.de und dismail.de | siehe auch privacy-handbuch.de
Besonderheit: Serverstandort ist Deutschland ohne Benutzerprotokollierung inkl. Werbe- und Tracking-Filterliste! Diese Seiten arbeiten ohne Werbung und benötigen als Unterstützung daher freiwillige Spenden. Die Vorteile gegenüber Quad9 oder Cloudflare sind klar, jedoch sollte man bedenken das diese Projekte von unabhängigen Einzelpersonen betrieben werden. Hoffe daher nicht das beide Server irgendwann gleichzeitig ausfallen.
  • Bevorzugter DNSv4-Server: 176.9.93.198
  • Alternativer DNSv4-Server: 176.9.1.17
  • Auflösungsnamen der zu verwendenden DNS-Server: dnsforge.de und fdns1.dismail.de und fdns2.dismail.de

Die DoT Funktion kann per Fritz Online-Monitor geprüft werden, hier steht dann z.B.:
ZitatGenutzte DNS-Server:
176.9.93.197
176.9.1.118
80.241.218.68 (DoT verschlüsselt)
159.69.114.157 (DoT verschlüsselt)
176.9.1.117 (aktuell genutzt für Standardanfragen - DoT verschlüsselt)
176.9.93.198 (DoT verschlüsselt)
(nutzt also im Moment dnsforge.de mit DoT)


Das Beste, ich nutze daher im add-on uBlock Origin nur noch eine Filterliste um nervige Cookie Meldungen zu unterdrücken (Belästigungen -> EasyList Cookie) und diese 2 manuell erstellten Filter (Quelle):
!Google
google.*##^script:has-text(consentCookiePayload)
  !Archive (my old solution):
  !google.*###xe7COe
  !google.*##html:style(overflow-x: auto visible !important;)

!Youtube (unterdrückt "In YouTube anmelden")
youtube.com##.opened
youtube.com###dialog
youtube.com##.no-transition.yt-upsell-dialog-renderer.style-scope
(zuletzt getestet 2021-05-11)

FAZIT: Ein Großteil der Werbung und Tracker sind bei mir verschwunden, besonders auf Smartphones oder Pads. Keine eingeblendete Werbung und die Filterung auf DNS-Ebene spart unnötige Daten zu laden und daher auch Rechenpower. Wer noch einen Raspberry Pi übrig hat, könnte einen eigenen DNS-Server per Pi-hole aufsetzen. Damit hättet ihr die volle Kontrolle und könnt die Werbe- und Trackerfilter selbst bestimmen und komplett auf uBlock verzichten.

:-[



Derzeit habe ich nur die ersten 2 Checkboxen unter "DNS over TLS (DoT)" an und den Fallback deaktiviert. Anfragen laufen nun über DoT auf dem Port 853. Ein Fallback kann bei einem Serverproblem Anfragen auf den Port 53 leiten, welche dann natürlich unverschlüsselt sind. Ohne diesen Fallback könnte es passieren das ihr keine Internetseite erreicht. Wem das wichtig ist, kann den Fallback aktivieren. Ich teste das erst mal ohne Fallback und den 2 deutschen DNS-Servern.

PS: adminForge.de bietet auf dnsforge.de ein DNS over HTTPS (DoH) Profil für iOS und Android Geräte zur Verfügung (getestet mit iOS 14.3). Bedingt durch Let's Encrypt sollte eine neue signierte Konfigurationsdatei alle 3 Monate herunterladen werden. Die Service Übersicht von adminforge.de mit vielen kostenlosen Diensten ohne Tracking und Werbung ist sehr interessant.

Schneller Link zum Profil laden und installieren ab iOS 14: dnsforge-doh.mobileconfig (DoH)
Kontrolle unter Einstellungen -> Allgemein -> Profil (kann hier auch entfernt werden):



Wer z.B. einen Pi-hole nutzt, kann das interessant sein:

#27
LINUX / ePA mit Reiner-SCT Chipkartenl...
Letzter Beitrag von Jo - 2020-08-19 | 20:35:24
Kurzanleitung für den elektronischen Personalausweis (ePA) mit Reiner-SCT Chipkartenleser unter Manjaro
(getestet mit Manjaro KDE 5.21.x, LTS Kernel 5.10.xxx und java-15-openjdk)

Die openecardapp funktioniert mit OpenJDK. Teilweise müssen AUR Pakete verwendet werden, was ich sonst immer vermeide.

1) pcsc-cyberjack aus AUR installieren
yay -S pcsc-cyberjack
2) pcsc-tools installieren und den Service starten
sudo pacman -S pcsc-tools
sudo systemctl enable pcscd.service
sudo systemctl start pcscd.service

Nach der Installation kann der Kartenleser mit pcsc_scan getestet werden.
(pcsc_scan scannt vorhandene Chipkartenlesegeräte und gibt entdeckte Ereignisse aus)
[jo@z390 ~]$ pcsc_scan
Using reader plug'n play mechanism
Scanning present readers...
0: REINER SCT cyberJack RFID komfort (xxxxxxxxxx) 00 00
 
Wed Aug 19 20:56:27 2020
 Reader 0: REINER SCT cyberJack RFID komfort (xxxxxxxxxx) 00 00
  Event number: 0
  Card state: Card removed,
 / 
Karte zum Testen auflegen oder einstecken (mit "Strg" & "Z" beenden).

Hinweis: Anstatt openecardapp könnt ihr auch die ausweisapp2 nutzen (siehe unten).

3) Um die openecardapp zu nutzen wird OpenJDK benötigt
sudo pacman -S jre-openjdktesten:
[jo@z390 ~]$ archlinux-java status
Available Java environments:
  java-15-openjdk (default)

4) Dann openecardapp aus AUR installieren
yay -S openecardappDie Open eCard App ist bei mir unter KDE im Menü Internet (Befehl: "/opt/open-ecard-app/bin/open-ecard-app").

Oder einen Starter dafür anlegen (siehe Anhang):
#! /bin/bash
cd /opt/open-ecard-app/
exec /opt/open-ecard-app/bin/open-ecard-app



Hinweis: Bei mir kommt die Meldung "Kein Kartenleser angeschlossen". Lösung: Open eCard App erst starten und dann den Kartenleser anschließen.

Beispiele zur Online-Nutzung:





Hinweis zu LuxTrust-Middleware
Die LuxTrust-Middleware wird benötigt, wenn der Nutzer eine Smartcard, einen Signing Stick oder eine eID für Luxemburg verwendet.
Um z.B. LuxTrust unter Manjaro zu aktivieren wird das AUR Paket luxtrust-middleware benötigt:
yay -S luxtrust-middleware(das installiert die Pakete luxtrust-middleware und libclassicclient)

Open eCard mit aktivierter Checkbox LuxTrust:


oder LuxTrust-Middleware:


Was guichet.lu da veranstaltet kann wohl niemand wirklich nachvollziehen, denn beides funktioniert nicht, wahrscheinlich weil ich als Alien eIDAS nutzen muss. Fakt ist, das ich mit deutschen Diensten problemlos den Kartenleser per der openecardapp ohne eIDAS nutzen kann, hey... Luxemburg ist eben anders.

Eine eIDAS Anmeldung ist dort nur per ausweisapp2 möglich. Im AUR ist die ausweisapp2 enthalten:
yay -S ausweisapp2


Trotz dieser EU-Pressemitteilung "Neue Regeln für die grenzüberschreitende Verwendung elektronischer Identifizierung" vom 28. September 2018, ist Luxemburg bis heute nicht in der Lage die eIDAS-Verordnung voll umzusetzen. Derzeit ist das Digitale signieren und abgeben von Steuererklärungen per eIDAS nicht möglich.

Update: Der Link hat sich geändert und 301-Redirects sind der EU wahrscheinlich unbekannt. Hier der neue Link zur damaligen EU-Pressemitteilung.


#28
LINUX / Zwei-Faktor-Authentifizierung
Letzter Beitrag von Jo - 2020-07-09 | 23:37:16
Die Zwei-Faktor-Authentifizierung (2FA) gilt als sehr sicher (siehe BSI) und sorgt bei vielen Online-Diensten für mehr Sicherheit bei den User Accounts
-> siehe auch Passwortmanager KeePassXC mit YubiKey

Anstatt ein Hardware Dongle (Token) wie z.B. YubiKey immer mit zu tragen, nutze ich eine Open Source Lösung auf dem Smartphone (FreeOTP) und unter Linux (oathtool).

Hauptsächlich verwende ich dafür mein Smartphone, daher ist das Handy eine sehr wichtige Authentifizierungsmaschine geworden.
Die Anwendung unterstützt TOTP- oder HOTP-Protokolle. Das Anlegen von neuen Zugängen erfolgt per QR-Code und es können auch achtstellige Codes zum Einsatz kommen.

Gute Gründe für FreeOTP:
  • FreeOTP ist eine quell-offene (Open Source) Alternative zu Google Authenticator (proprietäre Software)
  • eine App für viele Online-Dienste (Liste)
  • keine SMS notwendig und funktioniert daher ohne Funknetz
  • Codes sind standardmäßig verborgen
  • Bluetooth Low Energy (BLE) und Copy-Paste-Unterstützung für Einmalpasswörter
  • keine Apps notwendig welche euch im Hintergrund 2FA Mitteilungen senden (schont den Akkuverbrauch)



Das One-Time-Passwort (OTP) kann auch per Linux generiert werden. Wichtig bei einem Verlust oder Defekt. Die passenden Schlüssel müssen natürlich vorhanden sein.
-> Also als Backup an einem sicheren Ort ablegen!
Der einfachste Weg zur Sicherung der 2-Faktor-Authentifizierung besteht darin, die Schlüsselnummer und optional auch den QR-Code (Print Screen) auf einem sicheren Speicher abzulegen, wenn diese euch zum ersten Mal gezeigt werden. Solltet ihr nur den Schlüssel haben und den QR-Code benötigen, kann man diesen hier generieren: freeotp.github.io/qrcode.html. Umgekehrt ist es möglich mit einem QR-Scanner die Schlüsselnummer zu lesen.

Als Kommandozeilenclient für die 2FA nutze ich das Tool oathtool und ist z.B. in Linux Manjaro schon enthalten (oath-toolkit).
Per Terminal lässt sich das OTP einfach generieren, z.B:
oathtool --totp -b abcdefqwertzy
Wichtig: Datum und Uhrzeit muss automatisch mit einem Internetzeitserver synchronisiert sein (KDE -> Systemeinstellungen -> Persönliche Informationen -> Regionaleinstellungen -> Datum & Zeit), ansonsten ist das One-Time-Passwort falsch.

:-[


Bei Google ist das ohne deren 2FA-App etwas tricky (siehe usefulvid.com):
Erst muss als 2FA die SMS aktiviert werden, dann ist es als 2te Option möglich die App "Google Authenticator" zu aktivieren und statt deren App z.B. FreeOTP zu nutzen. Danach kann die SMS und Handynummer gelöscht werden. SMS ist eine schlechte Idee, was wenn Handy kaputt/verloren oder keine Verbindung zum Mobilfunknetz? Zudem werden SMS-Nachrichten normalerweise unverschlüsselt übertragen, was bedeutet, dass der Inhalt der Nachrichten von jemandem, der Zugriff auf das Netzwerk hat, eingesehen oder abgefangen werden kann.



GMail kann weiterhin mit Linux E-Mail-Clients wie z.B. Evolution, Thunderbird oder KMail ohne OTP genutzt werden. Jedoch muss dafür im Google Konto unter Sicherheit ein App-Passwort generiert werden. Damit funktioniert dann E-Mail, Kalender und Kontakte per E-Mail Programm. Alle Sicherheitseinstellungen lassen sich damit natürlich nicht ändern.

#29
LINUX / Warum ich Windows nicht mag
Letzter Beitrag von Jo - 2020-06-04 | 23:24:02
Vorab: LINUX ist nicht Windows, war es nie und wird es auch nie sein!
Windows Benutzer kennen bestimmt deren Vorzüge, hier 10 Punkte was gewaltig an Windows stinkt.

Das hat nichts mit der unsinnigen Bill Gates Verschwörungstheorien zu tun. Solche Typen kann man auch mit Beweisen nichts widerlegen.

Ich arbeite in der Firma seit NT 3.5 bis zur heutigen 10er Version mit Windows. Dabei gab es auch Anwendungen die nur auf IBM OS/2 (z.B. Allen-Bradley) oder Unix Systeme (z.B. XELEC) liefen. Zu den damaligen Zeiten liefen diese Programme stabiler als auf Windows oder es gab diese einfach nicht dafür. Dann wurden diese Programme für Windows exportiert und der Wahnsinn nahm seinen Lauf... bei Windows geht es nur noch um Daten sammeln und Macht. Mit dem Browserkrieg gegen Netscape fing es an und heute will MS besonders eure Daten die "verschlüsselt auf USA-Server" liegen. Klar "america first", wohl eher "america's selfish individualism".
Mit Windows 10 orientiert sich Microsoft an Googles Geschäftsmodell und sammelt fleißig Daten über seine Nutzer (Quelle).

Negative Beispiele die es so bei LINUX nicht gibt:
  • Windows hat kein Respekt vor Nutzer und seiner Daten, die Datensammelwut (Spionage) ist berühmt und oft werden Tools genannt die das eindämmen. Solchen Tools sollte man Vertrauen, aber wie soll das bei einem geschlossen System gehen? Auch können diese Tools das System unbrauchbar machen und bei jedem Windows Update muss das wieder geprüft werden. Wer das richtig angehen will sollte sich diese PDF Orientierungshilfe vom Arbeitskreis Informationssicherheit der deutschen Forschungseinrichtungen (AKIF) anschauen. Ein Riesenaufwand! Aber wer will schon Datenschutz?  >:D
  • Updates sind wichtig. Aber warum sind dafür oft Neustarts notwendig und nervt beim Runter- und Hochfahren des PC's mit Meldungen wie "bitte warten, nicht ausschalten"? Habt ihr mal ein Meeting gehabt und musstet wegen einem Update beim Starten des Notebooks warten?
  • Malware - es muss ein Antivir-Programm installiert sein welches euer System langsamer macht und Sicherheit suggeriert.
  • Das ganze DRM (Digital Rights Management) nervt, macht alles aufwendiger und kann unnötige Probleme verursachen. Entwickler müssen viel Zeit in DRM verpulvern anstatt diese Zeit für gute Programme zu nutzen.
  • Wer viele Programme installiert und deinstalliert macht sein System mit der Zeit immer langsamer und es bleibt viel Datenmüll auf der Festplatte. Dann werden Tools wie BleachBit oder CCleaner genutzt die mehr Schaden anrichten können als gewünscht.
  • Beispiel Adobe Reader - das ist ein Riesen-Programm geworden - wenn ich das löschen will, prüft Windows erst den Speicherplatz und ein Neustart ist nötig - hallo, geht's noch?!
  • Installieren und Deinstallieren von Programmen geht nur einzeln und nervt jedes mal mit einer Admin Passwortabfrage. Hat MS wohl Linux abgeschaut? Nur Linux kann das besser und nervt nicht :cool:
  • Windows Updates sind der Hammer, so was gibt es weder bei Linux noch Apple! Der PC ist auf einmal extrem langsam weil im Hintergrund Updates geladen/installiert werden und ich dann zum Neustart während meiner Arbeit gezwungen werde.
  • Rotierende Festplatten sollten unter Windows defragmentiert werden.
  • Eigene Dokumente auf einer anderen Partition legen ist nur umständlich möglich und Einstellungen/Settings sogar unmöglich (wichtig für einfache Backups).
Mehrmalige Neustarts gibt es nur bei Windows!

Linux ist cool, aber auch hier kann es natürlich Probleme geben die Dank Community lösbar sind. Inzwischen halte ich die Vielfalt von Linux großartig, da für jeden was dabei ist. Jedoch macht es Anfänger oder Umsteiger leider nicht einfacher und wer nach dem besten Linux System fragt bekommt wahrscheinlich hundert verschiedene Antworten. Meine ist ganz einfach:
  • Linux Mint mit dem Desktop Cinnamon (basierend auf Debian/Ubuntu) wenn Anfänger/Umsteiger/Firmen
  • sonst Linux Manjaro mit dem Desktop XFCE oder KDE (basiert auf Linux Arch)

Hinweis: Linux ist sicherer als Windows weil Open-Source und deren Programme kommen nur aus sicheren Quellen - wenn ihr das nicht manuell umgeht. Ein Neustart ist nur bei einem Kernel Update notwendig und muss nicht am selben Tag sein. Malware, defragmentieren, System aufräumen, Digitale Rechte-Minderung (DRM) ..., was ist das?

:-[


PS: Apple basiert auf einem Unix System wie Linux und hat den Vorteil das Hardware mit Software zusammen für viel Geld vertrieben wird und daher sehr gut rennt. Leider ist das Apple System (iOS) ein geschlossenes System und kein Open-Source System wie Linux. Nur Open-Source Software aus sicheren Quellen bieten fast 100% Sicherheit.
#30
LINUX / Thermal Monitor liest nicht au...
Letzter Beitrag von Jo - 2020-04-05 | 10:01:18
Ich benutze unter KDE das Widget "Thermal Monitor" in meiner Taskleiste um z.B. die CPU, Mainboard und SSD-Temperatur anzuzeigen. Leider scheint das Projekt nicht mehr gepflegt zu werden. Während es im Allgemeinen funktioniert, muss ich immer per Kontextmenü einmal auf "Reload Temperature Sources" klicken, um das Widget dazu zu bringen die Temperaturen abzufragen.

Workaround (Quelle):
kate ~/.local/share/plasma/plasmoids/org.kde.thermalMonitor/contents/ui/main.qml
In der Datei alles ausklammern, was mit der Variable SystemmonitorAvailableSources zu tun hat.

Meine main.qml Datei mit ausgeklammerten Zeilen ist gepackt im Anhang, wie immer ohne Gewähr!


getestet mit KDE 5.18.3 | Kernel 5.4.28 | Plasmoid Version 1.2.8


Noch ein Bug: System (journalctl) log is filled with repeated messages
Workaround: Habe die Qt-Debug-Protokollierung wie im Link steht im bash_profile des Benutzers deaktiviert.
kate ~/.bash_profilediese 2 Zeilen hinzufügen:
  QT_LOGGING_RULES='*.debug=false'
  export QT_LOGGING_RULES