Kategorie: Tutorial

Ein Upgrade für den Homeserver Teil 4 – Ubuntu Server

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Erstellen der VM

Das Erstellen der VM läuft praktisch gleich wie bei Openmediavault, nur, dass ich dieses Mal ein Ubuntu Server 22.04 nehme und diesem 4 Kerne, 256 GB Speicher und 16 GB RAM gebe.

Installation von Ubuntu Server

Im Ubuntu-Installer angekommen, wählt man zunächst die Sprache

Danach werde ich gefragt, ob ich den Installer updaten möchte. Das mache ich.

Anschließend lässt sich das Tastaturlayout wählen:

Als Installationsart wähle ich das normale Ubuntu Server

Jetzt gibt es die Möglichkeit, die Netzwerkverbindung zu konfigurieren. Hier lege ich gleich eine feste IP-Adresse fest. Unter meiner Netzwerkkarte unter „Edit IPv4“ konfiguriere ich diese.

Der eingestellte Paketspiegelserver passt für mich. Nachdem der Test erfolgreich war, klicke ich auf „Done“.

Bei der Partitionierung sollte es wieder nur ein Gerät zur Auswahl geben. Hier nehme ich den Haken bei „LVM Group“ raus.

Als Nächstes wird nochmal eine Zusammenfassung der Partitionierung gezeigt, sodass man überprüfen kann, welche Geräte evtl. gelöscht werden.

Während im Hintergrund das System schon installiert wird, wird man nach Benutzername, Passwort und Hostname des Servers gefragt.

Ubuntu Pro möchte ich vorerst nicht benutzen. Auch weitere Software brauche ich zunächst nicht.

Sobald die Installation fertig ist, erscheint oben ganz unscheinbar „Install complete!“. Bevor ich neu starte, entferne ich im Menü „Hardware“ wieder die ISO.

Sobald Ubuntu wieder gestartet ist, kann ich mich von meinem PC aus über SSH mit ssh benutzername@IP_Adresse anmelden.

Updates installieren

Per SSH im Terminal angekommen, installiere ich nun Updates mit

VM automatisch beim Booten starten

Startet man jetzt den Server neu, so startet die VM nicht automatisch neu. Das kann man ändern, indem man unter „Optionen“ den Punkt „Beim Booten starten“ auf ja setzt.

VM in Openmediavault automatisch starten

Ubuntu ist jetzt fertig installiert. Im nächsten Schritt werde ich Docker auf Ubuntu installieren.

Ein Upgrade für den Homeserver Teil 3 – Openmediavault

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Erstellen der VM

Die ISO von OMV kann hier heruntergeladen werden. Von dort kopiere ich den Link zur ISO. Man braucht nämlich nicht die ISO zuerst herunterladen, um sie dann wieder auf den Server hochzuladen, sondern kann sie direkt auf den Server herunterladen.

Dazu geht man im Proxmox-Interface auf den Speicher „local“ und wählt „ISO-Images“. Dort klickt man auf „Von URL herunterladen.

ISO-Image auf Proxmox Server herunterladen

Dort kann man dann die URL zum ISO-Image angeben. Nach einem Klick auf „URL abfragen“ kann man es mit „Herunterladen“ herunterladen.

ISO-Image von Openmediavault auf Proxmox Server herunterladen

Sobald im Ausgabefenster „TASK OK“ erscheint, kann man dieses schließen

ISO-Image von Openmediavault auf Proxmox Server herunterladen

Um die virtuelle Maschine zu erstellen, wählt man ganz oben rechts den Punkt „Erstelle VM“.

VM in Proxmox starten

Im ersten Fenster gebe ich der VM einen Namen und eine ID.

VM in Proxmox konfigurieren: Allgemein

Anschließend wähle ich aus dem Storage „local“ die eben heruntergeladene ISO.

VM in Proxmox konfigurieren: OS

Unter „System“ belasse ich alles auf Standardeinstellungen.

VM in Proxmox konfigurieren: System

Unter „Disks“ ebenso

VM in Proxmox konfigurieren: Disks

Unter „CPU“ könnte ich der VM mehr Kerne geben. Ein Kern reicht mir in diesem Fall aber aus.

VM in Proxmox konfigurieren: CPU

Unter „Speicher“ sind standardmäßig 2 GB eingestellt. Ich erweitere auf 4 GB.

VM in Proxmox konfigurieren: Speicher

Auch „Netzwerk“ belasse ich auf Standardeinstellungen.

VM in Proxmox konfigurieren: Netzwerk

Nun bekommt man noch eine Zusammenfassung und kann dann die VM erstellen. Unter unserem Server erscheint jetzt die VM mit ihrer ID. Mit einem Klick auf „Start“ kann man diese starten.

Starten von Openmediavault in Proxmox

Unter Konsole kann man dann die Installation von OMV durchführen.

Installation von Openmediavault

Der Punkt „Install“ wird automatisch ausgewählt.

Installation von Openmediavault: Startscreen

Nach der Angabe von Sprache, Land und Tastaturlayout lässt sich der Hostname und das Root-Passwort wählen.

Installation von Openmediavault: Sprache
Installation von Openmediavault: Land
Installation von Openmediavault: Tastaturlayout
Installation von Openmediavault: Hostname
Installation von Openmediavault: Domain-name
Installation von Openmediavault: Passwort

Als Nächstes wählt man das Land für den Paket-Spiegelserver und den Spiegelserver selbst. Als Spiegelserver verwende ich „ftp.de.debian.org“. Einen Proxy verwende ich nicht.

Installation von Openmediavault: Ort des Speigelservers
Installation von Openmediavault: Spiegelserver
Installation von Openmediavault: Proxy

Als Medium für die Installation hat man im besten Fall nur eine einzige Auswahl. Hat man dieses gewählt, kann die Installation gestartet werden.

Installation von Openmediavault: Installationsmedium

Wenn die Installation abgeschlossen ist, erscheint dieses Fenster:

Installation von Openmediavault: Fertige Installation

Bevor man auf „weiter“ klickt, sollte man das Installationsmedium entfernen. Dies funktioniert in Proxmox, indem man unter dem Punkt „Hardware“ das CD-Laufwerk mit dem OMV-ISO wählt und dieses dort entfernt.

ISO-Image aus Proxmox VM entfernen

Anschließend wechselt man wieder zurück in die Konsole und bestätigt den Neustart. Wenn OMV wieder gestartet ist, erscheint folgendes Anmeldefenster:

Terminal von Openmediavault

Die dort angegebene IP-Adresse öffnen wir im Browser und loggen uns mit den Standardanmeldedaten ein. (Username: „admin“; Passwort: „openmediavault“)

Anmeldefenster von Openmediavault

Festlegen einer statischen IP-Adresse

Der erste Schritt, den ich gemacht habe, ist es, Openmediavault eine statische IP-Adresse zu geben. Dazu wählt man im Punkt „Netzwerk“ den Unterpunkt „Schnittstellen“, dort das einzige vorhandene Gerät und klickt auf den Stift zum Bearbeiten.

Netzwerkkonfiguration Openmediavault

Unter IPv4 wählt man nun die Methode „statisch“ und trägt IP-Adresse, Netzmaske und Gateway ein.

Netzwerkkonfiguration Openmediavault

Wichtig ist auch, dass man etwas weiter unten unter „Erweiterte Einstellungen“ den DNS-Server angibt. Sonst kann man keine Aktualisierungen oder Erweiterungen mehr installieren.

Netzwerkkonfiguration Openmediavault: DNS-Server

Nach einem Klick auf Speichern muss man die Änderung noch bestätigen.

Bestätigen der Änderungen

Openmediavault ist anschließend mit der neuen IP-Adresse zu erreichen.

Updates von Openmediavault

Updates können unter „System“→ „Aktualisierungsverwaltung“→“Aktualisierungen“ installiert werden.

Updates in Openmediavault

Sobald das Update fertig ist, wird dies mit einem „END OF LINE“ im Terminal bestätigt. Dieses kann man jetzt schließen und OMV neustarten.

fertiges Update

Ändern des Standardpassworts

Spätestens jetzt sollte man mal auf die Idee kommen, das (unsichere) Passwort zu ändern. Das kann man in den Benutzereinstellungen tun.

Benutzereinstellungen in Openmediavault

Durchreichen der Festplatte

Theoretisch könnte ich mit virtuellen Festplatten arbeiten. Da ich aber das Management der Festplatten komplett Openmediavault überlassen möchte, reiche ich die gesamte Festplatte als USB-Gerät durch. Das kann man unter „Hardware“→“Hinzufügen“→“USB-Gerät“ machen. Hier wähle ich unter „Geräte ID“ meine Festplatte aus.

USB-Gerät durchreichen in Openmediavault
USB-Gerät durchreichen in Openmediavault

Unter „Datenspeicher“→“Laufwerke“ in OMV erscheint dann meine Festplatte.

Festplatte in Openmediavault konfigurieren

Diese lösche ich zuerst mit dem Radiergummi und anschließend stelle ich die Spindown-Zeit auf 10min. Ob das so richtig ist, wie ich das mache, weiß ich nicht. Mal ausprobieren…

Festplatte in Openmediavault konfigurieren

Anschließend erstelle ich unter „Datenspeicher“→ „Dateisysteme“ ein neues ext4 Dateisystem auf der Festplatte.

Dateisystem in Openmediavault konfigurieren

Soweit der Plan. Beim Erstellen der „inode tables“ pendelte sich aber mit der Zeit eine Geschwindigkeit von ca. 1 Inode pro Sekunde ein. Das macht bei noch 23000 fehlenden Inodes…. 6 Stunden! So lange wollte ich dann auch wieder nicht warten. Also habe ich die VM heruntergefahren und die Festplatte an meinen PC angeschlossen. Dort konnte ich innerhalb von wenigen Sekunden ein ext4 Dateisystem auf der Festplatte erstellen.

Erstellen des Dateisystems mit Ubuntu

Erstellen eines Dateisystems mit Ubuntu
Erstellen eines Dateisystems mit Ubuntu

Einbinden eines vorhandenen Dateisystems in Openmediavault

Die Festplatte wieder am Server angesteckt, habe ich Openmediavault wieder gestartet.

Dort lässt sich unter „Datenspeicher“→ „Dateisysteme“ auch ein vorhandenes Dateisystem mit dem „Play“ Button einbinden.

Einbinden eines existierenden Dateisystems in Openmediavault

Aktivieren der Freigabedienste

Unter „Dienste“ lassen sich die einzelnen Freigabedienste wie NFS, SSH oder SMB sehr einfach aktivieren. Ich benötige außerdem noch ftp. Dieses ist als Add-on unter „System“→“Erweiterungen“ verfügbar und kann dort installiert werden.

Herunterladen des ftp-Addons für Openmediavault

Jetzt lässt sich auch der FTP-Server aktivieren.

Erstellen eines Benutzers

Damit man auf die Freigaben zugreifen kann, braucht man einen Benutzer. Dieser kann unter „Benutzer“→“Benutzer“ angelegt werden.

Erstellen eines Benutzers in Openmediavault

Erstellen einer Freigabe

Eine Freigabe lässt sich jetzt unter „Datenspeicher“→“Freigegebene Ordner“ erstellen. Dort lässt sich ein Name und Zugriffsrechte festelgen.

Erstellen eines freigegebenen Ordners in Openmediavault

Um den freigegebenen Ordner über die Dienste jetzt auch zu erreichen, muss die Freigabe für jeden Dienst nochmal separat angelegt werden:

Erstellen einer Freigabe am Beispiel SMB in Openmediavault
Erstellen einer Freigabe am Beispiel SMB
Erstellen einer Freigabe am Beispiel FTP in Openmediavault
Erstellen einer Freigabe am Beispiel FTP

Einstellung der Zugriffsrechte für einen Benutzer

Unter dem Punkt „Zugriffsrechte“ lassen sich jetzt noch die Zugriffsrechte für einen freigegebenen Ordner festlegen.

Einstellen der Zugriffsrechte in Openmediavault
Einstellen der Zugriffsrechte in Openmediavault

VM automatisch beim Booten starten

Startet man jetzt den Server neu, so startet die VM mit Openmediavault nicht automatisch neu. Das kann man ändern, indem man unter „Optionen“ den Punkt „Beim Booten starten“ auf ja setzt.

VM in Openmediavault automatisch starten

Openmediavault ist jetzt fertig konfiguriert. So habe ich, oder je nachdem wie ich es brauche, auch die VMs und andere Geräte, Zugriff auf die Festplatten.

Ein Upgrade für den Homeserver Teil 2 – Installation von Proxmox

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Installation von Proxmox

Proxmox kann man sich hier herunterladen. Anschließend habe ich die ISO auf einen Ventoy-Stick kopiert und das Proxmox ISO auf dem Mini-PC mit angeschlossener Maus, Tastatur und Monitor gestartet. Bei dem Versuch, die Installation zu starten, bekam ich allerdings eine Fehlermeldung.

Fehlermeldung von Proxmox 8.1 in Kombination mit Ventoy
Fehlermeldung von Proxmox 8.1 in Kombination mit Ventoy

Dies scheint in der Kombination mit Ventoy und Proxmox in Version 8.1 ein bekanntes Problem zu sein. Also musste ich das ISO direkt mit Etcher auf einen USB-Stick schreiben.

Dann konnte ich die Proxmox Installation auch starten. Nach einem Klick auf „Install Proxmox VE“ musste ich zuerst die Nutzungsbedingungen akzeptieren.

Start der Proxmox Installation
Start der Proxmox Installation
Akzeptieren der Nutzungsbedingungen
Akzeptieren der Nutzungsbedingungen

Anschließend konnte ich die Festplatte, auf die Proxmox installiert werden soll, das Land, die Zeitzone und das Tastaturlayout festlegen.

Auswahl der Installationsfestplatte
Auswahl der Installationsfestplatte
Auswahl von Land, Zeitzone und Tastaturlayout
Auswahl von Land, Zeitzone und Tastaturlayout

Jetzt muss noch ein Passwort und eine E-Mail-Adresse, die zum Zurücksetzen des Passworts verwendet werden kann, angegeben werden.

Als Letztes muss man noch das Netzwerk konfigurieren. Hier legt man auch eine feste IP-Adresse fest. Das heißt, dass diese so gewählt werden sollte, dass sie außerhalb des DHCP-Bereichs des Routers liegt. In meinem Fall ist das alles ab 192.168.178.201.

Netzwerkkonfiguration
Netzwerkkonfiguration

Als Allerletztes erhält man nun noch eine Zusammenfassung von dem, was man eingegeben hat. Nachdem man das überprüft hat, kann man die Installation starten.

Zusammenfassung der Installation
Zusammenfassung der Installation

Nach der Installation startet der Server automatisch neu. Man gelangt in dieses Anmeldefenster:

Anmeldefenster nach erfolgreicher Proxmox-Installation
Anmeldefenster nach erfolgreicher Proxmox-Installation

Jetzt können Maus, Tastatur und Monitor vom Server getrennt werden. Alles Weitere folgt nun im Browser unter der URL, die im Anmeldefenster angegeben ist, also: https://IP_DES_SERVERS:8006

Konfiguration der Paketquellen in Proxmox

Unter der angegebenen URL kommt man auf die Oberfläche von Proxmox. Sehr wahrscheinlich muss man vorher noch eine Sicherheitswarnung wegklicken (unter „erweitert“).

Sicherheitswarnung im Browser
Sicherheitswarnung im Browser

Dann kann man sich mit dem Benutzernamen „root“ und dem bei der Installation gewählten Passwort anmelden. Dabei kann man auch gleich die Sprache auf Deutsch einstellen.

Anmeldung in Proxmox
Anmeldung in Proxmox

Anschließend kommt eine Meldung, die mir sagt, ich hätte keine gültige Subscription. Diese Meldung kann ich ebenfalls ignorieren, da ich Proxmox nur privat und nicht kommerziell nutze.

Keine gültige Subscription
Keine gültige Subscription

Links findet man jetzt sein Rechenzentrum in einer Baumstruktur. Darin befindet sich – wie überraschend – ein Server. Klickt man auf diesen Server und dann auf „Übersicht“ erhält man Informationen wie CPU Auslastung, RAM Auslastung, usw.

Übersicht des Servers in Proxmox
Übersicht des Servers in Proxmox

Um die Paketquellen für unseren Server ohne Subscription einzurichten, wechseln wir in die Shell und öffnen mit dem Editor nano die Datei /etc/apt/sources.list.

sources.list bearbeiten mit nano
sources.list bearbeiten mit nano

Darin fügen wir die Zeile

ein. Die Datei kann man mit Strg+O speichern und mit Strg+x kann man den Editor wieder schließen.

In den Dateien /etc/apt/sources.list.d/ceph.list und /etc/apt/sources.list.d/pve-enterprise.list muss noch die (einzige) Zeile auskommentiert werden.

/etc/apt/sources.list.d/pve-enterprise.list
/etc/apt/sources.list.d/pve-enterprise.list
/etc/apt/sources.list.d/ceph.list
/etc/apt/sources.list.d/ceph.list

Die genauen Namen der einzufügenden Zeilen können sich mit der Zeit ändern. Es gibt von Proxmox einen Dokumentationseintrag, der die Paketquellen beschreibt und immer aktuell sein sollte.

Proxmox aktualisieren

Um Proxmox zu aktualisieren, drückt man zuerst unter „Updates“ auf den Button „Aktualisieren“. Das entspricht einem apt-get update im Terminal.

Update unter Proxmox
Update

Ist das Update fertig, wählt man „Upgrade“. Das entspricht einem – wer hätte es gedacht – apt-get upgrade im Terminal. In einem neuen Fenster öffnet sich das Terminal und evtl. muss man das Upgrade noch mit einem „Y“ bestätigen.

Upgrade unter Proxmox
Upgrade
Bestätigung des Upgrades
Bestätigung des Upgrades

Nach einem Update ist ein Neustart sinnvoll. Diesen kann man einfach über den Button „Reboot“ machen:

Neustart von Proxmox
Neustart

Jetzt ist Proxmox auf dem neusten Stand und wir sind bereit für die Installation der ersten VM!

Tribit Maxsound Plus Ladeelektronik reparieren

Vor gut einem Jahr berichtete ich darüber, dass mein Bluetooth-Lautsprecher den Geist aufgegeben hat und konnte feststellen, dass es wohl an der Ladeelektronik liegt. Damals konnte ich aber keine passende Ladeplatine finden.

Wenn man nach dem richtigen Begriff sucht, findet man doch ganz schnell was Passendes. Meine Idee war damals nach einer 7,4 bzw. 8,4V Ladeplatine zu suchen. Der Begriff, den es hier braucht, ist aber „2S“, denn es handelt sich um 2 3,7V Akkus, die in Serie geschaltet sind. Also habe ich für knapp 5 € diese Platine gekauft:
https://www.ebay.de/itm/275276607102?var=575545698944

Einbau

Den USB-C-Anschluss auf der Platine konnte ich leider nicht verwenden, da sie sonst nicht in das Gehäuse des Lautsprechers hineingepasst hätte. Also eben weiterhin mit dem Micro-USB Anschluss. Die Verdrahtung ist recht einfach: Das Kabel des Micro-USB Anschlusses im Gehäuse an VIN/GND und sowohl die Anschlüsse der Batterie, als auch die Anschlüsse der Hauptplatine des Lautsprechers an BAT/GND. Jetzt kann der Lautsprecher schon wie gewohnt geladen und verwendet werden.

Ladeplatine von oben
Testaufbau

Die Platine konnte ich dann ganz hinten im Lautsprecher verstecken.

Verstecken der Ladeplatine

Vorher habe ich noch ein Loch ins Gehäuse an der Stelle gebohrt und mit Heißkleber aufgefüllt, an der ungefähr die LEDs der Ladeplatine liegen, sodass man auch von außen sehen kann, ob der Lautsprecher gerade lädt oder schon voll ist.

LadeLED von außen

Als Nächstes wollte ich noch die alten Lade-LEDs auslöten, da ich sie nicht mehr brauchte und die rote LED bei mir dauerhaft an war und somit denn Akku leer zog.

Das hat leider nicht so geklappt, wie ich es mir vorgestellt habe, aber immerhin habe ich mit meiner Aktion die LED zerstört, was zwar nicht das war, was ich vorhatte, aber am Ende den gleichen Effekt hatte.

Und wieder mal wurde ein Gerät vorm Müll gerettet 😉

Waveshare Modbus Relais in Homeassistant

In diesem Beitrag möchte ich dir zeigen, wie ich ein 8-fach Modbus Relais von Waveshare in Homeassistant eingebunden habe.

Material

Aufbau

Der Aufbau ist nicht kompliziert. Die Anschlüsse A+, B- und GND müssen mit den entsprechend gleichnamigen Anschlüssen am Relais verbunden werden. Dann ist nur noch eine Spannungsversorgung für das Relais notwendig und man kann loslegen.

Mitgelieferte Software

Im Waveshare Wiki findet man neben zahlreichen Beispielen auch einen Beispielcode in Python. Dieser sendet die Daten direkt über „serial“ an das Modbus Relais und zur Berechnung der Paritätsbytes wird ebenfalls ein eigenes Pythonmodul mitgeliefert. Das ist etwas umständlich, da es für Modbus bereits fertige Pythonmodule wie minimalmodbus gibt.

Steuerung mit Minimalmodbus

Nach der Installation mit

kann das Modul verwendet werden. Folgendes wäre ein Beispielcode:

In Zeile 3 wird der Pfad zum USB -> Modbus Konverter und die ID des Relais angegeben. Die ID wird in den meisten Fällen 1 sein. Bei mir habe ich sie aber geändert, da am selben Modbus auch ein Stromzähler hängt, der die ID 1 bekommen hat. Mit den Funktionen get_relais() und set_relais(relais, on/off) kann man jetzt die Relais schalten und deren Status abfragen.

Einbindung in Homeassistant

Um das Modbus Relais in Homeassistant einzubinden, verwende ich MQTT. Dieses sollte bereits installiert und eingebunden sein. Mein Code sieht dann folgendermaßen aus:

Hinzu kommt jetzt die Anbindung an MQTT. Wichtig ist dabei

  • Z. 8: Siehe oben
  • S. 23+25: Hier werden die Statuswerte der Relais an MQTT gesendet
  • Z. 29: Hier wird das MQTT Topic subscribed, an das nachher die Befehle zum setzen gesendet werden
  • Z. 43: Hier findet die Verbindung zum MQTT Broker statt

In Homeassistant verwende ich nun folgende Konfiguration:

Jetzt kann ich die Relais auch in Homeassistant schalten. Dabei muss das Pythonskript dauerhaft laufen, was man bspw. mit einer systemd Service Unit erreicht.

Gleichzeitig Modbus Relais und Stromzähler auslesen

Da ich, wie bereits erwähnt, einen Stromzähler und Relais an einem Modbus hängen habe und immer nur ein Programm auf den Modbus zugreifen kann, muss ich im selben Skript auch den Stromzähler auslesen. Das Skript dazu sieht so aus:

Hinzu kommt hier die Verbindung zur Influx Datenbank (Z. 12) und das eigentliche Auslesen des Stromzählers ab Z. 57. Es werden auch noch andere Stromzähler, die über Tasmota angebunden sind, ausgelesen, um einige Werte zu berechnen. Wichtig hier ist auch die Variable relais_freigabe, die dafür sorgt, dass wenn gerade der Stromzähler ausgelesen wird, mit dem Setzen des Relais noch kurz gewartet wird, da dies nicht gleichzeitig passieren kann.

Bildquelle: waveshare.com, wikipedia.org

Zeitrafferaufnahme mit Handy machen

Jetzt mal ganz ehrlich: Wie viele von euch haben in der Schublade noch ein altes Handy rumliegen? Oder vielleicht auch zwei? Oder drei? Dabei kann man sie doch noch für sinnvolle Dinge verwenden. Wie wäre es mit einer Zeitrafferaufnahme?

Die Hardware

Ein Stativ ist bei Zeitrafferaufnahmen auf jeden Fall sinnvoll. Wer keines hat, kann sich notfalls auch mit ein paar Büchern helfen oder wenn man einen 3D-Drucker hat, selbst eines ausdrucken.

Da Akkus von älteren Geräten nicht mehr so lange halten und die Kamera recht viel Strom braucht, ist es auch vorteilhaft eine Steckdose und ein Ladegerät zur Hand zu haben.

Die Software

Als Kameraapp verwende ich OpenCamera (Playstore, F-Droid). Dort gibt es die Einstellung, automatisch Bilder in bestimmten Intervallen zu machen. Dafür stellt man die Einstellung „Serienbild“ auf unbegrenzt und „Serienbild-Intervall“ auf die gewünschte Dauer.

Einstellungen in Opencamera für Serienbild

Um ein gleichmäßiges Bild zu bekommen, sollte man den Fokus, den Weißabgleich und die Belichtung sperren. Dazu aktiviert man die Icons unter Einstellungen -> Benutzeroberfläche und kann die anschließend in der Kameraansicht aktivieren:

Einstellung für gesperrten Weißabgleich und Belichtung in OpenCamera
Deaktivieren des Automatischen Weißabgleichs, Fokus und Belichtung

Putzfunktion für Raspberry Display

Wenn mein Display (hier kannst du dir anschauen, wie ich es eingebaut habe) schmutzig ist, ist es ganz praktisch, wenn es eine „Putzfunktion“ gibt, die für eine kurze Zeit alle Eingaben deaktiviert, sodass beim Putzen nichts verstellt wird. Hier möchte ich dir zeigen, wie ich das umgesetzt habe.

Installation des Webservers

Für diese Funktion verwende ich einen Webserver, der ein Request entgegennimmt. Dieser führt dann ein Shell Skript aus, das die Eingaben vom Touchscreen abschaltet.

PHP Skript

Dann verwende ich ein einfaches PHP Skript, welches ein Shell-Skript als User „pi“ startet:

Dieses habe ich in /var/www/html/cleanmode.sh gespeichert.

Shell-Skript

Für das Shell-Skript muss man zuerst die ID des Touchscreens herausfinden. Mit folgendem Befehl lassen sich alle IDs anzeigen:

Anschließend probiert man mit

alle IDs durch, bis der Touchscreen nicht mehr funktioniert. In meinem Fall war es die ID 7.

Folgendes Shell-Skript muss dann angepasst werden:

Die Zeit in Zeile 2 kann man ebenfalls nach Belieben anpassen. Mein Skript liegt in /home/pi/cleanmode.sh. Sollte das bei dir anders sein, musst du den Pfad im PHP Skript entsprechend ändern.

Den Benutzer www-data mit Root-Rechten ausstatten

Damit der User www-data (Dieser wird vom Webserver verwendet) das Shell-Skript als User pi ausführen kann, braucht er Root-Rechte.

ACHTUNG: Den Benutzer www-data mit Rootrechten auszustatten, ist ein großes Sicherheitsrisiko. Dies sollte man unter keinen Umständen auf einem vom Internet erreichbaren Webserver tun!

Wir öffnen dazu mit dem Befehl

Die Datei /etc/sudoers und tragen dort unter „User privilege specification“ folgende Zeile ein:

Nach dem Speichern mit Strg+O, dem Beenden mit Strg+X und einem Neustart hat der User www-data nun Root-Rechte. Öffnet man nun im Browser folgende URL:

http://[IP_DEINES_RPi]/cleanmode.sh

sollte sich der Touchscreen abschalten und nach 60 Sekunden wieder anschalten.

Putzfunktion in Homeassistant

Auf meinem Display läuft zur Zeit Homeassistant. Dort möchte ich die Putzfunktion gerne als Button haben. Außerdem möchte ich einen Timer, der mir anzeigt, wie viel Zeit ich noch habe, bis der Touchscreen wieder aktiviert wird.

In der config.yaml habe ich folgende Konfiguration hinterlegt:

Ersteres ist der Aufruf der URL, Zweiteres der Timer.

Anschließend habe ich im Homeassistant UI einen Button unter „Helfer“ erstellt.
Eine Automatisierung steuert dann das ganze, startet also den Timer und ruft dann die URL auf:

Homeassistant Automatisierung Putzfunktion

Und hier noch in Textform:

Mobile Alerts Sensoren mit Proxy lokal auslesen und an Homeassistant senden

Vor knapp zwei Jahren habe ich einen Beitrag darüber veröffentlicht, wie ich meine Mobile Alerts Temperatursensoren per Weboberfläche mit einem Pythonskript auslese. Diese Variante funktionierte bei mir und funktioniert immer noch ohne Probleme. Letztens bin ich aber auf eine andere Möglichkeit gestoßen, die mir deutlich besser gefällt, da sie zuverlässiger und unabhängig von der Cloud ist. Mit einem Proxy, der zwischen den Gateway und das Internet geschalten wird, können die Daten abgefangen und weiter verarbeitet werden.
Hierfür gibt es das Programm „maserver„. Es nimmt auch direkt die Einstellungen am Gateway vor. Dieses sendet die Daten anschließend an einen MQTT Broker. Bei mir läuft es auf einem RaspberryPi mit Ubuntu Server 22.04.

Vorbereitungen

Auf dem Server müssen zunächst nodejs und npm installiert werden:

Danach kann man den maserver herunterladen:

Im Ordner „MMMMobilealerts“ befindet sich jetzt der maserver.

Konfiguration

Darin befindet sich die Datei „config-example.json“. Benenne diese in „config.json“ um. Folgende Konfigurationsmöglichkeiten gibt es:

  • localIPv4Address: Die IP-Adresse des Geräts, auf dem der Proxy läuft. Wird nur benötigt, wenn es mehrere IP-Adressen hat, z. B. wenn es über mehrere Netzwerkschnittstellen angebunden ist oder Docker oder ein VPN Server darauf läuft.
  • mqtt: Die Adresse zum MQTT Broker.
  • mqtt_home: Das Topic, in dem die Daten auf dem MQTT Broker gesendet werden sollen.
  • mqtt_username, mqtt_password, logfile: Selbsterklärend.
  • logGatewayInfo: Ob Infos über gefundene Gateways angezeigt werden sollen.
  • proxyServerPort: Der Port, auf dem der Proxyserver laufen soll.
  • mobileAlertsCloudForward: Ob die Daten an die Mobilealerts Cloud gesendet werden sollen.
  • serverPost: Die Daten können zusätzlich auch per POST versendet werden.
  • serverPostUser, serverPostPassword, locale: Selbsterklärend.

Meine Konfiguration sieht dann so aus:

Installation

Der Proxy wird mit

installiert, während man sich im „maserver“ Verzeichnis befindet.

Start

Gestartet werden kann das Programm mit:

Es findet automatisch den Gateway im Netzwerk und konfiguriert sich selbst im Gateway als Proxy. Nach spätestens 15 Minuten sollten die ersten Daten zu sehen sein.

Daten an Homeassistant senden

Im Homeassistant fügen wir zuerst die MQTT Integration unter „Einstellungen“->“Geräte und Dienste“->“Integration Hinzufügen“ hinzu.

Die Konfiguration der einzelnen Sensoren erfolgt dann über die configuration.yaml Datei und sieht beispielsweise so aus:

Dabei ist XXXXXXXXXXXX die 12-stellige Geräte-ID, die man in der Mobile Alerts App oder direkt auf der Rückseite der Sensoren findet.

Nach einem Neustart sollten die Daten in Homeassistant erscheinen:

Mobile Alerts Sensoren in Homeassistant

Unifi Accesspoints per API deaktivieren

Im Unifi Controller gibt es die Möglichkeit, WLAN-Netzwerke zeitgesteuert zu (de-)aktivieren. Was allerdings nicht möglich ist, ist nur einzelne Accesspoints zeitgesteuert ein- und auszuschalten. Eine kurze Suche im Netz ergab, dass man das wohl über die API des Unifi Controllers lösen kann:

1. ID des Unifi-Geräts herausfinden

An dieser Stelle sind die Entwicklertools im Browser nützlich. Einmal geöffnet, sieht man im „Network“ Tab alle Netzwerkanfragen, die die Seite stellt. Ändert man nun eine Einstellung eines Accesspoints (Unter „Unifi Devices“), sieht man eine Anfrage in folgendem Format:

https://IP:8443/api/s/default/rest/device/XXXXXXXXXXXXXXXXXXXXXXXX

Eine HTTP Anfrage des Unifi Controllers

Die 24-stellige ID am Ende der URL ist die ID von dem Gerät, das du gerade bearbeitet hast.

2. Skript zum Aktivieren und Deaktivieren

Folgendes Bashskript verwende ich, um den AP zu aktivieren:

Das Skript kann auf einem beliebigen Server, z.B. einem RaspberryPi (auf dem auch mein Unifi Controller läuft) laufen und per Cronjob automatisiert werden.

In den Zeilen 3, 5, 7 und 9 müssen die Werte entsprechend angepasst werden. Um den AP zu deaktivieren, muss in Zeile 15 das „false“ in ein „true“ geändert werden.

Quelle: https://community.ui.com/questions/DISABLE-ENABLE-your-AP-with-time-scheduler-Turn-off-radio-transmitter/3c32439b-a731-4de9-9130-d82d68f409c0

Shelly Plug S in Grafana visualisieren

Wenn man Strom sparen möchte, ist es vorteilhaft zu wissen, welche Geräte wann wie viel Strom verbrauchen. Um das herauszufinden, gibt es Messsteckdosen, die man zwischen Steckdose und Stecker stecken kann, um den Stromverbrauch zu messen. Eine Möglichkeit dafür ist die Shelly Plug S. Diese Steckdose lässt sich per App bedienen. Dort kann man neben der aktuellen Leistung auch den Stromverbrauch sehen. Ein Diagramm, welches die Leistung über einen Zeitraum angibt, gibt es hier aber leider nicht. Und außerdem ist die Steckdose in dieser Form von der Cloud abhängig – das möchte auch nicht jeder.

Was ich an Shellys gut finde, ist, dass man sie auch völlig Lokal per Webinterface oder MQTT bedienen kann. Theoretisch kann man auf den meisten von ihnen sogar eine eigene Firmware flashen (Info dazu hier: https://templates.blakadder.com/index.html ), aber das wäre mir an dieser Stelle zu viel.

Material

Installation von MQTT

Auf dem Server müssen wir einen MQTT Server installieren, an den die Shelly die Daten senden kann:

Konfiguration der Shelly

Die Shelly macht bei ersten Start einen Hotspot auf, mit dem man sich beispielsweise mit dem Handy verbinden kann. Im Browser gibt man dann die Adresse http://192.168.33.1 ein, wo man dann die Zugangsdaten zum WLAN eingeben kann. Danach startet die Shelly neu und man kann nun das Webinterface aus dem Heimnetz öffnen und dort sämtliche Einstellungen vornehmen.

Unter „Internet & Security“, „Advanced Developer Settings“ gibt es hier den Punkt „Enable action execution via MQTT“. Diesen aktivieren wir und geben dann unter „Server“ die IP-Adresse des Servers und den Port (Standard ist 1883) an. Danach das Speichern nicht vergessen!

Shelly MQTT Einstellungen

Eine andere wichtige Einstellung wäre noch unter dem Punkt „Settings“ „POWER ON DEFAULT MODE“, also was passieren soll, wenn die Shelly mal keinen Strom mehr bekommt (z.B. bei einem Stromausfall). Das hängt davon ab, was an der Shelly hängt. Bei einer Lampe macht es Sinn, sie nach einem Stromausfall auszuschalten, während ein Kühlschrank immer an bleiben sollte.

Test

Mit dem Befehl

werden alle Nachrichten im Terminal angezeigt, die per MQTT verschickt werden. Nach spätestens 30 Sekunden (Die Shelly sendet alle 30 Sekunden Daten) sollte es eine Ausgabe geben, die ungefähr so aussieht:

Interessant sind hier die Punkte „Power“ (aktuelle Leistung in Watt) und „Energy“ (Gesamtverbrauch in Wattminuten)

Python Skript

Zuerst müssen folgende Python Module installiert werden:

Mein Code dafür ist folgender:

Kurze Erklärung: (Diese stellen müssen angepasst werden!)

Z. 7-8: Es wird eine Verbindung zur Datenbank hergestellt
Z. 14-15: Die topics von power und energy der Shelly werden subscribed. Hier können auch noch zusätzliche topics hinzukommen, z.B. für die Betriebstemperatur oder weitere Shellys, siehe Abschnitt „Test“)
Z. 19-30: Auch hier muss das topic angepasst werden. In diesem Abschnitt wird dann der Wert in der Konsole ausgegeben und anschließend in die Datenbank in das measurement „shellyplugs1“ in das Feld „leistung“ eingetragen. Dieser Abschnitt muss auch wiederholt werden, falls weitere topics nach Z. 15 hinzugefügt wurden.
Z. 44: Es wird eine Verbindung zum MQTT Broker hergestellt.

Dieses Skript kann nun laufen, zum Beispiel als Systemd Service Unit und schreibt die Daten dann in die Influx Datenbank, von wo sie beispielsweise mit Grafana visualisiert werden können.

Beispiel Visualisierung mit Grafana

Die Shelly hängt bei mir am Kühlschrank. Im folgenden Diagramm sieht man gut, dass die Ausschläge in der Nacht im Gesamtstromverbrauch (gelb) vom Kühlschrank kommen (grün):

Grafna Grafik